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

ChampSignification
colorLa couleur dans le scoreboard et au-dessus de la tête.
modelUne chaîne, ou une table. Une table laisse le choix au joueur.
descriptionAffichée dans le menu F4. Crochets longs, pas de guillemets.
weaponsÉquipement au spawn, par classe d'arme.
commandSe tape /policeofficer. Lettres et chiffres uniquement.
max0 signifie illimité. 4 signifie quatre à la fois.
salaryVersé à chaque intervalle de paie.
admin0 tout le monde, 1 les admins, 2 les superadmins.
voteSi les joueurs votent l'accès au job.
hasLicensePeut délivrer des permis d'armes.
candemoteSi 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 outils utilisés dans ce guide