Obsi Inventory reads its options from the upstream convars and from five files in data/obsi/.
Values saved in the admin panel are stored in the database and take priority over the files.
Files
| File | Contents |
|---|---|
data/obsi/core.lua | Slot layout, player defaults, clothing, weight effects, throwing, plates, fast actions, ped camera |
data/obsi/interact.lua | Give, trade, world containers, target options, discovery, shops, weapon attachments |
data/obsi/admin.lua | Admin command and key, roles, addon defaults, history, security |
data/obsi/rarity.lua | Default rarities |
data/obsi/staff.lua | Staff identifiers (server side only) |
locales/<lang>.json | Every string; English and Polish are complete |
The upstream files (data/items.lua, data/shops.lua, data/stashes.lua, data/crafting.lua and the rest) keep their format.
Convars
The upstream convars still apply. The ones you usually set:
| Convar | Default | Meaning |
|---|---|---|
inventory:framework | esx, qbx, ox or nd | |
inventory:slots | 35 | Total player slots |
inventory:target | false | Use ox_target for shops and stashes |
inventory:keys | ["F2", "K", "TAB"] | Inventory, secondary inventory and hotbar keys |
Use setr so the client can read them, for example setr inventory:slots 35.
core.lua
Slot layout
pockets = 5, -- slots 1-5, hotbar keys 1-5
baseSlots = 25, -- slots 6-25 always open; the rest needs a backpack
See Slots and backpacks.
Player defaults
The settings every new player starts with. Each player's own copy is stored on their client.
defaults = {
accent = '#E5122E', -- any hex / rgb() / hsl() colour
secondary = '#121417', -- console background colour
theme = 'graphite', -- graphite | carbon | slate
sharp = true, -- square corners
font = 'Inter', -- Inter | Segoe UI
scale = 100, -- 70 to 130 %
density = 'comfortable', -- comfortable | compact
clothingColumn = true,
clothingSide = 'center', -- left | center | right
pedPreview = true,
pedCamera = true,
notifyStyle = 'compact', -- compact | minimal
streamer = false,
sounds = true,
},
Other sections
| Key | Page |
|---|---|
clothing | Clothing |
weight | Slots and backpacks |
throw | Throwing |
plates | Items and rarity |
fastActions | Buttons in the FAST ACTIONS strip: hands up, undress, hanger, trade, give |
item | renameMax = 32, describeMax = 160 |
pedMode | 'clone' or 'pause', how the character copy is drawn |
ped | Camera fov = 40.0 and easeMs = 160 |
status | interval = 500 ms between status updates while open |
interact.lua
| Key | Page |
|---|---|
give | Give and trade |
trade | Give and trade |
search | Search animation for dumpsters and trunks |
target | Extra ox_target options for dumpsters, trunks, stashes and evidence when inventory:target is off |
discovery | Items and rarity |
shop | Shops |
attachments | Weapon attachments |
admin.lua
admin = {
command = 'invadmin', -- false = no command
key = nil, -- e.g. 'F10'
superAce = 'group.admin', -- players with this ace get every page
rateLimit = { calls = 30, window = 3000 },
roles = { ... }, -- see Permissions
},
History
history = {
enabled = true,
retentionDays = 30, -- 0 = keep forever
flushInterval = 5000, -- ms between batched inserts
maxBuffer = 500,
ignore = {}, -- e.g. { open = true, close = true }
},
Security
| Setting | Default | Meaning |
|---|---|---|
autoKick | false | Drop players on severe reports |
distanceCheck | true | Report opens and drops from too far away |
maxDistance | 10.0 | Metres for that check |
emergencyLock | false | Blocks every inventory from opening (never saved) |
retention | 100 | Reports kept in memory for the Security page |
imageHosts | r2.fivemanage.com, i.fmfile.com | Hosts allowed for item image URLs |
severe | malformed, locked_slot, exploit | Report kinds treated as severe |
logHookRejections, trimPlates, logLevel and evidenceGrade are live copies of the matching upstream convars.
Addon defaults
features holds the default state of every addon on the Addons page.
The default applies until an admin flips the switch; from then on the database value is used.