Install qs-inventory — FiveM Inventory for ESX, QBCore & Qbox | Quasar Store | Quasar Store
Documentation
Installation
Install the qs-inventory FiveM inventory script: requirements, ESX, QBCore and Qbox setup, server.cfg load order, the SQL database, items per framework, admin access with add_ace and verifying it works.
Before installing Inventory (qs-inventory), make sure your FiveM server meets the requirements below. Four things are mandatory; everything else is optional and detected on its own.
Requirement
Status
Notes
FiveM server artifact
Required
Build 4752 or newer.
oxmysql
Required
Database access. It must start before the inventory.
ox_lib
Required
Callbacks, notifications, progress bars and shared helpers.
Framework
Required
es_extended (ESX), qb-core (QBCore) or qbx_core (Qbox), auto-detected. See Framework Setup below.
OneSync
Recommended
Needed for kickable items on the ground. With it the server also checks the distance when a player is searched and at weapon repair points.
Target
Optional
ox_target, qb-target or qtarget, only when Use target is on in /inventoryconfig.
Appearance
Optional
illenium-appearance, qs-appearance, rcore_clothing, esx_skin or qb-clothing, used by the clothing slots to save the outfit.
qs-interface · qs-textui
Optional
Progress bars, 3D text prompts and the HUD use them when they are running; ox_lib takes over otherwise.
Everything framework- or third-party-specific sits behind a small, editable bridge file, and the inventory picks the right one by looking at what is already running:
es_extended must use qs-inventory as its inventory. In es_extended/shared/config/main.lua:
lua
Config.CustomInventory = 'qs'
That switches on es_extended's qs-inventory bridge, so player inventory functions and usable items go through qs-inventory. The pre-edited es_extended already has it set.
When a player loads, the inventory gives the QBCore player its own AddItem, RemoveItem, GetItemBySlot, GetItemByName, GetItemsByName, ClearInventory and SetInventory, and it answers exports['qb-inventory'] calls itself. Items are read from qb-core/shared/items.lua.
qbx_core is detected as Qbox. Items and weapons are read from qs-inventory/shared/items.lua and qs-inventory/shared/weapons.lua, and cash is the money item.
Every other framework version, and the individual commits if you prefer to apply them by hand, are in the quasar-store-organizations GitHub organization.
Once copied, open your server.cfg and make sure every dependency — and everything it should detect — starts before the inventory:
bash
ensure oxmysql
ensure ox_lib
# Framework (one of them)
ensure es_extended
# ensure qb-core# ensure qbx_core# Appearance and target, if you use them
ensure illenium-appearance
ensure ox_target
# Optional Quasar interface# ensure qs-interface# ensure qs-textui
ensure qs-inventory
# Optional, after the inventory
ensure qs-shops
ensure qs-armor
ensure qs-backpacks
ensure qs-licenses
ensure qs-weapondraw
ensure qs-weaponsonback
The loading order matters. Framework, appearance and target are detected once, when the inventory starts, so anything that starts after it is not found — and without a framework the inventory cannot load at all.
On a fresh install, import the SQL file that matches your framework from qs-inventory/sql/ with HeidiSQL, phpMyAdmin or your host's panel:
Import sql/esx.sql. Besides the inventory tables it resets the inventory column of every row in users to [] and adds a metadata column to users. ESX's old inventory format cannot be read by qs-inventory; to keep it, use the importer instead (see Switching to qs-inventory).
Import sql/qb.sql. It creates the inventory tables and does not touch players: player inventories already live in players.inventory.
Table
Holds
inventory_stash
Every stash, by stash id.
inventory_trunk · inventory_glovebox
Trunks and gloveboxes, by plate.
inventory_clothes
The clothes each player wears through the clothing slots.
inventory_metadata
Per-player data other scripts store with the SetMetaData export.
qs_inventory_settings
Every setting changed in /inventoryconfig.
qs_inventory_creator
Everything made in /inventorycreator: stashes, shops, sell points, crafting benches, items and weapons.
qs_inventory_itemlog · qs_inventory_itemalerts
Item history and anti-dupe alerts. Created automatically.
qs_inventory_import_backup
Player inventories saved before the importer rewrote them. Created on the first import.
The tables of the two in-game panels (qs_inventory_settings, qs_inventory_creator) are created by the resource itself if they are missing, and are never dropped. Avoid XAMPP and similar local stacks for production databases; they are a common source of connection errors.
Items are Lua tables, not database rows. Where the inventory reads them from depends on the framework:
Framework
Items
Weapons
ESX
qs-inventory/shared/items.lua
qs-inventory/shared/weapons.lua
QBCore
qb-core/shared/items.lua
qb-core/shared/weapons.lua
Qbox
qs-inventory/shared/items.lua
qs-inventory/shared/weapons.lua
Items and weapons made in /inventorycreator are added on top of these lists on every framework, without a restart; on QBCore they are also pushed into qb-core. Usage covers both ways of adding items.
On QBCore, copy the items that come with the inventory — clothing pieces, attachments, tints, ammo, backpacks — into qb-core/shared/items.lua. Quasar keeps an up-to-date items.lua for QBCore. Cash is the cash item on QBCore and the money item on ESX and Qbox, so that item must exist too.
Weights are in grams everywhere: an item with weight = 500 is half a kilo. Item images are PNG files in qs-inventory/web/dist/images/, named after the item's image field; a full https:// link works too.
The two in-game panels — /inventoryconfig for the settings and /inventorycreator for stashes, shops, crafting, items, weapons, giving items, stats and the importer — are behind a permission. Any of these routes lets someone in:
The ace names, and the names of both commands, can be changed in /inventoryconfig → Access & commands.
Framework admins always get in: the admin and superadmin groups on ESX, and the god and admin permissions on QBCore and Qbox.
Access & commands → Everyone is a creator admin opens the creator to every player, including giving items and running the importer. Use it only on a test server.
Not sure why somebody is refused? The server console prints the exact line to add:
bash
[qs-inventory:admin] John (3) tried to open the config panel without ace "command.inventoryconfig". Grant it with: add_ace <group> command.inventoryconfig allow
Almost nothing is configured in files. Weights and slots, keys, vehicles, weapons, clothing, robbery, the default style, rarities, vending machines, dumpsters and commands are all edited in game with /inventoryconfig, and saved in the database, so updating the resource never wipes them. The files you may still edit:
File
Contents
config/config.lua
Framework and appearance detection. Touch it only if you renamed your core or appearance resource.
shared/items.lua · shared/weapons.lua
The item and weapon lists on ESX and Qbox.
server/custom/webhook/webhook.lua
Discord webhook URLs.
client/custom/ · server/custom/
Bridges to frameworks, targets, clothing, notifications and other scripts, plus the admin commands.
locales/*.json
The 41 translations.
shared/data/*.lua
The factory defaults that a reset in /inventoryconfig goes back to. Values saved in the panel always win.
The language is General → Language in /inventoryconfig. Until it is changed there, it follows the convar shared by every Quasar resource:
bash
setr qs:locale "es"
41 languages are included: ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk, ur, vi and zh. A text missing from a translation shows in English.
Settings marked Restart in the panel — the language, the keys, target, the event prefix and a few more — are read when the inventory starts. Save them, then restart the inventory once.
After completing the installation, restart your server and read the console. On the first start you should see lines like these:
bash
[qs-inventory:admin] added 4 example points to the creator (crafting benches and sell points)
[qs-inventory:admin] loaded 4 creator records
[qs-inventory:admin] loaded 0 saved settings, 125 fields in total
You are using the latest version of qs-inventory!
A Missing webhooks warning is normal until you fill in server/custom/webhook/webhook.lua. Then join your server and work through the first loop:
Open the inventory
Press TAB. Your items are on the left, the ground on the right, with your health, armour, hunger, thirst and money beside them.
Give yourself an item
/inventorycreator → Give: pick yourself, an item and an amount. Or type /giveitem <id> water_bottle 5.
Change a setting
/inventoryconfig → Interface → Darken the game behind, then Save. Open the inventory again: the change already applies to everyone. Usage covers everything else.
Nothing needs a restart from here on, except the few settings marked Restart. Every stash, shop, bench, item and weapon made in the creator applies to every player the moment it is saved.