13.12.2017, 11:46
(
Last edited by RazorGuigo; 09/04/2018 at 03:57 PM.
)
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:
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://sampforum.blast.hk/showthread.php?tid=652258
https://github.com/RodrigoDornelles/...iscord-cmd.inc
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]
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:
plugins discord-connector
Instale o DDCMD para que possa trabalhar facilmente com comandos no discord!
https://sampforum.blast.hk/showthread.php?tid=652258
https://github.com/RodrigoDornelles/...iscord-cmd.inc
em seu gamemode ficara assim:
Code:
new DCC_COMMAND_PREFIX[]= {'!','+','/'}; //opcional se quiser personalizar seus prefixos! #include <discord-connector> //livraria do bot no discord! #include <discord-cmd> //comandos discord
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;
}
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