Pular para o conteúdo principal
Hero Dark

Resolva problemas comuns

Hero Dark

Sobre o sistema

O Auth Discord System autentica jogadores via Discord automaticamente — sem login manual, sem senha. O jogador recebe um código no jogo, digita no canal do Discord e a conta é liberada.

Visão Geral

Este guia cobre todo o arquivo config/settings.lua. Objetivo:
  • Você entender exatamente o que cada opção muda.
  • Você saber quando usar true ou false.
  • Você configurar o sistema sem precisar entrar em detalhes técnicos.

Antes de Começar

  • Arquivo de configuração: config/settings.lua
  • Depois de alterar a config: reinicie o resource (restart sqh_authdiscord)
  • Regra geral:
    • true = ativa a função
    • false = desativa a função

1) license

Configuração da licença de ativação do sistema.
OpçãoDescrição
license.EmailE-mail da conta na Squash Company utilizado na compra do produto
license.KeyChave de licença do produto
license = {
    ["Email"] = "[email protected]",
    ["Key"] = "SQUASH-xxxx-xxxx",
}

2) config.infobox

Funções de notificação. Configure aqui o sistema de alert/toast do seu servidor.
CallbackQuando é chamado
serverNotificações enviadas pelo lado server (recebe source, message, type)
clientNotificações enviadas pelo lado client (recebe source, message, type)
type pode ser: 'success', 'error', 'info', 'warning'
config.infobox = {
    ['server'] = function(source, message, type)
        exports["s_infobox"]:addInsInfobox(source, message, type)
    end,
    ['client'] = function(source, message, type)
        exports["s_infobox"]:addIncInfobox(message, type)
    end,
}

3) config.events

onVerifiedPlayer

Callback executado quando o player é verificado/autenticado com sucesso.
config.events = {
    onVerifiedPlayer = function(player)
        -- executado assim que o jogador finaliza a autenticação
        -- ex.: abrir seletor de personagens, liberar acesso ao servidor
        exports['sqh_multicharacters']:openPanelCharacters(player)
    end,
}
Importante: Este é o ponto central da integração. Coloque aqui a função que deve rodar após o login — normalmente a abertura do painel de personagens ou liberação do jogador.

4) Opções de Abertura Automática

Define quando o painel de autenticação deve abrir automaticamente.
Opçãotruefalse
config.onPlayerJoinAbre o painel assim que o jogador entra no servidor (onPlayerJoin)Não abre automaticamente na entrada
config.onPlayerLoginAbre o painel assim que o jogador faz login na conta MTA (onPlayerLogin)Não abre automaticamente no login
Recomendação: Em servidores com sistema de login próprio, use onPlayerLogin = true e onPlayerJoin = false.

Link de convite do Discord exibido no painel de autenticação.
config.discordLink = 'https://discord.gg/seuservidor'

6) config.createAccountMTA

Opçãotruefalse
createAccountMTACria automaticamente uma conta MTA para o jogador após o registro e faz login automáticoNão cria conta MTA — você gerencia o login manualmente
Se true, o campo de nome digitado no Discord será usado como nome da conta MTA. Por isso, ao configurar o bot do Discord, ative a opção de digitar o nome.

7) config.timeVerify

Tempo em segundos que o sistema aguarda antes de verificar se o player entrou no Discord do servidor.
config.timeVerify = 5 -- padrão: 5 segundos

8) config.playerInDiscord

Opçãotruefalse
playerInDiscordVerifica se o jogador está no servidor Discord antes de liberar o acessoLibera o acesso sem verificar presença no Discord
Com true, se o player não estiver no Discord, a tela de “você precisa entrar no Discord” é exibida.

9) config.blockChangeName

Opçãotruefalse
blockChangeNameImpede que o jogador mude o nome no jogoO jogador pode mudar o nome normalmente
Se false e config.infosPlayer.changeNameActive = true, a mudança de nome no jogo será sincronizada automaticamente com o Discord.

10) config.discordInfos

10.1 Cargos automáticos

OpçãoDescrição
onRegisterSetOfficesLista de IDs de cargos dados ao jogador quando ele é registrado/verificado
onRegisterRemoveOfficesLista de IDs de cargos removidos do jogador quando ele é registrado
discordInfos = {
    onRegisterSetOffices = {'ID_DO_CARGO_MEMBRO'},
    onRegisterRemoveOffices = {'ID_DO_CARGO_NAO_VERIFICADO'},
}

10.2 Troca de serial

OpçãoDescrição
changeSerialLista de Discord IDs autorizados a trocar o serial vinculado à conta pelo bot
Deixe vazio {} se não quiser usar este recurso.

10.3 Canais do Discord

OpçãoDescrição
channelLogsID do canal onde o bot registrará logs de autenticações
channelMessageID do canal onde o bot enviará as mensagens de verificação para os jogadores

10.4 Formatação e nome

OpçãoTipoDescrição
formatIDstringFormato do nome exibido no Discord após autenticação. Use $id e $name. Ex: "{$id} - $name"
playerNamebooleanSe true, o bot pedirá ao jogador para digitar seu nome durante o processo
setDiscordNameInGamebooleanSe true, ao entrar no jogo o nome do Discord será aplicado no nick do jogador

10.5 translates — Textos do bot no Discord

Textos exibidos pelo bot durante o fluxo de autenticação.
OpçãoDescrição
descriptionMessageTexto principal da mensagem enviada no canal (suporta Markdown do Discord)
imageMainURL da imagem exibida na mensagem principal
imageFooterURL da imagem de rodapé

10.6 messages — Mensagens operacionais

Mensagens enviadas em situações específicas do fluxo.
ChaveQuando é exibida
confirmInfosAo solicitar confirmação de dados
digitCodeAo pedir o código de verificação
register_successApós a conta ser registrada com sucesso
name_unavailableQuando o nome escolhido já está em uso
code_failedQuando ocorre falha na confirmação do código

11) config.nameMainConfigs

Configuração do comando auxiliar para obter o nome da conta interna.
OpçãoTipoDescrição
commandActivebooleanAtiva o comando /vernomedaconta. Deixe true apenas durante a configuração inicial do serial
havePermissionfunction(player)Retorna true se o player tem permissão para usar o comando
Após usar o comando para configurar o serial, volte commandActive = false.
config.nameMainConfigs = {
    commandActive = false,
    havePermission = function(player)
        return isObjectInACLGroup('user.'..getAccountName(getPlayerAccount(player)), aclGetGroup('Admin'))
    end
}

12) config.infosPlayer

Configurações sobre o nome e ID do player no jogo.

12.1 getNameOption — Como o nome é definido

ValorComportamento
'Discord'O nome do Discord do jogador é usado como nome no jogo
'Game'O nome atual do jogador no jogo é mantido (uso de getNamePlayerFunction)
'DiscordDigit'O nome digitado pelo jogador no input do Discord é usado
config.infosPlayer.getNameOption = 'Discord'

12.2 getNamePlayerFunction

Função usada quando getNameOption = 'Game' para obter o nome do jogador.
config.infosPlayer.getNamePlayerFunction = function(player)
    return getPlayerName(player)
end

12.3 Sincronização de nome e ID

Opçãotruefalse
changeNameActiveQuando o jogador mudar o nome no jogo, o nome no Discord é atualizado automaticamenteMudança de nome no jogo não afeta o Discord
setIDInDiscordO ID do jogador (retornado por getIDFunction) é incluído no nome do DiscordO ID não é adicionado ao nome
config.infosPlayer.getIDFunction = function(player)
    return getElementData(player, 'ID') or 'N/A'
end

13) config.designInfos

Configurações visuais do painel de autenticação.
OpçãoTipoDescrição
designnumberEscolha o layout do painel: 1 ou 2 (são designs diferentes)
color_mainstringCor principal do painel (hex). Ex: '#FF145B'
OpçãoTipoDescrição
x, ynumberPosição da logo na tela
w, hnumberLargura e altura da logo
imagestringCaminho para o arquivo de imagem
primaryColorbooleanSe true, a logo recebe a cor principal definida em color_main

13.2 socialMedia

Lista de links de redes sociais exibidos no painel.
config.designInfos.socialMedia = {
    {icon = 'discord', url = 'https://discord.gg/seuservidor'},
    {icon = 'youtube', url = 'https://youtube.com/seucanal'},
    {icon = 'instagram', url = 'https://instagram.com/seuservidor'},
}

14) colors

Paleta de cores da interface de autenticação.
OpçãoDescrição
whiteCor branca base
blackCor preta base
primaryCor principal (herdada de config.designInfos.color_main)
pinkCor rosa de destaque
primaryTextCor principal de texto
secondaryTextCor secundária de texto (40% de opacidade)
pinkBackgroundFundo rosa com baixa opacidade (15%)
pinkStrokeBorda rosa (35%)
background_opacityFundo escuro do painel (90% de opacidade)
primary_opacityFundo da cor primária com baixa opacidade (7%)
whiteOpacityBranco com baixa opacidade (4%)
whiteStrokeBorda branca (8%)
whiteBorderBorda branca mais visível (20%)
Formato das cores: '#RRGGBB XX%' onde XX% é a opacidade.
As cores primary e primary_opacity são geradas automaticamente a partir de config.designInfos.color_main.

15) translate

Define o idioma padrão e os textos da interface do painel.

15.1 Idioma padrão

OpçãoValorDescrição
translate.language'PT'Português (Brasil)
translate.language'EN'Inglês
translate.language'ES'Espanhol
translate.language'TR'Turco
translate.language'HU'Húngaro
translate.language'PT-PT'Português de Portugal
translate = {
    language = 'PT',
}

15.2 Textos por idioma

Cada bloco de idioma contém as chaves de texto exibidas na interface.
ChaveOnde aparece
code_confirmTítulo da tela de código de confirmação
click_copyInstrução abaixo do código
copy_discordBotão de copiar link do Discord
copy_codeBotão de copiar código
digit_code_textTexto explicativo de como usar o código no Discord
left_serverBotão de sair do servidor
disconnectTexto de desconectar
confirming_accountTítulo da tela de confirmação em andamento
logged_successNotificação de login realizado com sucesso
waiting_joinTela de aguardando entrada no Discord
necessarie_joinMensagem quando o jogador não está no Discord do servidor
click_to_copyTexto de ação ao clicar no código
sinc_discord_successNotificação de sincronização com Discord bem-sucedida
sinc_name_discordNotificação de nome sincronizado com Discord

Dicas Finais

  • Após qualquer alteração no config/settings.lua, reinicie o resource com restart sqh_authdiscord.
  • O config.events.onVerifiedPlayer é o coração da integração — sem configurá-lo corretamente, o player será autenticado mas não terá acesso liberado no servidor.
  • Se usar createAccountMTA = true, certifique-se de que o bot do Discord está configurado para pedir o nome do jogador (playerName = true), pois o nome digitado será o nome da conta MTA.
  • Para sincronização de nome com Discord funcionando corretamente, blockChangeName deve ser false e infosPlayer.changeNameActive deve ser true.
  • O nameMainConfigs.commandActive deve ficar false em produção — ative apenas durante a configuração inicial do serial.