Advertisement
FamiliaSAMP

Sistema de Atendimento [FAMILIASAMP.COM]

Apr 24th, 2015
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.93 KB | None | 0 0
  1. /* ! FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !
  2. ! FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !
  3.  
  4. NAO RETIRE OS CREDITOS !! NAO RETIRE OS CREDITOS !!
  5. NAO RETIRE OS CREDITOS !! NAO RETIRE OS CREDITOS !!*/
  6.  
  7. #include <a_samp>
  8. #include <zcmd>
  9. #include <dini>
  10.  
  11. forward Msgs();
  12.  
  13. new str[128];
  14. new Fila = 1;
  15. new bool:Helper[MAX_PLAYERS];
  16. new Atendimentos[MAX_PLAYERS];
  17. new Senha[MAX_PLAYERS];
  18. new Cores[6] = { 0xE02A2AFF, 0x3CE02AFF, 0xED8E12FF, 0xED12BAFF, 0x4912EDFF, 0x12EDAFFF };
  19.  
  20. #define CINZA 0xD6D6D6FF
  21. #define VERMELHO 0xFF0000FF
  22. #define AMARELO 0xF7E200FF
  23. #define LARANJA 0xE89200FF
  24.  
  25. public OnFilterScriptInit()
  26. {
  27. print("--------------------------------------------");
  28. print(" Sistema de Atendimento criado por Shadoww5");
  29. print(" CARREGADO COM SUCESSO !");
  30. print("--------------------------------------------");
  31. if(!fexist("Atendimentos.txt"))
  32. {
  33. dini_Create("Atendimentos.txt");
  34. dini_Set("Atendimentos.txt", "Recorde - Helper", "---");
  35. dini_IntSet("Atendimentos.txt", "Recorde - Atendimentos", 0);
  36. }
  37. if(!fexist("Atendentes.txt"))
  38. {
  39. dini_Create("Atendentes.txt");
  40. dini_Set("Atendentes.txt", "ADMINISTRADOR1", "---");
  41. dini_Set("Atendentes.txt", "ADMINISTRADOR2", "---");
  42. }
  43. SetTimer("Msgs", 450000, true);
  44. return 1;
  45. }
  46.  
  47. public OnFilterScriptExit()
  48. {
  49. print("--------------------------------------------");
  50. print(" Sistema de Atendimento criado por Shadoww5");
  51. print(" DESCARREGADO COM SUCESSO !");
  52. print("--------------------------------------------");
  53. return 1;
  54. }
  55.  
  56. public OnPlayerConnect(playerid)
  57. {
  58. Atendimentos[playerid] = 0;
  59. Senha[playerid] = 0;
  60. GetPlayerName(playerid, str, 24);
  61. if(dini_Isset("Atendentes.txt", str)) { Helper[playerid] = bool:dini_Bool("Atendentes.txt", str); }
  62. else { Helper[playerid] = false; }
  63. return 1;
  64. }
  65.  
  66. public OnPlayerDisconnect(playerid, reason)
  67. {
  68. GetPlayerName(playerid, str, 24);
  69. dini_BoolSet("Atendentes.txt", str, Helper[playerid]);
  70. if(Helper[playerid]) { dini_IntSet("Atendimentos.txt", str, Atendimentos[playerid]); }
  71. if(Atendimentos[playerid] > dini_Int("Atendimentos.txt", "Recorde - Atendimentos"))
  72. {
  73. dini_IntSet("Atendimentos.txt", "Recorde - Atendimentos", Atendimentos[playerid]);
  74. dini_Set("Atendimentos.txt", "Recorde - Helper", str);
  75. }
  76. return 1;
  77. }
  78.  
  79. public Msgs()
  80. return SendClientMessageToAll(Cores[random(sizeof Cores)], "Precisa de ajuda com o sistema de atendimento ? Digite /ajudafila.");
  81.  
  82. CMD:trocaradm(playerid, params[])
  83. {
  84. new admin;
  85. if(!IsPlayerAdmin(playerid))
  86. return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
  87. else if(sscanf(params, "ds", admin, str))
  88. return SendClientMessage(playerid, CINZA, "USO: /trocaradm [1/2] [novo nome]");
  89. else if(!(admin == 2 || admin == 1))
  90. return SendClientMessage(playerid, VERMELHO, "Escolha entre administrador 1 ou 2.");
  91. else if(strlen(str) > 24)
  92. return SendClientMessage(playerid, VERMELHO, "O novo nome deve ter no maximo 24 caracteres.");
  93. if(admin == 1)
  94. {
  95. dini_Set("Atendentes.txt", "ADMINISTRADOR1", str);
  96. format(str, sizeof str, "Administrador 1 trocado com sucesso: \"{F7E200}%s{E89200}\".", str);
  97. }
  98. else
  99. {
  100. dini_Set("Atendentes.txt", "ADMINISTRADOR2", str);
  101. format(str, sizeof str, "Administrador 2 trocado com sucesso: \"{F7E200}%s{E89200}\".", str);
  102. }
  103. SendClientMessage(playerid, LARANJA, str);
  104. return 1;
  105. }
  106.  
  107. CMD:darhelper(playerid, params[])
  108. {
  109. new Jogador;
  110. GetPlayerName(playerid, str, 24);
  111. if(sscanf(params, "u", Jogador))
  112. return SendClientMessage(playerid, CINZA, "USO: /darhelper [nome do jogador / id]");
  113. else if(!IsPlayerConnected(Jogador))
  114. return SendClientMessage(playerid, VERMELHO, "Jogador OFFLINE.");
  115. else if(!(strcmp(str, dini_Get("Atendentes.txt", "ADMINISTRADOR1"), false) == 0 || strcmp(str, dini_Get("Atendentes.txt", "ADMINISTRADOR2"), false) == 0 || IsPlayerAdmin(playerid)))
  116. return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
  117. else if(Helper[Jogador])
  118. return SendClientMessage(playerid, VERMELHO, "Este jogador já é helper.");
  119. Helper[Jogador] = true;
  120. format(str, sizeof str, "O administrador %s [ID %d] te tornou um helper.", str, playerid);
  121. SendClientMessage(Jogador, AMARELO, str);
  122. GetPlayerName(Jogador, str, 24);
  123. format(str, sizeof str, "Você tornou o jogador %s [ID %d] um helper.", str, Jogador);
  124. SendClientMessage(playerid, AMARELO, str);
  125. return 1;
  126. }
  127.  
  128. CMD:retirarhelper(playerid, params[])
  129. {
  130. new Jogador;
  131. GetPlayerName(playerid, str, 24);
  132. if(sscanf(params, "u", Jogador))
  133. return SendClientMessage(playerid, CINZA, "USO: /retirarhelper [nome do jogador / id]");
  134. else if(!IsPlayerConnected(Jogador))
  135. return SendClientMessage(playerid, VERMELHO, "Jogador OFFLINE.");
  136. else if(!(strcmp(str, dini_Get("Atendentes.txt", "ADMINISTRADOR1"), false) == 0 || strcmp(str, dini_Get("Atendentes.txt", "ADMINISTRADOR2"), false) == 0 || IsPlayerAdmin(playerid)))
  137. return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
  138. else if(!Helper[Jogador])
  139. return SendClientMessage(playerid, VERMELHO, "Este jogador não é helper.");
  140. Helper[Jogador] = false;
  141. format(str, sizeof str, "O administrador %s [ID %d] te tirou do cargo de helper.", str, playerid);
  142. SendClientMessage(Jogador, AMARELO, str);
  143. GetPlayerName(Jogador, str, 24);
  144. format(str, sizeof str, "Você tirou o jogador %s [ID %d] do cargo de helper.", str, Jogador);
  145. SendClientMessage(playerid, AMARELO, str);
  146. return 1;
  147. }
  148.  
  149. CMD:senha(playerid, params[])
  150. {
  151. #pragma unused params
  152. if(Helper[playerid])
  153. return SendClientMessage(playerid, VERMELHO, "Helpers não podem pegar senha.");
  154. else if(IsPlayerAdmin(playerid))
  155. return SendClientMessage(playerid, VERMELHO, "Administradores não podem pegar senha.");
  156. else if(Senha[playerid] != 0)
  157. return SendClientMessage(playerid, VERMELHO, "Você já está na fila de atendimento.");
  158. Senha[playerid] = Fila;
  159. Fila++;
  160. SendClientMessage(playerid, LARANJA, "Você entrou na fila de atendimento. Aguarde até que algum helper venha te atender.");
  161. for(new i = 0; i < MAX_PLAYERS; i ++)
  162. {
  163. if(!Helper[i]) continue;
  164. GetPlayerName(playerid, str, 24);
  165. format(str, sizeof str, "%s entrou na fila de atendimento. Para atendê-lo digite /irsenha %d.", str, Senha[playerid]);
  166. SendClientMessage(i, AMARELO, str);
  167. }
  168. return 1;
  169. }
  170.  
  171. CMD:sairfila(playerid, params[])
  172. {
  173. #pragma unused params
  174. if(Senha[playerid] == 0)
  175. return SendClientMessage(playerid, VERMELHO, "Você não está na fila de atendimento.");
  176. Senha[playerid] = 0;
  177. SendClientMessage(playerid, LARANJA, "Você saiu da fila de atendimento.");
  178. return 1;
  179. }
  180.  
  181. CMD:chat(playerid, params[])
  182. {
  183. #pragma unused params
  184. new nome[24];
  185. if(!Helper[playerid])
  186. return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
  187. else if(sscanf(params, "s", str))
  188. return SendClientMessage(playerid, CINZA, "USO: /chat [texto]");
  189. GetPlayerName(playerid, nome, 24);
  190. format(str, sizeof str, "[CHAT HELPER]{FFFFFF} %s: %s", nome, str);
  191. for(new i = 0; i < MAX_PLAYERS; i ++)
  192. {
  193. if(!Helper[i] || !IsPlayerConnected(i)) continue;
  194. SendClientMessage(i, AMARELO, str);
  195. }
  196. return 1;
  197. }
  198.  
  199. CMD:fila(playerid, params[])
  200. {
  201. #pragma unused params
  202. new found, name[24];
  203. for(new i = 0; i < MAX_PLAYERS; i ++)
  204. {
  205. if(Senha[i] != 0) { found++; }
  206. if(found > 1) { break; }
  207. }
  208. if(!found)
  209. return SendClientMessage(playerid, VERMELHO, "Não há nenhum jogador na fila de atendimento.");
  210. SendClientMessage(playerid, AMARELO, "======= {FFFFFF}[ Fila de Atendimento ] {F7E200}=======");
  211. for(new s = 1; s < (Fila+1); s++)
  212. {
  213. for(new i = 0; i < MAX_PLAYERS; i ++)
  214. {
  215. if(!IsPlayerConnected(i)) continue;
  216. if(Senha[i] != s) continue;
  217. GetPlayerName(i, name, 24);
  218. format(str, sizeof str, " » [ID %d] %s - Senha: %d", i, name, Senha[i]);
  219. SendClientMessage(playerid, AMARELO, str);
  220. }
  221. }
  222. return 1;
  223. }
  224.  
  225. CMD:proximo(playerid, params[])
  226. {
  227. #pragma unused params
  228. if(!Helper[playerid])
  229. return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
  230. new bool:found;
  231. for(new s = 1; s < (Fila+1); s++)
  232. {
  233. for(new i = 0; i < MAX_PLAYERS; i ++)
  234. {
  235. if(!IsPlayerConnected(i)) continue;
  236. if(Senha[i] != s) continue;
  237. new Float:Pos[3];
  238. GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
  239. SetPlayerPos(playerid, Pos[0]+1, Pos[1], Pos[2]+0.5);
  240. SetPlayerInterior(playerid, GetPlayerInterior(i));
  241. Senha[i] = 0;
  242. GetPlayerName(playerid, str, 24);
  243. format(str, sizeof str, "O helper %s [ID %d] veio te ajudar.", str, playerid);
  244. SendClientMessage(i, AMARELO, str);
  245. GetPlayerName(i, str, 24);
  246. format(str, sizeof str, "Você veio atender o jogador %s [ID %d].", str, i);
  247. SendClientMessage(playerid, AMARELO, str);
  248. Atendimentos[playerid]++;
  249. found = true;
  250. break;
  251. }
  252. if(found) { break; }
  253. }
  254. if(!found) { SendClientMessage(playerid, VERMELHO, "Não há nenhum jogador na fila de atendimento."); }
  255. return 1;
  256. }
  257.  
  258. CMD:irsenha(playerid, params[])
  259. {
  260. new senha;
  261. if(!Helper[playerid])
  262. return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
  263. else if(sscanf(params, "d", senha))
  264. return SendClientMessage(playerid, CINZA, "USO: /irsenha [numero da senha]");
  265. else if(senha < 1)
  266. return SendClientMessage(playerid, VERMELHO, "Não há ninguém no servidor com esta senha.");
  267. new bool:found;
  268. for(new i = 0; i < MAX_PLAYERS; i ++)
  269. {
  270. if(Senha[i] == senha)
  271. {
  272. new Float:Pos[3];
  273. GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
  274. SetPlayerPos(playerid, Pos[0]+1, Pos[1], Pos[2]+0.5);
  275. SetPlayerInterior(playerid, GetPlayerInterior(i));
  276. Senha[i] = 0;
  277. GetPlayerName(playerid, str, 24);
  278. format(str, sizeof str, "O helper %s [ID %d] veio te ajudar.", str, playerid);
  279. SendClientMessage(i, AMARELO, str);
  280. GetPlayerName(i, str, 24);
  281. format(str, sizeof str, "Você veio atender o jogador %s [ID %d].", str, i);
  282. SendClientMessage(playerid, AMARELO, str);
  283. Atendimentos[playerid]++;
  284. found = true;
  285. break;
  286. }
  287. }
  288. if(!found) { SendClientMessage(playerid, VERMELHO, "Não há ninguém no servidor com esta senha."); }
  289. return 1;
  290. }
  291.  
  292. CMD:atendimentos(playerid, params[])
  293. {
  294. #pragma unused params
  295. if(!Helper[playerid])
  296. return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
  297. SendClientMessage(playerid, AMARELO, "======= {FFFFFF}[ Numero de Atendimentos por Helper ] {F7E200}=======");
  298. for(new i = 0; i < MAX_PLAYERS; i ++)
  299. {
  300. if(!Helper[i]) continue;
  301. GetPlayerName(i, str, 24);
  302. format(str, sizeof str, " » %s - Atendimentos: %d", str, Atendimentos[i]);
  303. SendClientMessage(playerid, AMARELO, str);
  304. }
  305. return 1;
  306. }
  307.  
  308. CMD:zerarfila(playerid, params[])
  309. {
  310. #pragma unused params
  311. if(!Helper[playerid])
  312. return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
  313. Fila = 1;
  314. for(new i = 0; i < MAX_PLAYERS; i ++)
  315. {
  316. Senha[i] = 0;
  317. if(!Helper[i]) continue;
  318. GetPlayerName(playerid, str, 24);
  319. format(str, sizeof str, "A fila de atendimento foi zerada pelo Helper %s.", str);
  320. SendClientMessage(i, AMARELO, str);
  321. }
  322. return 1;
  323. }
  324.  
  325. CMD:ajudafila(playerid, params[])
  326. {
  327. new sStr[1152];
  328. strcat(sStr, "\t- /senha: Comando utilizado para pegar uma senha de atendimento.");
  329. strcat(sStr, "\n\t- /sairfila: Comando utilizado para sair da fila de atendimento.");
  330. strcat(sStr, "\n\t- /fila: Comando utilizado para saber quais jogadores estão na fila à espera de ajuda.");
  331. if(Helper[playerid])
  332. {
  333. strcat(sStr, "\n\t- /proximo: Comando utilizado para atender a proxima senha.");
  334. strcat(sStr, "\n\t- /irsenha: Comando utilizado para atender uam senha específica.");
  335. strcat(sStr, "\n\t- /zerarfila: Comando utilizado para limpar a fila de atendimento.");
  336. strcat(sStr, "\n\t- /atendimentos: Comando utilizado para saber a quantidade de jogadores atendidos por cada helper ONLINE.");
  337. strcat(sStr, "\n\t- /darhelper: Comando utilizado dar o cargo de helper à um jogador.");
  338. strcat(sStr, "\n\t- /retirarhelper: Este comando faz a operação inversa do comando anterior.");
  339. strcat(sStr, "\n\t- /trocaradm: Comando utilizado para trocar o atual administrador 1/2 presente no arquivo \"Atendentes.txt\".");
  340. strcat(sStr, "\n\n\tOBS¹: Os comandos /darhelper e/ou /retirarhelper só podem ser utilizados caso seu nome esteja como\n ADMINISTRADOR 1 ou 2 no arquivo \"Atendentes.txt\".");
  341. strcat(sStr, "\n\tOBS²: O comando /trocardono só pode ser utilizado por administradores que realizaram login na RCON.");
  342. strcat(sStr, "\n\n\t FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !");
  343. }
  344. else { strcat(sStr, "\n\n\t FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !"); }
  345. ShowPlayerDialog(playerid, 497, DIALOG_STYLE_MSGBOX, "Sistema de Atendimento criado por Shadoww5 !", sStr, "Fechar", "");
  346. return 1;
  347. }
  348.  
  349. // ================[ SSCANF ]================ //
  350.  
  351. stock sscanf(string[], format[], {Float,_}:...)
  352. {
  353. #if defined isnull
  354. if (isnull(string))
  355. #else
  356. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  357. #endif
  358. {
  359. return format[0];
  360. }
  361. #pragma tabsize 4
  362. new
  363. formatPos = 0,
  364. stringPos = 0,
  365. paramPos = 2,
  366. paramCount = numargs(),
  367. delim = ' ';
  368. while (string[stringPos] && string[stringPos] <= ' ')
  369. {
  370. stringPos++;
  371. }
  372. while (paramPos < paramCount && string[stringPos])
  373. {
  374. switch (format[formatPos++])
  375. {
  376. case '\0':
  377. {
  378. return 0;
  379. }
  380. case 'i', 'd':
  381. {
  382. new
  383. neg = 1,
  384. num = 0,
  385. ch = string[stringPos];
  386. if (ch == '-')
  387. {
  388. neg = -1;
  389. ch = string[++stringPos];
  390. }
  391. do
  392. {
  393. stringPos++;
  394. if ('0' <= ch <= '9')
  395. {
  396. num = (num * 10) + (ch - '0');
  397. }
  398. else
  399. {
  400. return -1;
  401. }
  402. }
  403. while ((ch = string[stringPos]) > ' ' && ch != delim);
  404. setarg(paramPos, 0, num * neg);
  405. }
  406. case 'h', 'x':
  407. {
  408. new
  409. num = 0,
  410. ch = string[stringPos];
  411. do
  412. {
  413. stringPos++;
  414. switch (ch)
  415. {
  416. case 'x', 'X':
  417. {
  418. num = 0;
  419. continue;
  420. }
  421. case '0' .. '9':
  422. {
  423. num = (num << 4) | (ch - '0');
  424. }
  425. case 'a' .. 'f':
  426. {
  427. num = (num << 4) | (ch - ('a' - 10));
  428. }
  429. case 'A' .. 'F':
  430. {
  431. num = (num << 4) | (ch - ('A' - 10));
  432. }
  433. default:
  434. {
  435. return -1;
  436. }
  437. }
  438. }
  439. while ((ch = string[stringPos]) > ' ' && ch != delim);
  440. setarg(paramPos, 0, num);
  441. }
  442. case 'c':
  443. {
  444. setarg(paramPos, 0, string[stringPos++]);
  445. }
  446. case 'f':
  447. {
  448.  
  449. new changestr[16], changepos = 0, strpos = stringPos;
  450. while(changepos < 16 && string[strpos] && string[strpos] != delim)
  451. {
  452. changestr[changepos++] = string[strpos++];
  453. }
  454. changestr[changepos] = '\0';
  455. setarg(paramPos,0,_:floatstr(changestr));
  456. }
  457. case 'p':
  458. {
  459. delim = format[formatPos++];
  460. continue;
  461. }
  462. case '\'':
  463. {
  464. new
  465. end = formatPos - 1,
  466. ch;
  467. while ((ch = format[++end]) && ch != '\'') {}
  468. if (!ch)
  469. {
  470. return -1;
  471. }
  472. format[end] = '\0';
  473. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  474. {
  475. if (format[end + 1])
  476. {
  477. return -1;
  478. }
  479. return 0;
  480. }
  481. format[end] = '\'';
  482. stringPos = ch + (end - formatPos);
  483. formatPos = end + 1;
  484. }
  485. case 'u':
  486. {
  487. new
  488. end = stringPos - 1,
  489. id = 0,
  490. bool:num = true,
  491. ch;
  492. while ((ch = string[++end]) && ch != delim)
  493. {
  494. if (num)
  495. {
  496. if ('0' <= ch <= '9')
  497. {
  498. id = (id * 10) + (ch - '0');
  499. }
  500. else
  501. {
  502. num = false;
  503. }
  504. }
  505. }
  506. if (num && IsPlayerConnected(id))
  507. {
  508. setarg(paramPos, 0, id);
  509. }
  510. else
  511. {
  512. #if !defined foreach
  513. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  514. #define __SSCANF_FOREACH__
  515. #endif
  516. string[end] = '\0';
  517. num = false;
  518. new
  519. name[MAX_PLAYER_NAME];
  520. id = end - stringPos;
  521. foreach (Player, playerid)
  522. {
  523. GetPlayerName(playerid, name, sizeof (name));
  524. if (!strcmp(name, string[stringPos], true, id))
  525. {
  526. setarg(paramPos, 0, playerid);
  527. num = true;
  528. break;
  529. }
  530. }
  531. if (!num)
  532. {
  533. setarg(paramPos, 0, INVALID_PLAYER_ID);
  534. }
  535. string[end] = ch;
  536. #if defined __SSCANF_FOREACH__
  537. #undef foreach
  538. #undef __SSCANF_FOREACH__
  539. #endif
  540. }
  541. stringPos = end;
  542. }
  543. case 's', 'z':
  544. {
  545. new
  546. i = 0,
  547. ch;
  548. if (format[formatPos])
  549. {
  550. while ((ch = string[stringPos++]) && ch != delim)
  551. {
  552. setarg(paramPos, i++, ch);
  553. }
  554. if (!i)
  555. {
  556. return -1;
  557. }
  558. }
  559. else
  560. {
  561. while ((ch = string[stringPos++]))
  562. {
  563. setarg(paramPos, i++, ch);
  564. }
  565. }
  566. stringPos--;
  567. setarg(paramPos, i, '\0');
  568. }
  569. default:
  570. {
  571. continue;
  572. }
  573. }
  574. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  575. {
  576. stringPos++;
  577. }
  578. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  579. {
  580. stringPos++;
  581. }
  582. paramPos++;
  583. }
  584. do
  585. {
  586. if ((delim = format[formatPos++]) > ' ')
  587. {
  588. if (delim == '\'')
  589. {
  590. while ((delim = format[formatPos++]) && delim != '\'') {}
  591. }
  592. else if (delim != 'z')
  593. {
  594. return delim;
  595. }
  596. }
  597. }
  598. while (delim > ' ');
  599. return 0;
  600. }
  601. /* ! FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !
  602. ! FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !
  603.  
  604.  
  605.  
  606. NAO RETIRE OS CREDITOS !! NAO RETIRE OS CREDITOS !!
  607. NAO RETIRE OS CREDITOS !! NAO RETIRE OS CREDITOS !!*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement