ACE / Berechtigungen¶
Wrapper um FiveM's ACL-System. Ermöglicht programmatisches Hinzufügen/Entfernen von ACE-Berechtigungen und Principals — inklusive automatischer Discord-Rollen-Synchronisation.
Übersicht¶
cv.ace ist ein AceManager-Objekt mit Methoden zum Verwalten von Principals und Permissions zur Laufzeit.
Nicht persistent
ACE-Änderungen via cv.ace gelten nur für die aktuelle Server-Session. Sie gehen beim Neustart verloren, sofern sie nicht auch in server.cfg / permission.cfg stehen.
API¶
ACE-Berechtigungen¶
-- Berechtigung hinzufügen
cv.ace:addAce('group.admin', 'command.kick', true) -- allow
cv.ace:addAce('group.mod', 'command.kick', false) -- deny
-- Berechtigung entfernen
cv.ace:removeAce('group.admin', 'command.kick', true)
-- Prüfen ob Principal Berechtigung hat
cv.ace:hasAce(source, 'command.kick') -- → boolean
cv.ace:hasGroup(source, 'admin') -- → boolean (prüft 'group.admin')
Principals (Gruppen)¶
-- Spieler zu Gruppe hinzufügen
cv.ace:addPrincipal('identifier.license:abc123', 'group.admin')
-- Spieler aus Gruppe entfernen
cv.ace:removePrincipal('identifier.license:abc123', 'group.admin')
-- Mehrere Gruppen auf einmal
cv.ace:addToGroups('identifier.license:abc123', { 'admin', 'moderator' })
-- Gruppen setzen (überschreibt/erweitert)
cv.ace:setGroups('identifier.license:abc123', { 'supporter' })
Discord-Rollen-Sync¶
Weist einem Spieler automatisch ACE-Gruppen basierend auf seinen Discord-Rollen zu.
Konfiguration¶
-- In config.lua:
Config.DiscordRoleMapping = {
['1234567890123456'] = 'admin', -- Discord-Rolle-ID → ACE-Gruppe
['9876543210987654'] = 'moderator',
['1111111111111111'] = 'supporter',
}
Verwendung¶
cv.ace:syncDiscordRoles(source, function(success, matchedGroups)
if success then
print('Synced ' .. #matchedGroups .. ' roles')
end
end)
Voraussetzungen
discord_botTokenals Convar gesetztdiscord_guildIdals Convar gesetztConfig.DiscordRoleMappinginconfig.luadefiniert
Typisches Muster: Sync beim Login¶
AddEventHandler('cv_framework:player:characterLoaded', function(player)
cv.ace:syncDiscordRoles(player.source, function(success)
if success then
dprint('[ACE] Discord roles synced for ' .. player.source)
end
end)
end)
Statische Berechtigungen in server.cfg¶
Permanente Berechtigungen gehören in permission.cfg (via exec in server.cfg):