FiveM Anticheat-Grundlagen: was zu tun ist und was kein Anticheat kann
Anticheat-Grundlagen für FiveM: Validiere auf dem Server zuerst, OneSync-Entity-Limits, Explosionen stornieren, Discord-Webhook-Protokolle, txAdmin-Bans und was kein Anticheat kann.
Cheater sind Teil des Betriebs eines öffentlichen Servers. Sie spawnen Fahrzeuge, sprengen die Karte auf, geben sich selbst Geld und Waffen, und treiben deine ehrlichen Spieler weg. Eine einzelne „Anticheat"-Ressource wird das nicht beheben. Was funktioniert, sind ein paar Schichten, beginnend mit der wichtigsten: Vertraue nicht dem Client.
Schicht 1: Validiere auf dem Server
Die meisten Cheats auf einem Roleplay-Server sind keine Engine-Hacks. Sie sind jemand, der deine eigenen Events mit Werten auslöst, die er wählte. Repariere das zuerst, und ein großer Teil des Problems verschwindet.
- Berechne Preise, Belohnungen und Mengen auf dem Server.
- Verwende
source, nie eine Spieler-ID, die vom Client gesendet wurde. - Überprüfe Job, Entfernung und Cooldowns vor dem Handeln.
Die vollständige Methode mit Code ist in securing server events. Wenn du nur eine Sache aus diesem Artikel machst, mach das.
Schicht 2: Entity-Steuerung mit OneSync
Mit OneSync kennt der Server Entities (Fahrzeuge, Peds, Objekte) und kann kontrollieren, wer sie erstellt. Das lässt dich Cheater davon abhalten, Dinge zu spawnen.
- Entity-Sperrung. OneSync hat einen Entity-Sperrmodus, bei dem vom Client erstellte Entities blockiert oder eingeschränkt werden. Es ist stark, aber es bricht jedes Skript auf, das Fahrzeuge oder Objekte vom Client spawnt. Lesen Sie die OneSync-Dokumentation für die genaue Einstellung in Ihrem Build, bevor Sie es einschalten, und verschieben Sie das Spawnen zuerst auf den Server. Siehe spawning vehicles server-side.
entityCreating-Event. Der Server kann Entities inspizieren, während sie erstellt werden, und die stornieren, die du nicht willst.
AddEventHandler('entityCreating', function(entity)
local model = GetEntityModel(entity)
if model == `jet` then
CancelEvent()
end
end)Dieses Beispiel weigert sich, einen Jet von überall zu erstellen. Erstelle deine eigene Liste von Modellen, die niemand auf deinem Server erstellen sollte, und sei vorsichtig: Eine Regel, die zu breit ist, storniert die Entities deiner eigenen Skripte.
OneSync muss für diese Funktionen aktiviert sein. Siehe OneSync and player limits.
Schicht 3: Spielfähigkeit-Events verarbeiten
FiveM sendet einige Spielhandlungen zum Server als Events, und der Server kann sie stornieren. Zwei häufige:
Explosionen
AddEventHandler('explosionEvent', function(sender, ev)
-- sender is the player who caused the explosion
-- ev holds the explosion type and position
CancelEvent()
end)Das Stornieren jeder Explosion würde auch Granaten und deine eigenen skriptierten Explosionen stoppen. Verengen Sie es mit den Daten in ev. Zum Beispiel schaue auf ev.explosionType und storniere nur die Typen, die nie auf deinem Server vorkommen sollten, oder protokolliere sie zuerst, um zu sehen, welches normales Spiel produziert.
local blocked = { [1] = true } -- example: replace with the types you decide to block
AddEventHandler('explosionEvent', function(sender, ev)
if blocked[ev.explosionType] then
CancelEvent()
print(('Blocked explosion from player %s'):format(sender))
end
end)Waffen
Der Server erhält auch Events zum Geben, Entfernen und Abfeuern von Waffen, wie giveWeaponEvent. Cheater, die sich selbst Waffen geben, triggern diese. Wenn dein Inventar Waffen verarbeitet, vergleiche, was das Event geben möchte, mit dem, was der Spieler besitzt, und storniere es, wenn es nicht passt. Protokollieren Sie zuerst, erzwingen Sie später, damit Sie keine echten Spieler blockieren.
Weitere Spielfähigkeit-Events existieren für Feuer, Projektile und Waffen-Schaden. Schlag sie in der Cfx-Dokumentation nach, bevor du eine verwendest, und teste auf einem Entwicklungs-Server.
Achtung: Ein Spielfähigkeit-Event-Handler, der zu streng ist, bestraft ehrliche Spieler. Starten Sie im reinen Protokoll-Modus für ein paar Tage, lesen Sie die Protokolle, und dann erzwingen Sie.
Schicht 4: protokolliere verdächtiges Verhalten
Banne nicht auf einem einzelnen Signal. Protokolliere, lese, dann handle. Ein Discord-Webhook ist ein einfacher Ort, um Protokolle zu senden, die das Personal sehen kann.
local WEBHOOK = GetConvar('anticheat_webhook', '')
local function logToDiscord(text)
if WEBHOOK == '' then return end
PerformHttpRequest(WEBHOOK, function() end, 'POST',
json.encode({ username = 'Anticheat', content = text }),
{ ['Content-Type'] = 'application/json' })
end
AddEventHandler('explosionEvent', function(sender, ev)
logToDiscord(('Explosion from %s (%s), type %s'):format(GetPlayerName(sender), sender, ev.explosionType))
end)Lege die Webhook-URL in server.cfg mit set anticheat_webhook "https://..." fest, nicht im Skript, und halte sie geheim. Jeder mit der URL kann in deinen Kanal posten.
Was zu protokollieren ist: fehlgeschlagene Server-seitige Prüfungen (unmögliche Mengen, falsche Entfernung), blockierte Explosionen, Entity-Spawns, die du storniert hast, wiederholtes Event-Spam. Füge den Spielernamen, die Server-ID und eine Kennung wie die Lizenz hinzu, damit du sie bannen kannst.
Schicht 5: Handle mit txAdmin
Wenn die Protokolle einen Cheater zeigen, entferne ihn. Verwende txAdmin zum Warnen oder Bannen, damit die Aktion aufgezeichnet wird und Neustarts überlebt. Siehe moderating with txAdmin. In einem Skript kickt DropPlayer(source, 'reason') einen Spieler, aber ein Ban sollte über deine Moderations-Tools gehen, damit Kennungen gespeichert werden.
Was kein Anticheat kann
Sei ehrlich über die Grenzen.
- Der Client gehört dem Cheater. Alles, das nur auf dem Client überprüft wird, kann ausgeschaltet werden. Nur Server-Überprüfungen sind zuverlässig.
- Kein Tool fängt alles. Neue Cheats erscheinen, und die Erkennung ist immer einen Schritt hinterher.
- Verwirrung ist keine Sicherheit. Verborgene Event-Namen und „geheime" Tokens im Client-Code können gelesen werden.
- Kostenloser oder durchgesickerter Anticheat-Code ist ein Risiko. Cheat-Entwickler lesen es auch, und einiges davon enthält Hintertüren. Sei vorsichtig mit Ressourcen aus unbekannten Quellen.
- Leute spielen noch eine Rolle. Aktives Personal, ein klares Meldesystem und schnelle Bans tun mehr als jedes Skript.
Kombiniere Schichten, halte Ressourcen aktualisiert und überprüfe deine Protokolle. Das macht deinen Server ein hartes Ziel im Vergleich zu anderen.
Checkliste
| Symptom | Lösung |
|---|---|
| Spieler bekommen kostenlos Geld oder Gegenstände | Validiere Events auf dem Server, siehe die Events-Anleitung |
| Cheater spawnen Fahrzeuge und Objekte | OneSync-Entity-Kontrollen und entityCreating; verschiebe Spawning auf den Server |
| Explosionen überall auf der Karte | explosionEvent-Handler mit CancelEvent, verengt nach Typ |
| Waffen-Gabe-Cheats | Überprüfe Waffen-Events gegen dein Inventar, protokolliere zuerst |
| Keine Ahnung, was Cheater tun | Sende Protokolle an einen Discord-Webhook, der in einer Convar aufbewahrt wird |
| Cheater gefunden | Ban von txAdmin mit den gespeicherten Kennungen |
| Regel blockiert ehrliche Spieler | Wechsel zu reinem Protokoll und verengen Sie die Bedingung |
Kurze Antworten
Brauche ich eine Anticheat-Ressource?
Sichern Sie zuerst Ihre eigenen Skripte, da dies die häufigsten Missbräuche stoppt. Eine Anticheat-Ressource kann Erkennung hinzufügen, ist aber kein Ersatz für Server-seitige Validierung.
Kann ein Anticheat jeden Cheater stoppen?
Nein. Cheater passen sich an, und der Spiel-Client gehört ihnen. Das Ziel ist, das Cheaten schwer zu machen, das Offensichtliche zu erkennen und Übertreter schnell zu entfernen.
Ist es sicher, Spiel-Events auf dem Server zu stornieren?
Ja, mit Vorsicht. Das Stornieren eines Events stoppt es für alle, also teste, dass normales Gameplay wie deine eigenen Skripte, die Explosionen erstellen, immer noch funktionieren, bevor du eine Regel auf einem Live-Server ausführst.
Scripts ohne dieses Problem
CCTV Security CamerasPlatzierbare Kameras, ein Live-Tablet mit Multi-View und ausgedruckte Beweisfotos.Script ansehen →
Shop CreatorBau einen Shop in unter einer Minute — Besitzer, Angestellte, Tresore und Überfälle inklusive.Script ansehen →
Tebex TemplateEin Premium-Theme ohne Code für deinen Tebex-Shop, komplett im Tebex-Panel anpassbar.Script ansehen →