THE ORB
Iniciando o studio

charinfo / metadata é nil

Não deu para ler os dados salvos de um personagem: ou ele não tinha terminado de carregar, ou os dados dele estão danificados.

groupsUm jogador quebra tudocodePrecisa de um desenvolvedor

Faça isto primeiro

Veja se acontece com todos ou com um jogador. Com um só significa que os dados salvos dele precisam de conserto.

bug_reportMelhor colar o console inteiro

O que significa

O objeto do jogador existe mas a subtabela que está sendo lida não está preenchida. No QBCore, o PlayerData.charinfo guarda o nome e o telefone, e o PlayerData.metadata todo o resto; as duas são colunas JSON, e uma que esteja ruim volta como nil em vez de vazia.

O que causa isso

Ordenado pela frequência com que é a resposta.

  1. 1

    Lido antes de o personagem ser selecionado

    Conectado não é carregado. Entre entrar e escolher um personagem existe um jogador sem nenhum charinfo.

  2. 2

    A coluna JSON está malformada

    Uma escrita cortada (veja «Dados longos demais») deixa JSON inválido, e decodificar devolve nil. Aquele jogador então quebra todos os scripts até a linha ser reparada.

  3. 3

    Uma chave de metadata que nunca foi inicializada

    metadata.thirst num personagem criado antes de aquela chave existir. A tabela está bem, a chave não.

  4. 4

    Um restart de resource com o jogador dentro

    O jogador já estava carregado antes de o seu resource subir, então ele nunca viu o evento de carga.

  5. 5

    Diferenças de versão do framework

    Os campos se movem entre versões do QBCore; um script escrito para uma lê uma chave que a outra guarda em outro lugar.

Como saber qual é o seu

Olhe a linha:

SELECT charinfo, metadata FROM players WHERE citizenid = 'ABC12345';

Se alguma for NULL ou não for JSON válido, o problema são os dados daquele personagem. Se as duas parecem certas, é questão de tempo.

Onde olhar

A leitura, e se o arquivo espera o evento de jogador carregado.

Como consertar

Dê um valor padrão à chave, e nunca leia em nível de arquivo:

local meta = PlayerData.metadata or {}
local thirst = meta.thirst or 100

RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
    PlayerData = QBCore.Functions.GetPlayerData()
end)

Ainda travado no seu próprio código?

Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.

bug_reportAbrir o Server Fixer

Para esse tipo de erro, o Conversor de scripts traduz um resource entre ESX, QBCore e Qbox.

Erros que andam junto com este