QBCore a fondo: el jugador y su dinero · Lección 4/4 · 9 min

Metadata e identidad del jugador

QBCore guarda datos extra (hambre, sed, estrés, esposado…) en metadata, y la identidad en citizenid y charinfo.

Además del dinero y el trabajo, QBCore guarda datos del personaje en dos sitios clave: metadata (estados como hambre/sed/estrés) y charinfo (nombre, apellidos, fecha de nacimiento…). La identidad única del personaje es el citizenid.

lua
local Player = QBCore.Functions.GetPlayer(source)

-- Identidad
local cid = Player.PlayerData.citizenid     -- 'ABC12345' (único por personaje)
local nombre = Player.PlayerData.charinfo.firstname
local apellido = Player.PlayerData.charinfo.lastname

-- Metadata (estados)
local hambre = Player.PlayerData.metadata['hunger']
local sed = Player.PlayerData.metadata['thirst']

Leer identidad y metadata

Cambiar metadata

lua
-- Subir el hambre a 100
Player.Functions.SetMetaData('hunger', 100)

-- Marcar como esposado
Player.Functions.SetMetaData('ishandcuffed', true)

SetMetaData

El citizenid es la clave que usarás en tus propias tablas de base de datos para vincular datos a un personaje (casas, vehículos, etc.). Es estable entre sesiones; el source NO (cambia cada vez que el jugador entra).

Practica lo aprendido

0/3
Rellena los huecos

Lee el nivel de hambre del jugador desde su metadata.

1local hambre = Player.PlayerData.['hunger']
Pista

Los estados (hambre, sed, estrés…) viven en metadata, indexados por su nombre.

Test

¿Por qué se usa el citizenid (y no el source) como clave en tus tablas de base de datos?

Corrige el error

Este comando /comer debería subir el hambre a 100, pero accede mal a la función. Corrígelo usando SetMetaData.

Este código tiene un fallo:

1local Player = QBCore.Functions.GetPlayer(source)
2if not Player then return end
3Player.PlayerData.metadata['hunger'] = 100

Reescríbelo corregido:

Pista

No asignes directamente sobre PlayerData; usa la función oficial Player.Functions.SetMetaData('hunger', 100).

Reto: prográmalo tú

Haz un comando /comer que suba el hambre del jugador a 100 usando metadata.

Escríbelo tú en tu editor (VS Code) y pruébalo en tu servidor. Aquí se aprende haciéndolo, no copiando.

Ver pista

GetPlayer(source) → if not Player return → Player.Functions.SetMetaData('hunger', 100).

Escribe aquí tu solución:

¿Qué tal esta lección?