Installation — Advanced Inventory | Quasar Store | Quasar Store
Documentation
Installation
Install Quasar Advanced Inventory (qs-inventory) on a FiveM server: requirements, pre-edited ESX, QBCore and Qbox cores, server.cfg order, the SQL import, items per framework and admin access.
Before installing Advanced Inventory, make sure your server meets the requirements below. Everything marked optional is detected on its own when it is already running.
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 and shared helpers, plus notifications and progress bars when qs-interface is not running.
MugShotBase64
Required
Declared as a dependency: the inventory does not start until it is running.
qs-inventory-objects
Required
Ships in the download. Streams the 3D backgrounds behind your character — 31 gradient rooms and the Cyberpunk one.
Framework
Required
es_extended (ESX), qb-core (QBCore) or qbx_core (Qbox), auto-detected. Use the pre-edited versions linked below. There is no standalone mode.
OneSync
Recommended
Needed for kickable bags on the ground, strict vehicle access and the server-side distance checks on searches, robberies and trades.
Appearance
Optional
illenium-appearance, qs-appearance, rcore_clothing, esx_skin or qb-clothing — saves the outfit a player puts together through the clothing slots.
Target
Optional
ox_target or qb-target, used only when Use target is switched on in /inventoryconfig. Without it, points show a marker and an [E] prompt.
qs-interface · qs-textui
Optional
Notifications, progress bars, the HUD and 3D prompts. Without them, ox_lib and the game's own text take over.
The inventory picks each integration by looking at what is already started:
Advanced Inventory takes over the inventory functions of your framework, so the framework needs a few small changes. The fastest and safest route is to use the pre-edited versions Quasar maintains:
Older framework versions are still in the quasar-store-organizations GitHub organization, but they don't support items created in-game.
The edited es_extended hands its inventory to qs-inventory with this line in es_extended/shared/config/main.lua:
lua
Config.CustomInventory = 'qs'
With it, ESX reads its item list from the inventory instead of the items SQL table, and every xPlayer item function is answered by qs-inventory. Without it, usable items registered by your other scripts are not picked up.
Use the edited qb-core. On top of it, the inventory replaces the player methods AddItem, RemoveItem, GetItemBySlot, GetItemByName, GetItemsByName, ClearInventory and SetInventory at runtime, so scripts calling them keep working. Items and weapons still come from qb-core/shared/items.lua and qb-core/shared/weapons.lua.
Use the edited qbx_core. Qbox is detected as QBCore in Qbox mode: it uses the inventory's own shared/items.lua and shared/weapons.lua, and money is the cash item.
After purchasing Advanced 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 Advanced Inventory.
After extracting the download, you should have the following folders:
lua
[advancedinventory]/
├── qs-inventory/ -- the inventory itself
│ ├── config/config.lua -- framework and appearance detection only
│ ├── client/custom/ -- bridges and gameplay hooks (editable)
│ ├── server/custom/ -- bridges, commands and webhooks (editable)
│ ├── shared/items.lua -- item list (ESX and Qbox)
│ ├── shared/weapons.lua -- weapon list (ESX and Qbox)
│ ├── shared/data/ -- factory defaults of every setting
│ ├── locales/ -- 41 languages
│ └── web/ -- the interface, already built
├── qs-inventory-objects/ -- streamed 3D backgrounds (required)
├── [dlc]/ -- qs-armor, qs-licenses, qs-weapondraw, qs-weaponsonback
└── [sql]/ -- esx.sql and qb.sql
The folder must be named qs-inventory. Every Quasar and third-party script calls exports['qs-inventory'], and a renamed copy prints an error in the console and refuses to run. The add-ons in [dlc] keep their names for the same reason.
Then open your server.cfg and make sure every dependency — and everything the inventory should detect — starts before it:
bash
ensure oxmysql
ensure ox_lib
# Framework (one of them)
ensure es_extended
# ensure qb-core# ensure qbx_core
ensure MugShotBase64
# Appearance, target and interface, if you use them
ensure illenium-appearance
ensure ox_target
ensure qs-interface
ensure qs-inventory-objects
ensure qs-inventory
# Optional add-ons, after the inventory
ensure qs-armor
ensure qs-licenses
ensure qs-weapondraw
ensure qs-weaponsonback
The loading order matters. The framework, the appearance script and the target are detected once, when the inventory starts, so anything that starts after it is not found.
Import the SQL file that matches your framework from the [sql] folder with HeidiSQL or any MariaDB client:
Import [sql]/esx.sql. Besides the inventory tables, it adds the inventory_skill, unlocked_skills and metadata columns to users, and its first line resets the inventory column of every player to [].
Import [sql]/qb.sql. Besides the inventory tables, it adds the inventory_skill and unlocked_skills columns to players. Player inventories already live in players.inventory and are left as they are.
Tables
Hold
inventory_stash
Every stash, by stash id.
inventory_trunk · inventory_glovebox
Trunk and glovebox contents, by plate.
inventory_clothes
The clothing pieces each player is wearing.
inventory_metadata
Per-player data kept by the inventory and its add-ons, such as stored armour.
inventory_quests
Each player's missions: progress, rewards to claim and missions completed.
users / players
The player's own inventory, level and XP (inventory_skill) and unlocked skills (unlocked_skills).
The tables behind the two in-game panels are created by the inventory itself on first start, all prefixed qs_inventory_:
Tables
Hold
settings
Every setting you changed in /inventoryconfig — one row per change; a setting at its default has no row.
creator
Stashes, shops, sell points, crafting benches, items and weapons made in /inventorycreator.
skills · missions · announcements
The skill tree, the missions and the pause-menu news.
itemlog · itemalerts
The history of every item created and the anti-dupe alerts.
import_backup
A copy of every row the importer rewrites, made before it touches it.
On that first start the inventory also writes its starter content: eight shops with 36 locations between them, two crafting benches, two sell points, the wallet and backpack items, a 43-skill tree, 21 missions and eight pause-menu announcements. Each set is written once — delete a starter shop and it stays deleted.
The files use MariaDB's ADD COLUMN IF NOT EXISTS, which MySQL 8 does not accept. Run the database on MariaDB, and avoid XAMPP and similar local stacks for a live server — they are a common source of connection errors.
Items are not stored in SQL. Where the base list lives depends on the framework:
Framework
Items
Weapons
ESX
qs-inventory/shared/items.lua
qs-inventory/shared/weapons.lua
Qbox
qs-inventory/shared/items.lua
qs-inventory/shared/weapons.lua
QBCore
qb-core/shared/items.lua
qb-core/shared/weapons.lua
On ESX the items SQL table is not read at all. On QBCore, copy the items that come with the inventory — clothing pieces, attachments, tints, ammo, backpacks — into qb-core/shared/items.lua, and keep QBCore's own cash item, which is what the inventory uses as money there. If some items behave strangely on QBCore, your items file is probably outdated; Quasar keeps a reference items.lua for QBCore.
New items do not have to go in a file at all. An item made in /inventorycreator → Items exists for every player the moment you save it, on every framework — on QBCore it is pushed into qb-core's item list live. See Usage.
Everything is configured in game through two panels: /inventoryconfig for the settings and /inventorycreator for stashes, shops, benches, items and more. Both are behind an admin check, and any of these routes lets you in:
The usual route. Add these lines to server.cfg and restart the server:
Swap group.admin for any principal — a single identifier.license:… works too. Give only command.inventorycreator to staff who should build shops and stashes but not touch the settings.
Automatic, nothing to configure. ESX admin and superadmin, and QBCore / Qbox god and admin (or anyone with the command ace) open both panels.
In /inventoryconfig → Access & commands you can rename the ace each panel checks, and the command that opens it. A new ace applies at once; a new command name applies after a restart.
Somebody without access who types either command gets a notification, and the server console prints the exact add_ace line that would let them in.
Almost nothing is configured in files. Weights, slots, keys, vehicles, robbery, weapons, the quick wheel, the pause menu, security — every behaviour lives in /inventoryconfig, is applied to every player when saved, and is kept in the database, so an update never wipes it. The files that are still worth knowing:
File
Contents
config/config.lua
Framework and appearance detection. Touch it only if you renamed your core resource.
server/custom/webhook/webhook.lua
Discord webhook URLs, one per log category, and the Discord bot token used to show avatars in the pause menu.
shared/items.lua · shared/weapons.lua
The base item and weapon lists on ESX and Qbox. The guide at the top of items.lua explains every field.
server/custom/framework/esx.lua
The ESX starter items — an ID card, five water bottles, five sandwiches and a phone — handed out once per character when your character creator triggers inventory:client:GiveStarterItems. QBCore and Qbox use their own.
server/admin/seeds.lua
The example benches, sell points and equipment items written on the first start.
client/custom/ · server/custom/
Open bridges: framework, clothing, target, notifications, robbery, selling and the admin commands.
shared/data/
The factory defaults the panels start from. Change the values in game, not here.
The language can be set for every Quasar resource at once with a convar in server.cfg, or for the inventory alone in /inventoryconfig → General → Language (applies after a restart):
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.
Editing shared/data/ after a setting was saved in the panel changes nothing — the database wins. The server also mirrors the saved settings to data/settings.json so they load before any other script on the next start; never edit that file by hand. Reset section in the panel puts back what shipped.
After completing the installation, restart your server and read the console. The version check prints one of these lines:
bash
You are using the latest version of qs-advancedinventory!
New version available for qs-advancedinventory!
A warning listing Missing webhooks is expected until you fill in webhook.lua. Then join your server and work through the first loop:
Open the inventory
Press TAB. Your character appears beside the grid, and the What's in the Bag? mission is ready to claim on the missions page.
Give yourself an item
Type /inventorycreator, open Give, pick yourself and five water_bottle. Drag one onto the hotbar and press its number key to drink it.
Press ESC
The pause menu opens with your card, money, job and the server announcements. From there, Usage covers everything else.
Nothing needs a restart for content. Stashes, shops, items, skills, missions and most settings apply to every player the moment you save them; the few settings that need a restart are marked in the panel.