Isso é bem antigo, do tempo do eAthena ainda... Eu usava no meu antigo servidor para anunciar os eventos dos npcs automaticamente no Twitter quando inicia.
O código é bem antigo porem gostaria da ajudar de quem entende de source para adaptar esse código para o rAthena.
//Cria a função do npc para enviar o twitter
BUILDIN_FUNC(twitrag)
{
//Função de NPC para twitter
const char *str;
str=script_getstr(st,2);
intif_twitrag(str);
return 0;
}
Procure por:
BUILDIN_DEF(delwall,"s"),
Adicione abaixo:
BUILDIN_DEF(twitrag,"s"), //Função de NPC para o twitter
int intif_twitrag(const char* mes)
{
//cUrl para o twitter
CURL *curl;
CURLcode res;
struct curl_httppost *params=NULL; //variavel com os parametros
struct curl_httppost *paramsfinal=NULL;
struct curl_slist *headerlist=NULL; //lista de header
//cria um buffer com o header Expected sem ele o twitter responde com erro 403
static const char buf[] = "Expect:";
curl_global_init (CURL_GLOBAL_ALL); //Inicia a libcurl
//adiciona o campo status com o valor do update ao header
curl_formadd (¶ms,
¶msfinal,
CURLFORM_COPYNAME, "status",
CURLFORM_COPYCONTENTS, mes,
CURLFORM_END);
curl = curl_easy_init(); //inicia uma seção easy
headerlist = curl_slist_append(headerlist, buf); //insere o buffer no header
//Seta a página para onde ele envia as informações
curl_easy_setopt(curl, CURLOPT_URL, "http://twitter.com/statuses/update.xml");
curl_easy_setopt(curl, CURLOPT_USERPWD, "usuario:senha"); //usuário e senha no twitter
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist); //adiciona o header ao curl
curl_easy_setopt(curl, CURLOPT_HTTPPOST, params); //adiciona os parametros ao curl
res = curl_easy_perform(curl); //Executa a operação
/* limpa o curl */
curl_easy_cleanup(curl);
curl_formfree(params);
curl_slist_free_all (headerlist);
return 0;
}
Isso é bem antigo, do tempo do eAthena ainda... Eu usava no meu antigo servidor para anunciar os eventos dos npcs automaticamente no Twitter quando inicia.
O código é bem antigo porem gostaria da ajudar de quem entende de source para adaptar esse código para o rAthena.
Arquivo /src/map/script.c procure por:
BUILDIN_FUNC(setqueststatus) { TBL_PC * sd = script_rid2sd(st); int qid = script_getnum(st, 2); bool active = script_getnum(st, 3)?true:false; quest_update_status(sd, qid, active); return 0; }Adicione abaixo:
//Cria a função do npc para enviar o twitter BUILDIN_FUNC(twitrag) { //Função de NPC para twitter const char *str; str=script_getstr(st,2); intif_twitrag(str); return 0; }Procure por:
Adicione abaixo:
Arquivo /src/map/intif.c procure por:
Adicione abaixo:
Isso importa a lib curl para ser usada.
Adicione o código abaixo no final do arquivo
int intif_twitrag(const char* mes) { //cUrl para o twitter CURL *curl; CURLcode res; struct curl_httppost *params=NULL; //variavel com os parametros struct curl_httppost *paramsfinal=NULL; struct curl_slist *headerlist=NULL; //lista de header //cria um buffer com o header Expected sem ele o twitter responde com erro 403 static const char buf[] = "Expect:"; curl_global_init (CURL_GLOBAL_ALL); //Inicia a libcurl //adiciona o campo status com o valor do update ao header curl_formadd (¶ms, ¶msfinal, CURLFORM_COPYNAME, "status", CURLFORM_COPYCONTENTS, mes, CURLFORM_END); curl = curl_easy_init(); //inicia uma seção easy headerlist = curl_slist_append(headerlist, buf); //insere o buffer no header //Seta a página para onde ele envia as informações curl_easy_setopt(curl, CURLOPT_URL, "http://twitter.com/statuses/update.xml"); curl_easy_setopt(curl, CURLOPT_USERPWD, "usuario:senha"); //usuário e senha no twitter curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist); //adiciona o header ao curl curl_easy_setopt(curl, CURLOPT_HTTPPOST, params); //adiciona os parametros ao curl res = curl_easy_perform(curl); //Executa a operação /* limpa o curl */ curl_easy_cleanup(curl); curl_formfree(params); curl_slist_free_all (headerlist); return 0; }*Não esqueça de mudar o usuário e senha na linha
Arquivo /src/map/intif.h
Procure por:
Adicione abaixo:
Agora é a hora de compilar, mas é preciso linkar a lcurl no compilador para poder funcionar.
Não descobri nenhuma forma mais simples de fazer isso, se você souber me avise que eu altero aqui.
Edite o arquivo Makefile na pasta map.
Nas linhas acima foi adicionado -lcurl ao final, para linkar para lib.
Salve e agora pode dar make normalmente.
Um exemplo de NPC:
prontera,153,194,5 script Aramil 807,{ OnInit: initnpctimer; OnTimer05: twitrag "Nosso servidor está online."; stopnpctimer; end; }Link to comment
Share on other sites