Configurazione del lavoro di polizia FiveM: gradi, servizio, armeria e conteggio polizia
Come configurare un lavoro di polizia su un server FiveM: lavoro e gradi, interruttore di servizio, armeria con negozio e nascondiglio, ammanettamento e scorta, controlli del conteggio della polizia, MDT e dispatch.
Il sintomo: hai aggiunto un lavoro di polizia, ma nessuno può andare in servizio, l'armeria è aperta a tutti, o le rapine dicono "polizia insufficiente" mentre tre ufficiali sono online.
Un lavoro di polizia funzionante è una manciata di piccole parti che devono essere d'accordo su una cosa: il nome del lavoro e chi è in servizio. Questo articolo guida attraverso ogni parte e dove di solito si rompe.
Il lavoro e i suoi gradi
Il lavoro è una riga di dati: un nome, un'etichetta e un elenco di gradi (cadetto, ufficiale, sergente, capo). Il numero di grado è quello che controlli dopo, quindi decidi l'ordine prima e mantienilo. Come creare il lavoro in ogni framework è trattato in aggiunta di un lavoro su ESX e aggiunta di un lavoro su QBCore. Su QBox il lavoro vive nei dati condivisi qbx_core invece di un file qb-core.
Due regole che salvano il dolore:
- Usa un nome interno ovunque, ad esempio
police. Ogni script che dice "solo polizia" confronta con quella stringa. - Dai al grado del boss il flag che il tuo framework usa per i boss, in modo che i menu della società e della gestione funzionino.
L'interruttore di servizio
Essere un ufficiale di polizia e essere in servizio non sono la stessa cosa. Le rapine, il dispatch e gli stipendi dovrebbero contare solo gli ufficiali in servizio.
- QBCore e QBox mantengono un campo
ondutysul lavoro, e un interruttore lo cambia. Un lavoro può essere impostato per iniziare in servizio o fuori servizio per impostazione predefinita. - ESX non ha un campo di servizio nel lavoro di base. Molti setup usano un secondo lavoro fuori servizio, o un flag che la tua risorsa di polizia mantiene, quindi controlla come lo fa il tuo prima di scrivere qualsiasi conteggio.
Indipendentemente dal framework, l'interruttore dovrebbe essere eseguito sul server, e il server decide il valore. Un evento client che dice "Sono in servizio" senza controllo è un exploit.
L'armeria: negozio o nascondiglio
Non distribuire armi da un evento client. Usa i tuoi strumenti di inventario. Con ox_inventory puoi limitare un negozio o un nascondiglio a un lavoro e un grado minimo, che è l'armeria più pulita:
-- shop entry (in the ox_inventory shops data)
PoliceArmory = {
name = 'Police Armory',
groups = { police = 0 }, -- job name and minimum grade
inventory = {
{ name = 'radio', price = 0 },
{ name = 'handcuffs', price = 0 },
},
locations = { vec3(452.6, -980.0, 30.7) },
}Un nascondiglio funziona allo stesso modo per gli armadietti di prove e l'archiviazione condivisa. Vedi negozi ox_inventory e nascondigli ox_inventory. Mantieni i nomi groups e il controllo dei gradi uguali al nome del tuo lavoro, o l'armeria rimane bloccata per tutti.
Ammanettamento e scorta
L'ammanettamento è una serie di piccoli pezzi, non una funzione:
- L'ufficiale riproduce un'animazione e il server controlla che il bersaglio sia vicino e che l'ufficiale abbia il lavoro.
- Il bersaglio riceve uno stato ammanettato, un'animazione ammanettata e controlli disabilitati (niente fuoco, niente corsa, niente ingresso in veicoli da solo).
- La scorta allega il bersaglio all'ufficiale, o lo segue, fino al rilascio.
Mantieni il flag ammanettato come state bag in modo che ogni client lo veda, e in modo che i giocatori che si trasmettono dopo lo vedono anche. Controlla la distanza e il lavoro sul server, come protezione degli eventi del server descrive. Ricorda di cancellare il flag quando il giocatore viene rilasciato, muore o se ne va.
Conteggio della polizia per le rapine
Le rapine, gli assalti e alcuni lavori di droga chiedono "quanti ufficiali sono in servizio". La risposta deve provenire dal server:
-- ESX (server)
local function policeOnline()
local count = 0
for _, xPlayer in pairs(ESX.GetExtendedPlayers('job', 'police')) do
count += 1
end
return count
end-- QBCore (server)
local function policeOnline()
local count = 0
for _, player in pairs(QBCore.Functions.GetQBPlayers()) do
local job = player.PlayerData.job
if job.name == 'police' and job.onduty then
count += 1
end
end
return count
endSu QBox, le versioni recenti di qbx_core spediscono anche esportazioni di conteggio del servizio, quindi controlla la sua documentazione prima di scrivere il tuo loop. Se usi una coppia di lavoro fuori servizio su ESX, conta solo il nome in servizio.
Conta sempre sul server, e conta di nuovo quando inizia la rapina, non solo quando il giocatore cammina. Vedi script di rapina per il flusso completo.
MDT e dispatch sono separati
Il lavoro di polizia ti dà un lavoro e un conteggio. Questi di solito sono altre risorse:
- MDT: record, mandati, lookup di cittadini e veicoli.
- Dispatch: chiamate 911, blip di allarme, stato ufficiale.
- Prove e deposito: spesso di nuovo i loro script.
Controlla il config di ciascuno per il nome del lavoro. Un dispatch che non mostra mai avvisi è quasi sempre configurato per un nome di lavoro diverso da quello che hai creato.
Elenco di controllo
| Sintomo | Soluzione |
|---|---|
| Armeria aperta a tutti | Aggiungi il nome del lavoro e un grado minimo al negozio o al nascondiglio groups |
| Armeria bloccata per ufficiali | Il nome del lavoro nell'armeria non corrisponde al nome del lavoro che hai creato |
| La rapina dice no polizia, ufficiali online | Conta solo gli ufficiali in servizio, con il nome del lavoro esatto, sul server |
| Il dispatch non mostra avvisi | Imposta il nome del lavoro di polizia nel config del dispatch |
| Giocatore rimane ammanettato dopo il rilascio | Cancella lo stato ammanettato al rilascio, morte e disconnessione |
| Chiunque può andare in servizio | Fai l'interruttore sul server e controlla il lavoro prima |
Risposte rapide
Come faccio a contare i poliziotti online?
Sul server, scorri i giocatori connessi e conta quelli il cui lavoro è il tuo lavoro di polizia e che sono in servizio. Fallo sul server, mai sul client, perché le rapine e gli assalti si fidano di quel numero.
Un lavoro di polizia include un MDT e dispatch?
Solitamente no. Il lavoro stesso è solo il lavoro, i gradi, il servizio e un'armeria. L'MDT (record, mandati) e il dispatch (chiamate, blip) sono risorse separate che leggono il lavoro del giocatore.
Dove do le armi ai poliziotti?
Mettile in un'armeria: un negozio d'inventario o un nascondiglio ristretto al lavoro di polizia e a un grado minimo. Non dare armi da un evento client.

