Shadoww5

Sistema de Atendimento - Shadoww5

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