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.
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
-- 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/3Lee el nivel de hambre del jugador desde su metadata.
local hambre = Player.PlayerData.['hunger']Pista
Los estados (hambre, sed, estrés…) viven en metadata, indexados por su nombre.
¿Por qué se usa el citizenid (y no el source) como clave en tus tablas de base de datos?
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:
local Player = QBCore.Functions.GetPlayer(source)if not Player then return endPlayer.PlayerData.metadata['hunger'] = 100Reescrí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:
