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

CampoSignificato
colorIl colore nella scoreboard e sopra la testa.
modelUna stringa, oppure una tabella. Una tabella dà la scelta al giocatore.
descriptionMostrata nel menu F4. Parentesi lunghe, non virgolette.
weaponsLoadout allo spawn, per classe di arma.
commandSi scrive come /policeofficer. Solo lettere e cifre.
max0 significa illimitato. 4 significa quattro alla volta.
salaryPagato a ogni intervallo di payday.
admin0 tutti, 1 admin, 2 superadmin.
voteSe i giocatori votano l'ingresso nel job.
hasLicensePuò rilasciare porti d'armi.
candemoteSe 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 chiamata DarkRP.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.

Gli strumenti usati in questa guida