Les jobs DarkRP, proprement
Où vivent réellement les jobs, ce que fait chaque champ, et les cinq erreurs qui coûtent une soirée. Dont celle qui écrase un job sans la moindre erreur.
6 minutes de lecture
DarkRP se configure en éditant du Lua, et la façon la plus courante de casser un serveur est d'éditer le mauvais Lua. Ce guide explique où les jobs vivent vraiment, ce que fait chaque champ, et les erreurs qui produisent les messages sur lesquels vous passeriez sinon une soirée.
N'éditez jamais DarkRP lui-même
Le gamemode est livré avec un dossier nommé darkrpmodification. C'est là que
vos modifications vont.
garrysmod/addons/darkrpmodification/lua/darkrp_customthings/ jobs.lua entities.lua shipments.lua doorgroups.lua ...
Éditez gamemodes/darkrp directement et votre travail disparaît à la prochaine
mise à jour. Éditez darkrpmodification et il survit, parce que mettre à jour
DarkRP ne touche jamais à cet addon.
Si vous n'avez pas darkrpmodification, installez-le avant toute chose. C'est
un téléchargement distinct de DarkRP, et éditer le gamemode « juste en
attendant de l'installer proprement » est la façon dont on perd un week-end.
La forme d'un job
Un job est un appel à DarkRP.createJob, affecté à une globale TEAM_ :
TEAM_POLICE = DarkRP.createJob("Police Officer", { color = Color(25, 25, 170, 255), model = {"models/player/police.mdl", "models/player/police_fem.mdl"}, description = [[Maintenir l'ordre et arrêter les criminels.]], weapons = {"arrest_stick", "unarrest_stick", "stunstick", "weaponchecker"}, command = "policeofficer", max = 4, salary = 65, admin = 0, vote = true, hasLicense = true, candemote = true, category = "Civil Protection",})
Le générateur de jobs DarkRP l'écrit pour vous, y
compris la variante avec whitelist, et il refuse de produire un nom TEAM_
qui ne serait pas une globale Lua valide. Cela vaut quand même la peine de
comprendre la structure, parce que vous lirez constamment les jobs des
autres.
À quoi sert réellement chaque champ
| Champ | Signification |
|---|---|
color | La couleur dans le scoreboard et au-dessus de la tête. |
model | Une chaîne, ou une table. Une table laisse le choix au joueur. |
description | Affichée dans le menu F4. Crochets longs, pas de guillemets. |
weapons | Équipement au spawn, par classe d'arme. |
command | Se tape /policeofficer. Lettres et chiffres uniquement. |
max | 0 signifie illimité. 4 signifie quatre à la fois. |
salary | Versé à chaque intervalle de paie. |
admin | 0 tout le monde, 1 les admins, 2 les superadmins. |
vote | Si les joueurs votent l'accès au job. |
hasLicense | Peut délivrer des permis d'armes. |
candemote | Si ce job peut faire l'objet d'un vote de rétrogradation. |
Les classes d'armes ne se devinent pas : la liste des classes d'armes contient toutes celles que le jeu enregistre, et indique lesquelles n'existent qu'avec Half-Life: Source monté.
Les cinq erreurs qui coûtent une soirée
1. Deux jobs partageant un nom TEAM
TEAM_POLICE = DarkRP.createJob("Police Officer", { ... })TEAM_POLICE = DarkRP.createJob("Police Chief", { ... })
Le second écrase silencieusement le premier. Aucune erreur, un job manquant, et une heure de perplexité. Chaque job a besoin de sa propre globale.
2. Un ]] dans une description
description = [[Gardez le coffre [[butin]] et restez vigilant.]],
La chaîne se termine au premier ]], et tout ce qui suit devient une syntaxe
que l'analyseur ne comprend pas. Utilisez [==[ ... ]==] quand le texte contient
des crochets, ou évitez-les.
3. Un modèle qui n'est pas monté
Un job pointant vers un modèle absent du serveur fait apparaître les joueurs sous forme de panneau d'erreur. La liste des playermodels contient tous ceux que Garry's Mod enregistre par défaut ; tout le reste doit se trouver dans un addon réellement installé sur le serveur, et pas seulement sur votre client.
4. Éditer pendant que le serveur tourne
DarkRP lit ces fichiers au démarrage. Enregistrer jobs.lua sur un serveur en
fonctionnement ne change rien tant qu'il n'a pas redémarré, ce qui explique
pourquoi « mon job n'apparaît pas » se règle en général par un redémarrage.
5. Une commande avec un espace ou un tiret
command = "police officer",
command devient une commande de chat. Les espaces, les tirets et les accents la
cassent. Lettres et chiffres, rien d'autre.
Quand un job n'apparaît pas, lisez la console du serveur au démarrage plutôt que de deviner. DarkRP affiche une erreur claire avec le fichier et la ligne pour tout ce qu'il n'a pas pu charger.
Les catégories, pour que le menu F4 ne soit pas un mur
Passé dix jobs, le menu a besoin de regroupement. Une catégorie se crée une fois puis se référence par son nom :
DarkRP.createCategory{ name = "Civil Protection", categorises = "jobs", startExpanded = true, color = Color(25, 25, 170, 255), canSee = fp{fn.Id, true}, sortOrder = 101,}
Le champ category d'un job doit correspondre à name exactement, casse
comprise. Une différence ne déclenche pas d'erreur : le job atterrit
simplement dans le groupe par défaut. Le
générateur de catégories les garde cohérents.
Mettre un job en whitelist
Deux façons, et elles ne sont pas équivalentes.
La whitelist intégrée est customCheck, exécutée quand quelqu'un tente
de prendre le job :
customCheck = function(ply) return table.HasValue({"vip", "admin", "superadmin"}, ply:GetUserGroup())end,CustomCheckFailMsg = "Ce job est réservé aux membres VIP.",
Renseignez toujours CustomCheckFailMsg. Sans lui, le joueur est refusé sans
explication et vient vous demander pourquoi.
Le champ admin est plus simple mais plus brutal : admin = 1 réserve le
job aux admins, sans message et sans place pour un rang donateur.
Une fois les jobs en place
- Les groupes de portes, pour que seule la police
possède le commissariat. Notez que la fonction est la globale
AddDoorGroup, et non un appelDarkRP.create. - Les agendas, le texte d'objectifs qu'un chef écrit pour son équipe.
- Les shipments et entités pour ce que vend le vendeur d'armes.
- Les groupes de rétrogradation, pour qu'une rétrogradation d'un job de police interdise aussi les autres.