Configuration

20 min readUpdated Today

Configuration

ML Clothing has two config files, both left out of escrow so they can be edited:

  • shared/config.lua holds the clothing, bag, armor plate, wear, and anti-exploit settings.
  • shared/invadmin_config.lua holds the settings for the bundled inventory admin panel.

Every value below is shown with its default and explained.

General

shared/config.lua
1Config.Debug = false      -- Enable debug prints in console
2Config.Language = 'en'    -- Language: 'en' | 'it' | 'de' | 'es' | 'fr'
  • Config.Debug: when true, prints diagnostic lines through DebugPrint. Keep it false in production.
  • Config.Language: the active locale. Locale files present in the build are en, it, de, es, fr, and pt-BR. If the chosen language has no file, the resource falls back to English.

Notifications

Each entry toggles one player notification. Set to false to suppress that message.

shared/config.lua
1Config.Notifications = {
2    inventory_full_dropped = true,       -- Notify when items are dropped because inventory is full
3    not_enough_space = true,             -- Notify when there's not enough space to equip
4    inventory_full_add_failed = true,    -- Notify when item couldn't be added to inventory
5    outfit_updated = true,               -- Notify when outfit is changed
6    clothing_slot_occupied = true,       -- Notify when trying to equip a slot that's already taken
7    no_carrier_equipped = true,          -- Notify when trying to insert a plate without a carrier
8    carrier_full = true,                 -- Notify when plate carrier is full
9    plate_inserted = true,               -- Notify when an armor plate is inserted
10    plate_swapped = true,                -- Notify when a plate is swapped for a better one
11    plate_not_better = true,             -- Notify when the new plate isn't better than current
12    bag_item_blocked = true,             -- Notify when an item is blocked from entering the bag
13}
  • inventory_full_dropped: item dropped on the ground because the inventory is full.
  • not_enough_space: not enough room to equip the item.
  • inventory_full_add_failed: item could not be added back to the inventory.
  • outfit_updated: outfit changed successfully.
  • clothing_slot_occupied: the target clothing slot is reserved or already taken.
  • no_carrier_equipped: a plate was used without a plate carrier equipped.
  • carrier_full: the plate carrier has no free plate slot.
  • plate_inserted: a plate was inserted.
  • plate_swapped: a plate was swapped for a stronger one.
  • plate_not_better: the inserted plate is weaker than what is already in the carrier.
  • bag_item_blocked: an item was blocked from entering a bag by the bag blacklist.

Bag and bag effect

shared/config.lua
1Config.BagEffect = true -- If true, equipped bags affect player movement speed based on weight
2
3Config.Bag = {
4    DefaultWeight = 5000,  -- Default bag carry capacity (grams) when no specific bag size matches
5    DefaultCols = 3,       -- Default bag inventory columns
6    DefaultRows = 3,       -- Default bag inventory rows
7
8    SpeedTable = {
9        { 0,  1.00 },
10        { 5,  0.97 },
11        { 10, 0.93 },
12        { 15, 0.88 },
13        { 18, 0.82 },
14        { 27, 0.75 },
15        { 36, 0.65 },
16        { 40, 0.55 },
17    },
18}
  • Config.BagEffect: when true, a worn bag slows the player based on the total weight it carries.
  • Config.Bag.DefaultWeight: bag capacity in grams used when the worn bag drawable has no entry in Config.BagSizes.
  • Config.Bag.DefaultCols / DefaultRows: default bag grid used with the default weight.
  • Config.Bag.SpeedTable: pairs of { weight_kg, speed_multiplier }. The player speed multiplier is interpolated linearly from bag weight in kilograms. 0 kg gives full speed (1.00); 40 kg gives 0.55.

Bag sizes

shared/config.lua
1Config.BagSizes = {
2    female = {
3        [111] = { weight = 10000, cols = 4, rows = 4 },
4        -- ...
5        [125] = { weight = 15000, cols = 6, rows = 4 },
6        -- ...
7    },
8    male = {
9        [111] = { weight = 15000, cols = 6, rows = 4 },
10        -- ...
11    },
12}
  • Config.BagSizes: maps the worn bag drawable index, per gender, to a stash size. Each entry sets weight (grams), cols, and rows. When a bag is equipped, the drawable index of the ped's bag component decides which entry applies. Drawables with no entry fall back to Config.Bag.DefaultWeight and the default grid. The file ships with a large default table for both male and female; edit, add, or remove indices to match your bag models.

Progress

shared/config.lua
1Config.Progress = {
2    OpenDuration = 2500, -- Duration (ms) of the progress bar when opening a bag
3}
  • Config.Progress.OpenDuration: length in milliseconds of the progress bar shown when a player opens a bag stash.

Armor plates

shared/config.lua
1Config.SyncPlatesEveryHit = true       -- Sync plate health to database on every damage event
2Config.UseBrokenPlates = true          -- If true, destroyed plates drop as broken plate items
3Config.BrokenPlateItem = 'brokenplate' -- Item name for broken/used armor plates
4
5Config.HeavyDrawables = {
6    male = { 12, 13, 15, 18 },      -- Male drawable indices with heavy armor visuals
7    female = { 22, 23, 25, 28 },    -- Female drawable indices with heavy armor visuals
8}
9
10Config.Plates = {
11    ['heavyplate'] = 50,    -- Heavy armor plate: 50% armor
12    ['lightplate'] = 25,    -- Light armor plate: 25% armor
13    ['brokenplate'] = 0,    -- Broken plate: no armor (can be repaired)
14}
  • Config.SyncPlatesEveryHit: when true, plate health is written back to plate metadata on every damage event, so plate wear survives a disconnect at the cost of more frequent writes.
  • Config.UseBrokenPlates: when true, a plate that reaches zero health becomes the broken plate item.
  • Config.BrokenPlateItem: the item name used for a destroyed plate. Must be a registered item.
  • Config.HeavyDrawables: per-gender ped drawable indices that count as heavy armor visuals and affect movement.
  • Config.Plates: maps each plate item name to its armor value (0 to 100). heavyplate gives 50, lightplate gives 25, brokenplate gives 0. The armor value a carrier grants is the sum of its plate health, capped at 100.

Clothing items

shared/config.lua
1Config.ClothingItems = {
2    hat        = { slot = 11, type = 'prop',      componentId = 0 },
3    undershirt = { slot = 12, type = 'component', componentId = 8 },
4    jacket     = { slot = 13, type = 'component', componentId = 11 },
5    bodyarmor  = { slot = 14, type = 'component', componentId = 9 },
6    gloves     = { slot = 15, type = 'component', componentId = 3 },
7    pants      = { slot = 16, type = 'component', componentId = 4 },
8    shoes      = { slot = 17, type = 'component', componentId = 6 },
9    mask       = { slot = 18, type = 'component', componentId = 1 },
10    glasses    = { slot = 19, type = 'prop',      componentId = 1 },
11    earrings   = { slot = 20, type = 'prop',      componentId = 2 },
12    chain      = { slot = 21, type = 'component', componentId = 7 },
13    bracelet   = { slot = 22, type = 'prop',      componentId = 7 },
14    watch      = { slot = 23, type = 'prop',      componentId = 6 },
15    bag        = { slot = 24, type = 'component', componentId = 5 },
16    decals     = { slot = 25, type = 'component', componentId = 10 },
17}
  • Config.ClothingItems: the master map from item name to inventory slot and ped component. Each entry has:

- slot: the inventory slot the item locks into. Must be unique per item. The values run 11 to 25.

- type: 'component' for a ped component or 'prop' for a ped prop.

- componentId: the GTA component or prop index the item drives.

  • From this table the resource builds Config.ClothesSlotID (the sorted list of reserved slots), Config.ValidSlotsPerItem, and Config.ComponentMapping. Those three are derived automatically; do not edit them by hand.
Slot 14 is the plate carrier

bodyarmor uses slot 14 and drives the plate carrier. Do not remap it or add the wear system to it. It has its own plate durability system.

Default clothing

shared/config.lua
1Config.DefaultClothing = {
2    male = {
3        mask       = { draw = 0, text = 0 },
4        hat        = { draw = -1, text = -1 },
5        -- ...
6        pants      = { draw = 21, text = 0 },
7        shoes      = { draw = 34, text = 0 },
8        -- ...
9    },
10    female = {
11        -- ...
12        pants      = { draw = 15, text = 0 },
13        shoes      = { draw = 35, text = 0 },
14        -- ...
15    },
16}
  • Config.DefaultClothing: the drawable and texture applied to each clothing slot when an item is removed, per gender. A value of -1 clears the component or prop (nothing worn). These are the fallback naked-state values so removing a jacket does not leave a gap.

Anti-exploit

shared/config.lua
1Config.AntiExploit = {
2    PlateSwapCooldown = 2000,        -- Cooldown (ms) between plate swap actions
3    ValidatePlateHealth = true,      -- Server validates plate health on every action
4    MaxHeavyPlates = 2,              -- Max heavy plates a player can carry
5    MaxLightPlates = 1,              -- Max light plates a player can carry
6    PreventArmorDupe = true,         -- Prevent armor duplication exploits
7}
  • PlateSwapCooldown: minimum milliseconds between plate swap actions per player.
  • ValidatePlateHealth: when true, the server re-checks plate health on every plate action instead of trusting the client.
  • MaxHeavyPlates: maximum heavy plates a player may carry.
  • MaxLightPlates: maximum light plates a player may carry.
  • PreventArmorDupe: when true, blocks the known armor duplication paths.

Stash prefixes

shared/config.lua
1Config.Stash = {
2    PlateCarrierPrefix = 'platecarrier_',  -- Prefix for plate carrier stash IDs
3    BagPrefix = 'playerbag_',              -- Prefix for bag stash IDs
4}
  • Config.Stash.PlateCarrierPrefix: internal ID prefix for plate carrier stashes.
  • Config.Stash.BagPrefix: internal ID prefix for bag stashes. These are used to build unique stash identifiers; leave them unless they collide with another resource.

Bag blacklist

shared/config.lua
1Config.BagBlacklist = {
2    enabled          = true,   -- Master toggle (false = disables the whole filter)
3    denyBagInsideBag = true,   -- Prevents nesting bags inside other bags (recommended: true)
4
5    items = {
6        -- 'gold',
7        -- 'weapon_rpg',
8    },
9
10    prefixes = {
11        'blueprint_',
12        -- 'ammo_',
13    },
14}
  • enabled: master switch for the bag content filter. false disables the whole feature.
  • denyBagInsideBag: when true, blocks nesting a bag inside another bag.
  • items: exact item names blocked from entering a bag.
  • prefixes: any item whose name starts with one of these strings is blocked. The default ships with blueprint_.
  • The filter runs on the inventory swap hook: a matching incoming item has the swap refused. The player notice is toggled by Config.Notifications.bag_item_blocked.

Wear and decay

shared/config.lua
1Config.WearDecay = {
2    Enabled      = true,         -- Master switch for the wear system
3    Time         = '60m',        -- Default time a piece lasts while worn: '45s', '30m', '2h', '1d' (plain number = minutes)
4    OnDepleted   = 'break',      -- at 0 durability: stays worn but broken (0 protection via ml_clothingBroken)
5    Notify       = true,         -- notify the player when a piece breaks
6
7    Repairable   = false,        -- no repair item: equip a fresh piece to restore protection
8    RepairItem   = 'repair_kit',
9    RepairCount  = 1,
10    RepairAmount = 100,
11
12    Items = {
13        ['antirad_mask'] = {
14            time = '30m',
15            male = {
16                { component = 1, drawable = 244, texture = 0 },
17                -- ...
18            },
19        },
20        ['antirad_suit'] = {
21            time = '60m',
22            unisex = {
23                { component = 11, drawable = 660, texture = 0 },
24                { component = 11, drawable = 731, texture = 0 },
25            },
26        },
27    },
28}
  • Enabled: master switch for the wear system. When on, configured drawables lose durability while worn.
  • Time: how long a piece lasts while worn before it breaks. Accepts a number with a unit suffix ('45s', '30m', '2h', '1d') or a plain number, read as minutes. Entries without their own time use this default. The tick rate and drain per tick are derived internally.
  • OnDepleted: behavior at zero durability. 'break' keeps the piece worn but broken, giving no protection, and flags it in the ml_clothingBroken statebag.
  • Notify: notify the player when a piece breaks.
  • Repairable: when false, worn gear cannot be repaired with an item; the player equips a fresh piece to restore protection.
  • RepairItem / RepairCount / RepairAmount: the default repair item, quantity consumed, and durability restored, used by entries that do not set their own.
  • Items: the drawables managed by the wear system. An entry matches by drawable (component, drawable, texture) per gender (male, female, or unisex) or by item name, and may set its own time. Each entry may override the default repair with repairItem, repairCount, and repairAmount. Setting repairItem = false makes a piece non-repairable. The shipped entries target radiation gas masks and antirad suits. Do not add bodyarmor here; it has its own plate durability. See _INSTALL/WEAR_DECAY.txt for the full setup notes. Configs from older builds that still set TickSeconds and drainPerTick keep working; time wins when both are present.

Admin panel

The bundled inventory admin panel is configured in a separate file.

shared/invadmin_config.lua
1Config.AdminAce = nil
2Config.Command = 'invadmin'
3Config.OpenKey = nil
4Config.DefaultTheme = 'default'
5Config.ClothingCatalogUrl = 'http://127.0.0.1:3960/api/catalog'
  • Config.AdminAce: an ACE permission that grants admin access to the panel. When set, a player holding this ACE passes the admin check. When nil, access falls back to Bridge.HasPermission.
  • Config.Command: the chat command that opens the admin panel. Default invadmin.
  • Config.OpenKey: an optional key binding to open the panel. When set to a non-empty string, a keybind command is registered. When nil, no keybind is created and the panel opens by command only.
  • Config.DefaultTheme: the panel theme sent to the UI on open. Default 'default'.
  • Config.ClothingCatalogUrl: the HTTP endpoint the clothing tab reads its drawable catalog from. The default points to a local service; a hosted catalog URL will be published and can be set here. The clothing tab also uses ml_autocapture (free resource) for item image capture; without it the capture button reports that the resource is not running.
shared/invadmin_config.lua
1Config.RateLimit = {
2    list = 500,
3    get = 400,
4    save = 1500,
5    delete = 1500,
6    upload = 1500,
7    playerList = 500,
8    playerGet = 400,
9    playerGive = 800,
10    playerRemove = 800,
11    stashList = 500,
12    stashGet = 400,
13    stashSave = 1500,
14    stashDelete = 1500,
15}
  • Config.RateLimit: per-action cooldowns in milliseconds for the admin panel callbacks. Each key maps to one server action (item list, get, save, delete, image upload, player list and give/remove, stash list, get, save, delete). Raising a value throttles that action more; lowering it allows faster repeat use.
shared/invadmin_config.lua
1Config.Editor = {
2    DefaultGrid = { width = 1, height = 1 },
3    MaxGrid = 5,
4    DefaultWeight = 0,
5    DefaultStack = true,
6    DefaultClose = true,
7    NamePrefix = 'custom_',
8    Rarities = {
9        'common',
10        'uncommon',
11        'rare',
12        'epic',
13        'legendary',
14    },
15    ConsumableTypes = {
16        'food',
17        'drink',
18        'alcohol',
19        'medical',
20        'other',
21    },
22    MaxImageBytes = 524288,
23}
  • DefaultGrid: default item grid size for a new item created in the editor.
  • MaxGrid: maximum grid width or height allowed in the editor.
  • DefaultWeight: default weight for a new item.
  • DefaultStack: whether new items are stackable by default.
  • DefaultClose: whether new items close the inventory on use by default.
  • NamePrefix: prefix applied to item names created in the editor. Default custom_.
  • Rarities: the rarity options offered in the editor.
  • ConsumableTypes: the consumable type options offered in the editor.
  • MaxImageBytes: maximum size in bytes for an item image upload. Default 524288 (512 KB).

Server ConVars

These convars go in your server.cfg (or a separate ox.cfg you exec from it). They are read once at resource start, so any change requires a restart of the resource (or the server). A complete, commented file with every convar and its default ships at setup/server.cfg.example.

set vs setr

Use setr for any convar the interface reads, and set for server-only values (webhooks, loot tables, ACE-style checks). setr replicates the value to game clients; set keeps it on the server only. If a client-facing convar is set with plain set, the client never receives the value and silently falls back to its built-in default - the setting will appear to do nothing, with no error anywhere. Every convar below already shows the correct prefix: copy it exactly as written.

  • inventory:framework: Overrides framework detection. Leave unset to let ml_bridge auto-detect it. Accepts esx, qb, qbx, ox, nd, standalone. Default: 'esx'.
  • inventory:weight: Maximum weight a player can carry, in grams. Default: 30000.
  • inventory:slots: Flat slot count, ignored if inventory:gridrows is greater than 0. Default: 50.
  • inventory:gridcols: Columns of the player inventory grid. Default: 8. (exclusive to this build)
  • inventory:gridrows: Rows of the player inventory grid. When greater than 0, the total slot count becomes (gridcols × gridrows + 15); the extra 15 slots are reserved for clothing. Default: 4. (exclusive to this build)
  • inventory:secondarygridcols: Columns of the grid used by secondary inventories (trunk, stash, glovebox). Default: 6. (exclusive to this build)
  • inventory:police: Jobs with police privileges (steal command, evidence locker, etc). JSON array of strings. Default: '["police","sheriff"]'.
  • inventory:accounts: Currency accounts used by the framework; the first entry is the primary account. JSON array of strings. Default: '["money"]'.
cfg
1setr inventory:framework ''
2setr inventory:weight 30000
3setr inventory:slots 50
4setr inventory:gridcols 8
5setr inventory:gridrows 4
6setr inventory:secondarygridcols 6
7setr inventory:police '["police","sheriff"]'
8set inventory:accounts '["money","black_money"]'
  • inventory:dropcols: Columns of the drop grid (the "bag on the ground"). Default: 6. (exclusive to this build)
  • inventory:droprows: Rows of the drop grid. When greater than 0, it overrides inventory:dropslots with (dropcols × droprows). Default: 4. (exclusive to this build)
  • inventory:dropslots: Total drop slots, used only when inventory:droprows is 0. Default matches the player slot count.
  • inventory:dropweight: Maximum total weight of a drop, in grams. Default matches the player weight.
  • inventory:dropmodel: Prop model spawned as the bag on the ground. Default: 'prop_med_bag_01b'.
  • inventory:dropprops: Spawns a visible prop for every drop. This has a server and client cost; leave at 0 unless the visual is needed. Default: 0.
cfg
1setr inventory:dropcols 6
2setr inventory:droprows 4
3setr inventory:dropslots 50
4setr inventory:dropweight 30000
5setr inventory:dropmodel 'prop_med_bag_01b'
6setr inventory:dropprops 0
  • inventory:weaponanims: Plays holster/unholster animations when equipping a weapon. Default: 1.
  • inventory:weaponnotify: Shows an "Equipped X" notification when a weapon is drawn. Default: 1.
  • inventory:weaponmismatch: Anti-cheat check: kicks the player if the client reports a weapon the server does not know about. Default: 1.
  • inventory:autoreload: Reloads automatically when the magazine is empty. Default: 0.
  • inventory:aimedfiring: Restricts firing to while aiming. Default: 0.
  • inventory:ignoreweapons: Weapons excluded from the mismatch check, for weapons added by other resources. JSON array of weapon names or numeric hashes. Default: '[]'.
  • inventory:suppresspickups: Suppresses the native GTA world pickups (money and weapons spawned by the game). Default: 1.
  • inventory:disableweapons: Disables weapons entirely, for melee-only servers. Default: 0.
cfg
1setr inventory:weaponanims 1
2setr inventory:weaponnotify 1
3setr inventory:weaponmismatch 1
4setr inventory:autoreload 0
5setr inventory:aimedfiring 0
6setr inventory:ignoreweapons '[]'
7setr inventory:suppresspickups 1
8setr inventory:disableweapons 0
  • inventory:showStockBadge: Shows a "STOCK" (stackable) or "UNIQUE" (non-stack) badge on the item tooltip, plus a compact ∞ chip in the bottom-right corner of the slot. Helps decide at a glance, while looting, whether to take the whole stack or a single item. Default: 0. (exclusive to this build)
  • inventory:slotrules_debug: Debug logging for reserved slot rules (slot 1 = firearm, slot 2 = melee). Prints the reason for every rejection to the console. Leave at 0 in production. Default: 0. (exclusive to this build)
  • inventory:keys: Default keybinds: [inventory, secondary inventory, hotbar wheel]. JSON array of 3 key names. Default: '["F2","K","TAB"]'.
  • inventory:enablekeys: Control IDs left active while the inventory is open (e.g. 249 = Y chat). JSON array of control IDs. Default: '[249]'.
  • inventory:imagepath: Base path used for item images. Override it to serve images from an external CDN. Default: 'nui://ox_inventory/web/images'.
  • inventory:validhosts: External hosts authorized for item images loaded via URL. Any other domain is rejected. Server-side only. JSON object. Default: '{"r2.fivemanage.com":true,"i.fmfile.com":true}'.
  • inventory:screenblur: Blurs the world behind the UI while the inventory is open. Default: 1.
  • inventory:itemnotify: Shows a "You picked up X" notification when an item is collected. Default: 1.
  • inventory:disablesetupnotification: Hides the first-run inventory setup notification. Default: 0.
  • inventory:enablestealcommand: Enables /steal for the police job, to take items from a cuffed player. Default: 1.
  • inventory:target: Uses ox_target for stash/shop/crafting interactions instead of 3D markers. Default: 0.
  • inventory:giveplayerlist: Shows a clickable player list for giving items instead of 3D targeting. Default: 0.
cfg
1setr inventory:showStockBadge 1
2setr inventory:slotrules_debug 0
3setr inventory:keys '["F2","K","TAB"]'
4setr inventory:enablekeys '[249]'
5setr inventory:imagepath 'nui://ox_inventory/web/images'
6set inventory:validhosts '{"r2.fivemanage.com":true,"i.fmfile.com":true}'
7setr inventory:screenblur 1
8setr inventory:itemnotify 1
9setr inventory:disablesetupnotification 0
10setr inventory:enablestealcommand 1
11setr inventory:target 0
12setr inventory:giveplayerlist 0
  • ox_inventory:defaultTheme: Default primary accent color, hex. Players can override it from the UI. Default: '#00d4aa'. (exclusive to this build)
  • ox_inventory:rarityStyle: How rarity is displayed in the grid: 'fill-container' (fills the slot) or 'border'. Default: 'fill-container'. (exclusive to this build)
  • ox_inventory:buttonTheme: Colors action buttons with the theme's primary color. Default: 'true'. (exclusive to this build)
  • ox_inventory:clothingPanelVisible: Shows the clothing panel next to the main inventory. Default: 'true'. (exclusive to this build)
  • ox_inventory:virtualPed: Shows the 3D ped preview next to the inventory. Default: 'true'. (exclusive to this build)
  • ox_inventory:enableThemePicker: Shows the theme color picker inside the inventory. Disable it to force everyone onto ox_inventory:defaultTheme. Default: 'true'. (exclusive to this build)
  • inventory:customRarities: Adds custom rarities on top of the 8 built-in ones (common, uncommon, rare, epic, legendary, special, illegal, police). Also add a rarity_<name> key to locales/*.json for translation. JSON object: { "key": { r, g, b, alpha?, glowSize?, glowAlpha? } }. (exclusive to this build)
  • inventory:customCategories: Adds custom categories on top of the 9 built-in ones (all, food, medical, weapons, materials, tools, currency, equipment, misc). Also add a cat_<name> key to locales/*.json. JSON object: { "key": { "name": "...", "icon": "<svg...>" } }. (exclusive to this build)
cfg
1setr ox_inventory:defaultTheme '#00d4aa'
2setr ox_inventory:rarityStyle 'fill-container'
3setr ox_inventory:buttonTheme 'true'
4setr ox_inventory:clothingPanelVisible 'true'
5setr ox_inventory:virtualPed 'true'
6setr ox_inventory:enableThemePicker 'true'
7setr inventory:customRarities '{}'
8setr inventory:customCategories '{}'
  • inventory:shopmarker: Marker used for shops. JSON object: type (integer), colour [r,g,b], scale [x,y,z].
  • inventory:evidencemarker: Marker used for the police evidence locker.
  • inventory:craftingmarker: Marker used for crafting benches.
  • inventory:dropmarker: Marker used for ground drops.
cfg
1setr inventory:shopmarker '{"type":29,"colour":[30,150,30],"scale":[0.5,0.5,0.5]}'
2setr inventory:evidencemarker '{"type":2,"colour":[30,30,150],"scale":[0.3,0.2,0.15]}'
3setr inventory:craftingmarker '{"type":2,"colour":[150,150,30],"scale":[0.3,0.2,0.15]}'
4setr inventory:dropmarker '{"type":2,"colour":[150,30,30],"scale":[0.3,0.2,0.15]}'
  • inventory:randomloot: Enables random loot generation in dumpsters and non-owned vehicles. Default: 1.
  • inventory:networkdumpsters: Synchronizes dumpster contents across all players. Uses more bandwidth. Default: 0.
  • inventory:randomprices: Randomizes shop prices on every restart. Default: 0.
  • inventory:vehicleloot: Vehicle loot table. Array of [itemName, min, max, chance?].
  • inventory:dumpsterloot: Dumpster loot table.
cfg
1set inventory:randomloot 1
2setr inventory:networkdumpsters 0
3set inventory:randomprices 0
4set inventory:vehicleloot '[["sprunk",1,1],["water",1,1],["garbage",1,2,50],["money",1,50],["money",200,400,5],["bandage",1,1]]'
5set inventory:dumpsterloot '[["mustard",1,1],["garbage",1,3],["money",1,10],["burger",1,1]]'
  • inventory:loglevel: Log level. 0 = off, 1 = purchases and transfers, 2 = every item movement. Default: 1.
  • inventory:loghookrejection: Also logs actions rejected by hooks, useful for finding why a player cannot move an item. Server-side only. Default: 1.
  • inventory:webhook: Discord webhook for general logs (transfers, shop purchases, etc). Default: ''.
  • inventory:evidencegrade: Minimum job grade required to access the evidence locker. Default: 2.
  • inventory:trimplate: Trims whitespace from vehicle plates before lookups. Default: 1.
cfg
1set inventory:loglevel 1
2set inventory:loghookrejection 1
3set inventory:webhook ''
4set inventory:evidencegrade 2
5set inventory:trimplate 1
  • inventory:clearstashes: Deletes stashes inactive for longer than N, expressed as a MySQL interval. Default: '6 MONTH'.
  • inventory:bulkstashsave: Saves stashes in bulk with a single query on restart, instead of one query per stash. Default: 1.
  • inventory:cleartime: Time, in minutes, after which orphaned/invisible items are dropped. Default: 5.
  • inventory:versioncheck: Checks the resource version on startup and warns if it is not an official release. Default: 'true'.
cfg
1set inventory:clearstashes '6 MONTH'
2set inventory:bulkstashsave 1
3set inventory:cleartime 5
4set inventory:versioncheck 'true'