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 onduty sul 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:

lua
-- 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:

  1. L'ufficiale riproduce un'animazione e il server controlla che il bersaglio sia vicino e che l'ufficiale abbia il lavoro.
  2. Il bersaglio riceve uno stato ammanettato, un'animazione ammanettata e controlli disabilitati (niente fuoco, niente corsa, niente ingresso in veicoli da solo).
  3. 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:

lua
-- ESX (server)
local function policeOnline()
    local count = 0
    for _, xPlayer in pairs(ESX.GetExtendedPlayers('job', 'police')) do
        count += 1
    end
    return count
end
lua
-- 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
end

Su 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.

Script senza questo problema

CCTV Security CamerasTelecamere posizionabili, un tablet multi-vista in diretta e foto stampate come prove.Vedi script →Advanced BoostingBoosting di veicoli dal tablet: contratti dalla classe D alla S+, crew e coda in tempo reale.Vedi script →

Continua a leggere