le champ « Jobs » est nil
Votre liste de métiers n'a pas pu être lue. Une faute de frappe dans le fichier des métiers casse d'un coup tous les scripts qui en dépendent.
Faites d'abord ceci
Si vous avez récemment modifié votre fichier de métiers, annulez ce changement et redémarrez.
Ce que ça veut dire
Le code a lu le registre des métiers du framework et il n'était pas là. Dans QBCore c'est QBCore.Shared.Jobs, dans ESX il est chargé depuis la table jobs de la base. Quand cela arrive, tous les scripts conditionnés par le métier échouent d'un coup, ce qui donne l'impression d'un problème plus gros qu'il n'est.
Ce qui la provoque
Classé par fréquence : la cause la plus probable en premier.
- 1
Une erreur de syntaxe dans la config des métiers
qb-core/shared/jobs.luaest du Lua. Une accolade manquante et tout le fichier ne charge pas, donc la table n'est jamais assignée — et l'erreur que vous voyez est dans le script qui la lit, pas dans le fichier cassé. - 2
La table des métiers n'a jamais été importée (ESX)
ESX lit les métiers depuis la base. Pas de lignes, pas de métiers.
- 3
Un métier qui existe d'un côté et pas de l'autre
Un joueur dont la colonne
jobnomme un métier que la config ne définit pas. Le registre va bien ; c'est cette recherche-là qui est nil. - 4
Le lire avant le chargement du core
Le même problème de timing qu'avec l'objet core lui-même.
- 5
Un fichier partagé modifié qu'une mise à jour a remplacé
Une mise à jour a écrasé vos métiers personnalisés.
Comment savoir laquelle est la vôtre
Remontez à la recherche d'une erreur de chargement dans les fichiers du framework : un jobs.lua cassé s'annonce toujours avant que quoi que ce soit d'autre se plaigne. Puis :
print(json.encode(QBCore.Shared.Jobs and 'loaded' or 'nil'))
Où regarder
qb-core/shared/jobs.lua, ou la table jobs de la base pour ESX.
Comment la corriger
Validez le fichier de config avant de redémarrer :
luac -p qb-core/shared/jobs.lua
Et protégez la recherche d'un métier précis, qui est une clé légitimement absente plutôt qu'une table cassée :
local job = QBCore.Shared.Jobs[player.PlayerData.job.name] if not job then return 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.