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.
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.
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
Lido antes de o personagem ser selecionado
Conectado não é carregado. Entre entrar e escolher um personagem existe um jogador sem nenhum charinfo.
- 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
Uma chave de metadata que nunca foi inicializada
metadata.thirstnum personagem criado antes de aquela chave existir. A tabela está bem, a chave não. - 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
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 FixerPara esse tipo de erro, o Conversor de scripts traduz um resource entre ESX, QBCore e Qbox.