Jump to content
  • 0

adaptar @twitrag para rA


Question

Posted

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:

BUILDIN_DEF(delwall,"s"),

Adicione abaixo:

BUILDIN_DEF(twitrag,"s"), //Função de NPC para o twitter

 

Arquivo /src/map/intif.c procure por:

#include <string.h>

Adicione abaixo:

#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>

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 (&params,
				  &paramsfinal,
				  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

curl_easy_setopt(curl, CURLOPT_USERPWD, "usuario:senha");

Arquivo /src/map/intif.h

Procure por:

int intif_announce(const char* mes,int len, unsigned long color, int flag);

Adicione abaixo:

int intif_twitrag(const char* mes); //cUrl para o twitter

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.

./configure

Edite o arquivo Makefile na pasta map.

map-server: obj_txt $(MAP_TXT_OBJ) $(COMMON_OBJ)
	gcc  -L/usr/lib -o ../../map-server $(MAP_TXT_OBJ) $(COMMON_OBJ) -lrt -lm -lz  -ldl -lcurl

map-server_sql: obj_sql $(MAP_SQL_OBJ) $(COMMON_OBJ) $(COMMON_SQL_OBJ)
	gcc  -L/usr/lib -o ../../map-server_sql $(MAP_SQL_OBJ) $(COMMON_OBJ) $(COMMON_SQL_OBJ) -lrt -lm -lz  -ldl -lcurl

 

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;
}

3 answers to this question

Recommended Posts

  • 0
Posted
3 hours ago, Lecter said:

n seria melhor um .diff ?

Eu encontrei ele assim na net.. não tinha diff... e ele não tá funcional, por isso to pedindo ajuda para adaptar para o rA

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...