DarkRP-Jobs, richtig gemacht
Wo Jobs wirklich hingehören, was jedes Feld tut, und die fünf Fehler, die einen Abend kosten. Inklusive dem, der einen Job ohne jede Fehlermeldung überschreibt.
5 Minuten Lesezeit
DarkRP wird konfiguriert, indem man Lua bearbeitet, und der mit Abstand häufigste Weg, einen Server kaputtzumachen, ist das falsche Lua zu bearbeiten. Dieser Guide behandelt, wo Jobs wirklich hingehören, was jedes Feld tut, und die Fehler, die genau die Meldungen erzeugen, an denen du sonst einen Abend verbringst.
Bearbeite niemals DarkRP selbst
Der Gamemode bringt einen Ordner namens darkrpmodification mit. Dort gehören
deine Änderungen hin.
garrysmod/addons/darkrpmodification/lua/darkrp_customthings/ jobs.lua entities.lua shipments.lua doorgroups.lua ...
Bearbeite gamemodes/darkrp direkt, und dein Werk wird vom nächsten Update
gelöscht. Bearbeite darkrpmodification, und es überlebt, denn ein DarkRP-Update
fasst dieses Addon nie an.
Wenn du darkrpmodification nicht hast, installiere es vor allem anderen. Es
ist ein eigener Download, getrennt von DarkRP, und den Gamemode "nur bis ich
es richtig installiere" zu bearbeiten ist die Art, wie Leute ein Wochenende
verlieren.
Die Form eines Jobs
Ein Job ist ein Aufruf von DarkRP.createJob, zugewiesen an eine
TEAM_-Globale:
TEAM_POLICE = DarkRP.createJob("Police Officer", { color = Color(25, 25, 170, 255), model = {"models/player/police.mdl", "models/player/police_fem.mdl"}, description = [[Keep the peace and arrest criminals.]], weapons = {"arrest_stick", "unarrest_stick", "stunstick", "weaponchecker"}, command = "policeofficer", max = 4, salary = 65, admin = 0, vote = true, hasLicense = true, candemote = true, category = "Civil Protection",})
Der DarkRP-Job-Generator schreibt dir das, inklusive der
Whitelist-Variante, und er lässt dich keinen TEAM_-Namen erzeugen, der keine
gültige Lua-Globale ist. Trotzdem lohnt es sich, das zu verstehen, denn du wirst
ständig die Jobs anderer Leute lesen.
Wofür jedes Feld tatsächlich da ist
| Feld | Bedeutung |
|---|---|
color | Die Farbe im Scoreboard und über dem Kopf. |
model | Ein String, oder eine Table. Eine Table gibt Spielern die Wahl. |
description | Wird im F4-Menü angezeigt. Lange Klammern, keine Anführungszeichen. |
weapons | Spawn-Loadout, nach Waffenklasse. |
command | Wird als /policeofficer getippt. Nur Buchstaben und Ziffern. |
max | 0 heißt unbegrenzt. 4 heißt vier gleichzeitig. |
salary | Wird in jedem Payday-Intervall ausgezahlt. |
admin | 0 jeder, 1 Admins, 2 Superadmins. |
vote | Ob Spieler den Job hineinwählen. |
hasLicense | Darf Waffenscheine ausstellen. |
candemote | Ob dieser Job per Abstimmung demoted werden kann. |
Waffenklassen werden nicht geraten: die Liste der Waffenklassen ist jede Klasse, die das Spiel registriert, und sie sagt dir, welche davon nur existieren, wenn Half-Life: Source gemountet ist.
Die fünf Fehler, die einen Abend kosten
1. Zwei Jobs teilen sich einen TEAM-Namen
TEAM_POLICE = DarkRP.createJob("Police Officer", { ... })TEAM_POLICE = DarkRP.createJob("Police Chief", { ... })
Der zweite überschreibt den ersten stillschweigend. Kein Fehler, ein fehlender Job, und eine verwirrende Stunde. Jeder Job braucht seine eigene Globale.
2. Ein ]] in einer description
description = [[Guard the vault [[loot]] and stay alert.]],
Der String endet beim ersten ]], und alles danach wird zu Syntax, mit der der
Parser nichts anfangen kann. Nimm [==[ ... ]==], wenn der Text Klammern
enthält, oder vermeide sie.
3. Ein Modell, das nicht gemountet ist
Ein Job, der auf ein Modell zeigt, das dein Server nicht hat, spawnt Spieler als Fehlerzeichen. Die Playermodel-Liste ist jedes Modell, das Garry's Mod standardmäßig registriert; alles andere muss in einem Addon liegen, das tatsächlich auf dem Server installiert ist, nicht nur auf deinem eigenen Client.
4. Bearbeiten, während der Server läuft
DarkRP liest diese Dateien beim Start. jobs.lua auf einem laufenden Server zu
speichern ändert nichts, bis er neu startet, weshalb "mein Job taucht nicht auf"
meistens mit einem Neustart beantwortet wird.
5. Ein command mit Leerzeichen oder Bindestrich
command = "police officer",
command wird zu einem Chat-Befehl. Leerzeichen, Bindestriche und Umlaute
machen ihn kaputt. Buchstaben und Ziffern, sonst nichts.
Wenn ein Job nicht erscheint, lies die Serverkonsole beim Start, statt zu raten. DarkRP gibt für alles, was es nicht laden konnte, einen klaren Fehler mit Datei und Zeile aus.
Kategorien, damit das F4-Menü keine Wand ist
Ab etwa zehn Jobs braucht das Menü Gruppierung. Eine Kategorie wird einmal erstellt und danach über ihren Namen referenziert:
DarkRP.createCategory{ name = "Civil Protection", categorises = "jobs", startExpanded = true, color = Color(25, 25, 170, 255), canSee = fp{fn.Id, true}, sortOrder = 101,}
Das Feld category eines Jobs muss exakt zu name passen, Groß- und
Kleinschreibung inklusive. Eine Abweichung wirft keinen Fehler; der Job landet
einfach in der Standardgruppe. Der
Kategorie-Generator hält sie konsistent.
Einen Job whitelisten
Zwei Wege, und sie sind nicht gleichwertig.
Die eingebaute Whitelist ist customCheck, ausgeführt wenn jemand versucht,
den Job zu nehmen:
customCheck = function(ply) return table.HasValue({"vip", "admin", "superadmin"}, ply:GetUserGroup())end,CustomCheckFailMsg = "This job is reserved for VIP members.",
Setz immer CustomCheckFailMsg. Ohne sie wird der Spieler ohne Erklärung
abgewiesen und fragt stattdessen dich.
Das Feld admin ist einfacher, aber gröber: admin = 1 beschränkt den Job
auf Admins, ohne Meldung und ohne Platz für einen Donator-Rang.
Wenn die Jobs stehen
- Door Groups, damit nur die Polizei das PD
besitzen kann. Beachte, dass die Funktion die Globale
AddDoorGroupist, keinDarkRP.create-Aufruf. - Agendas, der Zieltext, den ein Boss für sein Team schreibt.
- Shipments und Entities für das, was der Gun Dealer verkauft.
- Demote Groups, damit ein Demote aus einem Polizei-Job auch die anderen sperrt.