Economize 20% hoje mesmo Use o código WELCOME ao finalizar a compra. BEM-VINDO

FiveM Whitelist — Guia completo (txAdmin, scripts, banco de dados)

Uma lista de permissões no FiveM é um mecanismo de controle de acesso que restringe a entrada no servidor a jogadores pré-aprovados, identificados por seus identificadores exclusivos (licença Rockstar, ID Steam, ID Discord, etc.). Abaixo, um guia pronto para produção que aborda a lista de permissões integrada do txAdmin, padrões de script, armazenamento em banco de dados e notas de confiabilidade.


Matriz de opções TL;DR

ModoOnde definirO que ele verificaMelhor paraNotas
Licença AprovadatxAdmin → Configurações → Gerenciador de Jogadores → Modo Lista de Permissõeslicença: (Estrela do rock)A maioria dos servidoresSimples, confiável; aprovações manuais ou pré-aprovações suportadas
Membro do DiscordtxAdmin (vinculado ao Discord)discórdia: é membro da guildaComunidades centradas em DiscórdiaUsuários não-Discord bloqueados
Função no DiscordtxAdmin (vinculado ao Discord)discórdia: tem papel específicoAcesso controlado por função (doador, equipe)Combine com automações de funções
Somente administradoradministrador do txSomente administradoresNoites de manutenção/desenvolvimentoBloqueia efetivamente o servidor, não recomendado
Script personalizadoRecurso Lua/JSQuaisquer identificadores que você queiraRegras granulares e UXPrecisa de código + manutenção

Recomendação: Usar Licença Aprovada para a linha de base (todos têm uma licença Rockstar), então adicione Função no Discord como um portão extra para níveis especiais.


Como habilitar e operar a lista de permissões no txAdmin

Pré-requisitos

  • txAdmin em execução (enviado com o FXServer).
  • Para modos Discord: integração com o Discord configurada (bot convidado, guilda/função selecionada).

Habilitar lista de permissões

  1. Abrir txAdmin → Configurações → Gerenciador de Jogadores.
  2. Definir Modo de lista de permissões para um de: Licença Aprovada, Membro do Discord, Função no Discord, ou Somente administrador.
  3. Definir um Mensagem de rejeição, por exemplo:
    Não está na lista de permissões. Candidate-se em discord.gg/yourinvite
  4. Salvar.

Aprovar jogadores (dois fluxos)

  • Passivo (fila): Quando um jogador não aprovado tenta entrar, uma solicitação aparece em Lista de permissões. Aprovar/recusar com um clique.
  • Ativo (pré-aprovar): Vá para Lista de permissões → Adicionar aprovação e cole um identificador no formulário tipo:valor, por exemplo
    • licença:110000112345678
    • vapor:11000010abcdef0
    • discordância:123456789012345678

Revogar

  • Abrir Jogadores ou Lista de permissões e clique Revogar ao lado da aprovação.

Pontas

  • Prefer licença identificadores para acesso de linha de base (universalmente presentes).
  • Mantenha seu mensagem de rejeição acionável (link do Discord + regras básicas + CTA do ticket).
  • Para equipe/desenvolvedores, requisitos de pilha: por exemplo, deve ser licença + função no discord.

Detalhes de implementação técnica

As listas de permissões são executadas durante o adiamento de conexão estágio. O servidor inspeciona o conjunto de identificadores do jogador e aceita ou rejeita antes que os recursos sejam carregados. Isso mantém a carga baixa e bloqueia jogadores não aprovados antecipadamente.

Tipos de Identificadores (confiabilidade)

  • licença: (Estrela do rock) — estável, vinculado à compra do jogo; chave primária recomendada.
  • vapor: — presente somente se o Steam estiver em execução; pode estar ausente se os jogadores não usarem o Steam.
  • discórdia: — presente somente se o Discord for executado e seu servidor o ler.
  • ip: — dinâmico; usar para telemetria/limite de taxa, não identidade.

Script de lista de permissões mínima (adiamentos UX + multi-ID)

-- resource: simple-whitelist
-- fxmanifest.lua should include '@oxmysql/lib/MySQL.lua' if you use DB code below.

local STATIC_WHITELIST = {
    ["license:110000112345678"] = true,
    ["steam:11000010abcdef0"] = true,
    ["discord:123456789012345678"] = true,
}

local function collectIdentifiers(src)
    local ids = {}
    for _, id in ipairs(GetPlayerIdentifiers(src)) do ids[id] = true end
    return ids
end

AddEventHandler("playerConnecting", function(name, setKickReason, deferrals)
    local src = source
    deferrals.defer()
    deferrals.update(("Checking whitelist for %s..."):format(name))

    local ids = collectIdentifiers(src)

    -- Require at least a Rockstar license in all cases
    local hasLicense = false
    for id, _ in pairs(ids) do
        if id:sub(1, 8) == "license:" then hasLicense = true break end
    end
    if not hasLicense then
        return deferrals.done("You must start the game normally (Rockstar license missing). Restart and try again.")
    end

    -- Static allowlist quick‑path
    for id, _ in pairs(ids) do
        if STATIC_WHITELIST[id] then
            return deferrals.done()
        end
    end

    -- Fallback: not approved
    return deferrals.done("Not whitelisted. Apply at discord.gg/yourinvite")
end)

Usar adiamentos.atualização para mostrar mensagens de progresso enquanto você verifica IDs e/ou um banco de dados. Isso reduz falsos relatórios de "tempo limite".


Lista de permissões orientada a banco de dados (oxmysql, pronto para produção)

Esquema

CRIAR TABELA SE NÃO EXISTIR lista de permissões ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, identificador VARCHAR(64) NOT NULL, note VARCHAR(120) NULL, adicionado_por VARCHAR(64) NULL, adicionado_em TIMESTAMP PADRÃO CURRENT_TIMESTAMP, CHAVE PRIMÁRIA (id), CHAVE ÚNICA u_identifier (identificador) );

Verificação do lado do servidor (oxmysql)

-- Requer oxmysql. Adicione ao fxmanifest: '@oxmysql/lib/MySQL.lua' AddEventHandler('playerConnecting', function(name, setKickReason, deferrals) local src = source deferrals.defer() deferrals.update('Verificando lista de permissões...') local ids = {} for _, id in ipairs(GetPlayerIdentifiers(src)) do table.insert(ids, id) end -- Escalar único: qualquer identificador aprovado? local rowCount = MySQL.scalar.await( 'SELECT COUNT(*) FROM whitelist WHERE identifier IN (?)', { ids } ) if rowCount and rowCount > 0 then return deferrals.done() else return deferrals.done('Acesso negado. Inscreva-se em discord.gg/yourinvite') end end)

Comandos de qualidade de vida do administrador (exemplo)

RegisterCommand('wladd', function(origem, args) se origem ~= 0 então retorne fim -- somente console para simplificar identificador local = args[1] se não for identificador ou não identificador:find(':') então imprima('Uso: wladd identifierType:identifierValue') retorne fim local ok = MySQL.prepare.await('INSERIR IGNORE INTO whitelist (identificador,nota,adicionado_por) VALORES (?, ?, ?)', { identificador, 'adição manual', 'console' }) imprima(ok e ('Na lista de permissões: %s'):formato(identificador) ou 'Falha ao adicionar') fim, verdadeiro) RegisterCommand('wlrm', function(origem, args) se origem ~= 0 então retorne fim identificador local = args[1] local ok = MySQL.prepare.await('EXCLUIR DA lista de permissões ONDE identificador = ?', { identificador }) print(ok and ('Removido: %s'):format(identificador) or 'Falha ao remover') end, true)

Para mysql-assíncrono, substituir MySQL.scalar.await com MySQL.Async.fetchScalar e o estilo do parâmetro com @param/?. Prefer oxmysql para desempenho e aguardar suporte.

Desempenho

  • Mantenha um Índice ÚNICO sobre identificador (ver esquema).
  • Opcionalmente aquecer um cache de memória na inicialização e na alteração; acerte o DB somente em caso de falha de cache.
  • Limite de taxa de tentativas repetidas de conexão com falha por licença/IP.

Regras de múltiplos identificadores

Alguns servidores exigem vários IDs (por exemplo, Steam e Discord) para níveis de equipe. Exemplo de padrão:

local function hasType(ids, typ)
    for id, _ in pairs(ids) do if id:sub(1, #typ+1) == (typ..':') then return true end end
    return false
end

-- Require license, and if staff, also discord
if not hasType(ids, 'license') then
    return deferrals.done('Start the game normally (license missing).')
end
if staffModeEnabled and not hasType(ids, 'discord') then
    return deferrals.done('Join our Discord and link your account to enter.')
end

Usando o Discord como lista de permissões (sem código personalizado)

Se sua comunidade for executada no Discord, use o txAdmin Membro do Discord ou Função no Discord modos:

  • Vincule o txAdmin à sua guilda do Discord.
  • Escolher Membro do Discord para permitir que qualquer membro da guilda, ou Função no Discord para controlar uma função específica (por exemplo, @Na lista de permissões).
  • Manter Licença Aprovada como um segundo portão se você quiser ambas as condições.

Melhores práticas: manter um #whitelist-requests Canal + formulário leve. Automatize a atribuição de funções após aprovação por meio de um bot ou fluxo de moderação.

FAXES: Um sistema de lista de permissões do Discord para FiveM


Ideias de Integração

  • Bots do Discord: aprovar automaticamente quando um usuário conclui uma inscrição, impulsiona ou assina.
  • Painel da web: equipe adiciona/remove identificadores, com trilha de auditoria.
  • Níveis pagos: conceder função no discord por meio de sua loja (Tebex/Patreon) e deixe o modo de função txAdmin impor o acesso.

Solução de problemas e pegadinhas

  • Jogador não aparece nas solicitações txAdmin: Certifique-se de que a lista de permissões esteja habilitada no perfil correto; verifique se o jogador realmente atingiu o estágio de adiamento (assista ao console ao vivo do txAdmin).
  • ID do Steam ausente: O Steam deve estar em execução; não configure sua lista de permissões somente em vapor:. Prefer licença:.
  • ID do Discord ausente: O usuário deve ter o Discord em execução e seu servidor deve estar configurado para ler discórdia:; verificar integração com o Discord.
  • licença contra licença2: Algumas estruturas registram dois campos de licença; certifique-se de que suas consultas de migração/banco de dados considerem ambos ao mover dados.
  • Tempo limite de adiamento: Sempre ligue adiamentos.atualização(...) enquanto você aguarda o DB; responda dentro de ~10–15 segundos.
  • Formato de identificador incompatível: Certifique-se de colar tipo:valor exatamente (letras minúsculas, separador de dois pontos).
  • Picos de tráfego intenso: Cache de lista de permissões na memória, pré-aquecimento na inicialização e depuração de chamadas de banco de dados.

Perguntas frequentes sobre SEO (conteúdo pronto para esquema)

Qual é o melhor identificador para a lista de permissões do FiveM?
A estrela do rock licença: é a mais universal e confiável; use-a como sua chave primária.

Posso ter acesso a uma lista de permissões no Discord sem precisar programar?
Sim. O txAdmin suporta Membro do Discord e Função no Discord modos de lista de permissões quando o Discord estiver vinculado.

Preciso do Steam para a lista de permissões?
Não. Muitos jogadores não usam o Steam; evite fazer vapor: obrigatório para acesso de linha de base.

Posso combinar várias verificações (por exemplo, licença + função no Discord)?
Sim. Use o modo de função txAdmin e mantenha uma verificação de licença em seu script personalizado ou fluxo de admissões.

Como posso pré-aprovar jogadores?
txAdmin → Lista de permissões → Adicionar aprovação, colar Tipo de identificador: identificador (por exemplo, licença:...).


Copiar e colar mensagens de rejeição (use sua marca)

  • Baseado em fila: Você ainda não está na lista de permissões. Candidate-se em #whitelist-requests → discord.gg/yourinvite
  • Função controlada: Sua conta do Discord não está na lista de permissões. Acesse discord.gg/yourinvite e solicite acesso.
  • Manutenção: O servidor está em modo somente administrador para manutenção. Tente novamente mais tarde.

Conclusão

Uma lista de permissões FiveM valida os identificadores dos jogadores durante a fase de adiamento da conexão e bloqueia usuários não aprovados antes do carregamento dos recursos. Para a maioria dos servidores, habilite Licença Aprovada no txAdmin, camada opcional Função no Discord para portão comunitário e usar um Apoiado pelo DB lista com cache para escala.


Apêndice: Exemplo Mínimo Original (para referência)

-- server.lua local whitelist = { ["steam:110000132456789"] = true, ["license:abc123def456789"] = true, ["discord:123456789012345678"] = true } AddEventHandler("playerConnecting", function(name, setKickReason, deferrals) local player = source local identifiers = GetPlayerIdentifiers(player) local whitelisted = false deferrals.defer() for _, id in pairs(identifiers) do if whitelist[id] then whitelisted = true break end end if not whitelisted then deferrals.done("Não está na lista de permissões. Inscreva-se em: your-discord.gg/invite") else deferrals.done() end end)
Lucas
Lucas

Eu sou Luke, sou um gamer e adoro escrever sobre FiveM, GTA e roleplay. Eu administro uma comunidade de roleplay e tenho cerca de 10 anos de experiência em administração de servidores.

Artigos: 570

Deixe um comentário