Konfiguracja policji w FiveM: stopnie, służba, broń i liczba policjantów
Jak skonfigurować pracę policji na serwerze FiveM: praca i stopnie, przełącznik służby, armoury ze sklepem i sejfem, kajdanki i eskorta, sprawdzenia liczby policji, MDT i dyspozycja.
Objaw: dodałeś pracę policyjną, ale nikt nie może pójść na służbę, armoury jest otwarte dla każdego, lub rabunki mówią "not enough police" podczas gdy trzech policjantów jest online.
Działająca praca policji to garść małych części, które muszą się zgodzić na jedną rzecz: nazwę pracy i kto jest na służbie. Ten artykuł przechodzi przez każdą część i gdzie się zwykle psuje.
Praca i jej stopnie
Praca to rząd danych: nazwa, etykieta i lista stopni (cadet, officer, sergeant, chief). Numer stopnia to co sprawdzisz później, więc zdecyduj o porządku najpierw i go utrzymuj. Jak utworzyć pracę w każdym frameworku jest pokryte w adding a job on ESX i adding a job on QBCore. Na QBox praca żyje w qbx_core współdzielonych danych zamiast pliku qb-core.
Dwie reguły, które oszczędzają bólu:
- Używaj jedną wewnętrzną nazwę wszędzie, na przykład
police. Każdy skrypt, który mówi "police only" porównuje się z tym stringiem. - Daj stopień szefa flagę, którą Twój framework używa dla szefów, aby menu społeczne i zarządzania działały.
Przełącznik służby
Bycie policjantem i bycie na służbie to nie to samo. Rabunki, dyspozycja i wynagrodzenia powinny liczyć tylko policjantów na służbie.
- QBCore i QBox przechowują pole
ondutyna pracy, a przełącznik go zmienia. Praca może być ustawiona, aby domyślnie zacząć na służbie lub poza służbą. - ESX nie ma pola duty w bazie pracy. Wiele ustawień używa drugiej pracy poza służbą, lub flagi, którą Twój zasób policji utrzymuje, więc sprawdzaj jak to robi zanim napiszesz cokolwiek zlicza.
Niezależnie od frameworku, przełącznik powinien działać na serwerze, a serwer decyduje wartość. Zdarzenie klienta, które mówi "I am on duty" bez sprawdzenia jest exploitem.
Armoury: sklep lub sejf
Nie wydawaj broni z zdarzenia klienta. Użyj własnych narzędzi Twojego inwentarza. Z ox_inventory możesz ograniczyć sklep lub sejf do pracy i minimalnego stopnia, co jest najczystszym armoury:
-- 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) },
}Sejf działa w ten sam sposób dla szafek na dowody i wspólnego magazynu. Zobacz ox_inventory shops i ox_inventory stashes. Trzymaj nazwy groups i sprawdzenie stopnia tak samo jak nazwa Twojej pracy, lub armoury pozostaje zablokowany dla każdego.
Kajdanki i eskorta
Kajdanki to zestaw małych kawałków, nie jedna funkcja:
- Oficer gra animację i serwer sprawdza, czy cel jest blisko i oficer ma pracę.
- Cel otrzymuje stan kajdanek, animację kajdanek i wyłączone kontrolki (bez strzelania, bez biegania, bez wchodzenia do pojazdów na własną rękę).
- Eskorta przyczepia cel do oficera, lub go podąża, aż do zwolnienia.
Trzymaj flagę kajdanek jako state bag aby każdy klient ją widział, i aby gracze, którzy pojawią się później, ją również widzieli. Sprawdzaj dystans i pracę na serwerze, w sposób securing your server events opisuje. Pamiętaj, aby wyczyścić flagę, gdy gracz jest zwolniony, umiera lub odchodzi.
Liczba policji dla rabunków
Rabunki, przygody i niektóre prace narkotykowe pytają "how many officers are on duty". Odpowiedź musi pochodzić z serwera:
-- 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
endNa QBox, ostatnie wersje qbx_core również przesyłają duty-count exports, więc sprawdzaj jego dokumentację zanim napiszesz własną pętlę. Jeśli używasz pary off-duty pracy na ESX, licza tylko na-duty nazwę.
Zawsze liczę na serwerze, i liczę ponownie, gdy rabunek się zaczyna, nie tylko gdy gracz podchodzi. Zobacz robbery scripts dla pełnego przepływu.
MDT i dyspozycja są osobne
Praca policji daje Ci pracę i liczbę. To są zwykle inne zasoby:
- MDT: rekordy, nakazy, obywatele i wyszukiwanie pojazdów.
- Dispatch: rozmowy 911, alert blips, status oficera.
- Evidence and impound: często znowu ich własne skrypty.
Sprawdzaj konfigurę każdego dla nazwy pracy. Dyspozycja, która nigdy nie pokazuje alertów, to prawie zawsze skonfigurowana dla innej nazwy pracy niż ta, którą stworzyłeś.
Checklist
| Objaw | Rozwiązanie |
|---|---|
| Armoury otwarte dla każdego | Dodaj nazwę pracy i minimalny stopień do sklep lub sejf groups |
| Armoury zablokowany dla oficerów | Nazwa pracy w armorze nie zgadza się z nazwą pracy, którą stworzyłeś |
| Rabunek mówi nie policja, oficerowie online | Liczę tylko policjantów na służbie, z dokładną nazwą pracy, na serwerze |
| Dyspozycja nie pokazuje alertów | Ustaw nazwę pracy policji w konfigu dyspozycji |
| Gracz pozostaje sakwowany po zwolnieniu | Wyczyść stan kajdanek przy zwolnieniu, śmierci i rozłączeniu |
| Każdy może pójść na służbę | Rób przełącznik na serwerze i sprawdź pracę najpierw |
Szybkie odpowiedzi
Jak policzy liczby policjantów online?
Na serwerze, pętli przez połączonych graczy i licza tych, których praca jest Twoją pracą policyjną i którzy są na służbie. Rób to na serwerze, nigdy na kliencie, ponieważ rabunki i przygody ufają tej liczbie.
Czy praca policji obejmuje MDT i dyspozycję?
Zwykle nie. Sama praca to tylko praca, stopnie, służba i armoury. MDT (rekordy, nakazy) i dyspozycja (rozmowy, blips) to oddzielne zasoby, które czytają pracę gracza.
Gdzie mogę dać policjantom broń?
Umieść je w armorze: magazyn inwentarza lub sejf ograniczony do pracy policyjnej i minimalnego stopnia. Nie dawaj broni z zdarzenia klienta.

