Skip to content

Configuration

All configuration is done in config.lua. Below is a breakdown of each section.

Framework

lua
Framework = 'qb-core',                    -- 'qb-core' or 'esx'
FrameworkResource = 'qb-core',            -- Resource name
NewFrameworkVersion = true,               -- ESX only: false for < 1.8
SharedObject = 'es_extended:getSharedObject', -- ESX only

Database

lua
EnableDatabaseOptimization = true,   -- Uses primary key for fast upserts
EnableCheckConstraint = true,        -- Auto-check SQL constraints on start
EnableDatabaseAutoCreation = true,   -- Auto-create tables if missing
DeleteInventoryIfEmpty = true,       -- Clean up empty non-player inventories

WARNING

Database optimization requires the name column in coreinventories to be a primary key. Run this if it's not:

sql
ALTER TABLE `coreinventories` ADD CONSTRAINT name_pk PRIMARY KEY (`name`);

Item Defaults

lua
DefaultItemSizeX = 1,                -- Default grid width
DefaultItemSizeY = 1,                -- Default grid height
DefaultDurability = 100,             -- Default durability percentage
ShootingDurabilityDegradation = 0.1, -- How fast guns break (higher = faster)
BrokenItemColor = '#f21f58',         -- Color overlay for broken items

Inventory Settings

lua
OpenKey = 'tab',                     -- Key to open inventory
DropShowDistance = 5.01,             -- Distance to see drop markers
SaveKeybinds = true,                 -- Persist player keybinds across sessions

UIStyle = 'sleek',                   -- 'sleek' or 'classic'
InventoryBlur = true,                -- Blur background when inventory is open

Default UI Colors

lua
DefaultInventorySettings = {
    inventorycolor = '#ffffff',
    labelcolor = '#ffffff',
    slotcolor = '#1f1f1f',
    slotborder = '#3b3b3b',
    slothover = '#ffffff',
    durabilitycolor = '#a442f5',
    autoplacing = true,
    itemSize = 47
},

TIP

Players can customize these colors in-game through the inventory settings menu.

Notifications

lua
EnableItemNotification = true,       -- Show add/remove item notifications

DisableNotificationForSpecificItems = {
    -- ['ammo_pistol'] = true,       -- Disable notification for specific items
},

Item Behavior

lua
CloseAfterUse = {'lockpick', 'phone', 'id_card'}, -- Close inventory on use
SoulboundItems = {},                 -- Items that survive clearInventory

EnableDiscovery = true,              -- Items must be right-click discovered
EnableDestroyItem = true,            -- Allow destroying items
EnableDestroyOnAllInventory = false, -- Allow destroy in other inventories

Backpacks

lua
SyncBackpacks = true,                -- Sync backpack model to player ped
EnableBackpackIntoBackpack = false,  -- Prevent backpack nesting

Metadata Display

lua
ShowInformationsOnHover = false,     -- Show info tab on hover

ShownMetadata = {
    ['firstname'] = 'Firstname',
    ['lastname'] = 'Lastname',
    ['birthdate'] = 'Date of birth',
    ['gender'] = 'Sex',
    ['type'] = 'Type',
    ['uses'] = 'Uses',
    ['quality'] = 'Quality'
},

Item Display

lua
ShowItemName = true,                 -- Show item name on slot
ShowItemCount = true,                -- Show stack count
ShowItemAmmunition = true,           -- Show ammo count on weapons

Item Quality Colors

lua
Quality = {
    common = false,                  -- No color (uses category color)
    rare = "#0096FF",
    epic = "#fc03c2",
    legendary = "#ffd51c",
    import = "#ff1c2f"
},

Set quality in item metadata to apply these background colors.

Money as Item

lua
MoneyAsItem = true,                  -- Display cash as inventory item
AccountMoneyAsItem = 'cash',         -- Framework account name
ItemMoneyAsItem = 'money',           -- Item name for cash

DirtyMoneyAsItem = true,             -- Display dirty money as item
AccountDirtyMoneyAsItem = 'black_money',
ItemDirtyMoneyAsItem = 'markedbills',

MoneyCases = {
    ['wallet'] = true,               -- Items that can hold money
},

Starting Items

Items given to new characters on first join:

lua
StartItems = {
    ['phone'] = {amount = 1, metadata = {}},
    ['bread'] = {amount = 3, metadata = {}},
    ['water'] = {amount = 3, metadata = {}}
},

Combine Recipes

Simple item combining (right-click to combine):

lua
CombineItems = {
    ['lockpick'] = {'iron', 'wood'}, -- Combine iron + wood = lockpick
},

Weapon UI

lua
EnableSecondaryWeaponSlot = true,    -- Two weapon slots
EnableMeleeWeaponSlot = true,        -- Dedicated melee slot
EnableWeaponUI = true,               -- HUD when weapon is drawn
WeaponUIRight = 0,                   -- UI horizontal position
WeaponUITop = 20,                    -- UI vertical position

Weapon Screenshots

Auto-generate weapon images with greenscreen removal:

lua
EnableWeaponScreenshots = false,     -- Requires screenshot-basic
WeaponScreenshotWebhook = '',        -- Discord webhook for image hosting

3D Model Display

lua
Use3DModelAlways = false,            -- Always render 3D models in UI
Use3DModelInteriors = false,         -- Use 3D model only indoors
BlurIf3DModel = true,                -- Blur surroundings with 3D model
HeightRecognizedAsInterior = -10,    -- Z-height threshold for interiors
ModelPosition = 1,                   -- 0 = Left, 1 = Middle, 2 = Right

Dynamic Environment

The dynamic environment system renders player models, vehicles, and trunk scenes in the inventory UI:

lua
DynamicEnvironment = {
    Enable = false,
    Position = vector3(0.0, 0.0, -100.0),

    Camera = {
        FOV = 30.01,
        FOVAnimation = true,
        Rotation = false
    },

    Player = {
        Enable = true,
        CameraOffset = vector3(0.0, 4.0, 0.0),
    },

    Vehicle = {
        Enable = true,
        CameraOffset = vector3(6.0, 6.0, 1.0),
        LightsEnabled = true
    },

    Trunk = {
        Enable = true,
        CameraOffset = vector3(0.0, -7.0, 0.5),
        PlayerDistanceFromVehicle = 3.0,
    }
},

Vehicle Trunks

lua
Trunks = {
    [0] = 'small_trunk',    -- Compacts
    [1] = 'small_trunk',    -- Sedans
    [2] = 'big_trunk',      -- SUVs
    -- ... by GTA vehicle class
},

SpecificTrunks = {
    ['sultan'] = 'big_trunk', -- Override by model name
},

BlackListedVehicleClassTrunk = {
    [8] = true,              -- Motorcycles
    [13] = true,             -- Bicycles
},

Storage Points

Define world storage locations accessible by job:

lua
Storage = {
    ['departament1'] = {
        coords = vector3(474.81, -994.62, 26.27),
        inventory = 'big_storage',
        jobs = {'police'},
        prop = nil,              -- Optional prop model
        personal = false,        -- Shared or per-player
    },
},

LB Phone Integration

lua
UsingLbPhoneUniqueItemFeature = false,
LbPhoneItemName = {
    ['phone'] = true,
},

Discord Logging

Configured in config_discord.lua:

lua
ConfigDiscord = {
    DiscordLog = false,
    DiscordDisplayAllPlayerData = true,

    DiscordWebhookUsed = 'WEBHOOK_URL',
    DiscordWebHookGive = 'WEBHOOK_URL',
    DiscordWebHookGiveCommand = 'WEBHOOK_URL',
    DiscordWebHookMove = 'WEBHOOK_URL',
    DiscordWebHookDrop = 'WEBHOOK_URL',
    DiscordWebHookDestroy = 'WEBHOOK_URL',
    DiscordWebHookStack = 'WEBHOOK_URL',
}

Separate webhooks allow you to route different action types to different Discord channels.