Skip to main content
The server configuration file (config/server.lua) contains all server-side settings for Qbox Core. This includes money management, player data, character settings, and server behavior.

Update Interval

updateInterval
number
default:"5"
How often to update player data in minutes.

Money Configuration

Configure money types, starting amounts, and paycheck behavior.
money.moneyTypes
Money
default:"{ cash = 500, bank = 5000, crypto = 0 }"
Define money types and their starting amounts. You can add or remove money types for your server (e.g., blackmoney = 0).Warning: Once added, money types will not be removed from the database automatically.Type Definition:
---@alias MoneyType 'cash' | 'bank' | 'crypto'
---@alias Money {cash: number, bank: number, crypto: number}
money.dontAllowMinus
string[]
default:"{ 'cash', 'crypto' }"
Money types that are not allowed to go negative. Players cannot have negative amounts of these money types.
money.paycheckTimeout
number
default:"10"
The time in minutes between paycheck distributions.
money.paycheckSociety
boolean
default:"false"
If true, paychecks will come from the society account that the player is employed at. If false, paychecks are generated directly.

Player Configuration

Configure player-specific settings including hunger/thirst rates and identifier generation.

Needs System

player.hungerRate
number
default:"4.2"
Rate at which hunger decreases over time.
player.thirstRate
number
default:"3.8"
Rate at which thirst decreases over time.

Blood Types

player.bloodTypes
string[]
Available blood types for character creation:
{ 'A+', 'A-', 'B+', 'B-', 'AB+', 'AB-', 'O+', 'O-' }

Identifier Types

Player identifiers are automatically generated using custom value functions. Each identifier type has a specific format:
player.identifierTypes
table<UniqueIdType, {valueFunction: function}>
Configuration for unique player identifiers. Each type uses a valueFunction to generate unique values.Available Identifier Types:
TypeFormatExample
citizenidRandom letter + 7 dots patternA1234567
AccountNumberUS0 + digit + QBX + random numbersUS01QBX12349876543
PhoneNumber3-digit area code + 7-digit number5551234567
FingerId15 random charactersabc123def456789
WalletIdQB- + 8-digit numberQB-12345678
SerialNumber8-digit number12345678

Character Data Tables

characterDataTables
[TableName, ColumnName][]
Database tables and columns that store character data. Rows in these tables are automatically deleted when a character is deleted.Included Tables:
  • properties (owner)
  • bank_accounts_new (id)
  • playerskins (citizenid)
  • player_mails (citizenid)
  • player_outfits (citizenid)
  • player_vehicles (citizenid)
  • player_groups (citizenid)
  • players (citizenid)
  • NPWD tables (calls, messages, notes, contacts, gallery, profiles, etc.)

Server Settings

Core server behavior and access control settings.
server.pvp
boolean
default:"true"
Enable or disable PvP (player vs player combat) on the server. Controls whether players can shoot other players.
server.closed
boolean
default:"false"
Set server to closed mode. When true, only users with the qbadmin.join ace permission can join.
server.closedReason
string
default:"Server Closed"
Message displayed to players when they cannot join a closed server.
server.whitelist
boolean
default:"false"
Enable or disable whitelist on the server.
server.whitelistPermission
string
default:"admin"
Permission required to enter the server when whitelist is enabled.
server.discord
string
default:""
Discord invite link for your server.
server.checkDuplicateLicense
boolean
default:"true"
Check for duplicate Rockstar licenses when players join.
server.requireOptIn
boolean
default:"true"
Deprecated: Use CFG ACE system instead.When true, requires players to use the /optin command before accessing admin commands.
server.permissions
string[]
default:"{ 'god', 'admin', 'mod' }"
Permission groups for your server. Add groups here after creating them in your server.cfg.

Character Slots

Configure how many characters players can create.
characters.playersNumberOfCharacters
table<string, number>
Define maximum number of characters per Rockstar license. Find licenses in your database’s player table.Example:
playersNumberOfCharacters = {
    ['license2:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'] = 5,
}
characters.defaultNumberOfCharacters
number
default:"3"
Default maximum number of characters for players not specified in playersNumberOfCharacters.

Logging

Configure Discord webhooks for core events.
This configuration is for core events only. Other resource webhooks should be configured in their respective resources.
logging.webhook
table<string, string?>
Discord webhook URLs for different event types:
  • default - Default events
  • joinleave - Player join/leave events
  • ooc - Out of character chat
  • anticheat - Anticheat events
  • playermoney - Money transaction events
Set to nil to disable logging for that event type.
logging.role
table
Discord roles/users/channels to tag for high priority logs.
  • Roles: <@&roleid>
  • Users/Channels: <@userid> or <@channelid>

Vehicle Persistence

persistence.lockState
'lock' | 'unlock'
default:"lock"
Default lock state for spawned vehicles:
  • lock - Vehicle will be locked when spawned
  • unlock - Vehicle will be unlocked when spawned

Integration Functions

These functions integrate with other resources. Modify them if you use different resources.

Vehicle Keys

giveVehicleKeys
function
Function to give vehicle keys to a player.Parameters:
  • src (number) - Player source
  • plate (string) - Vehicle plate
  • vehicle (number) - Vehicle entity
Default Implementation:
giveVehicleKeys = function(src, plate, vehicle)
    return exports.qbx_vehiclekeys:GiveKeys(src, vehicle)
end
setVehicleLock
function
Function to set vehicle lock state.Parameters:
  • vehicle (number) - Vehicle entity
  • state (string) - Lock state (‘lock’ or ‘unlock’)
Default Implementation:
setVehicleLock = function(vehicle, state)
    exports.qbx_vehiclekeys:SetLockState(vehicle, state)
end

Society Banking

getSocietyAccount
function
Get society account balance. Used with Renewed-Banking.Parameters:
  • accountName (string) - Society account name
Returns: Account balanceDefault Implementation:
getSocietyAccount = function(accountName)
    return exports['Renewed-Banking']:getAccountMoney(accountName)
end
removeSocietyMoney
function
Remove money from society account.Parameters:
  • accountName (string) - Society account name
  • payment (number) - Amount to remove
Default Implementation:
removeSocietyMoney = function(accountName, payment)
    return exports['Renewed-Banking']:removeAccountMoney(accountName, payment)
end

Paycheck Distribution

sendPaycheck
function
Function called to send paycheck to a player.Parameters:
  • player (Player) - Player object
  • payment (number) - Payment amount
Default Implementation:
sendPaycheck = function(player, payment)
    player.Functions.AddMoney('bank', payment)
    Notify(player.PlayerData.source, locale('info.received_paycheck', payment))
end

Build docs developers (and LLMs) love