How to add items to ox_inventory in FiveM
To add the items of one of our scripts to ox_inventory on ESX or Qbox, paste the item list from its README into ox_inventory/ and copy its PNG images into ox_inventory/. On QBCore with qb-inventory, the list and the images go into qb-core/ and qb-inventory/. Our All-in-One Drug System V2 and Advanced Ambulance Job ship both lists; our Crafting ships none, so you add the items its recipes name.
Restart the server after each change; items load when it starts.
Before you start
Find which inventory your server runs. Current ox_inventory (2.48.0, checked 19 October 2026) has framework bridges for ESX, Qbox, ox_core and ND, not QBCore. So this guide uses ox_inventory on ESX and Qbox, and qb-inventory on QBCore.
Then look at what the script ships:
| Script | Item list | Images | Config values |
Config form |
|---|---|---|---|---|
All-in-One Drug System V2 (tk_drugs) |
133 items in README, ox_inventory and qb-inventory format |
images/ |
'default', 'ox', 'qs' |
Full file pattern ending in /%s |
Advanced Ambulance Job (tk_ambulancejob) |
20 items in README, both formats |
images/ |
'default', 'ox', 'qs', 'qb_old', 'qb_new' |
Folder only |
Crafting (tk_crafting) |
None | web/ |
No setting; it uses the framework’s item functions | Folder only |
Copy your item file before editing it. If the server fails to start after a paste, put the copy back.
Add items to ox_inventory (ESX and Qbox)
-
Open
ox_inventory/. It is one table,data/ items.lua return { ., with one entry per item name... } -
Paste the script’s
ox_inventoryblock from its README before the closing}. Each entry has this shape:['og_kush_seed'] = { label = 'OG Kush Seed', weight = 1, stack = true, }, -
Search the file for each name you paste. ox_inventory already ships a
bandage, which Advanced Ambulance Job also defines; keep one['bandage']entry. -
Copy the PNGs from the script’s
imagesfolder intoox_inventory/. Each file is named after its item, such asweb/ images og_kush_seed..png -
In the script’s
config, set.lua Config. The shipped.Inventory = 'ox' Configalready points at.ImagePath nui:/./ ox_inventory/ web/ images -
Restart the server. The console shows no error from
ox_inventory.
On Qbox, server needs setr inventory:framework "qbx", with ox_inventory started right after qbx_core (ox docs). Qbox’s FAQ says items added to qbx_core/ are added to ox_inventory automatically, and that the file is only needed for scripts that read items through its QBCore bridge. In the script’s config, set Config and Config.
On ESX with ox_inventory, ox_inventory moves every item from the ESX items table into its own item data (ox docs). Restart again after that migration.
Add items to qb-inventory (QBCore)
-
Open
qb-core/. Items sit insideshared/ items.lua QBCore..Shared .Items = { . .. } -
Paste the script’s
qb-inventoryblock from its README inside that table. Each line has this shape:og_kush_seed = {name = 'og_kush_seed', label = 'OG Kush Seed', weight = 1, type = 'item', image = 'og_kush_seed.png', unique = false, useable = true}, -
Search the file for each name. QBCore ships
bandage,water_bottleandmeth. The drug script also defineswater_bottleandmeth, and the ambulance job definesbandage. Keep one entry per name. -
Copy the PNGs into
qb-inventory/. Thehtml/ images imagefield names the file (QBCore docs). -
In All-in-One Drug System V2’s
config, set.lua Configand.Inventory = 'default' Config..ImagePath = 'nui:/ / qb-inventory/ html/ images/ %s.png' -
In Advanced Ambulance Job’s
config, set.lua Configand.ImagePath = 'nui:/ / qb-inventory/ html/ images' Configif your qb-inventory has the.Inventory = 'qb_new' CreateShopexport, as version 2.2.3 does (checked 19 October 2026); use'qb_old'for an older qb-inventory. -
Restart the server.
The useable = true flag alone does not make an item usable; our scripts register their own usable items when they start.
Add items on ESX without ox_inventory
ESX reads items from the items database table when it starts. The table has name, label, weight, rare and can_remove, and only name and label have no default. The READMEs give no ESX list, so write one row per item from the ox_inventory list, in the form Ownable Drug Labs uses in its own SQL file:
INSERT INTO items (name, label, weight) VALUES
('darkweb_tablet', 'Dark Web Tablet', 1),
('bolt_cutters', 'Bolt Cutters', 1)
;
Keep weights on ESX’s scale. The default carry limit is Config in es_extended, so the ox_inventory weights in the READMEs, up to 2500, would make items too heavy to carry. In the script’s config, leave Config.
Advanced Ambulance Job’s storages do not open on ESX’s own inventory: they need ox_inventory, qs-inventory or qb-inventory, and otherwise print Storage not set correctly in config!. Its hospital shop opens in the script’s own menu instead of an inventory shop.
Add the items Crafting recipes name
Crafting gives and takes items through ESX or QBCore and has no item list of its own. Every name in sv_config must exist in your inventory: crafted items, ingredients and table items.
- In
sv_config, list every.lua nameunderitemsandneededItems, and everyitemundertableItems. The default recipes uselockpick,iron,copper,rubber,screw,lighter,screwdriverset,gold,plastic,leather, three weapons and thedefault_tableitem. - Add each one your inventory lacks, or change the recipe to an item it has. ox_inventory and QBCore already ship
lockpick. - For a recipe with
needBlueprint = true, add an item namedblueprint_plus the crafted item’s name in lower case:WEAPON_PISTOLneedsblueprint_.weapon_ pistol - Copy
web/into your inventory’s image folder, and setimages/ default_table.png Configto the folder:.ImagePath nui:/or/ ox_inventory/ web/ images nui:/./ qb-inventory/ html/ images - Where an ingredient’s picture has another name, set
imageon that ingredient, as the defaultironline does.
Check it works
Give yourself an item as an admin, using the command of the resource that owns your items:
- ox_inventory:
/giveitem 1 og_kush_seed 1(target, item, count;grouponly)..admin - qb-inventory:
/giveitem 1 og_kush_seed 1(id, item, amount;adminonly). - ESX without ox_inventory:
/giveitem 1 og_kush_seed 1(player id, item, count).
The item lands in the inventory with its label and picture. Then open a menu of the script that lists items, such as the drug shop or the Advanced Ambulance Job hospital shop, and check that the pictures load there too.
If it still fails
- The server stops with a Lua error in
items: the paste broke the table, often a missing comma or a block pasted after the closing.lua }. Restore your copy and paste again inside the table. /giveitemdoes not find the item: the name is not in the item file or table, or the server has not restarted since.- The item has no picture in the inventory: the PNG is missing from the image folder, or its file name differs from the item name.
- The item has a picture in the inventory but not in the script’s menus:
Configis wrong. All-in-One Drug System V2 needs the full pattern ending in.ImagePath /%s; Advanced Ambulance Job and Crafting need the folder only..png
For how the drug items fit into growing, processing and selling, read how to add drugs to your FiveM server.


