FiveM ACE-Berechtigungen: Rechte und Rollen für dein Team
Wie add_ace und add_principal in der server.cfg funktionieren, eine Mod- und Admin-Aufteilung zum Kopieren, Checks in Skripten und wo ACE nicht mehr reicht.
Von Termi
- Staff
- Permissions
- server.cfg
- Security
Auf dieser Seite
- So funktioniert ACE
- Berechtigungen in einem Skript prüfen
- ESX, QBCore und txAdmin
- Wo ACE nicht mehr reicht
- Rollen und Freigaben in FiveDock
- Häufige Fragen
- Wie gebe ich jemandem Admin auf meinem FiveM-Server?
- Wo finde ich den Lizenz-Identifier eines Spielers?
- Was ist der Unterschied zwischen add_ace und add_principal?
- Warum meldet mein eingeschränkter Befehl access denied?
Jeder FiveM-Server landet irgendwann bei derselben Frage: Wie darf ein Moderator Spieler kicken, ohne Geld verteilen oder den Server herunterfahren zu können? FXServer beantwortet sie mit ACE, dem Berechtigungssystem, das du in der server.cfg konfigurierst. Dieser Guide zeigt, wie ACE funktioniert, eine Team-Aufteilung zum Kopieren, wie Skripte Berechtigungen prüfen und wo ACE nicht mehr reicht.
So funktioniert ACE
ACE kennt zwei Arten von Zeilen. add_ace gibt einem Principal eine Berechtigung, und add_principal lässt einen Principal von einem anderen erben. Spieler sind Principals, die nach ihren Identifiern benannt sind, und Gruppen sind Principals, die du selbst benennst:
add_ace group.admin command allow
add_ace group.admin command.quit deny
add_ace group.mod command.kick allow
add_ace group.mod command.warn allow
add_principal group.admin group.mod
add_principal identifier.license:9a4f00ab12cd34ef group.admin
add_principal identifier.discord:123456789012345678 group.modDieselben Zeilen in der Server-Konsole gelten sofort, du brauchst also keinen Neustart, um jemandem eine Rolle zu geben. Trag sie zusätzlich in die server.cfg ein, sonst sind sie nach dem nächsten Neustart weg.
Berechtigungen in einem Skript prüfen
Ein als eingeschränkt registrierter Befehl läuft nur für Principals, die command.<name> haben. Die Einschränkung ist das true am Ende:
RegisterCommand('revive', function(source, args)
local target = tonumber(args[1]) or source
TriggerClientEvent('hospital:revive', target)
end, true)Bei allem, was kein Befehl ist, etwa einem Menü-Button oder einem Net-Event, prüfst du die Berechtigung selbst auf dem Server und vergibst sie wie jedes andere ACE:
RegisterNetEvent('admin:giveMoney', function(target, amount)
if not IsPlayerAceAllowed(source, 'admin.money') then return end
local player = QBCore.Functions.GetPlayer(target)
if player then player.Functions.AddMoney('bank', amount, 'admin') end
end)add_ace group.admin admin.money allowAuf dem Server prüfen
Verlass dich nie auf eine Berechtigungsprüfung in einem Client-Skript. Spieler können jedes Net-Event mit beliebigen Argumenten auslösen, deshalb muss die Prüfung im Server-Handler stehen.
ESX, QBCore und txAdmin
Auch QBCore nutzt ACE: Seine Berechtigungsstufen sind Principals namens qbcore.god, qbcore.admin und qbcore.mod, die du mit add_principal vergibst. ESX führt eine eigene Spalte group in users und prüft sie mit xPlayer.getGroup(). txAdmin hat noch ein drittes System: Admin-Konten mit eigenen Rechten für sein Panel und das Menü im Spiel, etwa zum Kicken, Bannen oder Neustarten, und die gelten nur innerhalb von txAdmin.
Wo ACE nicht mehr reicht
Rollen und Freigaben in FiveDock
Das FiveDock-Panel führt Server-Befehle über den Agent aus, sodass das Team vom Handy aus arbeiten kann, ohne ins Spiel zu gehen. Jede Person im Team meldet sich mit einem eigenen Zugang an, per Passkey, Discord oder Link per E-Mail, und jede Aktion landet mit ihrem Namen im Aktivitätslog, in jedem Plan.
In Metro entscheiden Rollen, wer welchen Befehl ausführen darf: Support bekommt kick und warn, Owner bekommen alles. Mit einem zweiten Owner warten gefährliche Befehle auf dessen Freigabe, bevor sie laufen. In Free und City können Befehle, die Geld oder Items vergeben, schon heute auf das OK einer zweiten Person aus dem Team warten.
Metro maskiert außerdem persönliche Daten nach Rolle, sodass Trainees nie echte Adressen oder Zahlungsdaten sehen, und mit dem Datenbank-Viewer können Admins eine Tabelle ansehen, während das Datenbankpasswort auf dem Server bleibt.
Häufige Fragen
Wie gebe ich jemandem Admin auf meinem FiveM-Server?
Füge der server.cfg eine Zeile hinzu, die seinen Identifier in die Admin-Gruppe setzt, etwa add_principal identifier.license:<seine Lizenz> group.admin, und stell sicher, dass group.admin die gewünschten Berechtigungen hat, zum Beispiel add_ace group.admin command allow. Gib dieselben Zeilen in der Server-Konsole ein, damit sie ohne Neustart gelten.
Wo finde ich den Lizenz-Identifier eines Spielers?
Die Spielerseite von txAdmin listet alle Identifier auf, ebenso die Native GetPlayerIdentifiers(source). Die Lizenz ist der Identifier, der mit license: beginnt.
Was ist der Unterschied zwischen add_ace und add_principal?
add_ace gibt einem Principal eine Berechtigung. add_principal macht einen Principal zum Mitglied eines anderen, sodass er dessen Berechtigungen erbt. Berechtigungen gibst du Gruppen mit add_ace, und Spieler steckst du mit add_principal in Gruppen.
Warum meldet mein eingeschränkter Befehl access denied?
Der Identifier des Spielers steckt in keiner Gruppe mit command.<name>, oder die Zeile verwendet einen anderen Identifier als den, mit dem er sich verbindet. Prüfe Typ und Wert des Identifiers und denk daran, dass ein deny ein allow überschreibt.