Zur Anleitung

Dokumentation 9.6.24

server.cfg, Convars und Berechtigungen

Diese Seite listet jede Convar, die Tosun AntiCheat liest, jede ACE-Berechtigung, die es prüft, sowie die Dateien und Konfigurationsabschnitte, die Sie bearbeiten können. Sie beginnt mit einem vollständigen server.cfg-Block und behandelt auch die FiveM-Hardening-Convars, die das AC beim Start prüft.

Wo die Konfiguration liegt#

Tosun AntiCheat liest Einstellungen aus server.cfg, vier Dateien in der Ressource und dem Webpanel. Zugangsdaten gehören nur an Orte, die ausschließlich der Server liest. configs/anticheat_config.lua ist ein Shared-Skript, der Server sendet es also an jeden Client.

Datei oder OrtGeladen aufWas dort hineingehört
server.cfgServerConvars (License, Panel-Schlüssel, vertrauenswürdige Ressourcen), ACE-Berechtigungen und die FiveM-Hardening-Convars.
configs/anticheat_server.luaNur Server, vor den Server-Skripten des ACAusweichort für Zugangsdaten, wenn Sie keine Convars verwenden: panelKey, centralToken und licenseKey.
configs/anticheat_config.luaShared: Server und jeder ClientAlle ts-Einstellungen: Erkennungen, Strafen, Guards, Admin-Menü und Listen. Tragen Sie hier niemals einen Schlüssel, Token oder eine License ein.
configs/anticheat_webhooks.luaNur ServerDiscord-Webhook-URLs und Embed-Stil.
admins/anticheat_admins.luaNur ServerDie Kennungsliste Admins (Staff-Status und Admin-Menü).
Web panel (ac_settings and ac_ tables)Mit dem Server synchronisiertÜberschreibt die meisten Konfigurationswerte etwa 3 s nach dem Start und danach alle ts.ServerPerf.configSyncIntervalSec Sekunden (ausgeliefert 120).

Vollständiges server.cfg-Beispiel#

Ein vollständiger Block für eine typische Installation. Die Reihenfolge ist wichtig: Abhängigkeiten und Zugangsdaten-Convars müssen vor ensure tosun-ac stehen, weil die Zugangsdaten einmal beim Laden der Ressource aufgelöst werden. Zeilen, die mit einem einzelnen # beginnen, sind optional; entfernen Sie das #, um sie zu verwenden.

## ---------- Tosun AntiCheat: server.cfg-Block ----------
## OneSync ist eine Manifest-Abhängigkeit (txAdmin kann es ebenfalls aktivieren).
set onesync on

## Abhängigkeiten: vor tosun-ac starten.
## oxmysql und tosun_render sind zwingende Abhängigkeiten.
## screenshot-basic ist das Standard-ts.screenshotModule.
## mysql_connection_string vor ensure oxmysql konfigurieren (siehe MySQL-Anleitung).
ensure oxmysql
ensure screenshot-basic
ensure tosun_render

## Zugangsdaten: set verwenden (nie setr oder sets) und ÜBER ensure tosun-ac platzieren.
## Sie werden einmal beim Laden der Ressource gelesen.
## License-Format: tac_live_ gefolgt von 40 Hex-Zeichen in Kleinbuchstaben.
set tosun_ac_license "YOUR_LICENSE_KEY"
## Optional: Wenn leer, wird der Panel-Schlüssel aus panel_settings in der Spiel-DB geladen.
# set tosun_ac_panel_key "YOUR_PANEL_API_KEY"
# set tosun_ac_central_token "YOUR_FIVEM_SCOPED_TOKEN"
## Optional: nur von ts.licenseLock verwendet.
# set tosun_ac_server_id "server-1"

## Ressourcen, die abgesicherte AC-Exports aufrufen dürfen (kommagetrennt).
set tosun_ac_trusted_resources "my-housing,my-clothing"

## Optional: öffentliche https-Panel-Adresse für Screenshot- und Beweis-Uploads.
# set ts_public_panel_url "https://panel.example.com"

## Optional: die Tosun-Connect-DB-Bridge aus dieser Datei steuern.
## Ohne die manual-Zeile (und mit ausgeschaltetem ts.panelMirror) werden beide Bridge-Convars auf "1" erzwungen.
# set tosun_db_bridge_manual "1"
# set tosun_db_bridge_enabled "1"
# set tosun_db_bridge_money_write "0"

## Optional: den Playtime-Writer abschalten (nur qb, qbcore und qbox).
# set tosun_panel_playtime "0"

## Optional, für Integratoren mit Bridge-Dateien. Clients lesen diese Werte, daher setr verwenden.
# setr tosun_ac_resource "tosun-ac"
# setr tosun_ac_bridge_client_ms "60000"

ensure tosun-ac

## ---------- Staff-Berechtigungen ----------
## Staff-Status und Admin-Menü im Spiel:
add_ace group.admin tosun.admin allow
## tosunac_setup, die manuellen Scans und die Vorschau des Bannbildschirms:
add_ace group.admin tosunac.admin allow
add_ace group.admin command.tosunac_setup allow
add_ace group.admin command.tosunac_backdoorscan allow
add_ace group.admin command.tosunac_eventscan allow
add_ace group.admin tosunac.banscreen.test allow
## Eine Zeile pro Teammitglied:
add_principal identifier.license:YOUR_LICENSE_HEX group.admin

## ---------- FiveM-Hardening-Convars, die das AC beim Start prüft ----------
set sv_stateBagStrictMode true
set sv_filterRequestControl 2
set sv_enableNetworkedSounds false
set sv_enableNetworkedPhoneExplosions false
set sv_enableNetworkedScriptEntityStates false
set sv_scriptHookAllowed false
## Zuerst testen: relaxed oder strict kann Skripte beschädigen, die Fahrzeuge vom Client aus spawnen.
set sv_entityLockdown relaxed
set sv_pureLevel 1
## Die server.cfg-Prüfung warnt, solange dieser Wert leer ist:
# set sv_enforceGameBuild YOUR_GAME_BUILD

Regeln für den server.cfg-Block#

Befolgen Sie diese Regeln, wenn Sie das Beispiel an Ihren Server anpassen.

  • Starten Sie oxmysql und tosun_render vor tosun-ac. Das Manifest deklariert Server-Build 4890 oder neuer, OneSync, oxmysql und tosun_render als Abhängigkeiten.
  • Starten Sie screenshot-basic, wenn Sie das Standard-ts.screenshotModule beibehalten.
  • Setzen Sie jede Zugangsdatenzeile set tosun_ac_ vor ensure tosun-ac. Die Werte werden einmal beim Laden gelesen; eine spätere Änderung erfordert einen Neustart der Ressource.
  • Verwenden Sie set für Zugangsdaten. setr repliziert den Wert an jeden Client, und sets veröffentlicht ihn in den öffentlichen Serverinformationen.
  • Verwenden Sie setr nur für Convars, die Clients lesen: ts_screen_upload, tosun_ac_resource und tosun_ac_bridge_client_ms.
  • Sie brauchen keine Zeile für die DB-Bridge. Seit 9.6.14 ist die Bridge standardmäßig aktiv, und Zeilen set ... "0" werden ignoriert, außer tosun_db_bridge_manual ist "1" oder ts.panelMirror.enabled = true.
  • Ältere Installationsanleitungen (INSTALLER-READY.md, INSTALLER-LICENSE.md, INSTALL-MULTILANG.md, CONFIG-PERFORMANCE-GUIDE.md) setzen ensure vor die Zugangsdaten, tragen den Panel-Schlüssel in configs/anticheat_config.lua ein und lassen tosun_render weg. Folgen Sie stattdessen dieser Seite.

Convar-Referenz#

Jede Convar, die Tosun AntiCheat liest und die Sie setzen dürfen. Verwenden Sie set, außer die Spalte Hinweise nennt setr. Das AC schreibt und liest außerdem einige eigene interne Convars; diese sind geschützt, und Sie dürfen sie nicht setzen.

ConvarStandardFunktionHinweise
tosun_ac_license""Lizenzschlüssel des Servers. Wird einmal beim Laden in ts.licenseLock.licenseKey gelesen. Die Lizenzsperre und die Tosun-Connect-DB-Bridge lesen die Convar später erneut.Zugangsdaten: nur set, vor ensure. Format tac_live_ plus 40 Hex-Zeichen in Kleinbuchstaben. Die DB-Bridge behandelt den Wert als fehlend, wenn er nicht 16 bis 128 Zeichen ohne Leerraum hat.
tosun_ac_panel_key""Panel-API-Schlüssel. Wird bei ausgehenden Panel-Aufrufen mitgesendet und autorisiert eingehende Panel-Anfragen.Zugangsdaten: nur set. Nach einer Änderung neu starten. Ist der Wert leer, kopiert das AC panel_settings.ac_api_key aus der Spiel-DB. Bei jedem Start wird er im Klartext in die ac_settings-Zeile webPanelKey geschrieben.
tosun_ac_central_token""Auth-Token für das Versions-Gate und die zentrale v9-API. Wird vorrangig vor dem Panel-Schlüssel verwendet.Zugangsdaten: nur set.
tosun_ac_server_id"" (ts.licenseLock.serverId)Server-Kennung für die Lizenzsperre. Nur relevant, wenn ts.licenseLock.enabled = true und allowedServerIds nicht leer ist.Kein Geheimnis. Nach jeder Lizenzprüfung schreibt das AC sie als replizierte Convar neu, Clients können sie also sehen. Der Export licenseStatus gibt sie als serverId zurück.
tosun_ac_trusted_resources""Ressourcen (durch Kommas oder Leerzeichen getrennt), die abgesicherte Exports aufrufen dürfen. Wird mit ts.ExportCallerWhitelist zusammengeführt.Für Entwickler. Wird innerhalb von 10 s neu gelesen und übersteht AC-Updates. Prüfen Sie sie mit dem Konsolenbefehl tosunac_integration.
ts_public_panel_url""Öffentliche Panel-Basis für Uploads von Screenshots, Bann-Beweisen und Live-Videos (base/api/screen_upload.php). Hat Vorrang vor ts.webPanelURL.Nur nötig, wenn die öffentliche URL von ts.webPanelURL abweicht. Muss https sein.
ts_screen_uploadhttp://localhost/api/screen_upload.phpUpload-URL für die screenshot-basic-Aufnahme, die der Export screenCapture, die Befehle /capture und /ts_capture und die Capture-Aktion der Panel-Web-Bridge verwenden.Verwenden Sie setr: Sie wird auf dem Client gelesen. Der Standard zeigt auf localhost. Das AC hat keinen Handler für das Upload-Ergebnis, das Ergebnis wird also verworfen.
tosun_db_bridge_manual"0""1" hindert das AC daran, die beiden Bridge-Convars unten zu erzwingen, sodass server.cfg sie steuert.Setzen Sie sie, bevor die Ressource startet.
tosun_db_bridge_enabled"0" im Code, beim Laden auf "1" erzwungenSchaltet die Tosun-Connect-DB-Bridge auf Abruf ein.Ein Wert aus server.cfg zählt nur mit tosun_db_bridge_manual "1" oder ts.panelMirror.enabled = true. Mit aktivem panelMirror erzwingt das AC den Wert nicht, die Bridge bleibt also aus, außer server.cfg schaltet sie ein.
tosun_db_bridge_money_write"0" im Code, beim Laden auf "1" erzwungenErlaubt die Bridge-Operation player.money.set, die den Kontostand eines Spielers online setzt.Ist der Wert nicht "1", schlägt die Operation mit write_disabled fehl. Um "0" aus server.cfg zu setzen, benötigen Sie den manuellen Modus.
tosun_db_bridge_query_timeout_ms5000 (1000 bis 10000)Beobachtungs-Timeout für jede SQL-Abfrage der Bridge.Ein Timeout meldet query_timeout, bricht die Abfrage aber nicht ab.
tosun_panel_playtime"1""0" deaktiviert den Writer, der players.playtime füllt. Er wirkt nur bei qb, qbcore oder qbox.Wird einmal beim Laden gelesen. Das ALTER TABLE, das die Spalte playtime hinzufügt, läuft auch mit "0" 20 s nach dem Start. set genügt, auch wenn der Dateikopf setr nahelegt.
tosun_panel_playtime_interval_ms120000 (30000 bis 600000)Schleifenintervall des Playtime-Writers.set genügt.
tosun_ac_resource"tosun-ac"Name der AC-Ressource, den die optionalen Bridge-Dateien in Ihrer eigenen Ressource verwenden.Für Entwickler. Verwenden Sie setr, wenn Sie den AC-Ordner umbenennen: Die Client-Bridge sieht nur replizierte Convars.
tosun_ac_bridge_server_ms60000 (500 bis 300000)Standarddauer der Ausnahme für TosunAC.PlayerExempt in der Server-Bridge.Für Entwickler. set genügt.
tosun_ac_bridge_cooldown_ms750 (0 deaktiviert)Cooldown pro Spieler, der wiederholte TosunAC.PlayerExempt-Aufrufe in der Server-Bridge verwirft.Für Entwickler. set genügt.
tosun_ac_bridge_client_ms60000 (500 bis 300000)Standarddauer von TosunAC.Exempt() in der Client-Bridge.Für Entwickler. setr ist erforderlich.

Zugangsdaten: Rangfolge und Umgang#

Drei Zugangsdaten werden einmal beim Laden der Ressource aufgelöst: der Lizenzschlüssel, der Panel-API-Schlüssel und das zentrale Token. Für jedes nimmt das AC den ersten nicht leeren Wert in dieser Reihenfolge.

Die MIGRATION-Warnung fordert Sie auf, den Wert in der Shared-Datei zu leeren und alle Zugangsdaten zu wechseln, die jemals dort gespeichert waren, weil diese Datei an jeden Client gesendet wird.

Ein Wert mit mehr als 4096 Zeichen oder mit Steuerzeichen stoppt das Laden mit dem Fehler Invalid server credential setting.

Nur Panel-Schlüssel: Ist er nach diesen Schritten noch leer, kopiert das AC panel_settings.ac_api_key aus der Spiel-DB. Bei jedem Start schreibt das AC den aufgelösten Schlüssel im Klartext in die ac_settings-Zeile webPanelKey. Bearbeitet jemand diese Zeile im Panel, ersetzt der bearbeitete Wert Ihren bis zum nächsten Neustart.

Nur Lizenzschlüssel: Die Lizenzsperre akzeptiert die Formate tac_live_ plus 40 Hex-Zeichen in Kleinbuchstaben (49 Zeichen), TOSUN-AC-YYYY-... und TOSUN-.... Die Formatprüfung läuft nur, wenn ts.licenseLock.enabled = true ist, und prüft nur das Format.

  1. Die Server-Convar: tosun_ac_license, tosun_ac_panel_key oder tosun_ac_central_token.
  2. Der Wert in configs/anticheat_server.lua: licenseKey, panelKey oder centralToken.
  3. Der veraltete Wert in der Shared-Datei configs/anticheat_config.lua: ts.licenseLock.licenseKey, ts.webPanelKey oder ts.Central.token. Jeder Wert hier erzeugt eine MIGRATION-Warnung in der Konsole.

configs/anticheat_server.lua#

Verwenden Sie diese reine Server-Datei, wenn Sie Zugangsdaten lieber nicht in server.cfg ablegen. Sie wird vor den Server-Skripten des AC geladen und kehrt auf Clients sofort zurück. Lassen Sie einen Eintrag leer, um weiterhin die Convar oder die Ermittlung aus der Datenbank zu nutzen.

  • Eine nicht leere Convar hat immer Vorrang vor dem Wert in dieser Datei.
  • Lassen Sie die entsprechenden Einträge in configs/anticheat_config.lua leer: ts.webPanelKey, ts.Central.token und ts.licenseLock.licenseKey.
  • Halten Sie Backups dieser Datei privat.
  • Die Datei füllt nur ts.webPanelKey, ts.Central.token und ts.licenseLock.licenseKey. Andere Skripte lesen diese Werte, nicht die Datei.
-- configs/anticheat_server.lua (nur Server)
local credentials = {
    panelKey = '',     -- oder: set tosun_ac_panel_key "YOUR_PANEL_API_KEY"
    centralToken = '', -- oder: set tosun_ac_central_token "YOUR_FIVEM_SCOPED_TOKEN"
    licenseKey = '',   -- oder: set tosun_ac_license "YOUR_SERVER_LICENSE"
}

Panel-URL und Screenshot-Uploads#

ts.webPanelURL in configs/anticheat_config.lua ist die Basis-URL des Panels. Sie können sie leer lassen: Ist sie leer, lädt das AC panel_url oder site_url aus panel_settings in der Spiel-DB und speichert sie in ac_settings. Der HTTP-Einstellungs-Sync läuft nur, wenn sowohl die URL als auch der Panel-Schlüssel gesetzt sind.

Setzen Sie ts_public_panel_url nur, wenn Screenshots, Bann-Beweise und Live-Videos an eine andere öffentliche Adresse gehen müssen. Sie muss https sein. Upload-Tokens werden nur für https://host/api/screen_upload.php ausgestellt, wenn die Basis dieser Convar oder ts.webPanelURL entspricht.

ts_screen_upload ist ein separater Pfad, den der Export screenCapture und die Befehle /capture und /ts_capture verwenden. Er benötigt setr, und sein Standard zeigt auf localhost. Nichts im AC verarbeitet das Ergebnis dieses Uploads.

Die alten Namen ts.PanelUrl, ts.panelUrl und ts.webPanelUrl werden weiterhin als Fallback gelesen.

Convars der Tosun-Connect-DB-Bridge#

Seit 9.6.14 ist die DB-Bridge auf Abruf standardmäßig aktiv und benötigt keine Zeile in server.cfg. Beim Laden setzt editable/server/tosun_db_bridge_defaults.lua tosun_db_bridge_enabled und tosun_db_bridge_money_write auf "1", daher werden die "0"-Zeilen aus älteren Anleitungen ignoriert.

Sie können die Verbindung für einen Server auch im Panel abschalten: Servers, dann der Server, dann die Karte Tosun Connect.

Die Bridge fragt https://admin.tosundev.com/api/server_db_bridge.php ab, sendet Ihren Lizenzschlüssel als Bearer-Token und führt nur diese Operationen aus: players.list, player.detail, player.vehicles, bans.list, logs.list und player.money.set.

Mit ts.panelMirror.enabled = true erzwingt das AC die Bridge nicht, der alte Mirror funktioniert also weiter. Der Mirror selbst läuft nicht, solange tosun_db_bridge_enabled "1" ist.

Die Konsolenbefehle tosunac_db_status und tosunac_db_check zeigen den Zustand der Bridge und testen oxmysql.

  1. Um die Bridge über server.cfg zu steuern, fügen Sie set tosun_db_bridge_manual "1" vor ensure tosun-ac hinzu.
  2. Fügen Sie set tosun_db_bridge_enabled mit "1" oder "0" hinzu.
  3. Fügen Sie set tosun_db_bridge_money_write mit "1" oder "0" hinzu. Ohne "1" schlägt player.money.set mit write_disabled fehl und wird dem Panel nicht angeboten.

Convars für Skriptentwickler#

Diese Convars sind nur relevant, wenn eine andere Ressource das AC aufruft. tosun_ac_trusted_resources entscheidet, welche Ressourcen abgesicherte Exports aufrufen dürfen; die Bridge-Convars konfigurieren die optionalen Bridge-Dateien.

Zu den abgesicherten Exports gehören SetExempt, SetPlayerExempt, die Pause-Exports, BypassDetection, addAdmin, whitelistPlayer, approveResource, ban, offlineBan, die webBridge-Exports und quarantine.

Die Serverkonsole und tosun-ac selbst sind immer vertrauenswürdig. Ein nicht vertrauenswürdiger Aufruf wird abgelehnt; für jedes Paar aus Ressource und Export gibt das AC eine Konsolenwarnung und eine Panel-Logzeile aus, die diese Convar nennt. Mit ts.EnforceExportCallerWhitelist = false läuft der Aufruf und wird nur einmal protokolliert.

Vertrauenswürdige Aufrufer erhalten außerdem MarkTeleport ohne das Budget pro Spieler.

INTEGRATION.md und bridge/INTEGRATION.txt zeigen set für tosun_ac_resource und tosun_ac_bridge_client_ms. Verwenden Sie stattdessen setr: Die Client-Bridge liest beide auf dem Client.

Es gibt außerdem interne AC-Events und -Exports. Sie sind geschützt und dürfen nicht aus Ihren Ressourcen aufgerufen werden.

# Ressourcen, die abgesicherte Exports aufrufen dürfen (durch Komma oder Leerzeichen getrennt)
set tosun_ac_trusted_resources "my-housing,my-clothing"

# Bridge-Dateien in Ihrer eigenen Ressource
setr tosun_ac_resource "tosun-ac"
setr tosun_ac_bridge_client_ms "60000"
set tosun_ac_bridge_server_ms "60000"
set tosun_ac_bridge_cooldown_ms "750"

ACE-Berechtigungen#

Jede ACE, die Tosun AntiCheat prüft. Erteilen Sie ACEs einer Gruppe und fügen Sie Teammitglieder mit add_principal zur Gruppe hinzu. Eine ACE, die auch builtin.everyone hat, macht niemanden zum Teammitglied.

ACE oder PrincipalWas sie gewährtBeispielzeile
tosun.adminStaff-Status (Straffreiheit und Staff-Befehle) und das Admin-Menü im Spiel. Schaltet tosunac_setup und die manuellen Scans nicht frei.add_ace group.admin tosun.admin allow
ts.adminWie tosun.admin.add_ace group.admin ts.admin allow
command.tsStaff-Status und das Admin-Menü. /ts selbst ist uneingeschränkt registriert, daher ist diese ACE die Rollenmarkierung des AC, keine FiveM-Sperre.add_ace group.admin command.ts allow
command.ban, command.kickStaff-Status und das Admin-Menü, auch bei ts.txAdminAuth = false.add_ace group.admin command.ban allow
txadmin, tx.admin, txadmin.menu, txadmin.advanced, command.txadminNur Staff-Status. Kein Admin-Menü.Usually granted by txAdmin, or: add_ace group.admin txadmin.menu allow
command.resources, command.restartStaff-Status nur bei ts.txAdminAuth = true. Kein Admin-Menü.Usually granted by txAdmin
command.screenshot, command.unbanNur Straffreiheit, bei ts.txAdminAuth = true. Keine Staff-Befehle und kein Admin-Menü.Usually granted by txAdmin
group.admin, group.superadmin, group.moderator, group.godWerden als ACE-Objekte geprüft. Sie geben Staff-Status und das Menü nur, wenn der Name für den Spieler als erlaubte ACE aufgelöst wird. Erteilen Sie zusätzlich eine explizite ACE wie tosun.admin.add_principal identifier.license:YOUR_LICENSE_HEX group.admin
tosunac.adminNutzung im Spiel von tosunac_setup, tosunac_backdoorscan und tosunac_eventscan (jeder benötigt zusätzlich seine Befehls-ACE) sowie von /banscreentest. Kein Staff-Status und kein Menü.add_ace group.admin tosunac.admin allow
tosunac.banscreen.test/banscreentest im Spiel, das die Vorschau des Bannbildschirms nur beim Aufrufer zeigt.add_ace group.admin tosunac.banscreen.test allow
command.tosunac_setupEingeschränkter Befehl. Ein Spieler benötigt zusätzlich tosunac.admin.add_ace group.admin command.tosunac_setup allow
command.tosunac_backdoorscanEingeschränkter Befehl. Ein Spieler benötigt zusätzlich tosunac.admin.add_ace group.admin command.tosunac_backdoorscan allow
command.tosunac_eventscanEingeschränkter Befehl. Ein Spieler benötigt zusätzlich tosunac.admin.add_ace group.admin command.tosunac_eventscan allow
command.ts_setlangEingeschränkter Befehl. Ein Spieler benötigt zusätzlich Staff-Status.add_ace group.admin command.ts_setlang allow
command.ts_v9_helpEingeschränkter Befehl ohne weitere Prüfung. Seine Ausgabe geht an die Serverkonsole.add_ace group.admin command.ts_v9_help allow
command.tosunac_integration, command.tosunac_doctor, command.ac_cleanup, command.tosunac_db_status, command.tosunac_db_checkNichts im Spiel. Diese Befehle laufen nur in der Konsole und ignorieren Spieler, auch wenn diese die ACE haben.Run them from the server console
command (bare ACE)Nie Staff, wenn builtin.everyone sie hat. Sie ist jedoch eine der ACEs, die die IP-Prüfung beim Verbinden umgehen, und diese Prüfung hat keinen builtin.everyone-Filter.Do not use: add_ace builtin.everyone command allow
ts.AdminBypassAces (config list)Gewährt Staff-Status, nicht das Menü. Ausgelieferte Einträge: command.ts, die txAdmin-ACEs, command.kick, command.ban, die vier Gruppennamen, tosun.admin und ts.admin. Fügen Sie niemals die reine ACE command hinzu.ts.AdminBypassAces = { "command.ts", ..., "your.staff.ace" }

Eingeschränkte Befehle und reine Konsolenbefehle#

Zehn AC-Befehle sind als eingeschränkt registriert. Im Spiel verlangt FiveM dann zusätzlich zur eigenen Prüfung des AC die passende Befehls-ACE. Fünf der zehn ignorieren Spieler vollständig.

banscreentest ist nicht eingeschränkt. Die Konsolenform banscreentest playerId benötigt keine ACE; /banscreentest im Spiel benötigt tosunac.banscreen.test oder tosunac.admin. Ablehnungen von tosunac_setup, den beiden Scans und banscreentest erfolgen stumm.

tosunac_setup gibt nichts frei, wenn der Backdoor- oder Signaturscan nicht abgeschlossen wird, auch wenn ts.BackdoorGuard deaktiviert ist. Ein zweiter Lauf, während einer läuft, wird abgelehnt.

BefehlWer ihn ausführen kannFunktion
tosunac_setupKonsole oder ein Spieler mit command.tosunac_setup und tosunac.adminAutomatische Einrichtung: erkennt das Framework, führt Backdoor- und Signaturscans aus, übernimmt saubere Ressourcen in die Baseline und katalogisiert Events, ohne ihnen zu vertrauen. Führen Sie den Befehl nur auf einem Server aus, der nachweislich sauber ist.
tosunac_backdoorscanKonsole oder command.tosunac_backdoorscan und tosunac.adminManueller Backdoor-Scan. Nicht registriert bei ts.BackdoorGuard.enabled = false.
tosunac_eventscanKonsole oder command.tosunac_eventscan und tosunac.adminManueller Event- und Trigger-Scan, an das Panel übertragen. Nicht registriert bei ts.EventScanner.enabled = false.
ts_setlang playerId langKonsole oder command.ts_setlang und Staff-StatusSetzt die AC-Sprache eines Spielers. Prüft nicht, ob die Spieler-ID online ist.
ts_v9_helpKonsole oder command.ts_v9_helpGibt die zusätzliche Befehlsliste von v9 in der Serverkonsole aus.
tosunac_integrationNur KonsoleGibt den Durchsetzungsmodus der Exports, die vertrauenswürdigen Ressourcen mit ihrer Quelle und die letzten 20 Ablehnungen aus.
tosunac_doctorNur KonsoleRisikobericht der angewendeten Einstellungen. Läuft außerdem 90 s nach dem Start. Die Ausgabe ist auf Türkisch.
ac_cleanupNur KonsoleFührt die Aufbewahrungsbereinigung der Datenbank sofort aus. Die ausgegebene Anzahl ist meist zu niedrig. Nicht registriert bei ts.v12.enableAutoCleanup = false.
tosunac_db_statusNur KonsoleGibt den Zustand der DB-Bridge, den Lizenzzustand, den Zustand von oxmysql und das Framework aus.
tosunac_db_checkNur KonsoleFührt SELECT 1 über oxmysql aus und gibt Erfolg oder Fehlschlag aus.

Wie Staff erkannt wird#

Das AC hat zwei getrennte Zugriffsstufen. Staff-Status gibt Straffreiheit und die Staff-Befehle (/ts-Unterbefehle und die ts_-Befehle). Menüzugriff öffnet das Admin-Menü im Spiel. Einige Quellen gewähren nur eines davon.

Straffreiheit für Staff gilt nur bei ts.AdminBypassDetections = true (ausgeliefert) und ts.Debug = false (ausgeliefert).

Menüzugriff erfordert außerdem, dass ts.AdminMenu.enable und ts.AdminMenu.enabled true bleiben. Ist einer davon false, werden das Menü, die Taste F7 und die Client-Befehle der Admin-Werkzeuge nicht registriert.

Teammitglieder mit Staff-Status, aber ohne Menüzugriff, zum Beispiel reine txAdmin-Teammitglieder, können trotzdem F7 drücken. Die Anfrage wird abgelehnt und protokolliert.

QuelleWo Sie sie setzenStaff-StatusAdmin-MenüHinweise
ACE tosun.admin, ts.admin, command.tsserver.cfg add_aceJaJaEmpfohlener Weg, Staff zu vergeben.
ACE command.ban, command.kickserver.cfg oder txAdminJaJaBleibt Staff, auch bei ts.txAdminAuth = false.
Principals group.admin, group.superadmin, group.moderator, group.godserver.cfg add_principalNur, wenn der Name als erlaubte ACE aufgelöst wirdGleiche BedingungWerden als ACE-Objekte geprüft. Fügen Sie zusätzlich eine explizite ACE hinzu.
ACE txadmin, tx.admin, txadmin.menu, txadmin.advanced, command.txadmintxAdmin oder add_aceJaNeintxAdmin-Admins benötigen tosun.admin oder eine Panel-Freigabe für das Menü.
ACE command.resources, command.restarttxAdminNur bei ts.txAdminAuth = trueNeinWird üblicherweise von txAdmin vergeben.
ACE command.screenshot, command.unbantxAdminNur Ausnahme, bei ts.txAdminAuth = trueNeinKeine Staff-Befehle.
ts.AdminBypassAcesconfigs/anticheat_config.luaJaNeinVon Ihnen hinzugefügte Einträge öffnen das Menü nicht.
Adminsadmins/anticheat_admins.luaJaJaReine Server-Datei.
ts.AdminMenu.allowedIdsconfigs/anticheat_config.luaJaJa"all" und "staff" sind keine Kennungen und gewähren nichts.
ts.AdminBypassIdentifiersconfigs/anticheat_config.luaJaNeinDer Konfigurationskommentar nennt auch ip:x.x.x.x.
Panel grants (ac_v7_admin_grants)WebpanelJaJaEin Treffer wird 5 s zwischengespeichert, ein Fehlschlag 30 s.
addAdmin exportEine vertrauenswürdige RessourceJaJaBis removeAdmin aufgerufen wird.
Player whitelist (ac_whitelist) and runtime whitelistWebpanel oder Whitelist-ExportsNein (nur Straffreiheit)NeinWird bei ts.Debug = true ignoriert.
ACE tosunac.adminserver.cfg add_aceNeinNeinSchaltet Setup, die manuellen Scans und die Vorschau des Bannbildschirms frei.

Kennungslisten: Admins, allowedIds und AdminBypassIdentifiers#

Verwenden Sie vollständige Kennungen wie Werte mit license:, steam:, discord: oder fivem:. Bevorzugen Sie für Staff admins/anticheat_admins.lua oder Panel-Freigaben: Diese Datei liest nur der Server, während configs/anticheat_config.lua an jeden Client gesendet wird.

  • Admins: Ein Eintrag passt auf die vollständige Kennung (ohne Beachtung der Groß-/Kleinschreibung) oder auf den Teil nach dem Präfix. Er gewährt Staff-Status und das Menü.
  • ts.AdminMenu.allowedIds: Staff-Status und das Menü. Die Werte "all" und "staff" gewähren nichts.
  • ts.AdminBypassIdentifiers: nur Staff-Status und Ausnahme, kein Menü.
-- admins/anticheat_admins.lua (nur Server)
Admins = {
    "license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "steam:11000010xxxxxxxx",
    "discord:123456789012345678",
}

-- configs/anticheat_config.lua (shared, wird an Clients gesendet)
ts.AdminMenu = {
    -- andere Menüschlüssel bleiben wie ausgeliefert
    allowedIds = {
        "license:YOUR_EXACT_PLAYER_IDENTIFIER",
    },
}
ts.AdminBypassIdentifiers = {}  -- Staff-Status und Ausnahme, kein Menü

Panel-Freigaben und der Export addAdmin#

Panel-Freigaben sind Zeilen in ac_v7_admin_grants, die Sie im Webpanel anlegen. Eine aktive Freigabe passt auf die license oder license2 des Spielers, mit oder ohne Präfix, und gibt Staff-Status und Menüzugriff.

Eine positive Antwort wird 5 s zwischengespeichert, eine negative 30 s. Eine neue Freigabe kann daher bis zu 30 s brauchen, bis sie für einen bereits geprüften Spieler gilt.

Eine vertrauenswürdige Ressource kann den Export addAdmin aufrufen, um einem Spieler Staff-Status und Menüzugriff zu geben, bis removeAdmin aufgerufen wird. Solange ts.EnforceExportCallerWhitelist true ist, muss der Aufrufer in tosun_ac_trusted_resources oder ts.ExportCallerWhitelist aufgeführt sein.

Die Spieler-Whitelist ist kein Staff#

Die Spieler-Whitelist im Panel (ac_whitelist) und zur Laufzeit über die Whitelist-Exports hinzugefügte Kennungen verhindern nur Strafen. Sie geben keine Staff-Befehle und kein Admin-Menü.

  • Eine Zeile zählt, solange expires_at leer ist oder in der Zukunft liegt.
  • Akzeptierte Werte: eine license-, discord-, steam- oder fivem-Kennung oder eine citizenid. Präfixe werden entfernt.
  • Laufzeiteinträge liegen im Speicher und gehen beim Neustart verloren.
  • Beide Listen werden bei ts.Debug = true ignoriert.

Einstellungen, die den Umgang mit Staff ändern#

Diese Schlüssel in configs/anticheat_config.lua ändern, wie Teammitglieder und unberechtigte Menünutzer behandelt werden.

EinstellungAusgelieferter WertWirkung
ts.AdminBypassDetectionstruefalse macht Teammitglieder wie jeden anderen Spieler bestrafbar.
ts.txAdminAuthtruefalse deaktiviert den Weg über txAdmin-Befehls-ACEs (command.resources, command.restart, command.screenshot, command.unban). command.ban und command.kick bleiben Staff.
ts.Debugfalsetrue schaltet die Umgehungen für Staff, Whitelist, Panel-Whitelist und Ausnahmen ab, damit Teammitglieder Erkennungen an sich selbst testen können. Lassen Sie den Wert im Produktivbetrieb auf false.
ts.NuiNeverBanUnauthorizedtruefalse bestraft Spieler, die ohne Berechtigung Events des Admin-Menüs auslösen, statt sie nur zu protokollieren. Die Strafe ist ts.punishType.
ts.AdminMenu.enable, ts.AdminMenu.enabledtrue, truefalse bei einem von beiden deaktiviert das Admin-Menü. enable = false stoppt außerdem das Modul für Telefon-Benachrichtigungen.
ts.AdminMenu.requireActionSignaturetruefalse schaltet die Signierung sensibler Aktionen im Admin-Menü ab.
ts.v12.bypassStaffIpChecktrueTeammitglieder überspringen beim Verbinden die Prüfungen auf VPN, Proxy, Hosting und Land.

builtin.everyone und die IP-Prüfung beim Verbinden#

Jede ACE-Prüfung für Staff und Menü ignoriert eine ACE, die auch builtin.everyone hat. add_ace builtin.everyone command allow macht Spieler also nicht zu Teammitgliedern. Die IP-Prüfung beim Verbinden funktioniert anders.

Solange ts.v12.bypassStaffIpCheck nicht false ist, überspringt ein verbindender Spieler die Länder-Sperrliste und die Ablehnungen für VPN, Proxy und Hosting in jedem dieser Fälle: Der Spieler ist Staff; der Spieler hat die ACE command, txadmin, tx.admin, txadmin.menu, command.kick, command.ban oder einen der Namen group.admin, group.superadmin, group.moderator oder group.god; oder eine aktive Panel-Freigabe passt exakt auf die License des Spielers.

Diese Prüfung verwendet einfache ACE-Tests ohne builtin.everyone-Filter. Auf einem Server mit add_ace builtin.everyone command allow überspringt daher jeder Spieler die VPN- und Länderprüfungen. Die Join-Flood-Prüfung läuft trotzdem vor der Umgehung.

Datei für Discord-Webhooks#

configs/anticheat_webhooks.lua liest nur der Server. Sie enthält eine Discord-Webhook-URL pro Log-Kanal und den Embed-Stil. Jede URL wird mit dem Platzhalter WEBHOOK_URL_BURAYA ausgeliefert.

  • Der HTTP-Sync des Panels überschreibt jeden Webhook, für den er eine nicht leere URL sendet.
  • Andere Ressourcen erhalten die Webhook-URLs über getConfig('webhooks') nur, wenn sie vertrauenswürdige Aufrufer sind.
  • Screenshot-Logs beschriften das Detections-Embed mit ts.punishType statt mit der tatsächlich ermittelten Strafe und senden zusätzlich an Webhooks.Bans, sobald ts.punishType BAN ist.
  • Webhooks.WebhookAvatar setzt das Avatarbild des Embeds.
Webhooks.Detections    = "https://discord.com/api/webhooks/..."
Webhooks.Bans          = "https://discord.com/api/webhooks/..."
Webhooks.AdminMenuLogs = "https://discord.com/api/webhooks/..."
Webhooks.Connections   = "https://discord.com/api/webhooks/..."
Webhooks.OCR           = "https://discord.com/api/webhooks/..."
Webhooks.Commands      = "https://discord.com/api/webhooks/..."
Webhooks.MoneyLogs     = "https://discord.com/api/webhooks/..."
Webhooks.ResourceLogs  = "https://discord.com/api/webhooks/..."

Webhooks.WebhookUsername = "Tosun AntiCheat"
Webhooks.WebhookColor    = 15285208
Webhooks.WebhookInlines  = true

Wie das Panel die Konfigurationsdatei überschreibt#

Die meisten Werte in configs/anticheat_config.lua sind Standardwerte. Das Webpanel hält eigene Werte in ac_settings und anderen ac_-Tabellen, und diese Werte haben Vorrang. Bearbeiten Sie die Datei nur für Werte, die das Panel nicht verwaltet.

  • Etwa 3 s nach dem Start und danach alle ts.ServerPerf.configSyncIntervalSec Sekunden (ausgeliefert 120, Minimum 20, Fallback 60) überschreiben Zeilen aus ac_settings die ts-Werte.
  • Schlüssel mit Punkten wie AdminMenu.enable schreiben verschachtelte Felder. Alte flache Schlüssel wie framework oder moneyCheck werden zuerst zugeordnet.
  • Ein punishment_-Schlüssel schreibt ts.DetectionPunishments für diese Erkennung. BAN und KICK bleiben erhalten; jeder andere Wert wird zu LOG.
  • Aktionsfelder werden auf ban, kick, log, cancel, reject oder stop normalisiert. Jeder andere Wert wird zu log.
  • Schlüssel, die mit globalBan. beginnen, werden ignoriert.
  • Panel-Listen ersetzen Konfigurationslisten: Waffen, Fahrzeug-Blacklist, Kennzeichen, Trigger-Liste, Event-Limits, Ressourcen auf der Whitelist, OCR-Wörter, die Blacklist-Listen, die Explosionsliste und die Entity-Whitelists. Ressourcen auf der Whitelist und OCR-Wörter aus der Datenbank werden stattdessen zusammengeführt.
  • Ausnahme: Die Handler für ts.EventLimiter und ts.ProtectedEvents werden einmal beim Laden aus der Datei registriert. Spätere Änderungen im Panel ändern die serverseitige Durchsetzung dafür nicht.
  • Nach einer Änderung werden nur clientsichere Schlüssel erneut an Clients gesendet.
  • Führen Sie tosunac_doctor in der Konsole aus, um riskante Werte nach dem Panel-Sync zu prüfen.

Grundeinstellungen#

Schlüssel der obersten Ebene am Anfang von configs/anticheat_config.lua. Die meisten lassen sich auch im Panel setzen.

EinstellungAusgelieferter WertFunktion
ts.Locale"tr"Standardsprache des AC (Fallback: Spielersprache, ts.Locale, en). Dateien: ar, de, en, es, fr, pt, ru, tr, zh. Ausgeliefert ist Türkisch: Englischsprachige Server sollten "en" setzen. default_locale im Panel kann den Wert ersetzen.
ts.punishType'BAN'Fallback-Strafe für Erkennungen ohne Zuordnung. Sie ist auch die Strafe für manuelle Banns: der Export ban, /ts ban, Banns im Admin-Menü und Banns im Panel. LOG oder KICK macht daraus Logs oder Kicks.
ts.Debugfalsetrue deaktiviert die Umgehungen für Staff und Whitelist. Lassen Sie den Wert im Produktivbetrieb auf false.
ts.txAdminAuth, ts.AdminBypassDetections, ts.NuiNeverBanUnauthorizedtrue, true, trueUmgang mit Staff. Siehe Einstellungen, die den Umgang mit Staff ändern.
ts.screenshotModule"screenshot-basic"Für Screenshots verwendete Ressource.
ts.banIDFormat11 = ABCD-1234, 2 = #1234.
ts.autoSQLfalsetrue legt die Tabellen beim Start an. Laut Konfigurationskommentar sollten Sie den Wert bei der Erstinstallation auf true und danach wieder auf false setzen.
ts.Prefix, ts.showReason'Tosun AntiCheat', trueGestalten die Kick- und Bann-Nachrichten.
ts.appealDiscord, ts.appealTicketUrlvendor linksWird an die Bann-Nachricht angehängt. appealDiscord ist ab Werk der Discord des Herstellers (https://discord.gg/9tCSJch) und dient auch als Fallback. Setzen Sie Ihren eigenen Link für Einsprüche.
ts.pingOnDetectfalseFügt @everyone zu Erkennungs-Embeds hinzu. Der Text steht im Embed-Objekt, nicht im content der Nachricht auf oberster Ebene.
ts.chatMessagesfalseKündigt Strafen im Chat an.
ts.spoilerIPtrueVerbirgt IP-Adressen in Discord-Logs hinter Spoilern.
ts.needDiscordfalsetrue weist Spieler ohne Discord-Kennung ab.
ts.maxUsernameLength-1Maximale Länge des Spielernamens. -1 deaktiviert die Prüfung.
ts.webPanelURL, ts.webPanelKey"", ""Lassen Sie beide leer. Siehe Panel-URL und Screenshot-Uploads sowie die Abschnitte zu Zugangsdaten.
ts.version"9.6.15"Nur informativ. Zur Laufzeit wird die Manifest-Version verwendet.

Konfigurationsabschnitte: Erkennungen und Strafen#

Abschnitte, die festlegen, was erkannt und wie hart es bestraft wird.

AbschnittZweckHäufig geänderte Einstellungen
ts.DetectionPunishmentsStrafe pro Erkennungsschlüssel: BAN, KICK oder LOG. Reihenfolge: explizite Strafe, direkter Schlüssel, Alias, abgeleiteter Schlüssel, dann ts.punishType.Einzelne Einträge. Das Panel kann jeden überschreiben. Ausgeliefert: BAN für eindeutige Signale, KICK für mittleres Risiko, LOG für kontextabhängige wie freecam, teleport, fastrun, invisibility und ocr.
ts.BanDurationsBannlänge in Stunden pro Erkennungsschlüssel. 0 oder ein fehlender Schlüssel bedeutet permanent.["default"] (ausgeliefert 0 = permanent; auch manuelle Banns verwenden ihn). Physik-Erkennungen sind befristet, zum Beispiel superjump, fastrun und teleport 72 h, noclip und godmode 168 h.
ts.confirmWindowBestätigungsstufe für Physik-Erkennungen auf dem Client: Geschwindigkeit, Teleport, Noclip, Superjump, Gesundheit und Rüstung. Messwerte bei hohem Ping oder Frame-Rucklern werden ignoriert.Die Standardwerte werden empfohlen: confirmFrames 3, confirmMs 3000, maxPingMs 220. hardEscalateHits 8 innerhalb von 90 s erzwingt eine Strafe auch bei Lag.
ts.v6EnforcementBegrenzt Strafen aus signierten Client-Heuristiken und Spam-Erkennungen.maxAction ("KICK"). confirmHits 2 innerhalb von confirmWindowSec 600 (Minimum 30).
Client detection toggles (ts.anti keys, thresholds, ts.confirmHits)Einfache Ein/Aus-Schalter und Grenzwerte für clientseitige Erkennungen.Einzelne Prüfungen abschalten. Ab Werk aus: antiRadar, fakeTriggerServerTraps, antiInfiniteStamina, antiPickups, antiClipboardPaste, antiGodmodeV2.
ts.OCR settingsBildschirm-OCR für Wörter aus Cheat-Menüs.ts.OCR, ts.OCRCheckInterval (20000), ts.OCRWords. Alle Aktionen stehen standardmäßig auf log, weil Chattext auf dem Bildschirm bei jedem Betrachter einen Treffer erzeugen würde. Wörter aus dem Panel werden zusammengeführt.
ts.quarantineIsolation per Routing-Bucket, die der Export quarantine statt eines Banns verwendet.defaultSeconds 300, maxSeconds 1800, autoQuarantine (aus).
ts.autoEvidenceKurzer automatischer Videobeweis nach schweren Erkennungen, solange der Spieler online ist. Benötigt tosun_render.durationSec 25, cooldownSec 120, triggers.
ts.forensicsGraph gegen Bann-Umgehung, der gemeinsame HWID- und License-Identitäten mit gebannten Clustern verknüpft.Beginnen Sie mit evasionAction "log". linkByIp ist aus.
ts.v16Serverseitige Bewegungsprüfung.action ("ban"). teleportAction ("log"): Stellen Sie auf kick um, sobald jedes Skript, das Spieler teleportiert, MarkTeleport aufruft.
ts.aimGuardStatistisches Anti-Aimbot auf Basis von Waffenschadens-Events. Teammitglieder sind ausgenommen, solange AdminBypassDetections aktiv ist.magicBulletTargets 4 (kick), fireRatePerSec 22 (kick), headshotRatio 0.90 (log).
ts.combatGuardServerseitige Obergrenzen für Gesundheit und Rüstung sowie eine Prüfung auf übermäßigen Waffenschaden.healthCap 250, armorCap 105, weaponDamageCap 600. Beide Aktionen kicken.

Konfigurationsabschnitte: serverseitige Guards#

Guards, die auf dem Server laufen. Mehrere davon brechen das Event zuerst ab und bestrafen erst nach wiederholten Strikes.

AbschnittZweckHäufig geänderte Einstellungen
ts.netEventsServerautoritative Prüfungen von Spiel-Events.Pro Unterabschnitt: action, strikes, windowMs, cancel. Ausgeliefert: weapons ban 2 in 60 s; respawn kick 6 in 120 s; vehicleComponent log; explosionDistance kick 250 m, 3 Strikes; damageDistance ban 600 m, 4.
ts.entityFloodSpawn-Ratenlimit pro Spieler. Spawns oberhalb des Limits werden abgebrochen.maxPerSec 30, banAfterFloods 3, action ("ban").
ts.crashGuardGrenzen für Größe, Tiefe und Gültigkeit von State-Bag-Werten und Event-Payloads.action ("kick"), strikes 3 innerhalb von 60 s.
ts.serverAuthorityLiest von OneSync replizierte Zustände, um Superjump, Schadens- und Verteidigungsmultiplikatoren, Waffen auf der Blacklist, Godmode, Unsichtbarkeit, Noclip und Kamerafokus zu erkennen.Pro Prüfung: enabled, action, confirm. Prüfungen mit hoher Sicherheit kicken; kontextabhängige protokollieren.
ts.shieldAiSchutzschild für Entity-Spawns. Fahrzeug- und Ped-Spawns, die keiner Ressource zugeordnet werden können, werden abgebrochen.action ("cancel"), strikes 3, maxObjectPerSec 25, maxVehiclePerSec 4, maxPedPerSec 8, scriptWhitelist. tosunac_doctor markiert strictScriptWhitelist = true.
ts.shieldExplosionBricht unsichtbare oder lautlose Explosionen ab und bestraft erst bei Wiederholungen.action ("kick"), strikes 5 innerhalb von 60 s.
ts.premiumGuardSchutz gegen Spam von Partikeln, Projektilen, Request-Control, Sounds und Ragdolls sowie gegen Missbrauch von Fahrzeugbomben.Jede Aktion steht standardmäßig auf log. Grenzen pro Typ und Sekunde.
ts.vehicleGuardErkennt geworfene oder katapultierte Fahrzeuge.action ("kick"), strikeLimit 3, stuntMode, excludeAirVehicles.
ts.weaponInventoryMarkiert eine gehaltene Waffe, die nicht im ox_inventory-, QB- oder ESX-Inventar des Spielers ist.action ("log"), removeWeapon (aus), ignore, extraWeapons. Skripte, die Waffen außerhalb des Inventars vergeben, sollten den Export AllowWeapon aus einer vertrauenswürdigen Ressource aufrufen.
ts.entityGuardErkennt massenhafte Objekt-Spawns und löscht Objekte, die von gekickten oder gebannten Spielern gespawnt wurden.massThreshold 50 innerhalb von 60 s, cleanupOnBan.
ts.rateGuardGrenzen pro Spieler und Sekunde für Explosions-, PTFX-, Feuer- und Projektil-Events.action ("kick"), explosionsPerSec 12, ptfxPerSec 25, firePerSec 15, projectilesPerSec 30.
ts.entityWhitelist (and its vehicle, ped, object, projectile and particle lists)Optionaler Allow-List-Modus pro Entity-Typ.Jeder Modus ist ab Werk aus, es gelten also nur die Blacklists und das Spawn-Schutzschild. Die Entity-Whitelist-Tabellen des Panels ersetzen die Listen.
ts.SpamGuardGrenzen pro Spieler für Server-Events und Chatbefehle. Aus mit ts.SpamGuard = false oder ts.antiServerEventSpam / ts.antiCommandSpam = false.serverEventPerSec 25, commandPerSec 8, autoKickAfter 1. Der Server-Event-Teil wartet auf ein Event, das die Ressource nie auslöst; prüfen Sie Ihren Build, sonst gilt nur das Befehlslimit.
ts.EventLimiterAufruflimit pro Event in einem festen 5-s-Fenster. Am Limit (der Zähler erreicht den Wert) wird Event Spam ausgelöst (server_event_spam, KICK).Fügen Sie Limits in der Datei hinzu oder erhöhen Sie sie. Handler werden einmal beim Laden registriert, daher ändern Event-Limits aus dem Panel die Durchsetzung nicht.
ts.antiDump, ts.nativeIntegrity, ts.autoExemptHoneypot-Anti-Dump; Client-Stolperdraht gegen überschriebene Erkennungs-Natives; automatische Ausnahmen bei Aussehen-, Multichar- und Tod-Events.antiDump.action ("ban"), nativeIntegrity.checkMs 12000.
ts.shieldJS-Native-Hook-Schicht, versteckte NUI-Prüfungen sowie Screenshot- und Gameplay-Video-Beweise vor einem Bann (Video benötigt tosun_render).banScreenshot, banGameplayVideo.
ts.nativeGuardIntegration mit dem externen Windows-Begleitprogramm tosun-guard.exe.action ("log"), requireGuard (false).
ts.guardWatchdog für die separate Client-Ressource tosun-guard. Bestraft niemanden, wenn tosun-guard nicht installiert ist.action ("kick").
ts.launcherGateVerlangt beim Verbinden einen aktuellen sauberen Launcher-Scan von der IP des Spielers, vom Panel bestätigt.enabled (false), action ("reject"), failOpen (false), downloadUrl, message (standardmäßig Türkisch).

Konfigurationsabschnitte: Verbindung, Admin und Panel#

Abschnitte für beitretende Spieler, das Admin-Menü, die Panel-Verbindung und serverweites Verhalten.

AbschnittZweckHäufig geänderte Einstellungen
ts.FrameworkFramework-Auswahl und Erkennung von Geldsprüngen.framework: esx, qb, qbox, standalone oder "auto". Ausgeliefert als "qb", was nicht automatisch erkannt wird, daher müssen ESX- und Qbox-Server den Wert ändern. moneyCheckThreshold 5000000, moneySoftThreshold 75000.
ts.AutoSetupPassive Framework-Erkennung, wenn framework "auto" oder "" ist: qbx_core, dann qb-core, es_extended, vrp, ox_core.autoDetectFramework (true).
ts.v12Selbstschutz, Prüfungen auf VPN, Proxy und Hosting beim Verbinden (ipapi.co) und Aufbewahrungsbereinigung der Datenbank.blockVpn, blockProxy, blockHosting (aus), bypassStaffIpCheck, die keep-Schlüssel zur Aufbewahrung (Admin-Logs 60 Tage, Erkennungen 90 Tage).
ts.HeartBeatClient-Watchdog: der erlaubte Abstand zwischen Client-Meldungen und eine Frist für die erste gültige Meldung.maxTime 90 s (Minimum 15). firstHeartbeatDeadline 180 s (Minimum 60): Spieler ohne gültige erste Meldung bis dahin werden getrennt.
ts.NetworkJoinTaktung beim Beitritt, die einen Überlauf zuverlässiger Events verhindert, und die Schonfrist, bevor Erkennungen scharf werden.minReadyDelayMs (ausgeliefert 15000; ältere Anleitungen nennen 45000), postFrameworkSettleMs 5000.
ts.AdminMenuAdmin-Menü im Spiel, geöffnet mit /ts menu, /tsmenu oder F7.enable, enabled, allowedIds, openKeyControl (168 = F7), espMaxDist, noclipInvisible, requireActionSignature. allowEsp, allowFreecam und allowDelete werden nur im Client-Code durchgesetzt.
ts.PhoneNotifyAC-Benachrichtigungen an Telefone von Teammitgliedern: qb-phone, qs-smartphone, lb-phone, yseries, gks_phone, npwd, roadphone.Nur heartbeat wird gelesen (eine Statusbenachrichtigung alle 15 Minuten). Benachrichtigungen zu Banns und Erkennungen werden immer gesendet, solange ts.AdminMenu.enable aktiv ist.
ts.LiveWatchLive-Bildschirmbeobachtung aus dem Admin-Menü und dem Panel.interval 1500, quality 0.7, maxSeconds 600, timeout 12000.
ts.ServerPerfAbwägungen zwischen Serverlast und Aktualisierungsverzögerung.configSyncIntervalSec 120 (Minimum 20), panelPlayerSyncIntervalMs 12000, liveWatchDbPollMs 4500.
ts.CentralZentrale Panel-API v9: Handshake, Polling und Sprach-Sync.pollIntervalSec 5 (begrenzt auf 5 bis 60). Lassen Sie token hier leer und verwenden Sie tosun_ac_central_token.
ts.cloudBridgeSendet Bedrohungswerte und Konsolenausgabe an das Panel und prüft beim Verbinden eine zentrale Threat-Intel-Liste.consoleForward ist ab Werk aktiv: Jede Zeile der Serverkonsole geht gebündelt an das Panel. threatIntelAction ("log"), threatIntelMinScore 70.
ts.panelMirrorAlte vollständige Datenbankübertragung an das Panel. Nur auf Wunsch aktiv.enabled (false). Solange aktiv, wird die DB-Bridge nicht automatisch eingeschaltet.
ts.connectingCardAdaptive Card, die beim Verbinden der Spieler angezeigt wird.title ("TOSUN RP"), discord (fällt auf ts.appealDiscord zurück), website, rules, image, tips.
ts.banScreen (panel only)Vollbild-Bannhinweis vor dem Trennen. Steht nicht in der Datei; stellen Sie ihn im Panel ein.enabled (aus), seconds 3 bis 15 (8), mediaType, imageUrl (nur https), youtubeId, title (80 Zeichen), message (300 Zeichen), showReason. Vorschau mit banscreentest.
ts.PanelDangerousActionIPsIP-Allow-List für die Panel-Aktionen kick_all, stop_resource und broadcast.Leer bedeutet nur Audit-Protokollierung. Fügen Sie die IP des Panel-Servers hinzu, um andere Quellen zu blockieren.
ts.licenseLockVerteilungsschutz: Prüfung von Lizenzformat und Server-ID.enabled (false), action (log, reject oder stop), allowedServerIds, failClosed. Lassen Sie licenseKey hier leer.
ts.NpcBlockerEntfernt Umgebungs-NPCs und Verkehr; Missions-, Skript- und Whitelist-Entities bleiben.enabled (false), blockPeds, blockVehicles, whitelistModels.
ts.hardening, ts.cfgAuditFiveM-Convar-Guard und nur lesende Prüfung der server.cfg.Siehe Hardening-Schalter und Ausgabe.

Konfigurationsabschnitte: Ressourcen, Events und Integration#

Abschnitte für Ressourcen-Vertrauen, Scanner und die Entwickler-Integration. Mit „Für Entwickler“ markierte Zeilen sind nur relevant, wenn Ihre eigenen Skripte das AC aufrufen.

AbschnittZweckHäufig geänderte Einstellungen
ts.whitelistedResourcesKernressourcen, die das AC immer als sicher behandelt: Frameworks, oxmysql, chat, monitor, ox_-Ressourcen.Fügen Sie Ihre Kernressourcen hinzu. Der HTTP-Sync des Panels ersetzt die Liste; der DB-Sync ergänzt sie.
ts.ResourceGuardRessourcen-Baseline, Prüfungen auf Hash-Abweichungen und der Scanner für Cheat-Signaturen.signatureScan, signatureScanInterval 600000, autoStopCheatResources (true), autoBlockInfected (false), deepScan (false).
ts.BackdoorGuardDurchsucht Ressourcendateien nach Mustern für Backdoors, RCE und Datenabfluss.autoQuarantine (false; true stoppt Ressourcen mit kritischem Fund), ignoreResources, scanIntervalMs 1800000.
ts.EventScannerKatalogisiert die Net-Events und Trigger aller Ressourcen für das Panel.autoProtect (false; true markiert sie als geschützt), ignoreResources.
ts.ProtectedEvents, ts.SafeEventRateWindow, ts.SafeEventRateLimit, ts.SafeEventMaxArgsFür Entwickler. Events, die mit TriggerSafeServerEvent ausgelöst werden müssen. Gültige Aufrufe werden an den Eventnamen plus :safe weitergeleitet. Fehlerhafte Aufrufe werden abgelehnt und protokolliert, nie bestraft.Fügen Sie nur eigene Events hinzu, die die SafeEvents-Client-API verwenden. Limit 30 Aufrufe pro 10 s; SafeEventMaxArgs 64. Der :safe-Handler muss trotzdem Berechtigungen prüfen.
ts.EnforceExportCallerWhitelist, ts.ExportCallerWhitelistFür Entwickler. Vertrauenswürdige Ressourcen für abgesicherte Exports.Ausgelieferte Liste: qbx_core, qb-core, es_extended, ox_inventory, ox_lib. false = Audit-Modus: Aufrufe laufen und werden einmal protokolliert. MarkTeleport benötigt kein Vertrauen.
ts.IntegrationFür Entwickler. Grenzen für MarkTeleport.markTeleportMaxMs 15000 pro Aufruf (1000 bis 60000, für jeden Aufrufer); markTeleportBudgetMs 180000 pro Spieler pro 10 Minuten (nur für nicht vertrauenswürdige Aufrufer).
ts.DetectionExempt (alias ts.MenuDetectionExempt)Für Entwickler. Kurze automatische Ausnahmen, wenn bekannte Events für Kleidung, Housing, Garage oder Revive ausgelöst werden.clientEvents, localEvents, serverEvents (event, durationMs, resource, always). Server-Events geben nur Entlastung bei Bewegung und Sichtbarkeit: höchstens 120 s pro Event und budgetMsPer10Min 240000 pro Spieler.
ts.AdminBypassAces, ts.AdminBypassIdentifiersStaff-ACE- und Kennungslisten.Siehe Wie Staff erkannt wird.

Konfigurationsabschnitte: Listen#

Standardlisten in configs/anticheat_config.lua. Die meisten werden beim Sync durch die Panel-Tabellen ersetzt.

AbschnittZweckHäufig geänderte Einstellungen
ts.Weapons, ts.vehicleBlacklist, ts.Plates, ts.BlacklistObjects, ts.pedBlacklist, ts.BlacklistPeds, ts.BlacklistCommands, ts.BlacklistWords, ts.BlacklistNames, ts.BlacklistKeys, ts.BlacklistAnimsStandard-Blacklists. Die Waffenliste legt außerdem pro Waffe BAN, KICK oder LOG fest.Entfernen Sie Einträge, die Ihre Jobs ausgeben. Die Konfigurationskommentare nennen die PD- und EMS-Hubschrauber sowie die Peds SWAT und hwaycop.
ts.BlacklistPlayerModelsSpieler-Ped-Modelle, gemeldet nach 3 Stichproben im Abstand von 5 s (etwa 15 s). Strafschlüssel peds (KICK).Die Client-Schleife prüft den Schalter antiPeds nicht selbst.
ts.BlacklistSpritesTextur-Dictionaries von Cheat-Menüs.Das Panel kann sie ersetzen.
ts.detectedKeysTasten, die Overlays auslösen.Ausgeliefert {44, 73, 104}.
ts.explosionBlacklistExotische Explosionstypen, die abgebrochen und bestraft werden.BAN, KICK oder LOG pro Typ. Mit dem Panel synchronisiert.
ts.triggerList, ts.fakeTriggers, ts.fakeTriggerStrikeMax, ts.fakeTriggerServerTrapsHoneypot-Eventnamen, die Cheat-Menüs aufrufen. Einträge vom Typ server werden zu Server-Fallen, solange ts.fakeTriggers aktiv ist.Fügen Sie niemals echte Framework-Events hinzu. fakeTriggerStrikeMax 1, fakeTriggerServerTraps aus.
ts.whitelistedCoords, ts.TaskListClient-Koordinaten-Whitelist und Ped-Tasks auf der Blacklist.Beide sind ab Werk leer.

Schlüssel ohne Wirkung und Schlüssel, die in der Datei fehlen#

Einige Schlüssel in configs/anticheat_config.lua werden vom Code in 9.6.15 nicht gelesen. Sie zu ändern, hat keine Wirkung.

Der Code liest außerdem Schlüssel, die nicht in der Datei stehen. Fügen Sie sie bei Bedarf selbst hinzu: ts.v12.joinFloodWindowSec (60), ts.v12.joinFloodMaxJoins (6), ts.v12.bannedCountries (Ländercodes; eine Geo-Sperrliste), ts.v6Enforcement.heuristic (ersetzt die Liste der Heuristik-Typen), ts.LiveWatch.fps (30), ts.SafeEventMaxArgs (64) und always = true bei Server-Events in ts.DetectionExempt.

Diese Client-Schalter werden gelesen, stehen aber nicht in der Datei, und sind aktiv, solange sie nicht auf false gesetzt werden: ts.antiScreenshotBypass, ts.antiRateOfFire und ts.antiNetOwnership. ts.microJitterMeanMin (0.5) wird ebenfalls gelesen, steht aber nicht in der Datei.

  • ts.NetworkJoin.minimalSync
  • ts.AdminMenu.espMaxDistance und ts.AdminMenu.screenshotTimeout (das ESP verwendet espMaxDist)
  • ts.AdminMenu.permissionLevel (eine veraltete Bezeichnung; der Zugriff ergibt sich aus ACEs, Listen und Freigaben)
  • ts.ResourceGuard.strictClientDiff
  • ts.LiveWatch.enabled, preferTosunRender und maxConcurrent
  • ts.PhoneNotify.enabled, onBan und onDetect

Veraltete Kommentare in der Konfigurationsdatei#

Einige Kommentare in configs/anticheat_config.lua beschreiben älteres Verhalten. Der Code funktioniert wie folgt.

  • Laut Kommentar werden Panel-Einstellungen alle 30 s neu synchronisiert. Das Intervall ist ts.ServerPerf.configSyncIntervalSec (ausgeliefert 120 s).
  • Laut Kommentar setzt tosunac_setup Events auf die Whitelist. Es katalogisiert sie nur; über den Schutz entscheidet ts.EventScanner.autoProtect.
  • Der Kommentar zu ts.ProtectedEvents warnt, Framework-Events führten zu Fehlbanns. Aufrufe ohne Schlüssel werden abgelehnt und protokolliert, nie bestraft.
  • Laut Kommentar zu ts.EventLimiter greift er, wenn das Limit überschritten wird. Er greift, wenn der Zähler den Wert erreicht.
  • Der Bridge-Kommentar empfiehlt setr für alle vier Bridge-Convars. Nur tosun_ac_resource und tosun_ac_bridge_client_ms benötigen setr.
  • Der Kommentar zu ts.Locale lässt ar aus, aber locales/ar.json wird mitgeliefert.

FiveM-Hardening-Convars, die das AC prüft#

Zwei Module lesen beim Start FiveM-Convars. Der Convar-Guard (ts.hardening) läuft etwa 8 s nach dem Start und behandelt einen nicht gesetzten Wert als schwach. Die server.cfg-Prüfung (ts.cfgAudit) läuft 15 s nach dem Start und ist nur lesend.

ConvarEmpfohlenGeprüft vonVon autoApply angewendet
sv_stateBagStrictModetrueConvar-GuardJa
sv_filterRequestControl2Convar-GuardJa
sv_enableNetworkedSoundsfalseConvar-GuardJa
sv_enableNetworkedPhoneExplosionsfalseConvar-GuardJa
sv_enableNetworkedScriptEntityStatesfalseConvar-GuardJa
sv_scriptHookAllowedfalseConvar-Guard; die Prüfung warnt außerdem, wenn der Wert true istJa
sv_entityLockdownrelaxed (strict also passes)Convar-Guard, nur BerichtNein. Kann Skripte beschädigen, die Fahrzeuge vom Client aus spawnen; zuerst testen.
sv_pureLevel1 or higherConvar-Guard, nur BerichtNein
onesyncon (legacy also passes)Prüfung; außerdem eine Manifest-AbhängigkeitNein
sv_lanfalsePrüfung warnt, wenn der Wert true istNein
sv_authMinTrust4 or higher (unset reads as 5)PrüfungNein
sv_enforceGameBuildany build numberPrüfung warnt, wenn der Wert leer istNein

Hardening-Schalter und Ausgabe#

Beide Prüfungen melden standardmäßig nur. Ändern Sie sie in configs/anticheat_config.lua.

  • ts.hardening.enabled = false überspringt den Convar-Guard.
  • ts.hardening.autoApply = true (ausgeliefert false) lässt das AC set für die sechs sicheren Convars selbst ausführen. sv_entityLockdown und sv_pureLevel werden nie automatisch angewendet.
  • ts.cfgAudit.enabled = false schaltet die server.cfg-Prüfung ab.
  • Der Convar-Guard gibt eine Konsolenwarnung aus und schreibt eine ac_detections-Zeile (detection_type hardening_missing), die jede schwache Convar auflistet.
  • Die Prüfung gibt eine Konsolenwarnung aus und schreibt eine admin_logs-Zeile mit der Anzahl schwacher Einstellungen.
  • Der Konsolentext beider Prüfungen ist fest auf Türkisch. Jede Warnzeile des Guards zeigt die genaue hinzuzufügende set-Zeile.
  • tosunac_doctor ist ein separater Konsolenbericht über riskante AC-Einstellungen, nicht über FiveM-Convars.

Häufige Fehler#

Prüfen Sie diese Punkte, bevor Sie ein Support-Ticket eröffnen.

  • Zugangsdaten mit setr oder sets gesetzt: Sie erreichen jeden Client oder die öffentlichen Serverinformationen.
  • Zugangsdaten nach ensure tosun-ac platziert: Sie werden erst beim nächsten Neustart der Ressource übernommen.
  • Ein Panel-Schlüssel in configs/anticheat_config.lua: Die Datei wird an Clients gesendet, und die Konsole gibt eine MIGRATION-Warnung aus.
  • tosun_render nicht gestartet: Es ist eine zwingende Abhängigkeit.
  • ts.Framework.framework auf einem ESX- oder Qbox-Server bei "qb" belassen.
  • ts.Locale auf einem Server, der kein Türkisch verwendet, bei "tr" belassen.
  • ts.appealDiscord beim Discord-Link des Herstellers belassen.
  • ts.punishType auf LOG oder KICK gesetzt: Auch manuelle Banns werden zu Logs oder Kicks.
  • add_ace builtin.everyone command allow: Jeder Spieler überspringt die VPN- und Länderprüfungen.
  • Erwartet, dass tosun.admin tosunac_setup freischaltet: Dafür sind tosunac.admin plus command.tosunac_setup nötig.
  • Erwartet, dass txAdmin-Admins das AC-Menü öffnen können: txAdmin-ACEs geben nur Staff-Status. Fügen Sie tosun.admin oder eine Panel-Freigabe hinzu.
  • set tosun_db_bridge_enabled "0" ohne tosun_db_bridge_manual "1": Die Zeile wird ignoriert.
  • ts.Debug auf true belassen: Die Umgehungen für Staff und Whitelist sind aus.