Permissões ACE no FiveM: só os comandos de que a staff precisa
Como add_ace e add_principal funcionam no server.cfg, uma configuração de mods e admins para copiar, checagens em scripts e onde o ACE deixa de bastar.
Por Termi
- Staff
- Permissions
- server.cfg
- Security
Nesta página
- Como o ACE funciona
- Checar permissões em um script
- ESX, QBCore e txAdmin
- Onde o ACE deixa de bastar
- Cargos e aprovações no FiveDock
- Perguntas frequentes
- Como dou admin a alguém no meu servidor de FiveM?
- Onde encontro o identifier de licença de um jogador?
- Qual é a diferença entre add_ace e add_principal?
- Por que meu comando restrito diz access denied?
Todo servidor de FiveM acaba esbarrando na mesma pergunta: como deixar um moderador expulsar jogadores sem que ele consiga distribuir dinheiro ou desligar o servidor? O FXServer responde com o ACE, o sistema de permissões que você configura no server.cfg. Este guia explica como o ACE funciona, uma divisão da staff para copiar, como os scripts checam permissões e onde o ACE deixa de bastar.
Como o ACE funciona
O ACE tem dois tipos de linha. add_ace dá uma permissão a um principal, e add_principal faz um principal herdar de outro. Jogadores são principals com o nome dos seus identifiers, e grupos são principals que você mesmo nomeia:
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.modAs mesmas linhas digitadas no console do servidor valem na hora, então você não precisa reiniciar para dar um cargo a alguém. Coloque-as também no server.cfg, ou elas somem no próximo reinício.
Checar permissões em um script
Um comando registrado como restrito só roda para principals que têm command.<nome>. A restrição é o true no final:
RegisterCommand('revive', function(source, args)
local target = tonumber(args[1]) or source
TriggerClientEvent('hospital:revive', target)
end, true)Para tudo que não é comando, como um botão de menu ou um net event, cheque a permissão você mesmo no servidor e conceda-a como qualquer outro 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 allowCheque no servidor
Nunca confie numa checagem de permissão em um script de cliente. Jogadores podem disparar qualquer net event com os argumentos que quiserem, então a checagem precisa ficar no handler do servidor.
ESX, QBCore e txAdmin
O QBCore também usa ACE: seus níveis de permissão são principals chamados qbcore.god, qbcore.admin e qbcore.mod, que você distribui com add_principal. O ESX mantém uma coluna group própria em users e a checa com xPlayer.getGroup(). O txAdmin tem um terceiro sistema, contas de admin com permissões próprias para o painel e o menu dentro do jogo, como expulsar, banir ou reiniciar, e elas valem só dentro do txAdmin.
Onde o ACE deixa de bastar
Cargos e aprovações no FiveDock
O painel do FiveDock executa comandos do servidor pelo agente, então a staff pode agir pelo celular sem entrar no jogo. Cada pessoa da staff entra com a própria conta, por passkey, Discord ou um link enviado por e-mail, e toda ação vai para o registro de atividade com o nome dela, em todos os planos.
No Metro, os cargos decidem quem pode executar cada comando: o suporte recebe kick e warn, os owners recebem tudo. Com um segundo owner, comandos perigosos esperam a aprovação dele antes de rodar. No Free e no City, comandos que dão dinheiro ou itens já podem esperar o OK de outra pessoa da staff.
O Metro também mascara dados pessoais por cargo, então quem está em treinamento nunca vê endereços reais nem dados de pagamento, e o visualizador de banco de dados deixa os admins olharem uma tabela enquanto a senha do banco continua no servidor.
Perguntas frequentes
Como dou admin a alguém no meu servidor de FiveM?
Adicione ao server.cfg uma linha que coloque o identifier da pessoa no grupo admin, como add_principal identifier.license:<licença dela> group.admin, e confirme que group.admin tem as permissões que você quer, por exemplo add_ace group.admin command allow. Digite as mesmas linhas no console do servidor para aplicá-las sem reiniciar.
Onde encontro o identifier de licença de um jogador?
A página do jogador no txAdmin lista todos os identifiers, e a native GetPlayerIdentifiers(source) também. A licença é o que começa com license:.
Qual é a diferença entre add_ace e add_principal?
add_ace dá uma permissão a um principal. add_principal faz um principal virar membro de outro, e assim ele herda as permissões desse outro. Você dá permissões aos grupos com add_ace e coloca os jogadores nos grupos com add_principal.
Por que meu comando restrito diz access denied?
O identifier do jogador não está em um grupo que tenha command.<nome>, ou a linha usa um identifier diferente daquele com que ele se conecta. Confira o tipo e o valor do identifier e lembre que um deny sobrepõe um allow.