DarkRP — "There is a player with an invalid team" (sh_createitems.lua ligne 384) : causes et fix complet
Si vous gérez un serveur DarkRP, vous avez très probablement croisé ce message dans votre console au moins une fois :
[ERROR] A runtime error has occurred in
"gamemodes/darkrp/gamemode/modules/base/sh_createitems.lua" on line 384.
The best help I can give you is this: There is a player with an invalid team!
The player's name is XXX, their team number is "21", which has the name "Admin"
Ce sujet revient depuis des années sur les Steam Discussions et le GitHub officiel de FPtje — autant dire que vous n'êtes pas seul. Ce guide couvre toutes les causes connues et les solutions.
TL;DR
L'erreur signifie qu'un joueur est associé à un numéro de team que DarkRP ne reconnaît pas dans
RPExtraTeams. La cause est presque toujours une erreur antérieure dans votre configuration de jobs ou un addon externe (ULX, darkrpmodification mal installé).
Comprendre l'erreur
Dans sh_createitems.lua, DarkRP cherche RPExtraTeams[ply:Team()]. Si cette valeur est nil et que le joueur est complètement initialisé, l'erreur est déclenchée. (Source GitHub FPtje/DarkRP)
Le message le dit explicitement : l'erreur est très probablement causée par une erreur antérieure. Si vous ne voyez rien dans votre console client, regardez la console serveur et remontez dans les logs.
Ne fixez pas votre attention sur la ligne 384 de sh_createitems.lua — ce fichier ne fait que rapporter une conséquence. Trouvez l'erreur qui s'est produite avant.
Causes principales
1. Erreur de syntaxe dans jobs.lua
C'est la cause numéro 1. Une virgule manquante ou une accolade non fermée dans addons/darkrpmodification/lua/darkrp_customthings/jobs.lua empêche le chargement d'un ou plusieurs jobs, ce qui corrompt l'attribution des teams. (Steam Discussions — Job Lua Error)
Exemple classique : oublier la virgule après category avant customCheck :
-- MAUVAIS
category = "Civils"
customCheck = function(ply) return ply:IsUserGroup("vip") end,
-- CORRECT
category = "Civils",
customCheck = function(ply) return ply:IsUserGroup("vip") end,
2. Job par défaut non désactivé avant d'être redéfini
Si vous redéfinissez un job DarkRP par défaut (ex. TEAM_MEDIC) sans le désactiver dans darkrp_config/disabled_defaults.lua, DarkRP crée deux entrées en conflit et les index de teams ne correspondent plus. (darkrpmodification — disabled_defaults.lua)
3. Deux jobs avec la même valeur command
DarkRP exige que chaque job ait une commande command unique. Si deux jobs partagent la même valeur, le second est corrompu. (GitHub Issue 3133) Faites un Ctrl+F dans votre jobs.lua pour détecter les doublons.
4. ULX / addon tiers qui attribue un team au mauvais moment
Dans certains cas, la trace d'erreur pointe vers des fichiers comme addons/urs-master/lua/ulx/modules/urs_server.lua (Steam Discussions — SOLVED), ce qui indique qu'un module ULX assigne un team avant que DarkRP ait fini d'initialiser le joueur, ou en utilisant un ID de team qui n'existe plus dans votre jobs.lua actuel.
Cas classique : vous avez supprimé un job sans mettre à jour les groupes ULX qui y renvoyaient. Le joueur se reconnecte, ULX lui assigne son ancien team (ex. numéro 21), mais ce job n'existe plus.
5. Base de données corrompue — joueur bloqué sur "Unassigned"
Certains joueurs rejoignent avec le job Unassigned (team 1001) seulement sur leur compte, pas pour tous les joueurs. Les erreurs spamment alors la console. (GitHub Issue 2527) Cela indique une entrée corrompue dans la base de données SQLite du serveur.
Fix step-by-step
Étape 1 — Lire la console serveur AVANT l'erreur
Activez les logs pour capturer toute erreur précédant sh_createitems.lua :
+log 1 -condebug
Le fichier console.log sera dans le dossier garrysmod/. Cherchez toute erreur qui apparaît avant le message "invalid team".
Étape 2 — Valider jobs.lua avec un linter Lua
Copiez l'intégralité de votre jobs.lua sur glualint-web. L'outil détecte précisément les virgules manquantes, accolades non fermées et autres erreurs de syntaxe. (Steam Discussions — Problem with custom content)
Étape 3 — Vérifier disabled_defaults.lua et les doublons
- Ouvrez
addons/darkrpmodification/lua/darkrp_config/disabled_defaults.lua. - Tout job par défaut que vous avez recréé dans
jobs.luadoit être marquétrueici. - Vérifiez qu'aucune valeur
commandn'est dupliquée dans votrejobs.lua.
Étape 4 — Vérifier et corriger les addons ULX
- Dans votre panel ULX, vérifiez que les groupes (owner, superadmin…) ne pointent pas vers un job supprimé.
- Si vous avez récemment supprimé ou renommé un job, mettez à jour les règles ULX correspondantes.
- Si vous utilisez un addon de type "URS" (ULX Rank System), vérifiez que les team IDs configurés existent toujours dans votre
jobs.lua.
Étape 5 — Corriger les joueurs bloqués sur "Unassigned"
Solution rapide : utilisez FADmin ou ULX en jeu pour leur assigner manuellement un job valide.
Solution durable : supprimez leur entrée dans la base SQLite garrysmod/sv.db via DB Browser for SQLite :
DELETE FROM darkrp_player WHERE steamid = 'STEAM_0:0:XXXXXXX';
Le joueur recommencera avec le job par défaut à sa prochaine connexion.
Étape 6 — Réinstaller darkrpmodification proprement
Si rien ne fonctionne, repartez d'une base saine. Toutes vos customisations doivent aller dans darkrpmodification, jamais dans les fichiers DarkRP eux-mêmes. (GitHub FPtje/darkrpmodification)
addons/
└── darkrpmodification/
└── lua/
├── darkrp_config/
│ ├── disabled_defaults.lua
│ └── settings.lua
└── darkrp_customthings/
├── jobs.lua
└── ...
Checklist de prévention
- Valider
jobs.luaavec glualint après chaque modification - Ne jamais modifier les fichiers de base DarkRP — utiliser uniquement darkrpmodification
- Désactiver dans
disabled_defaults.luatout job par défaut recrée - S'assurer qu'aucune valeur
commandn'est en doublon - Après suppression d'un job, mettre à jour les configs ULX/rangs associées
- Sauvegarder
sv.dbrégulièrement
FAQ
Q : L'erreur n'apparaît que pour un seul joueur, les autres sont normaux. Ce joueur a une entrée en base de données qui référence un ancien numéro de team (job supprimé). Supprimez son entrée dans darkrp_player ou changez-lui son job via FADmin.
Q : Le numéro de team est -49000 ou un nombre aberrant. Un team number négatif combiné à attempt to index local 'jobTable' (a nil value) dans cl_gamemode_functions.lua indique que le job n'existe pas côté client non plus. (Steam Discussions — Lua problem) Vérifiez le chargement de jobs.lua côté shared.
Q : J'ai réinstallé DarkRP et l'erreur persiste. La réinstallation de DarkRP seul ne suffit pas si l'erreur vient de darkrpmodification ou d'un addon ULX. Vérifiez ces addons en priorité, puis inspectez sv.db.
Si vous êtes toujours bloqué après ces étapes, postez dans ce fil avec :
- Votre
jobs.luasur pastebin.com - Toutes les erreurs console serveur précédant l'erreur
sh_createitems.lua - La liste de vos addons liés aux jobs/rangs (ULX, URS…)
Pour des scripts DarkRP propres et bien maintenus comme base de départ, jetez un œil au marketplace GM Market. Bon courage !