Advertisement
ipsBruno

(Pawn) Anuncio via Twitter

Dec 2nd, 2012
476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.93 KB | None | 0 0
  1. #include a_samp
  2.  
  3. // ===========================================================================
  4.  
  5. #define TWITTER "g1" // Mude aqui para seu twitter. Sem o "@"
  6.  
  7. // ===========================================================================
  8.  
  9.  
  10.  
  11. #if !defined HTTP_ERROR_BAD_HOST
  12.  
  13.         #include a_http
  14.  
  15. #endif
  16.  
  17. #define TweetAnn:: TweetAnn_
  18. #define TweetAnn_function%0(%1) forward %0(%1); public %0(%1)
  19.  
  20.  
  21.  
  22. /* ---------------------------------------------------
  23.  
  24.     Ao iniciar filterscript, começar as requisições
  25.     Não mude o tempo pois o twitter pode te bloquear por suspeita de DDOS
  26.  
  27.  -----------------------------------------------------*/
  28.  
  29.  
  30. public OnFilterScriptInit() {
  31.  
  32.     printf("Sistema de Twitter Carregado");
  33.  
  34.     TwitterCheck();
  35.  
  36.     return true;
  37. }
  38.  
  39.  
  40.  
  41. /* ---------------------------------------------------
  42.  
  43.     Função responsável por fazer a requisição HTTP
  44.    Não mude a URL, ela foi configurada corretamente para isto
  45.  
  46.  -----------------------------------------------------*/
  47.  
  48. TweetAnn::function TwitterCheck() {
  49.  
  50.     HTTP(0, HTTP_GET, "api.twitter.com/1/statuses/user_timeline.rss?screen_name="TWITTER"&count=2", "\0", "TwitterResponse");
  51.  
  52.     return SetTimer("TwitterCheck", 23000, false );
  53. }
  54.  
  55.  
  56.  
  57.  
  58.  
  59. /* -------------------------------------------------------------
  60.  
  61.     Função responsável por fazer o processamento da requisicao
  62.       Nessa parte é processado o último tweeet dado
  63.         e também é enviado a mensagem aos jogadores!!
  64.  
  65.  -----------------------------------------------------*/
  66.  
  67. new lastpost[141];
  68.  
  69. TweetAnn::function TwitterResponse(index, c, data[]) {
  70.  
  71.     if ( c ==  200  ) {
  72.  
  73.         new post[141];
  74.         recursiveStrfind(post, data, "<description>", 2, "<");
  75.  
  76.  
  77.         if(!sameString(post, lastpost))
  78.         {
  79.             new string [167];
  80.  
  81.             format(lastpost, 141, "%s", post);
  82.            
  83.             html_entities(post, post);
  84.             format( string, 167, "VIA TWITTER (@"TWITTER"): %s", post);
  85.  
  86.             // --- Enviar mensagem para todos jogadores
  87.             SendClientMessageToAll(-1, string);
  88.             print(string);
  89.  
  90.         }
  91.     }
  92.  
  93.     return true;
  94.  
  95. }
  96.  
  97.  
  98.  
  99. sameString(cmd1[], cmd2[]){
  100.  
  101.     if(strlen(cmd1) != strlen(cmd2)) return false;
  102.    
  103.     for(new i; cmd1[i]; i++) {
  104.         if(cmd1[i] != cmd2[i]) return false;
  105.     }
  106.    
  107.     return true;
  108. }
  109.  
  110. /* -------------------------------------------------------------
  111.  
  112.     Função "recursiveStrfind" usada para auxiliar no processamento
  113.               dos dados recebidos em .xml
  114.  
  115.  -----------------------------------------------------*/
  116.  
  117. recursiveStrfind(dest[], data[], string[], total, after[], current = -1, pos = -1, len = sizeof (dest))
  118. {
  119.         current ++;
  120.  
  121.         if(current != total) {
  122.                 return recursiveStrfind(dest, data, string, total, after, current, strfind(data, string, false, pos+1), len) ;
  123.         }
  124.  
  125.         static procurar;
  126.  
  127.         procurar = strfind(data, string, false, pos) + strlen(string);
  128.  
  129.         strmid(dest, data, procurar, procurar + len, len);
  130.  
  131.         if(strlen(after)) {
  132.  
  133.                 procurar = strfind(dest, after);
  134.  
  135.                 if( procurar != -1 ) {
  136.                         dest[procurar] = EOS;
  137.                 }
  138.         }
  139.  
  140.         return true;
  141. }
  142.  
  143.  
  144. /* -------------------------------------------------------------
  145.  
  146.     Função "html_entities" usada para fazer entities de alguns acentos
  147.            Assim fixando o texto recebido via html !!
  148.  
  149.  -----------------------------------------------------*/
  150.  
  151.  
  152. html_entities(dest[], html[], len = sizeof html, destl = sizeof dest) {
  153.  
  154.     static entitie[4], i, c;
  155.  
  156.     for( i = 0 ; html[i+3] ; i++) {
  157.  
  158.         if( html[i] == '&' && html[i+1] == '#') {
  159.  
  160.             if(-1 != (c=strfind(html, ";", false, i + 2))) {
  161.  
  162.                 strmid(entitie, html, i+2, c);
  163.  
  164.                 strdel(html, i, c+1);
  165.  
  166.                 c = i;
  167.                 i += 3 + strlen(entitie);
  168.  
  169.                 format(entitie, 4, "%c", strval(entitie));
  170.  
  171.                 strins(html, entitie, c, len);
  172.             }
  173.         }
  174.     }
  175.  
  176.     return format(dest, destl, html);
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement