:)Bom dia galera!
este tutorial ira trazer algo bacana, e muito legal para seus servidores, poderá interagir com um bot, criado de maneira simples, e que interage com seu servidor!
INTRODUÇÃO:
aqui você ira aprender a fazer com que o bot do discord, de-em informações simples como IP do servidor, site, quantos estão online, e quem está jogando... alem de muitas coisas!
NOTAS:
Criando um bot:
Você precisará criar um bot primeiro para saber o token de seu bot para o plugin.
Instalação:
Configurando o seu bot:
na sua server cfg, coloque o token de seu bot deste modo, para que
Instale o Plugin Discord Connector:
Baixe a versão mais atualizada: https://github.com/maddinat0r/samp-d...ector/releases
e extraia a pasta em seu servidor.
após isso configure a sua server.cfg para carregar o plugin deste modo:
Instale o processador de comandos DDCMD:
Instale o DDCMD para que possa trabalhar facilmente com comandos no discord!
https://pastebin.com/j7p46fQX
em seu gamemode ficara assim:
Colocando funcionalidades ao plugin:
Sicronizar chat:
Rank de jogadores:
Informações básicas:
CREDITOS:
RazorG: Tutorial & Codigos
Xeon: DDCMD
maddinat0r: DiscordConnector
este tutorial ira trazer algo bacana, e muito legal para seus servidores, poderá interagir com um bot, criado de maneira simples, e que interage com seu servidor!
INTRODUÇÃO:
aqui você ira aprender a fazer com que o bot do discord, de-em informações simples como IP do servidor, site, quantos estão online, e quem está jogando... alem de muitas coisas!
NOTAS:
- é necessário que você tenha o serviço SSL instalado com ou sem certificado, para que o bot funcione!
(não irei explicar aqui, por que cada distro tem modo de instalação então procure por seu SO)
- você tem que ser dono do servidor para convidar bot (ou ter um cargo elevado)
- sempre busque o plugin mais atualizado para evitar falhas, e manter estabilidade
- se forem mostrar para alguém, me marque nos créditos, eu ficarei muito feliz por isso!
- se vocês melhorarem o código, não guarde para si! coloque aqui para compartilhar seu conhecimento! ^^[/I]
Criando um bot:
Você precisará criar um bot primeiro para saber o token de seu bot para o plugin.
- Vá para https://discordapp.com/developers/applications/me
- clique em "new app"
- insira um nome para o seu bot
- clique em "create application
- pressione "create bot user"
- você agora tem um bot token!
- o adicione esse bot ao seu servidor, copie o ID do cliente do seu aplicativo recém-criado, insira-o no link abaixo e abra esse link:
Code:https://discordapp.com/api/oauth2/authorize?client_id=YOURCLIENTIDGOESHERE&scope=bot&permissions=0
Instalação:
Configurando o seu bot:
na sua server cfg, coloque o token de seu bot deste modo, para que
Code:
discord_bot_token YOUR_BOT_TOKEN_HERE
Baixe a versão mais atualizada: https://github.com/maddinat0r/samp-d...ector/releases
e extraia a pasta em seu servidor.
após isso configure a sua server.cfg para carregar o plugin deste modo:
Code:
discord_bot_token discord-connector
Instale o DDCMD para que possa trabalhar facilmente com comandos no discord!
https://pastebin.com/j7p46fQX
em seu gamemode ficara assim:
Code:
#define DCC_COMMAND_PREFIX '!' //opcional, caso queria mudar o prefixo do comando
#include <discord-connector> //livraria do bot no discord!
#include <discord-cmd> //comandos discord
Colocando funcionalidades ao plugin:
Sicronizar chat:
PHP Code:
#define DC_CHATGLOBAL "323103597942276096" //chatid (clique com botao direito nele e copiar o id no discord)
static DCC_Channel:g_ChatGlobal;
forward DiscordMessage(DCC_Channel:channel, DCC_User:author, const message[]);
hook OnGameModeInit()
{
g_ChatGlobal = DCC_FindChannelById( DC_CHATGLOBAL); //localisar seu chat pretendido
return Y_HOOKS_CONTINUE_RETURN_1;
}
hook OnPlayerText(playerid, text[])
{
new message[200];
format(message, 200, "**`%s`** [%d] -> *`%s`*", GetPlayerNameEx(playerid), playerid, text);//formate de acordo com seu gosto
DCC_SendChannelMessage(g_ChatGlobal,message); //envia a menssagem do SA:MP no discord
return Y_HOOKS_CONTINUE_RETURN_1;
}
//DCC_OnChannelMessage(DCC_Channel:channel, DCC_User:author, const message[]) se não utilizar o DDCMD
public DiscordMessage(DCC_Channel:channel, DCC_User:author, const message[])
{
if(IsDiscordBot(author))
return 1; //não enviara mensagem de outros bots
if(g_ChatGlobal != channel)
return 1; //caso a mensagem for fora do seu canal escolhido, não mostrara no servidor
new msg[512];
format(msg, sizeof(msg), "[Discord] {00AAFF}%s{FFFFFF}: %s", GetNickDiscord(author), message); //formate de acordo com seu gosto
SendClientMessageToAll(0xFFFFFFFF, msg); //enviara mesnagem para todos os players
return 1;
}
stock IsDiscordBot(DCC_User:author) //função simplificada
{
new bool:Isabot;
DCC_IsUserBot(author, Isabot);
return Isabot;
}
Rank de jogadores:
PHP Code:
DDCMD:rank(DCC_Channel:channel, DCC_User:userid, params[])//quando alguem der o comando !rank no discord chamara esta função
{
if(!strcmp(params, "pvp", true))
return DCC_SendChannelMessage(channel,"exemplo");
else if(!strcmp(params, "score", true))
{
//consulta no banco de dados, para pegar 10 primeiros usuarios, com maior score
mysql_function_query(mysql, "SELECT `score`,`usuario` from `contas` order by `score` desc LIMIT 10", true, "RankScore_D", "d", channel);
return 1;
}
else if(!strcmp(params, "grana", true))
return DCC_SendChannelMessage(channel,"exemplo");
else if(!strcmp(params, "online",true))
return DCC_SendChannelMessage(channel,"exemplo");
//parametros incompativeis
return DCC_SendChannelMessage(channel,"`utilize: /rank [pvp/online/grana/score]`"); //mostrara as suas oções de rank
}
forward RankScore_D(DCC_Channel:channel);
public RankScore_D(DCC_Channel:channel)//resultado da consulta
{
new rows,fields;
cache_get_data(rows,fields);//captar numero de linhas e colunas
//str -> será formatação da menssagem
//temp-> formatação da linha antes de inserir na str
//score-> valor obetido do player
//nick-> nome do jogador
//``` -> criara campo [code] no discord (design mais bonito)
//PHP -> deixar uma cor legal no campo CODE
new str[1010]="```PHP",nick[MAX_PLAYER_NAME],temp[100], score;
for(new i = 0; i < rows; i++)//looping para os 10 mais pontuados (caso não houver 10 contas mostrara a menos!)
{
cache_get_field_content(i, "usuario", nick); //receber nome do jogador
score = cache_get_field_content_int(i, "score");//receber o score
// %c -> char
//0xD, 0xA -> char quebra linha
//I+1 -> a contagem começa do 0, então adiciona +1 para ser de numeração 1° ao 10°
//nick-> nome do jogador
format(temp, sizeof(temp), "%c%c[%02d] %s", 0xD, 0xA, i+1, nick);
strcat(str, temp);//colocara a linha formata na string str
//conta o tamanho do nick
new e = ESPACO_RANK - strlen(nick);//e -> espaços
//conforme tamanho do nick, sera adiciona X espaços para que fique alinhado
for(new o = 0; o < e; o++)//o looping secundario
strcat(str, " "); //adiciona espaços
//mostrar o score do jogador depois de alinhas os caracteres
format(temp, sizeof(temp), "#SCORE: %d", score);
strcat(str, temp);//finalizaria aquela linha para repetir looping no proximo jogador
}
strcat(str, "```");// fechara campo [code] após o looping acabar de todos os jogadores estarem no rank
DCC_SendChannelMessage(channel,"**`TOP 10 JOGADORES DE MAIOR SCORE:`**");//personalize de acordo sua preferencia
DCC_SendChannelMessage(channel,str);//mostrara resultado do TOP 10
return 1;
}
PHP Code:
DDCMD:ip(DCC_Channel:channel, DCC_User:userid, params[])//quando executarem o comando !ip
{
DCC_SendChannelMessage(channel,"**`IP do servidor:`** `52.xx.xxx.xxx:xxxx`");// mostrar mensagem do IP do jogador
return 1;
}
DDCMD:site(DCC_Channel:channel, DCC_User:userid, params[])
{
new str[200]="**`Site:`** https://www.brasilsaopaulo.com",temp[50];
//str -> será formatação da menssagem
//temp-> formatação da linha antes de inserir na str
// %c -> char
//0xD, 0xA -> char quebra linha
format(temp, sizeof(temp), "%c%c**`Wiki:`** https://wiki.brasilsaopaulo.com%c%c",0xD, 0xA,0xD, 0xA);
strcat(str, temp);//junta linha formatada na string
format(temp, sizeof(temp), "**`Forum:`** https://forum.brasilsaopaulo.com%c%c",0xD, 0xA);
strcat(str, temp);
strcat(str, "**`********:`** https://*******/bspserver");
DCC_SendChannelMessage(channel,str);//manda a mensagem que foi formata com varias linhas
return 1;
}
CREDITOS:
RazorG: Tutorial & Codigos
Xeon: DDCMD
maddinat0r: DiscordConnector