charinfo / metadata es nil
No se pudieron leer los datos guardados de un personaje: o no había terminado de cargar, o los datos de ese personaje están dañados.
Haz esto primero
Mira si le pasa a todos o a un jugador. A uno solo significa que sus datos guardados hay que repararlos.
Qué significa
El objeto del jugador existe pero la subtabla que se está leyendo no está llena. En QBCore, PlayerData.charinfo guarda el nombre y el teléfono, y PlayerData.metadata todo lo demás; las dos son columnas JSON, y una que esté mal vuelve como nil en vez de vacía.
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
Leído antes de que se seleccione el personaje
Conectado no es cargado. Entre entrar y elegir un personaje hay un jugador sin ningún charinfo.
- 2
La columna JSON está mal formada
Una escritura recortada (mirá «Datos demasiado largos») deja JSON inválido, y decodificarlo devuelve nil. Ese jugador entonces rompe todos los scripts hasta que se repare la fila.
- 3
Una clave de metadata que nunca se inicializó
metadata.thirsten un personaje creado antes de que esa clave existiera. La tabla está bien, la clave no. - 4
Un reinicio de recurso con el jugador dentro
El jugador ya estaba cargado antes de que arrancara tu recurso, así que nunca vio el evento de carga.
- 5
Diferencias de versión del framework
Los campos se mueven entre versiones de QBCore; un script escrito para una lee una clave que la otra guarda en otro sitio.
Cómo saber cuál es el tuyo
Mirá la fila:
SELECT charinfo, metadata FROM players WHERE citizenid = 'ABC12345';
Si alguna es NULL o no es JSON válido, el problema son los datos de ese personaje. Si las dos se ven bien, es cuestión de tiempos.
Dónde mirar
La lectura, y si el archivo espera al evento de jugador cargado.
Cómo arreglarlo
Poné un valor por defecto a la clave, y no leas nunca a nivel de archivo:
local meta = PlayerData.metadata or {}
local thirst = meta.thirst or 100
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
PlayerData = QBCore.Functions.GetPlayerData()
end)¿Sigues atascado en tu propio código?
Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.
bug_reportAbrir el Server FixerPara este tipo de error, el Conversor de scripts traduce un recurso entre ESX, QBCore y Qbox.