Skip to main content

Login & Authentication

Login

Login a player to the server with their character data.
source
Source
required
Player server ID
citizenid
string
Citizen ID for existing character
newData
PlayerEntity
New character data if creating a character
success
boolean
true if login was successful, false otherwise
-- Login existing character
local success = exports.qbx_core:Login(source, 'ABC12345')

-- Login new character
local newData = {
    charinfo = {
        firstname = 'John',
        lastname = 'Doe',
        birthdate = '01-01-1990',
        gender = 0
    }
}
local success = exports.qbx_core:Login(source, nil, newData)

Logout

Logout a player and save their data.
source
Source
required
Player server ID
exports.qbx_core:Logout(source)

Offline Player Management

GetOfflinePlayer

Get a player object for an offline player by citizen ID.
citizenid
string
required
The citizen ID of the offline player
player
Player | nil
Player object if found in database, otherwise nil
local offlinePlayer = exports.qbx_core:GetOfflinePlayer('ABC12345')
if offlinePlayer then
    print('Offline player name: ' .. offlinePlayer.PlayerData.name)
    -- Modify offline player
    exports.qbx_core:AddMoney(offlinePlayer.PlayerData.citizenid, 'bank', 1000, 'Admin grant')
end

Job Management

SetJob

Set a player’s primary job, replacing their current primary job.
identifier
Source | string
required
Player source or citizen ID
jobName
string
required
Name of the job to set
grade
integer
Job grade level (defaults to 0)
success
boolean
true if job was set successfully
errorResult
ErrorResult | nil
Error details if the operation failed
-- Set by source
local success, err = exports.qbx_core:SetJob(source, 'police', 3)
if not success then
    print('Failed to set job: ' .. err.message)
end

-- Set for offline player
exports.qbx_core:SetJob('ABC12345', 'mechanic', 1)

SetJobDuty

Set a player’s on-duty status for their job.
identifier
Source | string
required
Player source or citizen ID
onDuty
boolean
required
Whether the player should be on duty
-- Set player on duty
exports.qbx_core:SetJobDuty(source, true)

-- Set player off duty
exports.qbx_core:SetJobDuty(source, false)

AddPlayerToJob

Add a player to a job or update their grade if already in the job.
citizenid
string
required
Player’s citizen ID
jobName
string
required
Job name to add player to
grade
integer
Job grade (defaults to 0)
success
boolean
true if player was added successfully
errorResult
ErrorResult | nil
Error details if the operation failed
local success, err = exports.qbx_core:AddPlayerToJob('ABC12345', 'police', 2)
if success then
    print('Player added to police at grade 2')
end

RemovePlayerFromJob

Remove a player from a job. If it’s their primary job, sets primary to unemployed.
citizenid
string
required
Player’s citizen ID
jobName
string
required
Job name to remove player from
success
boolean
true if player was removed successfully
errorResult
ErrorResult | nil
Error details if the operation failed
local success = exports.qbx_core:RemovePlayerFromJob('ABC12345', 'police')

SetPlayerPrimaryJob

Set a player’s primary job (must already have the job).
citizenid
string
required
Player’s citizen ID
jobName
string
required
Job name to set as primary
success
boolean
true if primary job was set
errorResult
ErrorResult | nil
Error details if the operation failed
-- Switch between multiple jobs
exports.qbx_core:SetPlayerPrimaryJob('ABC12345', 'mechanic')

Gang Management

SetGang

Set a player’s primary gang, replacing their current primary gang.
identifier
Source | string
required
Player source or citizen ID
gangName
string
required
Name of the gang to set
grade
integer
Gang grade level (defaults to 0)
success
boolean
true if gang was set successfully
errorResult
ErrorResult | nil
Error details if the operation failed
local success, err = exports.qbx_core:SetGang(source, 'ballas', 2)
if not success then
    print('Failed to set gang: ' .. err.message)
end

AddPlayerToGang

Add a player to a gang or update their grade if already in the gang.
citizenid
string
required
Player’s citizen ID
gangName
string
required
Gang name to add player to
grade
integer
Gang grade (defaults to 0)
success
boolean
true if player was added successfully
errorResult
ErrorResult | nil
Error details if the operation failed
exports.qbx_core:AddPlayerToGang('ABC12345', 'ballas', 1)

RemovePlayerFromGang

Remove a player from a gang. If it’s their primary gang, sets primary to ‘none’.
citizenid
string
required
Player’s citizen ID
gangName
string
required
Gang name to remove player from
success
boolean
true if player was removed successfully
errorResult
ErrorResult | nil
Error details if the operation failed
exports.qbx_core:RemovePlayerFromGang('ABC12345', 'ballas')

Player Data Management

SetPlayerData

Set a player data field.
identifier
Source | string
required
Player source or citizen ID
key
string
required
Data field name
value
any
required
Value to set
exports.qbx_core:SetPlayerData(source, 'position', vector4(0, 0, 0, 0))

UpdatePlayerData

Trigger a player data update sync to client.
identifier
Source | string
required
Player source or citizen ID
exports.qbx_core:UpdatePlayerData(source)

SetMetadata

Set a metadata field for a player.
identifier
Source | string
required
Player source or citizen ID
metadata
string
required
Metadata field name (supports dot notation for nested fields)
value
any
required
Value to set
-- Set top-level metadata
exports.qbx_core:SetMetadata(source, 'hunger', 75)

-- Set nested metadata
exports.qbx_core:SetMetadata(source, 'jobrep.trucker', 100)

GetMetadata

Get a metadata field from a player.
identifier
Source | string
required
Player source or citizen ID
metadata
string
required
Metadata field name (supports dot notation)
value
any
The metadata value
local hunger = exports.qbx_core:GetMetadata(source, 'hunger')
local truckerRep = exports.qbx_core:GetMetadata(source, 'jobrep.trucker')

SetCharInfo

Set a character info field.
identifier
Source | string
required
Player source or citizen ID
charInfo
string
required
Character info field name
value
any
required
Value to set
exports.qbx_core:SetCharInfo(source, 'phone', '555-1234')

Money Management

AddMoney

Add money to a player’s account.
identifier
Source | string
required
Player source or citizen ID
moneyType
MoneyType
required
Type of money: 'cash', 'bank', 'crypto'
amount
number
required
Amount to add
reason
string
Reason for the transaction (for logging)
success
boolean
true if money was added successfully
local success = exports.qbx_core:AddMoney(source, 'cash', 500, 'Mission reward')
if success then
    print('Added $500 cash')
end

RemoveMoney

Remove money from a player’s account.
identifier
Source | string
required
Player source or citizen ID
moneyType
MoneyType
required
Type of money: 'cash', 'bank', 'crypto'
amount
number
required
Amount to remove
reason
string
Reason for the transaction (for logging)
success
boolean
true if money was removed successfully
local success = exports.qbx_core:RemoveMoney(source, 'cash', 100, 'Purchase')
if not success then
    print('Not enough cash')
end

SetMoney

Set a player’s money to a specific amount.
identifier
Source | string
required
Player source or citizen ID
moneyType
MoneyType
required
Type of money: 'cash', 'bank', 'crypto'
amount
number
required
Amount to set
reason
string
Reason for the transaction (for logging)
success
boolean
true if money was set successfully
exports.qbx_core:SetMoney(source, 'bank', 5000, 'Admin grant')

GetMoney

Get the amount of money a player has.
identifier
Source | string
required
Player source or citizen ID
moneyType
MoneyType
required
Type of money to check
amount
number | boolean
Amount of money, or false if money type doesn’t exist
local cash = exports.qbx_core:GetMoney(source, 'cash')
print('Player has $' .. cash .. ' cash')

Save Functions

Save

Save an online player’s data to the database.
source
Source
required
Player server ID
exports.qbx_core:Save(source)

SaveOffline

Save an offline player’s data to the database.
playerData
PlayerEntity
required
Player data object to save
local offlinePlayer = exports.qbx_core:GetOfflinePlayer('ABC12345')
if offlinePlayer then
    -- Modify data
    offlinePlayer.PlayerData.metadata.hunger = 100
    -- Save changes
    exports.qbx_core:SaveOffline(offlinePlayer.PlayerData)
end

Build docs developers (and LLMs) love