I job DarkRP, fatti bene
Dove vivono davvero i job, cosa fa ogni campo, e i cinque errori che costano una serata. Compreso quello che sovrascrive un job senza dare alcun errore.
5 minuti di lettura
DarkRP si configura modificando del Lua, e il modo più comune in assoluto di rompere un server è modificare il Lua sbagliato. Questa guida copre dove vivono davvero i job, cosa fa ogni campo, e gli errori che producono proprio i messaggi su cui altrimenti ci passi una serata.
Non modificare mai DarkRP stesso
Il gamemode porta con sé una cartella chiamata darkrpmodification. È lì che
vanno le tue modifiche.
garrysmod/addons/darkrpmodification/lua/darkrp_customthings/ jobs.lua entities.lua shipments.lua doorgroups.lua ...
Modifica gamemodes/darkrp direttamente e il tuo lavoro viene cancellato dal
prossimo aggiornamento. Modifica darkrpmodification e sopravvive, perché
aggiornare DarkRP non tocca mai quell'addon.
Se non hai darkrpmodification, installalo prima di ogni altra cosa. È un
download separato da DarkRP, e modificare il gamemode "solo finché non lo
installo per bene" è il modo in cui la gente perde un weekend.
La forma di un job
Un job è una chiamata a DarkRP.createJob, assegnata a una 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 = [[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",})
Il generatore di job DarkRP te lo scrive, variante con
whitelist compresa, e non ti lascia produrre un nome TEAM_ che non sia una
globale Lua valida. Vale comunque la pena capirlo, perché leggerai i job degli
altri di continuo.
A cosa serve davvero ogni campo
| Campo | Significato |
|---|---|
color | Il colore nella scoreboard e sopra la testa. |
model | Una stringa, oppure una tabella. Una tabella dà la scelta al giocatore. |
description | Mostrata nel menu F4. Parentesi lunghe, non virgolette. |
weapons | Loadout allo spawn, per classe di arma. |
command | Si scrive come /policeofficer. Solo lettere e cifre. |
max | 0 significa illimitato. 4 significa quattro alla volta. |
salary | Pagato a ogni intervallo di payday. |
admin | 0 tutti, 1 admin, 2 superadmin. |
vote | Se i giocatori votano l'ingresso nel job. |
hasLicense | Può rilasciare porti d'armi. |
candemote | Se questo job può essere demoted per votazione. |
Le classi di arma non si indovinano: la lista delle classi di arma contiene ogni classe che il gioco registra, e ti dice quali esistono solo quando Half-Life: Source è montato.
I cinque errori che costano una serata
1. Due job che condividono un nome TEAM
TEAM_POLICE = DarkRP.createJob("Police Officer", { ... })TEAM_POLICE = DarkRP.createJob("Police Chief", { ... })
Il secondo sovrascrive il primo in silenzio. Nessun errore, un job che manca, e un'ora di confusione. Ogni job ha bisogno della sua globale.
2. Un ]] dentro una description
description = [[Guard the vault [[loot]] and stay alert.]],
La stringa finisce al primo ]], e tutto quello che viene dopo diventa sintassi
che il parser non riesce a interpretare. Usa [==[ ... ]==] quando il testo
contiene parentesi quadre, oppure evitale.
3. Un modello che non è montato
Un job che punta a un modello che il tuo server non ha fa spawnare i giocatori come il cartello di errore. La lista dei playermodel contiene ogni modello che Garry's Mod registra di default; qualsiasi altro deve stare in un addon davvero installato sul server, non solo sul tuo client.
4. Modificare mentre il server gira
DarkRP legge questi file all'avvio. Salvare jobs.lua su un server acceso non
cambia niente finché non riavvia, ed è per questo che a "il mio job non compare"
si risponde quasi sempre riavviando.
5. Un command con uno spazio o un trattino
command = "police officer",
command diventa un comando in chat. Spazi, trattini e accenti lo rompono.
Lettere e cifre, niente altro.
Quando un job non compare, leggi la console del server all'avvio invece di tirare a indovinare. DarkRP stampa un errore chiaro con file e riga per tutto quello che non è riuscito a caricare.
Le categorie, così il menu F4 non è un muro
Superati i dieci job il menu ha bisogno di essere raggruppato. Una categoria si crea una volta e poi la si referenzia per nome:
DarkRP.createCategory{ name = "Civil Protection", categorises = "jobs", startExpanded = true, color = Color(25, 25, 170, 255), canSee = fp{fn.Id, true}, sortOrder = 101,}
Il campo category di un job deve corrispondere a name esattamente,
maiuscole comprese. Una differenza non dà errore; il job finisce semplicemente
nel gruppo di default. Il generatore di categorie le
tiene coerenti.
Mettere un job in whitelist
Due modi, e non sono equivalenti.
La whitelist integrata è customCheck, eseguita quando qualcuno prova a
prendere il job:
customCheck = function(ply) return table.HasValue({"vip", "admin", "superadmin"}, ply:GetUserGroup())end,CustomCheckFailMsg = "This job is reserved for VIP members.",
Imposta sempre CustomCheckFailMsg. Senza, il giocatore viene rifiutato senza
spiegazioni e poi lo chiede a te.
Il campo admin è più semplice ma più grezzo: admin = 1 limita il job agli
admin, senza messaggio e senza spazio per un rango donatore.
Quando i job funzionano
- Door group, così solo la polizia può possedere la
centrale. Nota che la funzione è la globale
AddDoorGroup, non una chiamataDarkRP.create. - Agende, il testo degli obiettivi che un boss scrive per la sua squadra.
- Shipment ed entity per quello che vende il venditore di armi.
- Demote group, così un demote da un job della polizia sbarra anche gli altri.