THE ORB
Arrancando el studio

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.

groupsUn jugador rompe todocodeNecesita un desarrollador

Haz esto primero

Mira si le pasa a todos o a un jugador. A uno solo significa que sus datos guardados hay que repararlos.

bug_reportMejor pega tu consola entera

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. 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. 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. 3

    Una clave de metadata que nunca se inicializó

    metadata.thirst en un personaje creado antes de que esa clave existiera. La tabla está bien, la clave no.

  4. 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. 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 Fixer

Para este tipo de error, el Conversor de scripts traduce un recurso entre ESX, QBCore y Qbox.

Errores que viajan con este