Configuration
Configuration
Everything lives in shared/config.lua. It is heavily commented — this page covers the settings you actually touch on day one; the full list is in Config Reference.
That writes to aty_settings, never to this file — the file keeps the factory defaults so "what did this used to be" stays answerable. See Admin Panel.
Everything else is file-only, by design in two different ways:
Config.Admindecides who may open the panel. If it lived in the panel, one bad value would lock every admin out of the screen they need to fix it.Config.Anim,Config.PropPoints(bar a dumpster's loot and timing),Config.CarryVisibleand the weapon tables are not tunables at all — they are wiring: animation dictionaries, bone indices, prop models, ammo mappings. They bind the resource to GTA.
The player
Config.Player = {
slots = 50, -- how many squares
maxWeight = 30000, -- grams. 30000 = 30 kg
}
Weight is always grams, everywhere in the resource. The interface converts for display; the server never does.
Keys
Config.OpenKey = 'F2' -- your inventory (glovebox when seated, a stash/shop point when at one)
Config.SecondaryKey = 'K' -- boot behind you, glovebox when seated, bin / vending machine
Config.Hotbar.peekKey = 'TAB' -- show the quick slots
Config.OpenRadius = 3.0 -- metres from a stash / shop point to open it; its panel closes 1 m past that
These are ox_inventory's keys. All three are rebindable FiveM keybinds (Settings → Key Bindings → FiveM). They are defaults: FiveM keeps a player's key once they have joined, so changing one here reaches new players only. ESC, F2 and K close the open inventory. F2 (any F-key it is rebound to) closes it even while you type in the search, rename or note box; K, being a letter, types there instead.
Quick slots
Config.Hotbar = {
mode = 'ox', -- or 'bind' / 'slots'
holdTime = 3000, -- ms the TAB peek stays up
showOnUse = false, -- flash the bar on every use
}
ox (the default) works like ox_inventory: bag slots 1–5 are the quick slots. They are the first row of the ordinary 50-slot bag, marked 1–5 when something is in them, and keys 1–5 use whatever sits there with the inventory closed. The bag gets no extra slots, there is no second bar inside the inventory, and 1–5 do nothing while it is open. TAB shows slots 1–5 on their own for three seconds.
The other two models stay available:
bind(the default before 1.7.7) — a quick slot points at an item, not a place. It is bound by dragging onto a bar under the bag, and a binding whose item runs out stays with a red zero. Bindings are kept on each player's PC.slots— the quick slots are five extra slots on top of the bag (50 + 5), drawn only in the bar under the bag.
The mode can be switched live from the admin panel. A value saved there wins over the file: invsettings clear Hotbar.mode goes back to the file default.
Language
Config.UI = {
language = 'en',
languagePicker = true,
languages = { de = 'Deutsch', fr = 'Francais', … },
}
language is what every player gets before choosing. languagePicker = false removes the choice entirely — correct for a single-language server, where a mixed-language screen is worse than one consistent wrong one.
English (en) and Turkish (tr) are built into the interface and are not listed. Each entry in languages needs a matching locales/<code>.json. Nine packs ship with the resource; delete the ones you have no players for and those files stop being read.
Starter items
Config.StarterItems = {
{ name = 'phone', count = 1 },
{ name = 'id_card', count = 1 },
…
}
Given once, on first spawn of a fresh character; an empty table hands out nothing. The grant is written to the ledger like everything else, so "did this player start with that" is answerable.
Turning features off
Every major feature has an enabled flag and turning it off removes it completely — the key stops responding, the panel section disappears, the commands refuse. Nothing is left half-present.
| Setting | Turns off |
|---|---|
Config.Wear.enabled |
Clothing slots and the character view |
Config.Placeable.enabled |
Putting props down in the world |
Config.Airdrop.enabled |
Airdrop crates and their commands |
Config.Decay.water.enabled |
Water damage to carried items while swimming |
Config.Encumbrance.enabled |
Movement penalty when heavy |
Config.Pricing.enabled |
Dynamic shop pricing |
Config.Webhook.enabled |
Discord webhooks |
Money in the bag
Config.Money = {
mode = 'mirror', -- or 'framework'
stack = 250000, -- per slot; false = no ceiling
accounts = { cash = 'cash', black_money = 'black_money' },
}
mirror (the default, as in ox_inventory) keeps an item in the bag equal to the wallet, both ways: drop $500 and the wallet loses $500, get paid and the item grows. The mirrored item weighs nothing and stacks to stack a slot (250,000 by default). A balance bigger than the bag's free slots can hold is shown as far as it fits; the rest appears as slots free up, and the wallet is never wrong in the meantime. framework keeps money in the wallet only.
Cash is the cash item; scripts written for ox_inventory that ask for money reach it. black_money is ESX's dirty-money account; qb-core and Qbox have none.
invwallet <playerId> shows which backend holds the money and what it reads.
After any change
invdoctor
It checks the config the server is running and reports anything inconsistent — a shop or loot table naming an item that does not exist, an item worn on a slot Config.Wear.slots does not define, two items whose labels are confusable, stored ammunition not yet converted for Config.Ammo.mode.