charinfo / metadata est nil
Les données enregistrées d'un personnage n'ont pas pu être lues : soit il n'avait pas fini de charger, soit ses données sont endommagées.
Faites d'abord ceci
Regardez si cela arrive à tout le monde ou à un seul joueur. À un seul, ses données enregistrées doivent être réparées.
Ce que ça veut dire
L'objet joueur existe mais la sous-table lue n'est pas remplie. Dans QBCore, PlayerData.charinfo contient le nom et le téléphone, PlayerData.metadata tout le reste ; ce sont deux colonnes JSON, et une mauvaise revient en nil plutôt que vide.
Ce qui la provoque
Classé par fréquence : la cause la plus probable en premier.
- 1
Lu avant la sélection du personnage
Connecté n'est pas chargé. Entre l'arrivée et le choix d'un personnage, il y a un joueur sans aucun charinfo.
- 2
La colonne JSON est malformée
Une écriture tronquée (voyez « Données trop longues ») laisse du JSON invalide, et le décoder renvoie nil. Ce joueur casse alors tous les scripts tant que la ligne n'est pas réparée.
- 3
Une clé de metadata jamais initialisée
metadata.thirstsur un personnage créé avant l'existence de cette clé. La table va bien, pas la clé. - 4
Un redémarrage de ressource avec le joueur en jeu
Le joueur était déjà chargé avant le démarrage de votre ressource, elle n'a donc jamais vu l'événement de chargement.
- 5
Différences de version du framework
Les champs se déplacent entre les versions de QBCore ; un script écrit pour l'une lit une clé que l'autre range ailleurs.
Comment savoir laquelle est la vôtre
Regardez la ligne :
SELECT charinfo, metadata FROM players WHERE citizenid = 'ABC12345';
Si l'une est NULL ou n'est pas du JSON valide, ce sont les données de ce personnage. Si les deux sont correctes, c'est le timing.
Où regarder
La lecture, et si le fichier attend l'événement de joueur chargé.
Comment la corriger
Donnez une valeur par défaut à la clé, et ne lisez jamais au niveau du fichier :
local meta = PlayerData.metadata or {}
local thirst = meta.thirst or 100
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
PlayerData = QBCore.Functions.GetPlayerData()
end)Toujours bloqué sur votre propre code ?
Cette page explique ce que cette erreur signifie en général. Collez votre console dans Server Fixer : il classera tout ce qui s'y trouve et vous dira quoi faire en premier ; et si vous préférez ne pas y toucher, ORBIE peut réparer le script et vous rendre la ressource prête à déposer.
bug_reportOuvrir le Server FixerPour ce type d'erreur, le Convertisseur de scripts traduit une ressource entre ESX, QBCore et Qbox.