Before You Begin#
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. |
| Required | Database access. It must start before the inventory. |
| Required | Callbacks, notifications, progress bars and shared helpers. |
Framework | Required |
|
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 |
|
Appearance | Optional |
|
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:
Layer | Detection |
|---|---|
Framework |
|
Appearance |
|
Target |
|
Interface |
|
Framework Setup#
Inventory replaces the inventory functions of your framework. The fastest and safest route is to use the pre-edited versions Quasar maintains:
github.comes_extended 1.16.3 for qs-inventoryESX 1.16.3 with the qs-inventory changes applied.github.comqb-core 1.3.0 for qs-inventoryQBCore 1.3.0 with the qs-inventory changes applied.github.comqbx_core 1.24.0 for qs-inventoryQbox core 1.24.0 with the qs-inventory changes applied.es_extended must use qs-inventory as its inventory. In es_extended/shared/config/main.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.
Older framework versions are still in the quasar-store-organizations GitHub organization, but they don't support items created in-game.
Downloading Inventory#
After purchasing Inventory, the resource is automatically linked to your CFX Portal account.
Sign in to the CFX Portal using the same account used during checkout, open Granted Assets, and download Inventory.
After extracting the download, you should have the following folder:
[inventory]/
├── qs-inventory/ -- the inventory
│ ├── config/config.lua -- framework and appearance detection only
│ ├── client/custom/ -- bridges to frameworks, clothing, targets (editable)
│ ├── server/custom/ -- bridges, admin commands, Discord webhooks (editable)
│ ├── shared/items.lua -- item list (ESX and Qbox)
│ ├── shared/weapons.lua -- weapon list (ESX and Qbox)
│ ├── shared/data/ -- factory defaults of the in-game settings
│ ├── sql/ -- esx.sql and qb.sql
│ ├── locales/ -- 41 languages
│ └── web/ -- the interface and item images, already built
├── qs-shops/ -- classic shops, job stashes and delivery runs (optional)
└── [dlc]/ -- armor, backpacks, licenses, weapon draw, weapons on backThe folder must be named
qs-inventory. Every export is called asexports['qs-inventory'], and a renamed copy stops the server with an error.
Installing the Resource#
Move the folders into your server's resources directory. They can live anywhere inside it, including a category folder:
resources/
└── [qs]/
└── [inventory]/
├── qs-inventory/
├── qs-shops/
└── [dlc]/Once copied, open your server.cfg and make sure every dependency — and everything it should detect — starts before the inventory:
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-weaponsonbackThe 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.
The Database#
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 |
|---|---|
| Every stash, by stash id. |
| Trunks and gloveboxes, by plate. |
| The clothes each player wears through the clothing slots. |
| Per-player data other scripts store with the |
| Every setting changed in /inventoryconfig. |
| Everything made in /inventorycreator: stashes, shops, sell points, crafting benches, items and weapons. |
| Item history and anti-dupe alerts. Created automatically. |
| 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 per Framework#
Items are Lua tables, not database rows. Where the inventory reads them from depends on the framework:
Framework | Items | Weapons |
|---|---|---|
ESX |
|
|
QBCore |
|
|
Qbox |
|
|
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.
Claiming Admin Access#
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 usual route. Add these lines to server.cfg:
add_ace group.admin command.inventoryconfig allow
add_ace group.admin command.inventorycreator allowThe 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:
[qs-inventory:admin] John (3) tried to open the config panel without ace "command.inventoryconfig". Grant it with: add_ace <group> command.inventoryconfig allowConfiguring the Resource#
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 |
|---|---|
| Framework and appearance detection. Touch it only if you renamed your core or appearance resource. |
| The item and weapon lists on ESX and Qbox. |
| Discord webhook URLs. |
| Bridges to frameworks, targets, clothing, notifications and other scripts, plus the admin commands. |
| The 41 translations. |
| 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:
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.
Verifying the Installation#
After completing the installation, restart your server and read the console. On the first start you should see lines like these:
[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.



