Apres les jobs custom, les entites custom sont la deuxieme brique essentielle d'un serveur DarkRP unique. Money printers, plantes de drogue, distillateurs d'alcool, fabricateurs d'armes, mineurs de bitcoin... ce sont elles qui donnent une economie au serveur et qui font que les joueurs reviennent jouer chaque jour pour faire grossir leur business.
Le probleme : comme pour les jobs, la syntaxe Lua DarkRP est tres pointilleuse, et une entite mal configuree peut soit ne pas apparaitre, soit faire crash le serveur, soit pire — etre achetable par tous les joueurs et casser l'economie en 5 minutes.
Dans ce guide, on va voir les deux methodes pour creer des entites custom (avec et sans GMod Panel), tous les champs disponibles, et les erreurs typiques qui ruinent les serveurs DarkRP debutants.
Ce qu'est une entite DarkRP
Une entite DarkRP custom, c'est un objet achetable depuis le menu F4 qui peut etre pose dans le monde, qui appartient a un joueur, et qui generalement produit quelque chose au fil du temps (de l'argent, un objet, un effet). Les exemples classiques :
- Money printer : produit de l'argent toutes les X secondes
- Drug lab : transforme du temps + des items en drogues vendables
- Mining drill : fore le sol pour produire des minerais
- Hacking computer : permet de hack des bornes, ATM, etc
Techniquement, une entite custom DarkRP n'est PAS un nouveau SWEP ou une nouvelle classe Garry's Mod. C'est une declaration qui dit a DarkRP "rends cette entite (qui existe deja sous forme d'addon) achetable depuis le F4 menu, avec ce prix et ces restrictions". L'entite reelle (le modele 3D, le code de fonctionnement) doit deja exister via un addon installe.
Pre-requis
Avant de commencer :
- Un serveur GMod avec DarkRP + DarkRPModification
- L'addon qui contient l'entite que tu veux ajouter (Money Printer Reskin, Drug Mod, etc) — generalement depuis le Workshop ou GitHub
- Le nom interne (
entity class) de l'entite, accessible dans le code de l'addon (souventent_money_printer,drug_lab_meth, etc) - Optionnel mais fortement recommande : GMod Panel pour eviter les erreurs Lua
Methode 1 : ajouter une entite avec GMod Panel (sans Lua)
Le panel detecte automatiquement les entites disponibles dans tes addons et te les propose dans une liste. Tu n'as plus qu'a renseigner le prix et les restrictions.
Etape 1 : aller dans l'editeur d'entites
Connecte-toi a GMod Panel, va sur ton serveur, puis clique sur Entities dans la navigation. Tu vois la liste des entites custom deja declarees (printers, drogues, etc) avec leur prix, leur job autorise et leur categorie.
Etape 2 : ajouter une nouvelle entite
Clique sur Nouvelle entite. Le formulaire :
- Nom affiche : ce que voit le joueur dans le menu F4 (ex: "Money Printer Diamond")
- Class : selecteur deroulant qui liste toutes les entites detectees dans tes addons installes — plus besoin de chercher manuellement le bon nom interne. Le panel scanne
lua/entities/au demarrage. - Modele : auto-detecte depuis l'addon, mais tu peux le surcharger
- Prix : numerique, valide cote serveur (pas d'overflow, pas de negatif)
- Max : nombre maximum simultane par joueur (0 = illimite)
- Categorie : Drugs, Money Printers, Tools, Weapons, etc
- Jobs autorises : selecteur multiple parmi tes jobs existants. C'est crucial : si tu laisses vide, tout le monde peut acheter, ce qui casse l'economie.
- Cmd : raccourci chat optionnel (
/buyprinter) - Description : texte affiche au survol
Etape 3 : sauvegarder
Le panel regenere ton fichier entities.lua automatiquement, en validant que :
- La class existe bien dans tes addons
- Le prix est un entier positif
- Les TEAM_ references sont reels (pas de TEAM_INEXISTANT qui casse tout)
- Pas de duplication de class (tu ne peux pas avoir 2 fois
ent_money_printerdans le menu)
Etape 4 : redemarrer
Tu telecharges le ZIP, tu relances ton start.bat, et l'entite apparait dans le menu F4 → Entities. Total : moins de 90 secondes.
Avantages de la methode panel
- Detection automatique des entites disponibles (plus de "comment ça s'appelle deja ?")
- Validation des TEAM_ references avant sauvegarde
- Duplication d'une entite en 1 clic (super pour creer des variantes : printer bronze, argent, or, diamant)
- Reorganisation par drag and drop dans les categories
- Historique des modifications : tu peux restaurer une ancienne config si tu casses quelque chose
Methode 2 : ajouter une entite en Lua manuel
Si tu veux comprendre la mecanique ou que tu as un cas particulier, voici la methode brute.
Etape 1 : trouver le bon fichier
Comme pour les jobs, ne touche JAMAIS au gamemode. Le bon fichier est :
garrysmod/addons/darkrpmodification/lua/darkrp_customthings/entities.lua
Etape 2 : la structure d'une entite custom
Voici l'exemple d'un money printer custom :
DarkRP.createEntity("Money Printer Diamond", {
ent = "money_printer_diamond",
model = "models/props_lab/reciever01a.mdl",
price = 25000,
max = 2,
cmd = "buyprinterdiamond",
allowed = {TEAM_MAFIABOSS, TEAM_DEALER},
category = "Money Printers",
})
Les champs essentiels :
"Money Printer Diamond": le nom affiche dans le menu F4 (premier argument)ent: la class technique de l'entite, telle que definie par l'addon (le nom du dossier danslua/entities/)model: le modele 3D affiche dans le menu (souvent identique a celui de l'entite)price: prix en monnaie DarkRPmax: nombre max simultane par joueur (0 = illimite)cmd: raccourci chat optionnelallowed: table de TEAM_ autorises a acheter. A NE JAMAIS OUBLIER, sinon tout le monde achete.category: sous laquelle l'entite apparait dans le menu
Etape 3 : creer une nouvelle categorie d'entites (optionnel)
Si tu veux organiser tes entites dans une nouvelle section :
DarkRP.createCategory{
name = "Drogues",
categorises = "entities",
startExpanded = true,
color = Color(150, 50, 150, 255),
canSee = function(ply) return true end,
sortOrder = 50,
}
Note bien categorises = "entities" (et pas "jobs" comme pour les jobs custom).
Etape 4 : redemarrer le serveur
Sauvegarde, redemarre, et regarde la console pour les erreurs Lua au demarrage. Si tu vois [ERROR] addons/darkrpmodification/..., va a la section des erreurs ci-dessous.
Les erreurs a eviter absolument
Voici les pieges classiques qui plantent ou ruinent les serveurs DarkRP debutants quand ils ajoutent des entites custom.
Erreur 1 : oublier allowed = {...}
C'est l'erreur la plus catastrophique pour l'economie de ton serveur. Si tu oublies le champ allowed, tous les joueurs peuvent acheter l'entite — y compris les Citizens qui ne devraient avoir aucun acces aux money printers. Resultat : en 10 minutes, ton serveur est inonde de printers et l'economie est morte.
-- DANGEREUX :
DarkRP.createEntity("Money Printer", {
ent = "money_printer",
price = 5000,
-- pas de "allowed" => tout le monde achete
})
-- CORRECT :
DarkRP.createEntity("Money Printer", {
ent = "money_printer",
price = 5000,
allowed = {TEAM_MAFIABOSS, TEAM_DEALER},
})
GMod Panel t'avertit en rouge si tu sauvegardes une entite sans jobs autorises.
Erreur 2 : ent = "xxx" qui n'existe pas
Si tu ecris une class qui ne correspond a aucune entite installee, le bouton apparait dans le menu F4 mais en cliquant le joueur recoit un message d'erreur ou rien ne se passe. Pire : sur certains addons, ça spawn une entite "ERROR" rouge qui flotte dans le monde.
-- CASSE :
ent = "money_pinter", -- typo : "pinter" au lieu de "printer"
Solution : verifie le nom exact dans garrysmod/addons/<addon>/lua/entities/<class>/. Le nom du dossier = la class. Ou utilise le selecteur du panel qui liste les classes detectees.
Erreur 3 : prix avec un point ou une virgule
DarkRP utilise des entiers pour les prix. Si tu mets un decimal :
-- CASSE :
price = 1500.50,
price = 1,500,
Le premier est arrondi silencieusement (potentiellement vers le bas). Le second est interprete comme deux valeurs et casse la table. Reste sur des entiers simples.
Erreur 4 : referencer un TEAM_ qui n'existe pas
Si tu mets allowed = {TEAM_MAFIA} mais que ton job s'appelle en realite TEAM_MAFIABOSS, le serveur crash au demarrage avec :
[ERROR] addons/darkrpmodification/lua/darkrp_customthings/entities.lua:15:
attempt to index a nil value (global 'TEAM_MAFIA')
Solution : verifie tes constantes TEAM_ dans jobs.lua. Le panel valide automatiquement chaque reference.
Erreur 5 : max trop eleve ou egal a 0 sans le vouloir
max = 0 veut dire illimite, pas interdit. Beaucoup de debutants pensent l'inverse et se retrouvent avec des joueurs qui spawnent 50 printers. Si tu veux interdire, retire l'entite tout court ou met allowed = {} (table vide).
max = 0, -- ILLIMITE (chaque joueur peut en avoir autant qu'il veut)
max = 1, -- 1 seul par joueur
max = 5, -- 5 max par joueur
Erreur 6 : oublier le model quand l'addon ne le definit pas
Certains addons d'entites ne specifient pas de modele par defaut. Si tu ne le mets pas dans ta declaration DarkRP, le bouton dans le menu F4 sera vide (juste un cadre noir) ou affichera ERROR. Toujours specifier un model = ... valide.
Erreur 7 : entite Workshop non telechargee par les joueurs
Si l'addon de l'entite est uniquement cote serveur (pas dans une collection Workshop avec FastDL), les joueurs voient ERROR a la place de l'objet. Le serveur tourne mais c'est moche et confusionnel.
Solution : assure-toi que l'addon est :
- Soit dans une collection Workshop liee a ton serveur (via
+host_workshop_collectiondansstart.bat) - Soit servi via FastDL (cf le futur article FastDL)
GMod Panel gere automatiquement la collection Workshop quand tu installes un addon depuis son catalogue.
Erreur 8 : prix tellement bas que l'economie casse
C'est plus une erreur de game design qu'une erreur Lua, mais elle ruine plus de serveurs que toutes les autres reunies. Une entite a 50 dollars qui produit 100 dollars/minute = ROI en 30 secondes = inflation explosive en 1 heure.
Regle empirique pour un printer DarkRP standard :
- Prix d'achat : minimum 5000 dollars
- ROI cible : entre 5 et 15 minutes
- Production : ne doit pas depasser le salaire moyen d'un job legitime
- Risque : doit y avoir un cooldown de panne, surchauffe, ou risque de raid
Si l'entite n'a aucun risque associe, tu detruis l'incentive de jouer un autre job.
Erreur 9 : oublier la categorie
Si tu ne specifies pas category = "...", l'entite apparait quand meme mais dans la categorie par defaut "Other" / "Misc" qui est moche et mal organisee. Toujours assigner une categorie, et creer la categorie si elle n'existe pas (cf etape 3 plus haut).
Erreur 10 : virgules, accolades, et closures Lua
Comme pour les jobs, les erreurs de syntaxe Lua sont legion :
-- CASSE (virgule manquante apres la closure de table) :
DarkRP.createEntity("Test", {
ent = "test",
price = 100
max = 1, -- pas de virgule apres "100"
})
-- CASSE (accolade fermante en trop) :
DarkRP.createEntity("Test", {
ent = "test",
price = 100,
max = 1,
}}) -- 2 accolades fermantes au lieu d'une
Solution : utilise un editeur Lua avec coloration syntaxique (VS Code + extension Lua, Notepad++, Sublime Text). Jamais le Bloc-notes Windows.
Combien d'entites custom maximum ?
Comme pour les jobs, pas de limite technique, mais en pratique :
- 5 a 10 entites custom : ideal pour un serveur debutant. Les joueurs decouvrent progressivement.
- 15 a 30 entites : serveur etabli avec une vraie economie diversifiee
- Plus de 50 entites : risque de surcharger le menu F4 et de creer des doublons (3 versions de printer different juste par le prix). Privilegie la qualite a la quantite.
L'objectif n'est pas d'avoir le maximum d'entites, c'est d'avoir un systeme economique coherent ou chaque entite a un role et une raison d'exister.
Verifier ses entites avant prod
Avant de pousser tes nouvelles entites en production :
- Valider la syntaxe Lua :
luac -p entities.luaou demo en ligne sur lua.org - Demarrer le serveur en local et regarder la console pour les erreurs au chargement
- Joindre le serveur, ouvrir F4 → Entities, et verifier que toutes tes entites apparaissent dans la bonne categorie
- Devenir le job autorise et essayer d'acheter chaque entite. Verifier qu'elle se pose, qu'elle fonctionne, et qu'elle ne crash pas
- Devenir un job NON autorise et essayer d'acheter — tu dois recevoir le message "vous n'avez pas la permission"
GMod Panel fait ces checks automatiquement via "Verifier les erreurs" dans le menu serveur.
Conclusion
Les entites custom sont le levier economique d'un serveur DarkRP. Bien dosees, elles creent une boucle de gameplay addictive ou les joueurs construisent leur business, defendent leur base, et reviennent chaque jour. Mal dosees ou mal restreintes (pas de allowed), elles ruinent l'economie en quelques heures et tuent le serveur.
La methode via GMod Panel elimine 100% des erreurs structurelles (TEAM_ invalide, class inexistante, prix non-entier) et te laisse te concentrer sur ce qui compte vraiment : l'equilibre economique de ton serveur.
Une fois tes entites en place, la prochaine etape logique est de configurer les shipments d'armes pour tes gun dealers — c'est ce qu'on verra dans le prochain tutoriel.
Bon dev, et amuse-toi a construire ton economie !