← Tous les articles

Creer ses jobs DarkRP custom : guide complet 2026 (avec et sans Lua)

Tu veux ajouter tes propres metiers a ton serveur DarkRP en 2026 ? Maire, dealer, mafioso, mecanicien, hacker... les jobs custom sont ce qui rend ton serveur unique et donne envie aux joueurs de rester. Le probleme : la syntaxe Lua de DarkRP n'est pas tres permissive, et la moindre virgule oubliee fait planter tout le serveur au demarrage.

Dans ce guide complet, on va voir deux methodes pour creer des jobs custom : la methode rapide via GMod Panel (sans toucher au Lua), et la methode manuelle pour ceux qui veulent comprendre ce qui se passe sous le capot. On terminera par les erreurs classiques a eviter qui plantent 90% des serveurs DarkRP debutants.

Ce qu'est un job DarkRP

Un job DarkRP, c'est en realite une TEAM au sens Garry's Mod : un groupe de joueurs avec un nom, une couleur, un modele, des armes de depart, un salaire, et une serie de regles (max de slots, vote du maire, etc). Tout est defini dans un fichier Lua, generalement garrysmod/gamemodes/darkrp/gamemode/config/jobrelated.lua ou (recommande) dans garrysmod/addons/darkrpmodification/lua/darkrp_customthings/jobs.lua.

Chaque job est cree via la fonction TEAM = DarkRP.createJob("Nom", { ... }) et est associe a une constante globale TEAM_XXX qui sert a le referencer ailleurs (armes, doors, etc).

Pre-requis

Avant de commencer, tu as besoin de :

  • Un serveur GMod avec DarkRP installe (gamemode + DarkRPModification)
  • Un editeur de texte si tu fais ça en manuel (VS Code, Notepad++, surtout PAS le Bloc-notes Windows qui casse les encodages)
  • Un acces FTP ou local au dossier de ton serveur
  • Optionnel mais recommande : GMod Panel pour eviter d'editer du Lua a la main

Methode 1 : creer un job avec GMod Panel (sans Lua)

C'est la methode que je recommande a 95% des debutants. Tu n'ecris pas une seule ligne de code, le panel valide automatiquement la syntaxe et empeche les erreurs classiques (TEAM en double, salaire negatif, modele inexistant...).

Etape 1 : ouvrir l'editeur de jobs

Connecte-toi a GMod Panel, va sur ton serveur, et clique sur l'onglet Jobs. Tu vois la liste de tous les jobs deja installes (Citizen, Police, Maire, Gangster, etc) — ce sont les jobs par defaut de DarkRP que tu peux editer ou supprimer.

Etape 2 : ajouter un nouveau job

Clique sur "Nouveau job". Un formulaire s'affiche avec tous les champs necessaires :

  • Nom : le nom affiche en jeu (ex: "Trafiquant d'armes")
  • Identifiant TEAM_ : genere automatiquement a partir du nom (ex: TEAM_TRAFIQUANT). C'est ce qui rend le panel sur : impossible d'avoir deux jobs avec le meme TEAM_, le panel le bloque a la sauvegarde.
  • Couleur : color picker visuel — tu vois directement ce que ça donne en jeu
  • Modele : selecteur visuel avec 87 playermodels preinstalles. Tu vois les apercus, tu cliques, c'est fini. Plus besoin de connaitre les chemins type models/player/group01/male_01.mdl.
  • Armes : selecteur multiple avec recherche. Tu peux taper "pistol" et voir toutes les armes qui matchent.
  • Salaire : numerique, valide cote serveur (pas de NaN, pas d'overflow)
  • Description : ce que voit le joueur dans le menu F4
  • Categorie : Citizens, Gangsters, Government, etc
  • Max : nombre maximum de joueurs simultanes sur ce job (0 = illimite)
  • Options : vote requis, demande, agressif, can demote, etc — toutes les options DarkRP via cases a cocher

Etape 3 : sauvegarder

Tu cliques Enregistrer, le panel regenere ton fichier jobs.lua automatiquement avec la bonne syntaxe, en respectant l'ordre, en escapant les chaines, et en validant que toutes les references TEAM_ existent. Aucune erreur Lua possible.

Etape 4 : redemarrer le serveur

Telecharge le ZIP via le bouton Telecharger, relance ton start.bat, et ton nouveau job apparait dans le menu F4 en jeu. Total : moins de 2 minutes.

Avantages de la methode panel

  • Pas besoin de connaitre Lua
  • Validation en temps reel : impossible de pousser une config qui plante
  • Modeles, armes et options accessibles via des selecteurs visuels (pas besoin de chercher les noms exacts)
  • Duplication d'un job en 1 clic (super pratique pour creer des variantes)
  • Tags personnalises pour organiser tes jobs (stockes en JSON sidecar, pas dans le Lua)
  • Versioning automatique : si tu casses quelque chose, tu peux restaurer l'ancienne version via l'historique

Methode 2 : creer un job en Lua (a la main)

Si tu veux comprendre ce qui se passe ou si tu as un cas tres particulier, voici comment faire en manuel.

Etape 1 : trouver le bon fichier

Ne touche JAMAIS au fichier gamemodes/darkrp/gamemode/config/jobrelated.lua. Si tu modifies les fichiers du gamemode, tu perds tout au prochain update via SteamCMD.

Le bon fichier est :

garrysmod/addons/darkrpmodification/lua/darkrp_customthings/jobs.lua

C'est l'addon DarkRPModification qui sert specifiquement a customiser DarkRP sans toucher au gamemode. Si tu n'as pas cet addon, installe-le depuis GitHub : https://github.com/FPtje/DarkRPModification

Etape 2 : la structure d'un job

Un job DarkRP custom ressemble a ça :

TEAM_TRAFIQUANT = DarkRP.createJob("Trafiquant d'armes", {
    color = Color(180, 60, 30, 255),
    model = {"models/player/group03/male_07.mdl"},
    description = [[Tu vends des armes au marche noir.
Sois discret, la police te cherche.]],
    weapons = {"weapon_pistol", "weapon_crowbar"},
    command = "trafiquant",
    max = 3,
    salary = 75,
    admin = 0,
    vote = false,
    hasLicense = false,
    candemote = true,
    category = "Gangsters",
})

Decortiquons les champs essentiels :

  • TEAM_TRAFIQUANT : la constante globale qui identifie le job. Doit etre unique sur tout ton serveur.
  • color = Color(r, g, b, a) : couleur RGBA (0-255 pour chaque composante)
  • model : table de chemins de modeles (DarkRP en choisit un au hasard si plusieurs)
  • description : utilise [[...]] pour autoriser les sauts de ligne
  • weapons : table d'armes (noms internes, pas les noms affiches)
  • command : ce que les joueurs tapent dans le chat pour devenir ce job (/trafiquant)
  • max : nombre max simultane (0 = illimite)
  • salary : salaire par paye (toutes les 5 minutes par defaut)
  • admin : niveau requis (0 = personne, 1 = admin, 2 = superadmin)
  • vote : si true, les joueurs doivent voter pour t'autoriser
  • hasLicense : si true, tu commences avec une licence d'armes
  • candemote : si les autres joueurs peuvent voter ta demotion
  • category : sous laquelle le job apparait dans le menu F4

Etape 3 : enregistrer le job dans une categorie (optionnel mais propre)

Si tu utilises une nouvelle categorie qui n'existe pas, ajoute-la au-dessus :

DarkRP.createCategory{
    name = "Trafiquants",
    categorises = "jobs",
    startExpanded = true,
    color = Color(150, 50, 50, 255),
    canSee = function(ply) return true end,
    sortOrder = 100,
}

Etape 4 : redemarrer le serveur

Sauvegarde, redemarre ton serveur, et verifie la console au demarrage. Si tu vois une ligne rouge [ERROR], c'est que ta syntaxe Lua est cassee — saute directement a la section "erreurs courantes" plus bas.

Les erreurs Lua a eviter absolument

Voici les pieges qui plantent 90% des serveurs DarkRP debutants quand ils ajoutent leurs premiers jobs custom.

Erreur 1 : TEAM_XXX en double

C'est de loin l'erreur la plus frequente. Si tu copies-colles un job pour en faire un nouveau et que tu oublies de renommer la constante TEAM_, tu te retrouves avec deux jobs qui partagent le meme identifiant. Resultat : le second ecrase le premier en silence, ou le serveur crash au demarrage avec un message du genre :

[ERROR] addons/darkrpmodification/lua/darkrp_customthings/jobs.lua:42:
attempt to index global 'TEAM_TRAFIQUANT' (a number value)

Solution : chaque job DOIT avoir un TEAM_ unique. Utilise Ctrl+F dans ton fichier pour verifier qu'il n'existe pas deja. GMod Panel bloque automatiquement ce cas.

Erreur 2 : virgule oubliee ou en trop

Lua n'a pas la meme tolerance que JavaScript pour les virgules. Une virgule manquante entre deux champs casse tout :

-- CASSE :
TEAM_TEST = DarkRP.createJob("Test", {
    color = Color(255, 0, 0)  -- pas de virgule ici !
    model = {"models/player/kleiner.mdl"},
})
-- CORRECT :
TEAM_TEST = DarkRP.createJob("Test", {
    color = Color(255, 0, 0),
    model = {"models/player/kleiner.mdl"},
})

A l'inverse, une virgule apres la derniere accolade plante aussi. La regle : virgule entre chaque champ, pas apres le dernier (mais Lua tolere la virgule trailing dans les tables, contrairement a JSON).

Erreur 3 : modele inexistant

Si tu mets un chemin de modele qui n'existe pas (typo, addon non installe, etc), le joueur apparait en T-pose ou en grand ERROR rouge. Le serveur ne crash pas mais les joueurs voient un bug visuel ridicule.

-- CASSE (faute de frappe) :
model = {"models/player/grup03/male_07.mdl"},  -- "grup" au lieu de "group"

Solution : utilise toujours le selecteur visuel du panel, ou copie-colle le chemin depuis le menu de spawn de Garry's Mod. Pour verifier qu'un modele existe : tape prop_dynamic models/player/group03/male_07.mdl dans la console — si rien n'apparait, le chemin est mauvais.

Erreur 4 : weapon_xxx invalide

Meme probleme avec les armes. weapon_pistol existe, weapon_pistole non. Resultat : le joueur spawn sans cette arme, et tu vois dans la console :

[ERROR] Trying to give unknown weapon 'weapon_pistole' to player

Le serveur tourne mais c'est moche. Les noms d'armes valides DarkRP de base :

  • weapon_physgun, weapon_physcannon, gmod_camera, gmod_tool
  • weapon_pistol, weapon_357, weapon_smg1, weapon_ar2
  • weapon_shotgun, weapon_crossbow, weapon_crowbar, weapon_stunstick
  • weapon_frag, weapon_slam, weapon_rpg
  • weapon_keys, keys, arrest_stick, unarrest_stick (DarkRP)

Pour les armes d'addons (M9K, CW2.0, etc), regarde la doc de l'addon ou utilise le selecteur du panel qui scanne automatiquement les armes installees.

Erreur 5 : color avec des valeurs > 255 ou negatives

-- CASSE :
color = Color(300, -10, 50)  -- 300 > 255, -10 negatif

Lua ne plante pas mais GMod fait des trucs bizarres (couleur invisible, transparence cassee). Reste entre 0 et 255 pour chaque composante. Le 4eme parametre (alpha) est optionnel et vaut 255 par defaut.

Erreur 6 : description avec des guillemets non echappes

Si ta description contient des ", ferme avec [[...]] au lieu de "..." :

-- CASSE :
description = "Tu es le "patron" du quartier",  -- les " internes cassent la chaine
-- CORRECT :
description = [[Tu es le "patron" du quartier]],

Erreur 7 : oublier de require l'addon DarkRPModification

Si DarkRPModification n'est pas installe, ton fichier jobs.lua n'est jamais charge — tes jobs custom n'apparaissent simplement pas en jeu, sans erreur. Verifie que le dossier garrysmod/addons/darkrpmodification/ existe.

Erreur 8 : referencer TEAM_XXX dans un autre fichier avant qu'il soit defini

Si tu as un fichier shipments.lua qui dit "seul TEAM_TRAFIQUANT peut acheter ces armes", il faut que TEAM_TRAFIQUANT soit defini AVANT le chargement de shipments.lua. Dans darkrp_customthings/, l'ordre de chargement est alphabetique : jobs.lua se charge avant shipments.lua, donc tu es bon. Mais si tu mets tes jobs ailleurs, attention.

Erreur 9 : encoding UTF-8 BOM

Si tu edites avec le Bloc-notes Windows, il sauvegarde en UTF-8 avec BOM (3 octets invisibles au debut du fichier) qui font planter le parser Lua. Utilise toujours VS Code, Notepad++ (avec encodage UTF-8 sans BOM) ou Sublime Text.

Erreur 10 : salaire avec une virgule au lieu d'un point

-- CASSE :
salary = 1,500,  -- virgule de milliers

Lua interprete 1,500 comme deux valeurs (1 et 500), pas comme 1500. Ecris salary = 1500 sans separateur.

Verifier ses jobs avant de pousser en prod

Avant de redemarrer ton serveur de production, toujours :

  1. Tester la syntaxe Lua : copie-colle ton fichier dans https://www.lua.org/cgi-bin/demo qui te dit immediatement si la syntaxe est valide. Ou utilise luac -p jobs.lua en ligne de commande.
  2. Verifier les console errors au demarrage du serveur (cherche [ERROR] en rouge)
  3. Joindre ton serveur et ouvrir le menu F4 pour voir si tes jobs apparaissent
  4. Essayer de devenir chaque job nouveau pour valider que le modele, les armes et la couleur fonctionnent

GMod Panel fait ces 4 checks automatiquement quand tu cliques sur "Verifier les erreurs" dans le menu serveur. Il scanne tous tes Lua, valide la syntaxe, verifie les modeles et te liste les warnings avant que tu redemarres.

Combien de jobs custom maximum ?

Techniquement, aucune limite. En pratique :

  • 5 a 15 jobs custom : ideal pour un serveur debutant. Les joueurs s'y retrouvent.
  • 20 a 40 jobs : serveur etabli avec une vraie communaute
  • Plus de 50 jobs : risque de surcharger le menu F4 et de perdre les nouveaux joueurs. Pense a les organiser en categories.

Le nombre de jobs n'impacte pas les performances du serveur en jeu (le Lua est charge une fois au demarrage), seulement la lisibilite du menu pour les joueurs.

Conclusion

Creer des jobs DarkRP custom, c'est ce qui transforme un serveur generique en une vraie communaute. La methode manuelle te donne le controle total mais demande de la rigueur — une virgule oubliee et tu passes une heure a chercher l'erreur. La methode via GMod Panel te fait gagner ce temps en validant automatiquement chaque champ et en empechant les erreurs structurelles les plus communes.

Si tu debutes, commence avec le panel, observe le Lua genere pour comprendre la structure, puis bascule en manuel quand tu te sens a l'aise. Et surtout : garde toujours une sauvegarde de ton fichier jobs.lua qui marche, avant chaque modification.

Bon dev, et amuse-toi bien sur ton serveur !