Browse docs
Inventory Items
Use these ready-to-copy item definitions for Sky Pets. Choose the tab for your inventory and merge its entries into the existing item catalogue. Each tab includes all 11 default items for care, training, toys and medical treatment.
Care, training and toys
| Item ID | Default use | Consumed? |
|---|---|---|
pet_food | Food bowl; +20 hunger points | One on successful feeding |
pet_food_2 | Second food bowl; +20 hunger points | One on successful feeding |
pet_water_bottle | Water bowl; +10 thirst points | One on successful drinking |
pet_treat | Obedience reward; +5 hunger points; required for each completed service-dog lesson | One on accepted reward or completed lesson |
pet_ball_1 | Fetch ball | Reusable |
pet_ball_2 | Fetch ball | Reusable |
pet_ball_3 | Fetch ball | Reusable |
pet_bone_1 | Chewing toy | Reusable |
pet_bone_2 | Chewing toy | Reusable |
pet_bandage | Heal a living pet by 25 life points | One on successful use |
pet_rescue_kit | Rescue a dying pet before its deadline; restores 50% life | One on successful rescue |
Call and select the pet before using a care, toy or medical item from the inventory. The selected pet must be within the configured use distance, 2.5 m by default. Sky Pets checks ownership, state, range and inventory before applying effects and removing a consumable. Balls and bones remain reusable. Food and water use a bowl interaction; balls start fetch and bones start chewing. Press X or Escape to cancel.
An obedience treat settles the pending reward window and adds up to five hunger points without exceeding 100. Each successfully completed service-dog lesson also consumes one treat. Medical items are removed only after successful treatment or rescue.
The default food, water, treat, bandage and rescue IDs are configurable under Needs, Training and Health. If you rename one, register the new ID and keep its usable event and shop stock aligned. Ball, bone and second-food IDs come from the supplied pet-item definitions.
Item images
Copy the matching PNGs from the download's installation/inventory-images/ into your inventory's image folder. For ox_inventory, use ox_inventory/web/images/; for CodeM V2, use codem-inventory-images/images/.
The download includes food, water, ball and bone icons. Provide icons for pet_treat, pet_bandage and pet_rescue_kit, or change their image fields to existing icons in your inventory. CodeM V2 resolves icons by item name and does not use an item client block.
Ready-to-copy item definitions
Sky Pets registers usable-item callbacks through sky_base. The care and toy client.event fields are required only by ox_inventory. The QB-Core definitions also apply to inventories that read QBShared.Items.
CodeM Inventory V2: use the codem-inventoryv2 tab, add its definitions to codem-inventoryv2/data/items.lua, and keep consume = 0 with no item client block. See V2 setup and limits.
['pet_treat'] = {
label = 'Pet Treat',
weight = 20,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useTreat',
},
},
['pet_food'] = {
label = 'Pet Food',
weight = 500,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useFood',
image = 'pet_food.png',
},
},
['pet_food_2'] = {
label = 'Pet Food 2',
weight = 500,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useFood2',
image = 'pet_food_2.png',
},
},
['pet_water_bottle'] = {
label = 'Pet Water Bottle',
weight = 500,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useWater',
image = 'pet_water_bottle.png',
},
},
['pet_ball_1'] = {
label = 'Dog Ball 1',
weight = 65,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useBall1',
image = 'pet_ball_1.png',
},
},
['pet_ball_2'] = {
label = 'Dog Ball 2',
weight = 65,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useBall2',
image = 'pet_ball_2.png',
},
},
['pet_ball_3'] = {
label = 'Dog Ball 3',
weight = 65,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useBall3',
image = 'pet_ball_3.png',
},
},
['pet_bone_1'] = {
label = 'Chew Bone 1',
weight = 120,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useBone1',
image = 'pet_bone_1.png',
},
},
['pet_bone_2'] = {
label = 'Chew Bone 2',
weight = 120,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useBone2',
image = 'pet_bone_2.png',
},
},
['pet_bandage'] = {
label = 'Pet Bandage',
weight = 100,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useBandage',
},
},
['pet_rescue_kit'] = {
label = 'Pet Rescue Kit',
weight = 1000,
stack = true,
close = true,
consume = 0,
client = {
event = 'sky_pets:useRescueKit',
},
},
['pet_treat'] = {
label = 'Pet Treat',
weight = 20,
stack = true,
close = true,
consume = 0,
description = 'Training reward',
},
['pet_food'] = {
label = 'Pet Food',
weight = 500,
stack = true,
close = true,
consume = 0,
description = 'Food for one bowl',
},
['pet_food_2'] = {
label = 'Pet Food 2',
weight = 500,
stack = true,
close = true,
consume = 0,
description = 'Second food variety',
},
['pet_water_bottle'] = {
label = 'Pet Water Bottle',
weight = 500,
stack = true,
close = true,
consume = 0,
description = 'Fresh water for one bowl',
},
['pet_ball_1'] = {
label = 'Dog Ball 1',
weight = 65,
stack = true,
close = true,
consume = 0,
description = 'Reusable fetch ball',
},
['pet_ball_2'] = {
label = 'Dog Ball 2',
weight = 65,
stack = true,
close = true,
consume = 0,
description = 'Reusable fetch ball',
},
['pet_ball_3'] = {
label = 'Dog Ball 3',
weight = 65,
stack = true,
close = true,
consume = 0,
description = 'Reusable fetch ball',
},
['pet_bone_1'] = {
label = 'Chew Bone 1',
weight = 120,
stack = true,
close = true,
consume = 0,
description = 'Reusable chew toy',
},
['pet_bone_2'] = {
label = 'Chew Bone 2',
weight = 120,
stack = true,
close = true,
consume = 0,
description = 'Reusable chew toy',
},
['pet_bandage'] = {
label = 'Pet Bandage',
weight = 100,
stack = true,
close = true,
consume = 0,
description = 'Treats a living pet',
},
['pet_rescue_kit'] = {
label = 'Pet Rescue Kit',
weight = 1000,
stack = true,
close = true,
consume = 0,
description = 'Rescues a dying pet',
},
['pet_treat'] = {
['name'] = 'pet_treat',
['label'] = 'Pet Treat',
['weight'] = 20,
['type'] = 'item',
['image'] = 'pet_treat.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Training reward',
},
['pet_food'] = {
['name'] = 'pet_food',
['label'] = 'Pet Food',
['weight'] = 500,
['type'] = 'item',
['image'] = 'pet_food.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Food for one bowl',
},
['pet_food_2'] = {
['name'] = 'pet_food_2',
['label'] = 'Pet Food 2',
['weight'] = 500,
['type'] = 'item',
['image'] = 'pet_food_2.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Second food variety',
},
['pet_water_bottle'] = {
['name'] = 'pet_water_bottle',
['label'] = 'Pet Water Bottle',
['weight'] = 500,
['type'] = 'item',
['image'] = 'pet_water_bottle.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Fresh water for one bowl',
},
['pet_ball_1'] = {
['name'] = 'pet_ball_1',
['label'] = 'Dog Ball 1',
['weight'] = 65,
['type'] = 'item',
['image'] = 'pet_ball_1.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Reusable fetch ball',
},
['pet_ball_2'] = {
['name'] = 'pet_ball_2',
['label'] = 'Dog Ball 2',
['weight'] = 65,
['type'] = 'item',
['image'] = 'pet_ball_2.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Reusable fetch ball',
},
['pet_ball_3'] = {
['name'] = 'pet_ball_3',
['label'] = 'Dog Ball 3',
['weight'] = 65,
['type'] = 'item',
['image'] = 'pet_ball_3.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Reusable fetch ball',
},
['pet_bone_1'] = {
['name'] = 'pet_bone_1',
['label'] = 'Chew Bone 1',
['weight'] = 120,
['type'] = 'item',
['image'] = 'pet_bone_1.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Reusable chew toy',
},
['pet_bone_2'] = {
['name'] = 'pet_bone_2',
['label'] = 'Chew Bone 2',
['weight'] = 120,
['type'] = 'item',
['image'] = 'pet_bone_2.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Reusable chew toy',
},
['pet_bandage'] = {
['name'] = 'pet_bandage',
['label'] = 'Pet Bandage',
['weight'] = 100,
['type'] = 'item',
['image'] = 'pet_bandage.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Treats a living pet',
},
['pet_rescue_kit'] = {
['name'] = 'pet_rescue_kit',
['label'] = 'Pet Rescue Kit',
['weight'] = 1000,
['type'] = 'item',
['image'] = 'pet_rescue_kit.png',
['unique'] = false,
['rare'] = 'common',
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Rescues a dying pet',
},
-- Add inside QBShared.Items in qb-core/shared/items.lua.
pet_treat = {
name = 'pet_treat',
label = 'Pet Treat',
weight = 20,
type = 'item',
image = 'pet_treat.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Training reward',
},
pet_food = {
name = 'pet_food',
label = 'Pet Food',
weight = 500,
type = 'item',
image = 'pet_food.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Food for one bowl',
},
pet_food_2 = {
name = 'pet_food_2',
label = 'Pet Food 2',
weight = 500,
type = 'item',
image = 'pet_food_2.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Second food variety',
},
pet_water_bottle = {
name = 'pet_water_bottle',
label = 'Pet Water Bottle',
weight = 500,
type = 'item',
image = 'pet_water_bottle.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Fresh water for one bowl',
},
pet_ball_1 = {
name = 'pet_ball_1',
label = 'Dog Ball 1',
weight = 65,
type = 'item',
image = 'pet_ball_1.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Reusable fetch ball',
},
pet_ball_2 = {
name = 'pet_ball_2',
label = 'Dog Ball 2',
weight = 65,
type = 'item',
image = 'pet_ball_2.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Reusable fetch ball',
},
pet_ball_3 = {
name = 'pet_ball_3',
label = 'Dog Ball 3',
weight = 65,
type = 'item',
image = 'pet_ball_3.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Reusable fetch ball',
},
pet_bone_1 = {
name = 'pet_bone_1',
label = 'Chew Bone 1',
weight = 120,
type = 'item',
image = 'pet_bone_1.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Reusable chew toy',
},
pet_bone_2 = {
name = 'pet_bone_2',
label = 'Chew Bone 2',
weight = 120,
type = 'item',
image = 'pet_bone_2.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Reusable chew toy',
},
pet_bandage = {
name = 'pet_bandage',
label = 'Pet Bandage',
weight = 100,
type = 'item',
image = 'pet_bandage.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Treats a living pet',
},
pet_rescue_kit = {
name = 'pet_rescue_kit',
label = 'Pet Rescue Kit',
weight = 1000,
type = 'item',
image = 'pet_rescue_kit.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Rescues a dying pet',
},
pet_treat = {
label = 'Pet Treat',
weight = 20,
type = 'item',
image = 'pet_treat.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Training reward',
},
pet_food = {
label = 'Pet Food',
weight = 500,
type = 'item',
image = 'pet_food.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Food for one bowl',
},
pet_food_2 = {
label = 'Pet Food 2',
weight = 500,
type = 'item',
image = 'pet_food_2.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Second food variety',
},
pet_water_bottle = {
label = 'Pet Water Bottle',
weight = 500,
type = 'item',
image = 'pet_water_bottle.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Fresh water for one bowl',
},
pet_ball_1 = {
label = 'Dog Ball 1',
weight = 65,
type = 'item',
image = 'pet_ball_1.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Reusable fetch ball',
},
pet_ball_2 = {
label = 'Dog Ball 2',
weight = 65,
type = 'item',
image = 'pet_ball_2.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Reusable fetch ball',
},
pet_ball_3 = {
label = 'Dog Ball 3',
weight = 65,
type = 'item',
image = 'pet_ball_3.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Reusable fetch ball',
},
pet_bone_1 = {
label = 'Chew Bone 1',
weight = 120,
type = 'item',
image = 'pet_bone_1.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Reusable chew toy',
},
pet_bone_2 = {
label = 'Chew Bone 2',
weight = 120,
type = 'item',
image = 'pet_bone_2.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Reusable chew toy',
},
pet_bandage = {
label = 'Pet Bandage',
weight = 100,
type = 'item',
image = 'pet_bandage.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Treats a living pet',
},
pet_rescue_kit = {
label = 'Pet Rescue Kit',
weight = 1000,
type = 'item',
image = 'pet_rescue_kit.png',
hasMetadata = false,
useable = true,
shouldClose = true,
description = 'Rescues a dying pet',
},
['pet_treat'] = {
label = 'Pet Treat',
weight = 0.020,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_treat.png',
description = 'Training reward',
},
['pet_food'] = {
label = 'Pet Food',
weight = 0.500,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_food.png',
description = 'Food for one bowl',
},
['pet_food_2'] = {
label = 'Pet Food 2',
weight = 0.500,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_food_2.png',
description = 'Second food variety',
},
['pet_water_bottle'] = {
label = 'Pet Water Bottle',
weight = 0.500,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_water_bottle.png',
description = 'Fresh water for one bowl',
},
['pet_ball_1'] = {
label = 'Dog Ball 1',
weight = 0.065,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_ball_1.png',
description = 'Reusable fetch ball',
},
['pet_ball_2'] = {
label = 'Dog Ball 2',
weight = 0.065,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_ball_2.png',
description = 'Reusable fetch ball',
},
['pet_ball_3'] = {
label = 'Dog Ball 3',
weight = 0.065,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_ball_3.png',
description = 'Reusable fetch ball',
},
['pet_bone_1'] = {
label = 'Chew Bone 1',
weight = 0.120,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_bone_1.png',
description = 'Reusable chew toy',
},
['pet_bone_2'] = {
label = 'Chew Bone 2',
weight = 0.120,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_bone_2.png',
description = 'Reusable chew toy',
},
['pet_bandage'] = {
label = 'Pet Bandage',
weight = 0.100,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_bandage.png',
description = 'Treats a living pet',
},
['pet_rescue_kit'] = {
label = 'Pet Rescue Kit',
weight = 1.000,
stackable = true,
close = true,
maxStack = 100,
type = 'item',
rarity = 'common',
image = 'pet_rescue_kit.png',
description = 'Rescues a dying pet',
},
-- Add to codem-inventory/config/itemlist.lua.
['pet_treat'] = {
['name'] = 'pet_treat',
['label'] = 'Pet Treat',
['weight'] = 20,
['type'] = 'item',
['image'] = 'pet_treat.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Training reward',
},
['pet_food'] = {
['name'] = 'pet_food',
['label'] = 'Pet Food',
['weight'] = 500,
['type'] = 'item',
['image'] = 'pet_food.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Food for one bowl',
},
['pet_food_2'] = {
['name'] = 'pet_food_2',
['label'] = 'Pet Food 2',
['weight'] = 500,
['type'] = 'item',
['image'] = 'pet_food_2.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Second food variety',
},
['pet_water_bottle'] = {
['name'] = 'pet_water_bottle',
['label'] = 'Pet Water Bottle',
['weight'] = 500,
['type'] = 'item',
['image'] = 'pet_water_bottle.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Fresh water for one bowl',
},
['pet_ball_1'] = {
['name'] = 'pet_ball_1',
['label'] = 'Dog Ball 1',
['weight'] = 65,
['type'] = 'item',
['image'] = 'pet_ball_1.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Reusable fetch ball',
},
['pet_ball_2'] = {
['name'] = 'pet_ball_2',
['label'] = 'Dog Ball 2',
['weight'] = 65,
['type'] = 'item',
['image'] = 'pet_ball_2.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Reusable fetch ball',
},
['pet_ball_3'] = {
['name'] = 'pet_ball_3',
['label'] = 'Dog Ball 3',
['weight'] = 65,
['type'] = 'item',
['image'] = 'pet_ball_3.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Reusable fetch ball',
},
['pet_bone_1'] = {
['name'] = 'pet_bone_1',
['label'] = 'Chew Bone 1',
['weight'] = 120,
['type'] = 'item',
['image'] = 'pet_bone_1.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Reusable chew toy',
},
['pet_bone_2'] = {
['name'] = 'pet_bone_2',
['label'] = 'Chew Bone 2',
['weight'] = 120,
['type'] = 'item',
['image'] = 'pet_bone_2.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Reusable chew toy',
},
['pet_bandage'] = {
['name'] = 'pet_bandage',
['label'] = 'Pet Bandage',
['weight'] = 100,
['type'] = 'item',
['image'] = 'pet_bandage.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Treats a living pet',
},
['pet_rescue_kit'] = {
['name'] = 'pet_rescue_kit',
['label'] = 'Pet Rescue Kit',
['weight'] = 1000,
['type'] = 'item',
['image'] = 'pet_rescue_kit.png',
['unique'] = false,
['usable'] = true,
['shouldClose'] = true,
['description'] = 'Rescues a dying pet',
},
INSERT IGNORE INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('pet_treat', 'Pet Treat', 20, 0, 1),
('pet_food', 'Pet Food', 500, 0, 1),
('pet_food_2', 'Pet Food 2', 500, 0, 1),
('pet_water_bottle', 'Pet Water Bottle', 500, 0, 1),
('pet_ball_1', 'Dog Ball 1', 65, 0, 1),
('pet_ball_2', 'Dog Ball 2', 65, 0, 1),
('pet_ball_3', 'Dog Ball 3', 65, 0, 1),
('pet_bone_1', 'Chew Bone 1', 120, 0, 1),
('pet_bone_2', 'Chew Bone 2', 120, 0, 1),
('pet_bandage', 'Pet Bandage', 100, 0, 1),
('pet_rescue_kit', 'Pet Rescue Kit', 1000, 0, 1);
For ox_inventory and CodeM V2, keep consume = 0 on all entries. Sky Pets removes consumables after validation and keeps reusable toys. The ESX SQL tab adds missing rows to the standard database-backed items table. Automatic pet-data migration does not register inventory items.
The download's installation/ox_inventory.lua is an additional merge template. Use the definitions above for the inventory provider configured on your server.
The sky_pets:use... events are inventory entry points. See Events for their scope.