Browse docs

Inventory items

Copyable weapon and ammunition definitions for Sky Primitive Weapons in the standard inventory formats.

Install the four weapons and the three ammunition items below. Choose the tab matching the inventory configured in Sky Base. Merge missing entries into the existing tables; keep their other entries and do not paste a second return wrapper.

Weapons and ammunition belong in different tables in some inventories. Follow the destination shown in each block. QBCore and native ESX also need the weapon catalogue entries under Framework weapon catalogues.

The pack consumes one arrow, bolt or stone on the server for an authorized shot. Do not add an inventory ammo-item link, automatic reload consumption or a separate ammunition-use callback. In particular, leave ammoname unset. The Spear has no ammunition item: throwing removes the weapon, and recovery returns it.

Weapons

Use the inventory's normal weapon equip action. Keep these entries as weapons, with one weapon per inventory slot.

-- Add inside Weapons in ox_inventory/data/weapons.lua.
["WEAPON_SKY_BOW"] = {
    label = "Recurve Bow",
    weight = 1400,
    durability = 0,
    anim = { "sky_hunting_archery", "idle", 200, "sky_hunting_archery", "lower", 400 },
    client = { image = "WEAPON_SKY_BOW.png" },
},
["WEAPON_SKY_CROSSBOW"] = {
    label = "Crossbow",
    weight = 3200,
    durability = 0,
    client = { image = "WEAPON_SKY_CROSSBOW.png" },
},
["WEAPON_SKY_SPEAR"] = {
    label = "Spear",
    weight = 1400,
    durability = 0,
    description = "A steel-tipped ash spear for thrusting and throwing.",
    client = { image = "WEAPON_SKY_SPEAR.png" },
},
["WEAPON_SKY_SLINGSHOT"] = {
    label = "Slingshot",
    weight = 240,
    durability = 0,
    anim = { "sky_slingshot_body", "idle", 200, "sky_slingshot_body", "lower", 400 },
    client = { image = "WEAPON_SKY_SLINGSHOT.png" },
},

For native ESX, weapons are loadout entries rather than ordinary database items. Use the ESX weapon catalogue below and add only the ammunition rows to the item database. For inventory versions with an additional custom-weapon registry or validation list, include all four WEAPON_SKY_* identifiers in that provider's normal weapon setup.

Ammunition

These are ordinary stackable items, not inventory reload items. They do not need a client event or export. Keep the identifiers aligned with arrowItem, boltItem and stoneItem in config/weapons/ if you customize them.

-- Add inside the existing return table in ox_inventory/data/items.lua.
["hunting_arrow"] = {
    label = "Bow Arrow",
    description = "Arrow for the Recurve Bow. Consumed when the string is released.",
    weight = 25,
    stack = true,
    close = false,
    client = { image = "hunting_arrow.png" },
},
["crossbow_bolt"] = {
    label = "Crossbow Bolt",
    description = "A steel-tipped bolt for the Crossbow. Consumed when fired.",
    weight = 35,
    stack = true,
    close = false,
    client = { image = "crossbow_bolt.png" },
},
["slingshot_stone"] = {
    label = "Slingshot Stone",
    description = "A smooth stone for the Slingshot. Consumed when the pouch is released.",
    weight = 20,
    stack = true,
    close = false,
    client = { image = "slingshot_stone.png" },
},

Framework weapon catalogues

QBCore

For QB inventories, also merge these hash-keyed entries into QBCore.Shared.Weapons in qb-core/shared/weapons.lua. Keep ammotype = nil; the pack handles its projectiles separately from inventory reloads.

qb-core/shared/weapons.lua

[joaat("WEAPON_SKY_BOW")] = { name = "weapon_sky_bow", label = "Recurve Bow", weapontype = "Rifle", ammotype = nil, damagereason = "Recurve Bow" },

[joaat("WEAPON_SKY_CROSSBOW")] = { name = "weapon_sky_crossbow", label = "Crossbow", weapontype = "Rifle", ammotype = nil, damagereason = "Crossbow" },

[joaat("WEAPON_SKY_SPEAR")] = { name = "weapon_sky_spear", label = "Spear", weapontype = "Melee", ammotype = nil, damagereason = "Spear" },

[joaat("WEAPON_SKY_SLINGSHOT")] = { name = "weapon_sky_slingshot", label = "Slingshot", weapontype = "Pistol", ammotype = nil, damagereason = "Slingshot" },

Native ESX

When Sky Base uses native ESX loadout weapons, add these entries inside Config.Weapons in es_extended/config.weapons.lua before framework startup. These entries do not belong in the SQL items table. An ESX server using an item-based inventory follows that inventory's weapon tab instead.

es_extended/config.weapons.lua

{ name = "WEAPON_SKY_BOW", label = "Recurve Bow", components = {} },

{ name = "WEAPON_SKY_CROSSBOW", label = "Crossbow", components = {} },

{ name = "WEAPON_SKY_SPEAR", label = "Spear", components = {} },

{ name = "WEAPON_SKY_SLINGSHOT", label = "Slingshot", components = {} },

Inventory images

Copy the PNGs from sky_primitive_weapons/config/images/ into your inventory's image directory. All seven images are directly inside this folder. Keep the supplied filenames and their letter case; the definitions above map the weapon icons explicitly.

InventoryImage directory
ox_inventoryox_inventory/web/images/
QS inventoryThe image directory configured by your installed QS version
QB inventoriesThe selected inventory's html/images/ directory
Tgiann inventoryinventory_images/images/
Jaksam inventoryjaksam_inventory/_images/
CodeM inventorycodem-inventory/html/itemimages/
CodeM Inventory V2The separate codem-inventory-images resource configured by CodeM V2
Native ESXThe image directory used by your ESX inventory interface, if it displays icons
Weapon or ammunitionImage filename
Recurve BowWEAPON_SKY_BOW.png
CrossbowWEAPON_SKY_CROSSBOW.png
SpearWEAPON_SKY_SPEAR.png
SlingshotWEAPON_SKY_SLINGSHOT.png
Bow Arrowhunting_arrow.png
Crossbow Boltcrossbow_bolt.png
Slingshot Stoneslingshot_stone.png

Apply the definitions

Fully restart the server after installing the weapon definitions and reconnect with a fresh FiveM client. Then grant each weapon and its matching ammunition through your normal inventory administration tools. Confirm that each weapon equips, one authorized shot removes one matching ammunition item, and a thrown Spear can be recovered once. Existing installations can keep their saved item contents when these identifiers are unchanged.