FiveM Polizei-Job-Einrichtung: Grade, Dienst, Waffenarsenal und Polizei-Zahl
Wie du einen Polizei-Job auf einem FiveM-Server einrichtest: Job und Grade, Dienst-Toggle, Waffenarsenal mit Shop und Versteck, Handschellen und Eskorte, Polizei-Zahl-Überprüfungen, MDT und Dispatch.
Das Symptom: Du hast einen Polizei-Job hinzugefügt, aber niemand kann Dienst antreten, das Waffenarsenal ist für alle offen, oder Überfälle sagen "nicht genug Polizei", während drei Beamte online sind.
Ein funktionierender Polizei-Job ist eine Handvoll kleine Teile, die sich auf einer Sache einigen müssen: dem Job-Namen und wer im Dienst ist. Dieser Artikel führt durch jeden Teil und wo es normalerweise bricht.
Der Job und seine Grade
Der Job ist eine Zeile Daten: ein Name, ein Label und eine Liste von Graden (Kadett, Beamter, Sergeant, Chef). Die Grad-Nummer ist das, das du später überprüfst, daher entscheide die Reihenfolge zuerst und behälte sie. Wie du den Job in jedem Framework erstellst, ist in Füge einen Job auf ESX hinzu und Füge einen Job auf QBCore hinzu behandelt. Auf QBox lebt der Job in den qbx_core freigegebenen Daten statt in einer qb-core Datei.
Zwei Regeln, die Schmerzen sparen:
- Nutze einen internen Namen überall, zum Beispiel
police. Jedes Skript, das "nur Polizei" sagt, vergleicht sich mit diesem String. - Gebe dem Boss-Grad die Flagge, die dein Framework für Bosse nutzt, damit Gesellschafts- und Verwaltungsmenüs funktionieren.
Der Dienst-Toggle
Ein Polizeibeamter zu sein und Dienst zu haben, sind nicht das Gleiche. Überfälle, Dispatch und Gehälter sollten nur Beamte im Dienst zählen.
- QBCore und QBox behalten ein
ondutyFeld auf dem Job, und ein Toggle ändert es. Ein Job kann so eingestellt werden, dass er standardmäßig im Dienst oder außer Dienst startet. - ESX hat kein Dienst-Feld im Basis-Job. Viele Setups nutzen einen zweiten Außendienst-Job oder eine Flagge, die deine Polizei-Resource beibehält, daher überprüfe, wie deine es macht, bevor du einen Zählvorgang schreibst.
Was auch immer das Framework ist, der Toggle sollte auf dem Server laufen, und der Server entscheidet den Wert. Ein Client-Event, das sagt "Ich bin im Dienst", ohne Überprüfung ist ein Exploit.
Das Waffenarsenal: Shop oder Versteck
Gebe nicht Waffen von einem Client-Event. Nutze deine Inventar-eigenen Tools. Mit ox_inventory kannst du einen Shop oder ein Versteck auf einen Job und einen Mindestgrad beschränken, was das sauberste Waffenarsenal ist:
-- 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) },
}Ein Versteck funktioniert gleich für Beweis-Schließfächer und gemeinsamen Speicher. Siehe ox_inventory Shops und ox_inventory Verstecke. Behalte die Namen groups und die Grad-Überprüfung gleich wie dein Job-Name, oder das Waffenarsenal bleibt für alle gesperrt.
Handschellen und Eskorte
Handschellen sind ein Satz kleiner Teile, nicht ein Feature:
- Der Beamte spielt eine Animation und der Server überprüft, dass das Ziel nah ist und der Beamte den Job hat.
- Das Ziel bekommt einen Handschellen-Zustand, eine Handschellen-Animation und deaktivierte Steuerelemente (kein Schießen, kein Laufen, kein Betreten von Fahrzeugen auf eigene Faust).
- Die Eskorte hängt das Ziel an den Beamten an oder folgt ihm, bis es freigegeben wird.
Behalte die Handschellen-Flagge als einen State Bag, damit jeder Client es sieht, und damit Spieler, die später einstreamen, es auch sehen. Überprüfe Distanz und Job auf dem Server, wie Sichern deiner Server-Events beschreibt. Denke daran, die Flagge zu löschen, wenn der Spieler freigegeben, stirbt oder geht.
Polizei-Zahl für Überfälle
Überfälle, Heists und einige Drogen-Jobs fragen "wie viele Beamte sind im Dienst". Die Antwort muss vom Server kommen:
-- 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
endAuf QBox, neuere qbx_core Versionen versenden auch Dienst-Zahl-Exporte, daher überprüfe seine Dokumentation, bevor du deine eigene Schleife schreibst. Wenn du ein Off-Duty-Job-Paar auf ESX nutzt, zähle nur den On-Duty-Namen.
Zähle immer auf dem Server, und zähle wieder, wenn der Überfall startet, nicht nur, wenn der Spieler läuft. Siehe Überfalls-Skripte für den vollständigen Fluss.
MDT und Dispatch sind separat
Der Polizei-Job gibt dir einen Job und eine Zahl. Diese sind normalerweise andere Resources:
- MDT: Aufzeichnungen, Haftbefehle, Bürger und Fahrzeug-Suche.
- Dispatch: 911-Anrufe, Benachrichtigungs-Blips, Beamten-Status.
- Beweis und Depot: oft ihre eigenen Skripte erneut.
Überprüfe jeden für den Job-Namen in seiner Config. Ein Dispatch, das keine Benachrichtigungen zeigt, ist fast immer so konfiguriert, dass es einen anderen Job-Namen hat als den, den du erstellt hast.
Checkliste
| Symptom | Behebung |
|---|---|
| Waffenarsenal offen für alle | Füge den Job-Namen und einen Mindestgrad zur Shop- oder Versteck-groups hinzu |
| Waffenarsenal gesperrt für Beamte | Der Job-Name im Waffenarsenal stimmt nicht mit dem Job-Namen überein, den du erstellt hast |
| Überfall sagt keine Polizei, Beamte online | Zähle nur im Dienst befindliche Beamte, mit dem genauen Job-Namen, auf dem Server |
| Dispatch zeigt keine Benachrichtigungen | Stelle den Polizei-Job-Namen in der Dispatch-Config fest |
| Spieler bleibt in Handschellen nach Freigabe | Lösche den Handschellen-Zustand auf Freigabe, Tod und Trennung |
| Jeder kann Dienst antreten | Mache den Toggle auf dem Server und überprüfe den Job zuerst |
Kurze Antworten
Wie zähle ich die Polizeibeamten online?
Auf dem Server, durchschleife die verbundenen Spieler und zähle die Spieler, deren Job dein Polizei-Job ist und die im Dienst sind. Mache es auf dem Server, nie auf dem Client, weil Überfälle und Heists auf diese Zahl vertrauen.
Enthält ein Polizei-Job ein MDT und Dispatch?
Normalerweise nicht. Der Job selbst ist nur der Job, Grade, Dienst und ein Waffenarsenal. Das MDT (Aufzeichnungen, Haftbefehle) und das Dispatch (Anrufe, Blips) sind separate Resources, die den Job des Spielers lesen.
Wo gebe ich Polizei ihre Waffen?
Lege sie in ein Waffenarsenal: ein Inventar-Shop oder ein Versteck, das auf den Polizei-Job und auf einen Mindestgrad beschränkt ist. Gebe nicht Waffen von einem Client-Event.

