Skip to main content

Player Data

Learn how to access and modify a player's data

Introductionโ€‹

The Player Data object in qb-core stores all information related to a player's character, such as personal details, job, gang affiliation, metadata, and more. These values are initialized using default values defined in the config.lua file of qb-core. This guide will provide an overview of the structure, default values, and how you can access or modify player data

QBCore
โ”œโ”€โ”€ Players
โ”‚ โ”œโ”€โ”€ [source]
โ”‚ โ”œโ”€โ”€ PlayerData
โ”‚ โ”œโ”€โ”€ citizenid: string (Unique identifier)
โ”‚ โ”œโ”€โ”€ cid: number (Character ID)
โ”‚ โ”œโ”€โ”€ money: table
โ”‚ โ”‚ โ””โ”€โ”€ { cash: number, bank: number }
โ”‚ โ”œโ”€โ”€ charinfo: table
โ”‚ โ”‚ โ”œโ”€โ”€ firstname: string
โ”‚ โ”‚ โ”œโ”€โ”€ lastname: string
โ”‚ โ”‚ โ”œโ”€โ”€ ...
โ”‚ โ”œโ”€โ”€ job: table
โ”‚ โ”‚ โ”œโ”€โ”€ name: string
โ”‚ โ”‚ โ”œโ”€โ”€ label: string
โ”‚ โ”‚ โ”œโ”€โ”€ payment: number
โ”‚ โ”‚ โ”œโ”€โ”€ onduty: boolean
โ”‚ โ”‚ โ”œโ”€โ”€ isboss: boolean
โ”‚ โ”‚ โ””โ”€โ”€ grade: table
โ”‚ โ”‚ โ”œโ”€โ”€ name: string
โ”‚ โ”‚ โ””โ”€โ”€ level: number
โ”‚ โ”œโ”€โ”€ gang: table
โ”‚ โ”‚ โ”œโ”€โ”€ name: string
โ”‚ โ”‚ โ”œโ”€โ”€ label: string
โ”‚ โ”‚ โ”œโ”€โ”€ isboss: boolean
โ”‚ โ”‚ โ””โ”€โ”€ grade: table
โ”‚ โ”‚ โ”œโ”€โ”€ name: string
โ”‚ โ”‚ โ””โ”€โ”€ level: number
โ”‚ โ”œโ”€โ”€ metadata: table
โ”‚ โ”‚ โ”œโ”€โ”€ hunger: number
โ”‚ โ”‚ โ”œโ”€โ”€ thirst: number
โ”‚ โ”‚ โ”œโ”€โ”€ stress: number
โ”‚ โ”‚ โ”œโ”€โ”€ isdead: boolean
โ”‚ โ”‚ โ””โ”€โ”€ ...
โ”‚ โ”œโ”€โ”€ position: Vector
โ”‚ โ””โ”€โ”€ items: table (inventory items)

Configurationโ€‹

The player data default values can be modified in the config.lua file of qb-core. These defaults are stored in QBConfig.Player.PlayerDefaults and determine what a player starts with when creating a new character


Identification Tableโ€‹

PropertyTypeDefault ValueDescription
citizenidstringGenerated via CreateCitizenIdA unique identifier for the player.
cidnumber1Character ID (used for multi-character systems).
RegisterServerEvent('qb-docs:server:getPlayerInfo', function(source)
local Player = exports['qb-core']:GetPlayer(source)
if not Player then return end
local citizenid = Player.PlayerData.citizenid
print(citizenid)
end)


Money Tableโ€‹

PropertyTypeDefault ValueDescription
moneytable{ cash = 0, bank = 0 }Contains the playerโ€™s cash and bank balances.
RegisterServerEvent('qb-docs:server:getPlayerInfo', function(source)
local Player = exports['qb-core']:GetPlayer(source)
if not Player then return end
local money = Player.PlayerData.money
local cash = money.cash
local bank = money.bank
print(cash, bank)
end)

Character Information Tableโ€‹

PropertyTypeDefault ValueDescription
charinfotable{ firstname, lastname, ... }Basic personal information about the player.

Subfieldsโ€‹

SubfieldTypeDefault ValueDescription
firstnamestring"Firstname"The player's first name.
lastnamestring"Lastname"The player's last name.
birthdatestring"00-00-0000"The player's date of birth.
gendernumber0The player's gender (0 = male, 1 = female).
nationalitystring"USA"The player's nationality.
phonestringGenerated via CreatePhoneNumberThe player's phone number.
accountstringGenerated via CreateAccountNumberThe player's bank account number.
RegisterServerEvent('qb-docs:server:getPlayerInfo', function(source)
local Player = exports['qb-core']:GetPlayer(source)
if not Player then return end
local charinfo = Player.PlayerData.charinfo
local firstname = Player.PlayerData.firstname
local lastname = Player.PlayerData.lastname
local birthdate = Player.PlayerData.birthdate
local gender = Player.PlayerData.gender
local nationality = Player.PlayerData.nationality
local phone = Player.PlayerData.phone
local account = Player.PlayerData.account
print("Player's name:", firstname, lastname)
end)

Job Tableโ€‹

PropertyTypeDefault ValueDescription
jobtable{ name = 'unemployed', ... }The playerโ€™s current job and related information.

Subfieldsโ€‹

SubfieldTypeDefault ValueDescription
namestring"unemployed"The job name.
labelstring"Civilian"The display label of the job.
paymentnumber10The playerโ€™s salary.
ondutybooleanfalseWhether the player is on duty.
isbossbooleanfalseWhether the player is the boss of the job.
gradetable{ name = 'Freelancer', ... }The player's job grade.
RegisterServerEvent('qb-docs:server:getPlayerInfo', function(source)
local Player = exports['qb-core']:GetPlayer(source)
if not Player then return end
local jobInfo = Player.PlayerData.job
local name = jobInfo.name
local label = jobInfo.label
local payment = jobInfo.payment
local onduty = jobInfo.onduty
local isboss = jobInfo.isboss
print("Player's job:", name)
print("Job label:", label)
end)

Gang Tableโ€‹

PropertyTypeDefault ValueDescription
gangtable{ name = 'Unaffiliated', ... }The playerโ€™s current gang and related information.

Subfieldsโ€‹

SubfieldTypeDefault ValueDescription
namestring"Unaffiliated"The gang name.
labelstring"No Gang"The display label of the gang.
isbossbooleanfalseWhether the player is the boss of the gang.
gradetable{ name = 'Unaffiliated', ... }The player's gang grade.
RegisterServerEvent('qb-docs:server:getPlayerInfo', function(source)
local Player = exports['qb-core']:GetPlayer(source)
if not Player then return end
local gangInfo = Player.PlayerData.gang
local name = gangInfo.name
local label = gangInfo.label
print("Player's gang:", name)
print("Gang label:", label)
end)

Metadata Tableโ€‹

PropertyTypeDefault ValueDescription
hungernumber100The playerโ€™s hunger level (0โ€“100).
thirstnumber100The playerโ€™s thirst level (0โ€“100).
stressnumber0The playerโ€™s stress level (0โ€“100).
isdeadbooleanfalseWhether the player is dead.
inhalebooleanfalseWhether the player is handcuffed.
phonetable{}Stores phone-specific data such as installed apps.
RegisterServerEvent('qb-docs:server:getPlayerInfo', function(source)
local Player = exports['qb-core']:GetPlayer(source)
if not Player then return end
local metadata = Player.PlayerData.metadata
local hunger = metadata.hunger
local thirst = metadata.thirst
print('Hunger Level: ', hunger)
print('Thirst Level: ', thirst)
end)
โœจ