Admin Panel
Admin Panel
invadmin
A full administration surface inside the game — not a config file, not a set of console commands with a menu drawn over them. Everything here takes effect without a restart, except the few settings read once at start — the Settings tab says so beside each of them.
The panel never edits your files
Every change made here is stored in a database table beside the config file, not written into it:
| What you edit | Goes to | The file stays |
|---|---|---|
| Item fields | aty_overrides |
data/items.lua — the developer's copy |
| Settings | aty_settings |
shared/config.lua — the factory defaults |
| Shops & stashes | aty_places |
Config.Shops / Config.Stashes |
| Recipes | aty_recipes |
data/recipes.lua |
The panel shows the file value beside the live one, so "what did this used to be" always has an answer that cannot itself have been edited from the panel.
For the same reason the panel will not delete a shop or stash the file declares — it refuses with defined in config.lua — edit the file, because deleting it would only last until the next restart put it back.
Tabs
| Tab | What it does |
|---|---|
| Players | Everyone online, their container id, slot and weight usage, and a button to open any bag that has loaded |
| Containers | Every container saved in the database — player, stash, trunk, glovebox, wear, bag — the 400 most recently written, with version and last-write time. Any of them can be opened. Ground piles live in memory only and are not listed |
| Ledger | The movement log, filterable by item, actor, container or transaction id, with Roll back on every row |
| Integrity | Deep scan: counts every unit and names duplicates, and reads the ledger for ghosts |
| Economy | What the ledger has measured — what is being created and destroyed, what is held, and which containers gained value out of nowhere |
| Definitions | Item definitions, editable live, grouped under plain headings |
| Settings | Config overrides, written without touching the file |
| Appearance | The interface's look, repainted live while you edit it; nothing is written until Save |
| Shops | Shop catalogues, stock and prices |
| Stashes | Registered stashes |
| Recipes | Crafting recipes, edited as a form |
| Airdrops | Loot tables and live crates, with per-line validation |
| Dumpsters | What a dumpster can hold and how often it refills, with per-line validation |
| Migration | Three steps: pick where from, see what would happen, move it — each loss is a switch you turn on |
Taking an item over from the item screen
Definitions edits an item live. Beyond the obvious fields — label, weight, stack, rarity, shelf life — four of them decide how the item BEHAVES:
| Field | What it does |
|---|---|
| Condition | Whether the item wears out. On means a new one starts at 100% |
| Use animation | The clip played while it is used: eat, drink, bandage, medkit, pill, armour |
| Held object | The model in the hand, e.g. prop_ecola_can. Six numbers may follow to place it — prop_ecola_can 0 0 0.03 0 0 -40 — which is what invprop prints |
| Hunger / Thirst / Health / Armour | What one use restores |
Setting an animation, a held object or an effect amount is what takes the item over from the framework. Until then a framework handler runs that item with its own bar, clip and prop (see Consumables & Portions); afterwards the inventory runs it, live, with no restart. Clear the fields to hand it back.
invroute <item> who runs it, and what the player sees
invprop <playerId> <model> [x y z rx ry rz] [bone] [clip]
invprop puts the model in that player's hand with the clip running and lets them nudge it — arrows move, SHIFT rotates, CTRL for fine steps, ENTER prints the numbers for this screen and for data/items.lua. A held object cannot be reasoned out; every model's origin sits where its author left it.
Giving items
Two places, one rule — the item goes through the same transaction as any other, the ledger names the admin with the reason admin_give, and an open inventory updates at once.
- Definitions — pick an item, pick an online player, set the amount, Give. The player gets a notification.
- The container panel — open any container (a player's bag from Players, anything from Containers, a shared stash with Contents on the Stashes tab), pick an item, set the amount, Add item.
A give that does not fit — too heavy, no free slot — is refused under the form and nothing is written. Worn clothes, shops and search results cannot be given into.
Opening a container
Any container on the Containers tab can be opened and edited directly. One nobody has open is read into memory from the database first, so what you edit is what the engine holds. On the Players tab a player whose bag has not loaded yet shows not loaded instead of a button — an unloaded bag is asleep, not empty.
Permissions
Config.Admin = {
enabled = true,
ace = 'aty_inventory.admin',
perms = { 'admin', 'god' },
}
Three ways in: the server console, the ACE permission (add_ace group.admin aty_inventory.admin allow), or a qb-core permission level listed in perms. The gate is checked on every request, not once when the panel opened. On qb-core and ESX, /invadmin is registered through the framework's own command system.
invadmins [playerId] who may open the panel, and why
invadmintest [playerId] asks the server every question the panel asks