Shadoww5

Telefone_Numero.pwn

Jun 30th, 2011
620
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 56.03 KB | None | 0 0
  1. /*! FILTERSCRIPT DE TELEFONE DESENVOLVIDO POR SHADOWW5 !
  2.  
  3.            Contato: http://bit.ly/iT6xEw
  4.            Contato: http://bit.ly/iT6xEw
  5.        
  6.          http://forum.sa-mp.com/showthread.php?p=1269377
  7.  
  8.     NAO RETIRE OS CREDITOS !! NAO RETIRE OS CREDITOS !!
  9.  
  10.      OBS: ESTE SISTEMA USA O TELEFONE DOS JOGADORES*/
  11.  
  12. #define FILTERSCRIPT
  13.  
  14. #include <a_samp>
  15. #include <dini>
  16. #include <zcmd>
  17.  
  18. forward Msgs();
  19. forward Tel(playerid);
  20. forward ProxDetector(Float:radi, playerid, string[], col1, col2, col3, col4, col5);
  21. forward Desligar(playerid);
  22.  
  23. new str[175];
  24. new Cores[6] = {
  25. 0xE02A2AFF,
  26. 0x3CE02AFF,
  27. 0xED8E12FF,
  28. 0xED12BAFF,
  29. 0x4912EDFF,
  30. 0x12EDAFFF
  31. };
  32. new Timer[MAX_PLAYERS];
  33. new Telefonando[MAX_PLAYERS];
  34. new NumTel[MAX_PLAYERS];
  35. new Jogador[MAX_PLAYERS];
  36. new bool:Telefone[MAX_PLAYERS];
  37. new bool:Sistema;
  38.  
  39. #define LOCALX 1406.14306641
  40. #define LOCALY -1785.00000000
  41. #define LOCALZ 13.23887730
  42.  
  43. #define CAIXADEENTRADA 840
  44. #define CAIXADESAIDA 841
  45. #define HISTORICO 842
  46. #define RECEBIDAS 843
  47. #define EFETUADAS 844
  48. #define COMPRAR 845
  49. #define VENDER 846
  50. #define LIMPAR 847
  51. #define AJUDA 848
  52. #define CLICK 849
  53. #define SMS 850
  54.  
  55. #define BRANCO 0xFFFFFFFF
  56. #define CINZA 0xD6D6D6FF
  57. #define VERMELHO 0xFF0000FF
  58. #define AMARELO 0xF7E200FF
  59. #define LARANJA 0xE89200FF
  60.  
  61. public OnFilterScriptInit()
  62. {
  63.     print("---------------------------------------");
  64.     print("Sistema de Telefone criado por Shadoww5");
  65.     print("       CARREGADO COM SUCESSO !");
  66.     print("     Contato: http://bit.ly/iT6xEw");
  67.     print("---------------------------------------");
  68.     CreateObject(1216, LOCALX, LOCALY, LOCALZ, 0.0, 0.0, 0.0);
  69.     for(new i = 0; i < MAX_PLAYERS; i ++) { OnPlayerConnect(i); }
  70.     if(!fexist("Telefones.txt")) { dini_Create("Telefones.txt"); }
  71.     SetTimer("Msgs",420000, true);
  72.     Sistema = true;
  73.     return 1;
  74. }
  75.  
  76. public OnFilterScriptExit()
  77. {
  78.     print("---------------------------------------");
  79.     print("Sistema de Telefone criado por Shadoww5");
  80.     print("      DESCARREGADO COM SUCESSO !");
  81.     print("    Contato: http://bit.ly/iT6xEw");
  82.     print("---------------------------------------");
  83.     for(new i = 0; i < MAX_PLAYERS; i ++) { OnPlayerDisconnect(i, 1); }
  84.     return 1;
  85. }
  86.  
  87. public OnPlayerConnect(playerid)
  88. {
  89.     new nome[MAX_PLAYER_NAME];
  90.     SendClientMessage(playerid,LARANJA,"Este servidor usa o FilterScript de Telefone criado por Shadoww5.");
  91.     SendClientMessage(playerid,BRANCO,"Para falar com {F7E200}Shadoww5{FFFFFF}, acesse: http://bit.ly/iT6xEw");
  92.     GetPlayerName(playerid, nome, sizeof nome);
  93.     format(str, sizeof str, "%s", nome);
  94.     if(dini_Isset("Telefones.txt", str))
  95.     {
  96.         if(dini_Int("Telefones.txt", str) != 0)
  97.         {
  98.             Telefone[playerid] = true;
  99.             NumTel[playerid] = dini_Int("Telefones.txt", str);
  100.         }
  101.         else { Telefone[playerid] = false; }
  102.     }
  103.     else { Telefone[playerid] = false; }
  104.     SetPVarInt(playerid, "Recebido", 1);
  105.     SetPVarInt(playerid, "Enviado", 1);
  106.     SetPVarInt(playerid, "Recebida", 1);
  107.     SetPVarInt(playerid, "Efetuada", 1);
  108.     SetPVarInt(playerid, "Telefone", 1);
  109.     SetPVarInt(playerid, "Vivavoz", 0);
  110.     return 1;
  111. }
  112.  
  113. public OnPlayerDisconnect(playerid, reason)
  114. {
  115.     new nome[MAX_PLAYER_NAME];
  116.     GetPlayerName(playerid, nome, sizeof nome);
  117.     format(str, sizeof str, "%s", nome);
  118.     if(Telefone[playerid] == false) { dini_IntSet("Telefones.txt", str, 0); }
  119.     else { dini_IntSet("Telefones.txt", str, NumTel[playerid]); }
  120.     return 1;
  121. }
  122.  
  123. CMD:ativar(playerid, params[])
  124. {
  125.     #pragma unused params
  126.     if(!IsPlayerAdmin(playerid))
  127.         return SendClientMessage(playerid, VERMELHO, "Você não está logado na RCON.");
  128.     else if(Sistema == true)
  129.         return SendClientMessage(playerid, VERMELHO, "O sistema já está ativado.");
  130.     Sistema = true;
  131.     SendClientMessage(playerid, AMARELO, "O serviço de telefonia foi ativado novamente. Para desativá-lo digite /desativar.");
  132.     return 1;
  133. }
  134.  
  135. CMD:desativar(playerid, params[])
  136. {
  137.     #pragma unused params
  138.     if(!IsPlayerAdmin(playerid))
  139.         return SendClientMessage(playerid, VERMELHO, "Você não está logado na RCON.");
  140.     else if(Sistema == false)
  141.         return SendClientMessage(playerid, VERMELHO, "O sistema já está desativado.");
  142.     for(new i = 0; i < MAX_PLAYERS; i ++)
  143.     {
  144.         if(Telefonando[i] > 0)
  145.         {
  146.             SendClientMessage(i, AMARELO, "Sua chamada foi desligada, pois o serviço de telefonia foi desativado.");
  147.             Telefonando[i] = 0;
  148.         }
  149.     }
  150.     Sistema = false;
  151.     SendClientMessage(playerid, AMARELO, "O serviço de telefonia foi desativado temporariamente ! Para reativá-lo digite /ativar.");
  152.     return 1;
  153. }
  154.  
  155. CMD:trocartel(playerid, params[])
  156. {
  157.     new id, numero, nome[MAX_PLAYER_NAME], str2[10];
  158.     if(sscanf(params, "ud", id, numero))
  159.         return SendClientMessage(playerid, CINZA, "USO: /trocartel [nome do jogador / id] [numero]");
  160.     else if(!IsPlayerAdmin(playerid))
  161.         return SendClientMessage(playerid, VERMELHO, "Você não está logado na RCON.");
  162.     else if(!IsPlayerConnected(playerid))
  163.         return SendClientMessage(playerid, VERMELHO, "Jogador OFFLINE.");
  164.     else if(Telefone[id] == false)
  165.         return SendClientMessage(playerid, VERMELHO, "Este jogador não tem telefone.");
  166.     GetPlayerName(id, nome, sizeof nome);
  167.     format(str, sizeof str, "%d", numero);
  168.     if(dini_Isset("Telefones.txt", str))
  169.         return SendClientMessage(playerid, VERMELHO, "Este numero de telefone já está sendo usado por outro usuário !");
  170.     else if(strlen(str) != 5)
  171.         return SendClientMessage(playerid, VERMELHO, "O numero de telefone deve conter exatamente 5 algarismos !");
  172.     format(str, sizeof str, "%d", NumTel[id]);
  173.     dini_Unset("Telefones.txt", str);
  174.     format(str, sizeof str, "%s", nome);
  175.     dini_IntSet("Telefones.txt", str, numero);
  176.     format(str2, sizeof str2, "%d", numero);
  177.     dini_Set("Telefones.txt", str2, str);
  178.     NumTel[id] = numero;
  179.     format(str, sizeof str, "Novo telefone do jogador %s: {07FC2C}%d.", nome, numero);
  180.     SendClientMessage(playerid, LARANJA, str);
  181.     format(str, sizeof str, "Seu telefone foi trocado por um administrador ! Seu novo numero é: {07FC2C}%d.", numero);
  182.     SendClientMessage(id, LARANJA, str);
  183.     return 1;
  184. }
  185.  
  186. CMD:comprartel(playerid, params[])
  187. {
  188.     #pragma unused params
  189.     if(Telefone[playerid] == true)
  190.         return SendClientMessage(playerid, VERMELHO, "Você já tem um telefone.");
  191.     else if(GetPlayerMoney(playerid) < 500)
  192.         return SendClientMessage(playerid, VERMELHO, "Você deve ter, no minimo, 500 $ para comprar um celular.");
  193.     ShowPlayerDialog(playerid, COMPRAR, DIALOG_STYLE_MSGBOX, "Telefone:", "Você tem certeza que deseja comprar um celular no valor de 500 $ ?", "Sim", "Não");
  194.     return 1;
  195. }
  196.  
  197. CMD:vendertel(playerid, params[])
  198. {
  199.     #pragma unused params
  200.     if(Telefone[playerid] == false)
  201.         return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone.");
  202.     ShowPlayerDialog(playerid, VENDER, DIALOG_STYLE_MSGBOX, "Telefone:", "Você tem certeza que deseja vender seu celular ?", "Sim", "Não");
  203.     return 1;
  204. }
  205.  
  206. CMD:ligar(playerid, params[])
  207. {
  208.     new numero, found, nome[MAX_PLAYER_NAME], nome2[MAX_PLAYER_NAME];
  209.     if(sscanf(params, "d", numero))
  210.         return SendClientMessage(playerid, CINZA, "USO: /ligar [numero]");
  211.     else if(Telefone[playerid] == false)
  212.         return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone. Para comprar digite /comprartel.");
  213.     else if(Sistema == false)
  214.         return SendClientMessage(playerid, VERMELHO, "O serviço de telefonia está temporariamente fora do ar. Tente novamente mais tarde.");
  215.     else if(GetPVarInt(playerid, "Telefone") == 0)
  216.         return SendClientMessage(playerid, VERMELHO, "O seu telefone está desligado. Para ligá-lo digite /ligarcel.");
  217.     else if(GetPlayerMoney(playerid) < 100)
  218.         return SendClientMessage(playerid, VERMELHO, "Você deve ter, no minimo, 100 $ para fazer uma ligação.");
  219.     else if(IsPlayerInRangeOfPoint(playerid, 3, LOCALX, LOCALY, LOCALZ) || Telefone[playerid] == true)
  220.     {
  221.         if(numero > 99999 || numero < 10000)
  222.             return SendClientMessage(playerid, VERMELHO, "No momento não há ninguem com este numero de telefone.");
  223.         else if(numero == NumTel[playerid])
  224.             return SendClientMessage(playerid, VERMELHO, "Você não pode ligar para você mesmo.");
  225.         else if(Telefonando[playerid] != 0)
  226.             return SendClientMessage(playerid, VERMELHO, "Você já está em uma ligação. Para desligar digite /desligar.");
  227.         for(new i = 0; i < MAX_PLAYERS; i ++)
  228.         {
  229.             if(NumTel[i] == numero)
  230.             {
  231.                 if(GetPVarInt(i, "Telefone") == 0)
  232.                     return SendClientMessage(playerid, VERMELHO, "O telefone deste jogador está desligado.");
  233.                 else if(Telefonando[i] != 0)
  234.                     return SendClientMessage(playerid, VERMELHO, "O telefone está ocupado. Ligue mais tarde !");
  235.                 GetPlayerName(playerid, nome, sizeof nome);
  236.                 GetPlayerName(i, nome2, sizeof nome2);
  237.                 format(str, sizeof str, "%s está telefonando para %s.", nome, nome2);
  238.                 ProxDetector(10, playerid, str, CINZA, CINZA, CINZA, CINZA, CINZA);
  239.                 format(str, sizeof str, "Você está ligando para %s. Aguarde ...", nome2);
  240.                 SendClientMessage(playerid, AMARELO, str);
  241.                 format(str,sizeof str, "%s está te ligando. Digite /atender ou /desligar.", nome);
  242.                 SendClientMessage(i, AMARELO, str);
  243.                 Telefonando[playerid] = 1;
  244.                 Telefonando[i] = 2;
  245.                 SetPVarInt(i, "Contando", 4);
  246.                 Timer[i] = SetTimerEx("Desligar", 15000, true, "i", i);
  247.                 Jogador[playerid] = i;
  248.                 Jogador[i] = playerid;
  249.                 found++;
  250.             }
  251.         }
  252.         if(found == 0)
  253.             return SendClientMessage(playerid, VERMELHO, "No momento não há ninguem com este numero de telefone.");
  254.     }
  255.     else { SendClientMessage(playerid, VERMELHO, "Você não está em um orelhão ou não tem um celular."); }
  256.     return 1;
  257. }
  258.  
  259. CMD:sms(playerid, params[])
  260. {
  261.     new numero, texto[128], str2[15], nome[MAX_PLAYER_NAME], nome2[MAX_PLAYER_NAME], h, m, s, found;
  262.     if(sscanf(params, "ds[128]", numero, texto))
  263.         return SendClientMessage(playerid, CINZA, "USO: /sms [numero] [mensagem]");
  264.     else if(Sistema == false)
  265.         return SendClientMessage(playerid, VERMELHO, "O serviço de telefonia está temporariamente fora do ar. Tente novamente mais tarde.");
  266.     else if(GetPVarInt(playerid, "Telefone") == 0)
  267.         return SendClientMessage(playerid, VERMELHO, "O seu telefone está desligado. Para ligá-lo digite /ligarcel.");
  268.     else if(GetPlayerMoney(playerid) < 50)
  269.         return SendClientMessage(playerid, VERMELHO, "Você deve ter, no minimo, 50 $ para mandar um SMS.");
  270.     else if(Telefone[playerid] == false)
  271.         return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone. Digite /comprartel.");
  272.     else if(numero > 99999 || numero < 10000)
  273.         return SendClientMessage(playerid, VERMELHO, "No momento, não há ninguem com este numero de telefone.");
  274.     else if(numero == NumTel[playerid])
  275.         return SendClientMessage(playerid, VERMELHO, "Você não mandar um SMS para você mesmo.");
  276.     for(new i = 0; i < MAX_PLAYERS; i ++)
  277.     {
  278.         if(NumTel[i] == numero)
  279.         {
  280.             if(GetPVarInt(i, "Telefone") == 0)
  281.                 return SendClientMessage(playerid, VERMELHO, "O telefone deste jogador está desligado.");
  282.             else if(strlen(texto) > 100)
  283.                 return SendClientMessage(playerid, VERMELHO, "O SMS não pode ser enviado pois excedeu o limite de caracteres.");
  284.             GetPlayerName(playerid, nome, sizeof nome);
  285.             GetPlayerName(i, nome2, sizeof nome2);
  286.             format(str, sizeof str, "SMS enviado para %s [ID %d]: %s.", nome2, i, texto);
  287.             SendClientMessage(playerid, AMARELO, str);
  288.             format(str, sizeof str, "SMS recebido de %s [ID %d]: %s.", nome, playerid, texto);
  289.             SendClientMessage(i, AMARELO, str);
  290.             gettime(h, m, s);
  291.             if(GetPVarInt(playerid, "Enviado") <= 10)
  292.             {
  293.                 format(str, sizeof str, "SMS enviado para %s [Tel: %d]: %s às %02d:%02d:%02d", nome2, NumTel[i], texto, h, m, s);
  294.                 format(str2, sizeof str2, "Enviado%d", GetPVarInt(playerid, "Enviado"));
  295.                 SetPVarString(playerid, str2, str);
  296.                 SetPVarInt(playerid, "Enviado", GetPVarInt(playerid, "Enviado")+1);
  297.             }
  298.             else { SendClientMessage(playerid, LARANJA, "Este SMS não pôde ser salvo, pois sua caixa de saída está cheia. Digite /limpar e selecione \"SMS - Caixa de saída\"."); }
  299.             if(GetPVarInt(i, "Recebido") <= 10)
  300.             {
  301.                 format(str, sizeof str, "SMS recebido de %s [Tel: %d]: %s às %02d:%02d:%02d", nome, NumTel[playerid], texto, h, m, s);
  302.                 format(str2, sizeof str2, "Recebido%d", GetPVarInt(i, "Recebido"));
  303.                 SetPVarString(i, str2, str);
  304.                 SetPVarInt(i, "Recebido", GetPVarInt(i, "Recebido")+1);
  305.             }
  306.             else { SendClientMessage(i, LARANJA, "Este SMS não pôde ser salvo, pois sua caixa de entrada está cheia. Digite /limpar e selecione \"SMS - Caixa de Entrada\"."); }
  307.             if(strlen(texto) < 50) { GivePlayerMoney(playerid, -25); }
  308.             else { GivePlayerMoney(playerid, -50); }
  309.             found++;
  310.         }
  311.     }
  312.     if(found == 0)
  313.         return SendClientMessage(playerid, VERMELHO, "No momento, não há ninguem com este numero de telefone.");
  314.     return 1;
  315. }
  316.  
  317. CMD:historico(playerid, params[])
  318. {
  319.     #pragma unused params
  320.     if(Telefone[playerid] == false)
  321.         return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone.");
  322.     ShowPlayerDialog(playerid, HISTORICO, DIALOG_STYLE_LIST, "Historico do Telefone:", "Ligações Efetuadas\nLigações Recebidas\nSMS - Caixa de entrada\nSMS - Caixa de saída", "Selecionar", "Fechar");
  323.     return 1;
  324. }
  325.  
  326. CMD:limpar(playerid, params[])
  327. {
  328.     #pragma unused params
  329.     if(Telefone[playerid] == false)
  330.         return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone.");
  331.     ShowPlayerDialog(playerid, LIMPAR, DIALOG_STYLE_LIST, "Qual historico você deseja limpar ?", "Ligações Efetuadas\nLigações Recebidas\nSMS - Caixa de entrada\nSMS - Caixa de saída", "Selecionar", "Fechar");
  332.     return 1;
  333. }
  334.  
  335. CMD:desligarcel(playerid, params[])
  336. {
  337.     #pragma unused params
  338.     if(Telefone[playerid] == false)
  339.         return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone.");
  340.     else if(GetPVarInt(playerid, "Telefone") == 0)
  341.         return SendClientMessage(playerid, VERMELHO, "Seu telefone já está desligado.");
  342.     SendClientMessage(playerid, LARANJA, "Telefone desligado !");
  343.     SetPVarInt(playerid, "Telefone", 0);
  344.     return 1;
  345. }
  346.  
  347. CMD:ligarcel(playerid, params[])
  348. {
  349.     #pragma unused params
  350.     if(Telefone[playerid] == false)
  351.         return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone.");
  352.     else if(GetPVarInt(playerid, "Telefone") == 1)
  353.         return SendClientMessage(playerid, VERMELHO, "Seu telefone já está ligado.");
  354.     SendClientMessage(playerid, LARANJA, "Telefone ligado !");
  355.     SetPVarInt(playerid, "Telefone", 1);
  356.     return 1;
  357. }
  358.  
  359. CMD:numero(playerid, params[])
  360. {
  361.     new id, nome[MAX_PLAYER_NAME];
  362.     if(sscanf(params, "u", id))
  363.         return SendClientMessage(playerid, CINZA, "USO: /numero [nome do jogador / id]");
  364.     else if(!IsPlayerConnected(id))
  365.         return SendClientMessage(playerid, VERMELHO, "Jogador OFFLINE.");
  366.     else if(id == playerid)
  367.         return SendClientMessage(playerid, LARANJA, "Para ver o seu numero digite /telefone.");
  368.     else if(Telefone[id] == false)
  369.         return SendClientMessage(playerid, VERMELHO, "O jogador não tem um celular.");
  370.     GetPlayerName(id, nome, sizeof nome);
  371.     format(str, sizeof str, "O telefone do jogador %s [ID %d] é: {07FC2C}%d.", nome, id, NumTel[id]);
  372.     SendClientMessage(playerid, LARANJA, str);
  373.     return 1;
  374. }
  375.  
  376. CMD:telefone(playerid, params[])
  377. {
  378.     #pragma unused params
  379.     if(Telefone[playerid] == false)
  380.         return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone.");
  381.     format(str, sizeof str, "[INFO] Seu telefone é: {07FC2C}%d.", NumTel[playerid]);
  382.     SendClientMessage(playerid, LARANJA, str);
  383.     return 1;
  384. }
  385.  
  386. CMD:vivavoz(playerid, params[])
  387. {
  388.     if(Telefone[playerid] == false)
  389.         return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone. Digite /comprartel.");
  390.     else if(Telefonando[playerid] == 0)
  391.         return SendClientMessage(playerid, VERMELHO, "Ninguém te ligou até o momento.");
  392.     else if(Telefonando[playerid] == 1)
  393.         return SendClientMessage(playerid, VERMELHO, "Aguarde até que a chamada seja atendida para ligar o vivavoz.");
  394.     else if(Telefonando[playerid] == 2)
  395.         return SendClientMessage(playerid, VERMELHO, "Você não pode usar o vivavoz, pois ainda não atendeu a chamada. Digite /atender.");
  396.     else if(GetPVarInt(playerid, "Vivavoz") == 1)
  397.     {
  398.         SetPVarInt(playerid, "Vivavoz", 0);
  399.         SendClientMessage(playerid, AMARELO, "Vivavoz desativado.");
  400.     }
  401.     else
  402.     {
  403.         SetPVarInt(playerid, "Vivavoz", 1);
  404.         SendClientMessage(playerid, AMARELO, "Vivavoz ativado.");
  405.     }
  406.     return 1;
  407. }
  408.  
  409. CMD:atender(playerid, params[])
  410. {
  411.     #pragma unused params
  412.     new nome[MAX_PLAYER_NAME];
  413.     if(Telefonando[playerid] == 0)
  414.         return SendClientMessage(playerid, VERMELHO, "Ninguém te ligou até o momento.");
  415.     else if(Telefonando[playerid] == 1)
  416.         return SendClientMessage(playerid, VERMELHO, "Você foi quem realizou a chamada e por isso não pode atendê-la.");
  417.     else if(Telefonando[playerid] == 3 || Telefonando[playerid] == 4)
  418.         return SendClientMessage(playerid, VERMELHO, "Você já atendeu a ligação. Para desligar digite /desligar.");
  419.     else if(Telefonando[playerid] == 2)
  420.     {
  421.         GetPlayerName(playerid, nome, sizeof nome);
  422.         format(str, sizeof str, "%s atendeu a chamada.", nome);
  423.         ProxDetector(10, playerid, str, CINZA, CINZA, CINZA, CINZA, CINZA);
  424.         Telefonando[playerid] = 4;
  425.         Telefonando[Jogador[playerid]] = 3;
  426.         SendClientMessage(playerid, AMARELO, "Você atendeu a chamada.");
  427.         SendClientMessage(Jogador[playerid], AMARELO, "Sua chamada foi atendida.");
  428.         SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USECELLPHONE);
  429.         SetPlayerSpecialAction(Jogador[playerid], SPECIAL_ACTION_USECELLPHONE);
  430.         KillTimer(Timer[playerid]);
  431.         SetPVarInt(playerid, "Tempo", GetTickCount());
  432.         SetPVarInt(Jogador[playerid], "Tempo", GetTickCount());
  433.     }
  434.     return 1;
  435. }
  436.  
  437. CMD:desligar(playerid, params[])
  438. {
  439.     #pragma unused params
  440.     new nome[MAX_PLAYER_NAME], nome2[MAX_PLAYER_NAME], h, m, s, time, str2[15];
  441.     if(Telefonando[playerid] == 0)
  442.         return SendClientMessage(playerid, VERMELHO, "Ninguém te ligou até o momento.");
  443.     else if(Telefonando[playerid] == 1)
  444.     {
  445.         SendClientMessage(playerid, LARANJA, "Você cancelou a chamada.");
  446.         SendClientMessage(Jogador[playerid], LARANJA, "A chamada foi cancelada.");
  447.         Telefonando[playerid] = 0;
  448.         Telefonando[Jogador[playerid]] = 0;
  449.     }
  450.     else if(Telefonando[playerid] == 2)
  451.     {
  452.         SendClientMessage(playerid, LARANJA, "Você recusou a chamada.");
  453.         Telefonando[playerid] = 0;
  454.         Telefonando[Jogador[playerid]] = 0;
  455.         KillTimer(Timer[playerid]);
  456.         SendClientMessage(Jogador[playerid], LARANJA, "Sua chamada foi recusada.");
  457.     }
  458.     else if(Telefonando[playerid] == 3)
  459.     {
  460.         GetPlayerName(playerid, nome, sizeof nome);
  461.         GetPlayerName(Jogador[playerid], nome2, sizeof nome2);
  462.         format(str, sizeof str, "%s desligou a chamada.",nome);
  463.         ProxDetector(10, playerid, str, CINZA, CINZA, CINZA, CINZA, CINZA);
  464.         SendClientMessage(Jogador[playerid], AMARELO, str);
  465.         Telefonando[playerid] = 0;
  466.         Telefonando[Jogador[playerid]] = 0;
  467.         SetPlayerSpecialAction(playerid, SPECIAL_ACTION_STOPUSECELLPHONE);
  468.         SetPlayerSpecialAction(Jogador[playerid], SPECIAL_ACTION_STOPUSECELLPHONE);
  469.         time = GetTickCount() - GetPVarInt(playerid, "Tempo");
  470.         gettime(h, m, s);
  471.         if(time >= 0 && time < 30000)
  472.         {
  473.             GivePlayerMoney(playerid, -25);
  474.             GameTextForPlayer(playerid, "~w~CUSTO DA LIGACAO: ~r~25 $", 2000, 1);
  475.         }
  476.         else if(time >= 30000 && time < 60000)
  477.         {
  478.             GivePlayerMoney(playerid, -50);
  479.             GameTextForPlayer(playerid, "~w~CUSTO DA LIGACAO: ~r~50 $", 2000, 1);
  480.         }
  481.         else if(time >= 60000)
  482.         {
  483.             GivePlayerMoney(playerid, -100);
  484.             GameTextForPlayer(playerid, "~w~CUSTO DA LIGACAO: ~r~100 $", 2000, 1);
  485.         }
  486.         if(GetPVarInt(playerid, "Efetuada") <= 10)
  487.         {
  488.             format(str, sizeof str, "Ligação efetuada para %s [Tel: %d] às %02d:%02d:%02d", nome2, NumTel[Jogador[playerid]], h, m, s);
  489.             format(str2, sizeof str2, "Efetuada%d", GetPVarInt(playerid, "Efetuada"));
  490.             SetPVarString(playerid, str2, str);
  491.             SetPVarInt(playerid, "Efetuada", GetPVarInt(playerid, "Efetuada")+1);
  492.         }
  493.         else { SendClientMessage(playerid, LARANJA, "Esta ligação não pôde ser salva, pois o seu historico de ligações efetuadas atingiu o limite. Digite /limpar e selecione \"Ligações efetuadas\"."); }
  494.         if(GetPVarInt(Jogador[playerid], "Recebida") <= 10)
  495.         {
  496.             format(str, sizeof str, "Ligação recebida de %s [Tel: %d] às %02d:%02d:%02d", nome, NumTel[playerid], h, m, s);
  497.             format(str2, sizeof str2, "Recebida%d", GetPVarInt(Jogador[playerid], "Recebida"));
  498.             SetPVarString(Jogador[playerid], str2, str);
  499.             SetPVarInt(Jogador[playerid], "Recebida", GetPVarInt(Jogador[playerid], "Recebida")+1);
  500.         }
  501.         else { SendClientMessage(Jogador[playerid], LARANJA, "Esta ligação não pôde ser salva, pois o seu historico de ligações recebidas atingiu o limite. Digite /limpar e selecione \"Ligações recebidas\"."); }
  502.     }
  503.     else if(Telefonando[playerid] == 4)
  504.     {
  505.         GetPlayerName(playerid, nome, sizeof nome);
  506.         GetPlayerName(Jogador[playerid], nome2, sizeof nome2);
  507.         format(str, sizeof str, "%s desligou a chamada.",nome);
  508.         ProxDetector(10, playerid, str, CINZA, CINZA, CINZA, CINZA, CINZA);
  509.         SendClientMessage(Jogador[playerid], AMARELO, str);
  510.         Telefonando[playerid] = 0;
  511.         Telefonando[Jogador[playerid]] = 0;
  512.         SetPlayerSpecialAction(playerid, SPECIAL_ACTION_STOPUSECELLPHONE);
  513.         SetPlayerSpecialAction(Jogador[playerid], SPECIAL_ACTION_STOPUSECELLPHONE);
  514.         time = GetTickCount() - GetPVarInt(playerid, "Tempo");
  515.         gettime(h, m, s);
  516.         if(time >= 0 && time < 30000)
  517.         {
  518.             GivePlayerMoney(Jogador[playerid], -25);
  519.             GameTextForPlayer(Jogador[playerid], "~w~CUSTO DA LIGACAO: ~r~25 $", 2000, 1);
  520.         }
  521.         else if(time >= 30000 && time < 60000)
  522.         {
  523.             GivePlayerMoney(Jogador[playerid], -50);
  524.             GameTextForPlayer(Jogador[playerid], "~w~CUSTO DA LIGACAO: ~r~50 $", 2000, 1);
  525.         }
  526.         else if(time >= 60000)
  527.         {
  528.             GivePlayerMoney(Jogador[playerid], -100);
  529.             GameTextForPlayer(Jogador[playerid], "~w~CUSTO DA LIGACAO: ~r~100 $", 2000, 1);
  530.         }
  531.         if(GetPVarInt(Jogador[playerid], "Efetuada") <= 10)
  532.         {
  533.             format(str, sizeof str, "Ligação efetuada para %s [Tel: %d] às %02d:%02d:%02d", nome, NumTel[playerid], h, m, s);
  534.             format(str2, sizeof str2, "Efetuada%d", GetPVarInt(Jogador[playerid], "Efetuada"));
  535.             SetPVarString(Jogador[playerid], str2, str);
  536.             SetPVarInt(Jogador[playerid], "Efetuada", GetPVarInt(Jogador[playerid], "Efetuada")+1);
  537.         }
  538.         else { SendClientMessage(Jogador[playerid], LARANJA, "Esta ligação não pôde ser salva, pois o seu historico de ligações efetuadas atingiu o limite. Digite /limpar e selecione \"Ligações efetuadas\"."); }
  539.         if(GetPVarInt(playerid, "Recebida") <= 10)
  540.         {
  541.             format(str, sizeof str, "Ligação recebida de %s [Tel: %d] às %02d:%02d:%02d", nome2, NumTel[Jogador[playerid]], h, m, s);
  542.             format(str2, sizeof str2, "Recebida%d", GetPVarInt(playerid, "Recebida"));
  543.             SetPVarString(playerid, str2, str);
  544.             SetPVarInt(playerid, "Recebida", GetPVarInt(playerid, "Recebida")+1);
  545.         }
  546.         else { SendClientMessage(playerid, LARANJA, "Esta ligação não pôde ser salva, pois o seu historico de ligações recebidas atingiu o limite. Digite /limpar e selecione \"Ligações recebidas\"."); }
  547.     }
  548.     return 1;
  549. }
  550.  
  551. CMD:ajudatelefone(playerid, params[])
  552. {
  553.     #pragma unused params
  554.     new sString[1220];
  555.     strcat(sString, "\t- /comprartel: Serve para comprar um telefone, caso você ainda não tenha.");
  556.     strcat(sString, "\n\t- /vendertel: Serve vender seu telefone.");
  557.     strcat(sString, "\n\t- /ligar: Serve para telefonar para alguém.");
  558.     strcat(sString, "\n\t- /sms: Serve para mandar um SMS para algum jogador.");
  559.     strcat(sString, "\n\t- /ligarcel: Serve para ligar seu celular.");
  560.     strcat(sString, "\n\t- /desligarcel: Serve para desligar seu celular.");
  561.     strcat(sString, "\n\t- /trocartel: Serve para trocar o numero de telefone de algum jogador ONLINE. ESTE COMANDO SÓ PODER SER USADO POR ADMINS !");
  562.     strcat(sString, "\n\t- /ativar: Serve para ativar o sistema de telefonia. ESTE COMANDO SÓ PODER SER USADO POR ADMINS !");
  563.     strcat(sString, "\n\t- /desativar: Serve para desativar o sistema de telefonia. ESTE COMANDO SÓ PODER SER USADO POR ADMINS !");
  564.     strcat(sString, "\n\t- /vivavoz: Serve para ativar o vivavoz. Desta forma, quem estiver proximo ao jogador poderá \'escutar\' a ligação.");
  565.     strcat(sString, "\n\t- /atender: Serve para atender uma ligação.");
  566.     strcat(sString, "\n\t- /desligar: Serve para desligar uma ligação.");
  567.     strcat(sString, "\n\t- /numero: Serve para descobrir o telefone de algum jogador que esteja online.");
  568.     strcat(sString, "\n\t- /telefone: Serve para ver o seu proprio numero de telefone.");
  569.     strcat(sString, "\n\nOBS¹: Caso você não tenha um telefone celular vá ao orelhão mais proximo e digite /ligar para realizar uma ligação.");
  570.     strcat(sString, "\nOBS²: Você também pode ligar ou mandar SMS clicando em um jogador na score board (aperte TAB e clique em alguem).");
  571.     ShowPlayerDialog(playerid, AJUDA, DIALOG_STYLE_MSGBOX, "Sistema de Telefone criado por Shadoww5 !", sString, "OK", "");
  572.     return 1;
  573. }
  574.  
  575. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  576. {
  577.     if(dialogid == COMPRAR)
  578.     {
  579.         if(response == 1)
  580.         {
  581.             new Float:Pos[3];
  582.             GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  583.             PlayerPlaySound(playerid, 1054, Pos[0], Pos[1], Pos[2]);
  584.             Tel(playerid);
  585.             GivePlayerMoney(playerid,-500);
  586.             format(str, sizeof str, "Você comprou um celular e seu número é: {07FC2C}%d {E89200}! Para saber os comandos digite /ajudatelefone.", NumTel[playerid]);
  587.             SendClientMessage(playerid, LARANJA, str);
  588.             SendClientMessage(playerid, BRANCO, "FilterScript criado por {F7E200}Shadoww5.");
  589.             Telefone[playerid] = true;
  590.         }
  591.         else { SendClientMessage(playerid, AMARELO,"Você cancelou a compra de um celular."); }
  592.     }
  593.     if(dialogid == VENDER)
  594.     {
  595.         if(response == 1)
  596.         {
  597.             new nome[MAX_PLAYER_NAME];
  598.             GetPlayerName(playerid, nome, sizeof nome);
  599.             format(str, sizeof str, "%s", nome);
  600.             dini_Unset("Telefones.txt", str);
  601.             format(str, sizeof str, "%d", NumTel[playerid]);
  602.             dini_Unset("Telefones.txt", str);
  603.             GivePlayerMoney(playerid, 150);
  604.             SendClientMessage(playerid, LARANJA, "Você vendeu seu celular por 150 $ !");
  605.             SendClientMessage(playerid, BRANCO, "FilterScript criado por {F7E200}Shadoww5.");
  606.             Telefone[playerid] = false;
  607.         }
  608.         else { SendClientMessage(playerid, AMARELO,"Você cancelou a venda do seu celular."); }
  609.     }
  610.     if(dialogid == CLICK)
  611.     {
  612.         if(response == 1)
  613.         {
  614.             if(listitem == 0)
  615.             {
  616.                 new nome[MAX_PLAYER_NAME], nome2[MAX_PLAYER_NAME];
  617.                 if(Telefone[playerid] == false)
  618.                     return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone. Digite /comprartel.");
  619.                 else if(Sistema == false)
  620.                     return SendClientMessage(playerid, VERMELHO, "O serviço de telefonia está temporariamente fora do ar. Tente novamente mais tarde.");
  621.                 else if(GetPVarInt(playerid, "Telefone") == 0)
  622.                     return SendClientMessage(playerid, VERMELHO, "O seu telefone está desligado. Para ligá-lo digite /ligarcel.");
  623.                 else if(Telefone[Jogador[playerid]] == false)
  624.                     return SendClientMessage(playerid, VERMELHO, "Este jogador não tem telefone.");
  625.                 else if(Telefonando[playerid] > 0)
  626.                     return SendClientMessage(playerid, LARANJA, "Você já está em uma ligação. Digite /desligar.");
  627.                 else if(Telefonando[Jogador[playerid]] != 0)
  628.                     return SendClientMessage(playerid, LARANJA, "O telefone está ocupado. Ligue mais tarde !");
  629.                 else if(GetPlayerMoney(playerid) < 100)
  630.                     return SendClientMessage(playerid, VERMELHO, "Você deve ter, no minimo, 100 $ para fazer uma ligação.");
  631.                 else if(GetPVarInt(Jogador[playerid], "Telefone") == 0)
  632.                     return SendClientMessage(playerid, VERMELHO, "O telefone deste jogador está desligado.");
  633.                 GetPlayerName(playerid, nome, sizeof nome);
  634.                 GetPlayerName(Jogador[playerid], nome2, sizeof nome2);
  635.                 format(str, sizeof str, "%s está telefonando para %s.", nome, nome2);
  636.                 ProxDetector(10, playerid, str, CINZA, CINZA, CINZA, CINZA, CINZA);
  637.                 format(str, sizeof str, "Você está ligando para %s. Aguarde ...", nome2);
  638.                 SendClientMessage(playerid, AMARELO, str);
  639.                 format(str,sizeof str, "%s está te ligando. Digite /atender ou /desligar.", nome2);
  640.                 SendClientMessage(Jogador[playerid], AMARELO, str);
  641.                 Telefonando[playerid] = 1;
  642.                 Telefonando[Jogador[playerid]] = 2;
  643.                 SetPVarInt(Jogador[playerid], "Contando", 4);
  644.                 Timer[Jogador[playerid]] = SetTimerEx("Desligar", 15000, true, "i", Jogador[playerid]);
  645.                 Jogador[Jogador[playerid]] = playerid;
  646.             }
  647.             else if(listitem == 1)
  648.             {
  649.                 if(Telefone[playerid] == false)
  650.                     return SendClientMessage(playerid, VERMELHO, "Você não tem um telefone. Digite /comprartel.");
  651.                 else if(Telefone[Jogador[playerid]] == false)
  652.                     return SendClientMessage(playerid, VERMELHO, "Este jogador não tem telefone.");
  653.                 else if(GetPlayerMoney(playerid) < 50)
  654.                     SendClientMessage(playerid, VERMELHO, "Você deve ter, no minimo, 50 $ para mandar um SMS.");
  655.                 else if(Jogador[playerid] == playerid)
  656.                     return SendClientMessage(playerid,AMARELO,"Você não mandar um SMS para você mesmo.");
  657.                 else if(GetPVarInt(playerid, "Telefone") == 0)
  658.                     return SendClientMessage(playerid, VERMELHO, "O seu telefone está desligado. Para ligá-lo digite /ligarcel.");
  659.                 else if(GetPVarInt(Jogador[playerid], "Telefone") == 0)
  660.                     return SendClientMessage(playerid, VERMELHO, "O telefone deste jogador está desligado.");
  661.                 ShowPlayerDialog(playerid, SMS, DIALOG_STYLE_INPUT, "SMS", "Digite abaixo a mensagem a ser enviada:", "Enviar", "Cancelar");
  662.             }
  663.         }
  664.         return 1;
  665.     }
  666.     if(dialogid == SMS)
  667.     {
  668.         if(response == 1)
  669.         {
  670.             new nome[MAX_PLAYER_NAME], nome2[MAX_PLAYER_NAME], str2[15], h, m, s;
  671.             if(!strlen(inputtext))
  672.                 return ShowPlayerDialog(playerid, SMS, DIALOG_STYLE_INPUT, "SMS", "Digite a mensagem a ser enviada:", "Enviar", "Cancelar");
  673.             if(strlen(inputtext) > 100)
  674.             {
  675.                 ShowPlayerDialog(playerid, SMS, DIALOG_STYLE_INPUT, "SMS", "Digite a mensagem a ser enviada:", "Enviar", "Cancelar");
  676.                 SendClientMessage(playerid, VERMELHO, "O SMS não pôde ser enviado pois excedeu o limite de caracteres.");
  677.             }
  678.             GetPlayerName(playerid, nome, sizeof nome);
  679.             GetPlayerName(Jogador[playerid], nome2, sizeof nome2);
  680.             format(str, sizeof str, "SMS enviado para %s [ID %d]: %s.", nome2, Jogador[playerid], inputtext);
  681.             SendClientMessage(playerid, AMARELO, str);
  682.             format(str, sizeof str, "SMS recebido de %s [ID %d]: %s.", nome, playerid, inputtext);
  683.             SendClientMessage(Jogador[playerid], AMARELO, str);
  684.             gettime(h, m, s);
  685.             if(GetPVarInt(playerid, "Enviado") <= 10)
  686.             {
  687.                 format(str, sizeof str, "SMS enviado para %s [Tel: %d]: %s às %02d:%02d:%02d", nome2, NumTel[Jogador[playerid]], inputtext, h, m, s);
  688.                 format(str2, sizeof str2, "Enviado%d", GetPVarInt(playerid, "Enviado"));
  689.                 SetPVarString(playerid, str2, str);
  690.                 SetPVarInt(playerid, "Enviado", GetPVarInt(playerid, "Enviado")+1);
  691.             }
  692.             else { SendClientMessage(playerid, LARANJA, "Este SMS não pôde ser salvo, pois sua caixa de saída está cheia. Digite /limpar e selecione \"SMS - Caixa de Entrada\"."); }
  693.             if(GetPVarInt(Jogador[playerid], "Recebido") <= 10)
  694.             {
  695.                 format(str, sizeof str, "SMS recebido de %s [Tel: %d]: %s às %02d:%02d:%02d", nome, NumTel[playerid], inputtext, h, m, s);
  696.                 format(str2, sizeof str2, "Recebido%d", GetPVarInt(Jogador[playerid], "Recebido"));
  697.                 SetPVarString(Jogador[playerid], str2, str);
  698.                 SetPVarInt(Jogador[playerid], "Recebido", GetPVarInt(Jogador[playerid], "Recebido")+1);
  699.             }
  700.             else { SendClientMessage(Jogador[playerid], LARANJA, "Este SMS não pôde ser salvo, pois sua caixa de entrada esá cheia. Digite /limpar e selecione \"SMS - Caixa de Entrada\"."); }
  701.             if(strlen(inputtext) < 50) { GivePlayerMoney(playerid, -25); }
  702.             else { GivePlayerMoney(playerid, -50); }
  703.         }
  704.         else { SendClientMessage(playerid, AMARELO, "Você cancelou o envio de SMS."); }
  705.     }
  706.     if(dialogid == HISTORICO)
  707.     {
  708.         if(response == 1)
  709.         {
  710.             if(listitem == 0) { ShowPlayerDialog(playerid, EFETUADAS, DIALOG_STYLE_LIST, "Ligações efetuadas:", "Ver ligação 1\nVer ligação 2\nVer ligação 3\nVer ligação 4\nVer ligação 5\nVer ligação 6\nVer ligação 7\nVer ligação 8\nVer ligação 9\nVer ligação 10", "Selecionar", "Voltar"); }
  711.             else if(listitem == 1) { ShowPlayerDialog(playerid, RECEBIDAS, DIALOG_STYLE_LIST, "Ligações recebidas:", "Ver ligação 1\nVer ligação 2\nVer ligação 3\nVer ligação 4\nVer ligação 5\nVer ligação 6\nVer ligação 7\nVer ligação 8\nVer ligação 9\nVer ligação 10", "Selecionar", "Voltar"); }
  712.             else if(listitem == 2) { ShowPlayerDialog(playerid, CAIXADEENTRADA, DIALOG_STYLE_LIST, "Caixa de entrada:", "Ler SMS 1\nLer SMS 2\nLer SMS 3\nLer SMS 4\nLer SMS 5\nLer SMS 6\nLer SMS 7\nLer SMS 8\nLer SMS 9\nLer SMS 10", "Selecionar", "Voltar"); }
  713.             else if(listitem == 3) { ShowPlayerDialog(playerid, CAIXADESAIDA, DIALOG_STYLE_LIST, "Caixa de saída:", "Ler SMS 1\nLer SMS 2\nLer SMS 3\nLer SMS 4\nLer SMS 5\nLer SMS 6\nLer SMS 7\nLer SMS 8\nLer SMS 9\nLer SMS 10", "Selecionar", "Voltar"); }
  714.         }
  715.     }
  716.     if(dialogid == LIMPAR)
  717.     {
  718.         if(response == 1)
  719.         {
  720.             if(listitem == 0)
  721.             {
  722.                 SendClientMessage(playerid, AMARELO, "Historico de ligações efetuadas LIMPO !");
  723.                 for(new i = 1; i < 11; i ++)
  724.                 {
  725.                     format(str, sizeof str, "Efetuada%d", i);
  726.                     SetPVarInt(playerid, "Efetuada", 1);
  727.                     DeletePVar(playerid, str);
  728.                 }
  729.             }
  730.             else if(listitem == 1)
  731.             {
  732.                 SendClientMessage(playerid, AMARELO, "Historico de ligações recebidas LIMPO !");
  733.                 for(new i = 1; i < 11; i ++)
  734.                 {
  735.                     format(str, sizeof str, "Recebida%d", i);
  736.                     SetPVarInt(playerid, "Recebida", 1);
  737.                     DeletePVar(playerid, str);
  738.                 }
  739.             }
  740.             else if(listitem == 2)
  741.             {
  742.                 SendClientMessage(playerid, AMARELO, "Caixa de entrada LIMPA !");
  743.                 for(new i = 1; i < 11; i ++)
  744.                 {
  745.                     format(str, sizeof str, "Recebido%d", i);
  746.                     SetPVarInt(playerid, "Recebido", 1);
  747.                     DeletePVar(playerid, str);
  748.                 }
  749.             }
  750.             else if(listitem == 3)
  751.             {
  752.                 SendClientMessage(playerid, AMARELO, "Caixa de saída LIMPA !");
  753.                 for(new i = 1; i < 11; i ++)
  754.                 {
  755.                     format(str, sizeof str, "Enviado%d", i);
  756.                     SetPVarInt(playerid, "Enviado", 1);
  757.                     DeletePVar(playerid, str);
  758.                 }
  759.             }
  760.         }
  761.     }
  762.     if(dialogid == EFETUADAS)
  763.     {
  764.         if(response == 1)
  765.         {
  766.             if(listitem == 0)
  767.             {
  768.                 if(GetPVarType(playerid, "Efetuada1") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 1.");
  769.                 GetPVarString(playerid, "Efetuada1", str, 150);
  770.                 SendClientMessage(playerid, LARANJA, str);
  771.             }
  772.             else if(listitem == 1)
  773.             {
  774.                 if(GetPVarType(playerid, "Efetuada2") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 2.");
  775.                 GetPVarString(playerid, "Efetuada2", str, 150);
  776.                 SendClientMessage(playerid, LARANJA, str);
  777.             }
  778.             else if(listitem == 2)
  779.             {
  780.                 if(GetPVarType(playerid, "Efetuada3") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 3.");
  781.                 GetPVarString(playerid, "Efetuada3", str, 150);
  782.                 SendClientMessage(playerid, LARANJA, str);
  783.             }
  784.             else if(listitem == 3)
  785.             {
  786.                 if(GetPVarType(playerid, "Efetuada4") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 4.");
  787.                 GetPVarString(playerid, "Efetuada4", str, 150);
  788.                 SendClientMessage(playerid, LARANJA, str);
  789.             }
  790.             else if(listitem == 4)
  791.             {
  792.                 if(GetPVarType(playerid, "Efetuada5") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 5.");
  793.                 GetPVarString(playerid, "Efetuada5", str, 150);
  794.                 SendClientMessage(playerid, LARANJA, str);
  795.             }
  796.             else if(listitem == 5)
  797.             {
  798.                 if(GetPVarType(playerid, "Efetuada6") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 6.");
  799.                 GetPVarString(playerid, "Efetuada6", str, 150);
  800.                 SendClientMessage(playerid, LARANJA, str);
  801.             }
  802.             else if(listitem == 6)
  803.             {
  804.                 if(GetPVarType(playerid, "Efetuada7") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 7.");
  805.                 GetPVarString(playerid, "Efetuada7", str, 150);
  806.                 SendClientMessage(playerid, LARANJA, str);
  807.             }
  808.             else if(listitem == 7)
  809.             {
  810.                 if(GetPVarType(playerid, "Efetuada8") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 8.");
  811.                 GetPVarString(playerid, "Efetuada8", str, 150);
  812.                 SendClientMessage(playerid, LARANJA, str);
  813.             }
  814.             else if(listitem == 8)
  815.             {
  816.                 if(GetPVarType(playerid, "Efetuada9") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 9.");
  817.                 GetPVarString(playerid, "Efetuada9", str, 150);
  818.                 SendClientMessage(playerid, LARANJA, str);
  819.             }
  820.             else if(listitem == 9)
  821.             {
  822.                 if(GetPVarType(playerid, "Efetuada10") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 10.");
  823.                 GetPVarString(playerid, "Efetuada10", str, 150);
  824.                 SendClientMessage(playerid, LARANJA, str);
  825.             }
  826.         }
  827.         else { ShowPlayerDialog(playerid, HISTORICO, DIALOG_STYLE_LIST, "Caixa de entrada:", "Ligações Efetuadas\nLigações Recebidas\nSMS - Caixa de entrada\nSMS - Caixa de saída", "Selecionar", "Fechar"); }
  828.     }
  829.     if(dialogid == RECEBIDAS)
  830.     {
  831.         if(response == 1)
  832.         {
  833.             if(listitem == 0)
  834.             {
  835.                 if(GetPVarType(playerid, "Recebida1") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 1.");
  836.                 GetPVarString(playerid, "Recebida1", str, 150);
  837.                 SendClientMessage(playerid, LARANJA, str);
  838.             }
  839.             else if(listitem == 1)
  840.             {
  841.                 if(GetPVarType(playerid, "Recebida2") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 2.");
  842.                 GetPVarString(playerid, "Recebida2", str, 150);
  843.                 SendClientMessage(playerid, LARANJA, str);
  844.             }
  845.             else if(listitem == 2)
  846.             {
  847.                 if(GetPVarType(playerid, "Recebida3") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 3.");
  848.                 GetPVarString(playerid, "Recebida3", str, 150);
  849.                 SendClientMessage(playerid, LARANJA, str);
  850.             }
  851.             else if(listitem == 3)
  852.             {
  853.                 if(GetPVarType(playerid, "Recebida4") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 4.");
  854.                 GetPVarString(playerid, "Recebida4", str, 150);
  855.                 SendClientMessage(playerid, LARANJA, str);
  856.             }
  857.             else if(listitem == 4)
  858.             {
  859.                 if(GetPVarType(playerid, "Recebida5") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 5.");
  860.                 GetPVarString(playerid, "Recebida5", str, 150);
  861.                 SendClientMessage(playerid, LARANJA, str);
  862.             }
  863.             else if(listitem == 5)
  864.             {
  865.                 if(GetPVarType(playerid, "Recebida6") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 6.");
  866.                 GetPVarString(playerid, "Recebida6", str, 150);
  867.                 SendClientMessage(playerid, LARANJA, str);
  868.             }
  869.             else if(listitem == 6)
  870.             {
  871.                 if(GetPVarType(playerid, "Recebida7") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 7.");
  872.                 GetPVarString(playerid, "Recebida7", str, 150);
  873.                 SendClientMessage(playerid, LARANJA, str);
  874.             }
  875.             else if(listitem == 7)
  876.             {
  877.                 if(GetPVarType(playerid, "Recebida8") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 8.");
  878.                 GetPVarString(playerid, "Recebida8", str, 150);
  879.                 SendClientMessage(playerid, LARANJA, str);
  880.             }
  881.             else if(listitem == 8)
  882.             {
  883.                 if(GetPVarType(playerid, "Recebida9") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 9.");
  884.                 GetPVarString(playerid, "Recebida9", str, 150);
  885.                 SendClientMessage(playerid, LARANJA, str);
  886.             }
  887.             else if(listitem == 9)
  888.             {
  889.                 if(GetPVarType(playerid, "Recebida10") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhuma ligação no slot 10.");
  890.                 GetPVarString(playerid, "Recebida10", str, 150);
  891.                 SendClientMessage(playerid, LARANJA, str);
  892.             }
  893.         }
  894.         else { ShowPlayerDialog(playerid, HISTORICO, DIALOG_STYLE_LIST, "Caixa de entrada:", "Ligações Efetuadas\nLigações Recebidas\nSMS - Caixa de entrada\nSMS - Caixa de saída", "Selecionar", "Fechar"); }
  895.     }
  896.     if(dialogid == CAIXADEENTRADA)
  897.     {
  898.         if(response == 1)
  899.         {
  900.             if(listitem == 0)
  901.             {
  902.                 if(GetPVarType(playerid, "Recebido1") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 1.");
  903.                 GetPVarString(playerid, "Recebido1", str, 150);
  904.                 SendClientMessage(playerid, LARANJA, str);
  905.             }
  906.             else if(listitem == 1)
  907.             {
  908.                 if(GetPVarType(playerid, "Recebido2") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 2.");
  909.                 GetPVarString(playerid, "Recebido2", str, 150);
  910.                 SendClientMessage(playerid, LARANJA, str);
  911.             }
  912.             else if(listitem == 2)
  913.             {
  914.                 if(GetPVarType(playerid, "Recebido3") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 3.");
  915.                 GetPVarString(playerid, "Recebido3", str, 150);
  916.                 SendClientMessage(playerid, LARANJA, str);
  917.             }
  918.             else if(listitem == 3)
  919.             {
  920.                 if(GetPVarType(playerid, "Recebido4") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 4.");
  921.                 GetPVarString(playerid, "Recebido4", str, 150);
  922.                 SendClientMessage(playerid, LARANJA, str);
  923.             }
  924.             else if(listitem == 4)
  925.             {
  926.                 if(GetPVarType(playerid, "Recebido5") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 5.");
  927.                 GetPVarString(playerid, "Recebido5", str, 150);
  928.                 SendClientMessage(playerid, LARANJA, str);
  929.             }
  930.             else if(listitem == 5)
  931.             {
  932.                 if(GetPVarType(playerid, "Recebido6") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 6.");
  933.                 GetPVarString(playerid, "Recebido6", str, 150);
  934.                 SendClientMessage(playerid, LARANJA, str);
  935.             }
  936.             else if(listitem == 6)
  937.             {
  938.                 if(GetPVarType(playerid, "Recebido7") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 7.");
  939.                 GetPVarString(playerid, "Recebido7", str, 150);
  940.                 SendClientMessage(playerid, LARANJA, str);
  941.             }
  942.             else if(listitem == 7)
  943.             {
  944.                 if(GetPVarType(playerid, "Recebido8") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 8.");
  945.                 GetPVarString(playerid, "Recebido8", str, 150);
  946.                 SendClientMessage(playerid, LARANJA, str);
  947.             }
  948.             else if(listitem == 8)
  949.             {
  950.                 if(GetPVarType(playerid, "Recebido9") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 9.");
  951.                 GetPVarString(playerid, "Recebido9", str, 150);
  952.                 SendClientMessage(playerid, LARANJA, str);
  953.             }
  954.             else if(listitem == 9)
  955.             {
  956.                 if(GetPVarType(playerid, "Recebido10") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 10.");
  957.                 GetPVarString(playerid, "Recebido10", str, 150);
  958.                 SendClientMessage(playerid, LARANJA, str);
  959.             }
  960.         }
  961.         else { ShowPlayerDialog(playerid, HISTORICO, DIALOG_STYLE_LIST, "Caixa de entrada:", "Ligações Efetuadas\nLigações Recebidas\nSMS - Caixa de entrada\nSMS - Caixa de saída", "Selecionar", "Fechar"); }
  962.     }
  963.     if(dialogid == CAIXADESAIDA)
  964.     {
  965.         if(response == 1)
  966.         {
  967.             if(listitem == 0)
  968.             {
  969.                 if(GetPVarType(playerid, "Enviado1") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 1.");
  970.                 GetPVarString(playerid, "Enviado1", str, 150);
  971.                 SendClientMessage(playerid, LARANJA, str);
  972.             }
  973.             else if(listitem == 1)
  974.             {
  975.                 if(GetPVarType(playerid, "Enviado2") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 2.");
  976.                 GetPVarString(playerid, "Enviado2", str, 150);
  977.                 SendClientMessage(playerid, LARANJA, str);
  978.             }
  979.             else if(listitem == 2)
  980.             {
  981.                 if(GetPVarType(playerid, "Enviado3") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 3.");
  982.                 GetPVarString(playerid, "Enviado3", str, 150);
  983.                 SendClientMessage(playerid, LARANJA, str);
  984.             }
  985.             else if(listitem == 3)
  986.             {
  987.                 if(GetPVarType(playerid, "Enviado4") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 4.");
  988.                 GetPVarString(playerid, "Enviado4", str, 150);
  989.                 SendClientMessage(playerid, LARANJA, str);
  990.             }
  991.             else if(listitem == 4)
  992.             {
  993.                 if(GetPVarType(playerid, "Enviado5") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 5.");
  994.                 GetPVarString(playerid, "Enviado5", str, 150);
  995.                 SendClientMessage(playerid, LARANJA, str);
  996.             }
  997.             else if(listitem == 5)
  998.             {
  999.                 if(GetPVarType(playerid, "Enviado6") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 6.");
  1000.                 GetPVarString(playerid, "Enviado6", str, 150);
  1001.                 SendClientMessage(playerid, LARANJA, str);
  1002.             }
  1003.             else if(listitem == 6)
  1004.             {
  1005.                 if(GetPVarType(playerid, "Enviado7") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 7.");
  1006.                 GetPVarString(playerid, "Enviado7", str, 150);
  1007.                 SendClientMessage(playerid, LARANJA, str);
  1008.             }
  1009.             else if(listitem == 7)
  1010.             {
  1011.                 if(GetPVarType(playerid, "Enviado8") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 8.");
  1012.                 GetPVarString(playerid, "Enviado8", str, 150);
  1013.                 SendClientMessage(playerid, LARANJA, str);
  1014.             }
  1015.             else if(listitem == 8)
  1016.             {
  1017.                 if(GetPVarType(playerid, "Enviado9") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 9.");
  1018.                 GetPVarString(playerid, "Enviado9", str, 150);
  1019.                 SendClientMessage(playerid, LARANJA, str);
  1020.             }
  1021.             else if(listitem == 9)
  1022.             {
  1023.                 if(GetPVarType(playerid, "Enviado10") == 0) return SendClientMessage(playerid, VERMELHO, "Nenhum SMS no slot 10.");
  1024.                 GetPVarString(playerid, "Enviado10", str, 150);
  1025.                 SendClientMessage(playerid, LARANJA, str);
  1026.             }
  1027.         }
  1028.         else { ShowPlayerDialog(playerid, HISTORICO, DIALOG_STYLE_LIST, "Caixa de entrada:", "Ligações Efetuadas\nLigações Recebidas\nSMS - Caixa de entrada\nSMS - Caixa de saída", "Selecionar", "Fechar"); }
  1029.     }
  1030.     return 1;
  1031. }
  1032.  
  1033. public OnPlayerText(playerid, text[])
  1034. {
  1035.     if(Telefonando[playerid] == 3 || Telefonando[playerid] == 4)
  1036.     {
  1037.         new nome[MAX_PLAYER_NAME];
  1038.         GetPlayerName(playerid, nome, sizeof(nome));
  1039.         format(str, sizeof str, "%s (telefone): %s",nome, text);
  1040.         SetPlayerChatBubble(playerid, str, BRANCO, 7.5, 2500);
  1041.         if(GetPVarInt(Jogador[playerid], "Vivavoz") == 1) { ProxDetector(15, Jogador[playerid], str, CINZA, CINZA, CINZA, CINZA, CINZA); }
  1042.         else { SendClientMessage(Jogador[playerid], BRANCO, str); }
  1043.     }
  1044.     return 1;
  1045. }
  1046.  
  1047. public Desligar(playerid)
  1048. {
  1049.     if(Telefonando[playerid] == 2)
  1050.     {
  1051.         if(GetPVarInt(playerid, "Contando") > 0)
  1052.         {
  1053.             new nome[MAX_PLAYER_NAME];
  1054.             SetPVarInt(playerid, "Contando", GetPVarInt(playerid, "Contando")-1);
  1055.             GetPlayerName(Jogador[playerid], nome, sizeof nome);
  1056.             format(str, sizeof str, "%s está te ligando. Digite /atender ou /desligar.", nome);
  1057.             SendClientMessage(playerid, AMARELO, str);
  1058.         }
  1059.         else
  1060.         {
  1061.             KillTimer(Timer[playerid]);
  1062.             SendClientMessage(Jogador[playerid], LARANJA, "A ligação foi cancelada, pois sua chamada não foi atendida.");
  1063.             SendClientMessage(playerid, LARANJA, "Você não atendeu a chamada e por isso ela foi cancelada.");
  1064.             Telefonando[playerid] = 0;
  1065.             Telefonando[Jogador[playerid]] = 0;
  1066.         }
  1067.     }
  1068.     return 1;
  1069. }
  1070.  
  1071. public Tel(playerid)
  1072. {
  1073.     new rand = random(100000);
  1074.     new nome[MAX_PLAYER_NAME], save[10];
  1075.     GetPlayerName(playerid, nome, sizeof nome);
  1076.     format(str, sizeof str, "%s", nome);
  1077.     format(save, sizeof save, "%d", rand);
  1078.     if(dini_Isset("Telefones.txt", save) || rand < 10000)
  1079.         return Tel(playerid);
  1080.     NumTel[playerid] = rand;
  1081.     dini_IntSet("Telefones.txt", str, rand);
  1082.     dini_Set("Telefones.txt", save, str);
  1083.     return 1;
  1084. }
  1085.  
  1086. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  1087. {
  1088.     new nome[MAX_PLAYER_NAME];
  1089.     GetPlayerName(clickedplayerid, nome, sizeof nome);
  1090.     format(str, sizeof str, "Ligar para %s\nMandar SMS para %s", nome, nome);
  1091.     Jogador[playerid] = clickedplayerid;
  1092.     ShowPlayerDialog(playerid, CLICK, DIALOG_STYLE_LIST, "Escolha uma das opções abaixo:", str, "Selecionar", "Cancelar");
  1093.     return 1;
  1094. }
  1095.  
  1096. public Msgs()
  1097.     return SendClientMessageToAll(Cores[random(sizeof Cores)], "Precisa de ajuda com o seu telefone ? Digite /ajudatelefone.");
  1098.  
  1099. public ProxDetector(Float:radi, playerid, string[], col1, col2, col3, col4, col5)
  1100. {
  1101.     if(IsPlayerConnected(playerid))
  1102.     {
  1103.         new Float:posx, Float:posy, Float:posz;
  1104.         new Float:oldposx, Float:oldposy, Float:oldposz;
  1105.         new Float:tempposx, Float:tempposy, Float:tempposz;
  1106.         GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  1107.         for(new i = 0; i < MAX_PLAYERS; i++)
  1108.         {
  1109.             if(IsPlayerConnected(i))
  1110.             {
  1111.                 GetPlayerPos(i, posx, posy, posz);
  1112.                 tempposx = (oldposx -posx);
  1113.                 tempposy = (oldposy -posy);
  1114.                 tempposz = (oldposz -posz);
  1115.                 if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
  1116.                 {
  1117.                     SendClientMessage(i, col1, string);
  1118.                 }
  1119.                 else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
  1120.                 {
  1121.                     SendClientMessage(i, col2, string);
  1122.                 }
  1123.                 else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
  1124.                 {
  1125.                     SendClientMessage(i, col3, string);
  1126.                 }
  1127.                 else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
  1128.                 {
  1129.                     SendClientMessage(i, col4, string);
  1130.                 }
  1131.                 else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  1132.                 {
  1133.                     SendClientMessage(i, col5, string);
  1134.                 }
  1135.             }
  1136.         }
  1137.     }
  1138.     return 1;
  1139. }
  1140.  
  1141. stock sscanf(string[], format[], {Float,_}:...)
  1142. {
  1143.     #if defined isnull
  1144.         if (isnull(string))
  1145.     #else
  1146.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  1147.     #endif
  1148.         {
  1149.             return format[0];
  1150.         }
  1151.     #pragma tabsize 4
  1152.     new
  1153.         formatPos = 0,
  1154.         stringPos = 0,
  1155.         paramPos = 2,
  1156.         paramCount = numargs(),
  1157.         delim = ' ';
  1158.     while (string[stringPos] && string[stringPos] <= ' ')
  1159.     {
  1160.         stringPos++;
  1161.     }
  1162.     while (paramPos < paramCount && string[stringPos])
  1163.     {
  1164.         switch (format[formatPos++])
  1165.         {
  1166.             case '\0':
  1167.             {
  1168.                 return 0;
  1169.             }
  1170.             case 'i', 'd':
  1171.             {
  1172.                 new
  1173.                     neg = 1,
  1174.                     num = 0,
  1175.                     ch = string[stringPos];
  1176.                 if (ch == '-')
  1177.                 {
  1178.                     neg = -1;
  1179.                     ch = string[++stringPos];
  1180.                 }
  1181.                 do
  1182.                 {
  1183.                     stringPos++;
  1184.                     if ('0' <= ch <= '9')
  1185.                     {
  1186.                         num = (num * 10) + (ch - '0');
  1187.                     }
  1188.                     else
  1189.                     {
  1190.                         return -1;
  1191.                     }
  1192.                 }
  1193.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  1194.                 setarg(paramPos, 0, num * neg);
  1195.             }
  1196.             case 'h', 'x':
  1197.             {
  1198.                 new
  1199.                     num = 0,
  1200.                     ch = string[stringPos];
  1201.                 do
  1202.                 {
  1203.                     stringPos++;
  1204.                     switch (ch)
  1205.                     {
  1206.                         case 'x', 'X':
  1207.                         {
  1208.                             num = 0;
  1209.                             continue;
  1210.                         }
  1211.                         case '0' .. '9':
  1212.                         {
  1213.                             num = (num << 4) | (ch - '0');
  1214.                         }
  1215.                         case 'a' .. 'f':
  1216.                         {
  1217.                             num = (num << 4) | (ch - ('a' - 10));
  1218.                         }
  1219.                         case 'A' .. 'F':
  1220.                         {
  1221.                             num = (num << 4) | (ch - ('A' - 10));
  1222.                         }
  1223.                         default:
  1224.                         {
  1225.                             return -1;
  1226.                         }
  1227.                     }
  1228.                 }
  1229.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  1230.                 setarg(paramPos, 0, num);
  1231.             }
  1232.             case 'c':
  1233.             {
  1234.                 setarg(paramPos, 0, string[stringPos++]);
  1235.             }
  1236.             case 'f':
  1237.             {
  1238.  
  1239.                 new changestr[16], changepos = 0, strpos = stringPos;
  1240.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  1241.                 {
  1242.                     changestr[changepos++] = string[strpos++];
  1243.                     }
  1244.                 changestr[changepos] = '\0';
  1245.                 setarg(paramPos,0,_:floatstr(changestr));
  1246.             }
  1247.             case 'p':
  1248.             {
  1249.                 delim = format[formatPos++];
  1250.                 continue;
  1251.             }
  1252.             case '\'':
  1253.             {
  1254.                 new
  1255.                     end = formatPos - 1,
  1256.                     ch;
  1257.                 while ((ch = format[++end]) && ch != '\'') {}
  1258.                 if (!ch)
  1259.                 {
  1260.                     return -1;
  1261.                 }
  1262.                 format[end] = '\0';
  1263.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1264.                 {
  1265.                     if (format[end + 1])
  1266.                     {
  1267.                         return -1;
  1268.                     }
  1269.                     return 0;
  1270.                 }
  1271.                 format[end] = '\'';
  1272.                 stringPos = ch + (end - formatPos);
  1273.                 formatPos = end + 1;
  1274.             }
  1275.             case 'u':
  1276.             {
  1277.                 new
  1278.                     end = stringPos - 1,
  1279.                     id = 0,
  1280.                     bool:num = true,
  1281.                     ch;
  1282.                 while ((ch = string[++end]) && ch != delim)
  1283.                 {
  1284.                     if (num)
  1285.                     {
  1286.                         if ('0' <= ch <= '9')
  1287.                         {
  1288.                             id = (id * 10) + (ch - '0');
  1289.                         }
  1290.                         else
  1291.                         {
  1292.                             num = false;
  1293.                         }
  1294.                     }
  1295.                 }
  1296.                 if (num && IsPlayerConnected(id))
  1297.                 {
  1298.                     setarg(paramPos, 0, id);
  1299.                 }
  1300.                 else
  1301.                 {
  1302.                     #if !defined foreach
  1303.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1304.                         #define __SSCANF_FOREACH__
  1305.                     #endif
  1306.                     string[end] = '\0';
  1307.                     num = false;
  1308.                     new
  1309.                         name[MAX_PLAYER_NAME];
  1310.                     id = end - stringPos;
  1311.                     foreach (Player, playerid)
  1312.                     {
  1313.                         GetPlayerName(playerid, name, sizeof (name));
  1314.                         if (!strcmp(name, string[stringPos], true, id))
  1315.                         {
  1316.                             setarg(paramPos, 0, playerid);
  1317.                             num = true;
  1318.                             break;
  1319.                         }
  1320.                     }
  1321.                     if (!num)
  1322.                     {
  1323.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  1324.                     }
  1325.                     string[end] = ch;
  1326.                     #if defined __SSCANF_FOREACH__
  1327.                         #undef foreach
  1328.                         #undef __SSCANF_FOREACH__
  1329.                     #endif
  1330.                 }
  1331.                 stringPos = end;
  1332.             }
  1333.             case 's', 'z':
  1334.             {
  1335.                 new
  1336.                     i = 0,
  1337.                     ch;
  1338.                 if (format[formatPos])
  1339.                 {
  1340.                     while ((ch = string[stringPos++]) && ch != delim)
  1341.                     {
  1342.                         setarg(paramPos, i++, ch);
  1343.                     }
  1344.                     if (!i)
  1345.                     {
  1346.                         return -1;
  1347.                     }
  1348.                 }
  1349.                 else
  1350.                 {
  1351.                     while ((ch = string[stringPos++]))
  1352.                     {
  1353.                         setarg(paramPos, i++, ch);
  1354.                     }
  1355.                 }
  1356.                 stringPos--;
  1357.                 setarg(paramPos, i, '\0');
  1358.             }
  1359.             default:
  1360.             {
  1361.                 continue;
  1362.             }
  1363.         }
  1364.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1365.         {
  1366.             stringPos++;
  1367.         }
  1368.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1369.         {
  1370.             stringPos++;
  1371.         }
  1372.         paramPos++;
  1373.     }
  1374.     do
  1375.     {
  1376.         if ((delim = format[formatPos++]) > ' ')
  1377.         {
  1378.             if (delim == '\'')
  1379.             {
  1380.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  1381.             }
  1382.             else if (delim != 'z')
  1383.             {
  1384.                 return delim;
  1385.             }
  1386.         }
  1387.     }
  1388.     while (delim > ' ');
  1389.     return 0;
  1390. }
  1391.  
  1392. /*! FILTERSCRIPT DE TELEFONE DESENVOLVIDO POR SHADOWW5 !
  1393.  
  1394.            Contato: http://bit.ly/iT6xEw
  1395.            Contato: http://bit.ly/iT6xEw
  1396.  
  1397.     NAO RETIRE OS CREDITOS !! NAO RETIRE OS CREDITOS !!
  1398.  
  1399.      OBS: ESTE SISTEMA USA O TELEFONE DOS JOGADORES*/
Advertisement
Add Comment
Please, Sign In to add comment