document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*  FAVOR NÃO REMOVER OS CRÉDITOS! RETIRÁ-LOS NÃO SIGNIFICA QUE FOI VOCÊ QUEM FEZ -.-
  2.  
  3.                                     // Versão do sistema de eventos: 0.6b
  4.                                     //by Ricop522
  5.  
  6.  
  7.  
  8.     Obrigado por usufruir desse filterscript e não remover os créditos
  9.     Isso lhe faz um bom programador !
  10.  
  11.     Att,
  12.     Ricop522
  13.                         www.advanced-roleplay.com
  14.                   [ O maior servidor de Roleplay do Brasil ]
  15.                              Admin & Dono & Programador
  16.  
  17.     FAVOR NÃO REMOVER OS CRÉDITOS! RETIRÁ-LOS NÃO SIGNIFICA QUE FOI VOCÊ QUEM FEZ. */
  18.  
  19.  
  20.  
  21. #include <a_samp>
  22. #pragma semicolon 0
  23.  
  24. enum ricop_evento
  25. {
  26.     eArmas[8],
  27.     bool:eUseSkin,
  28.     eSkin,
  29.     eVagas,
  30.     eQuantidadeVagas,
  31.     Float:eVida,
  32.     Float:eColete,
  33.     Float:ePos[3],
  34.     eInterior,
  35.     eVirWorld,
  36.     eStatus,
  37. }
  38. new EventoInfo[ricop_evento];
  39. new bool:eEntrou[MAX_PLAYERS];
  40. new eString[0x80];
  41. new eventoCarro[MAX_VEHICLES];
  42.  
  43. #define ricop true
  44. #define eCor 0x77BBFFAA
  45. #define DIALOG_CREDITOS 1123  //Mude o \'1123\' para outro número caso já exista um dialog com esse ID
  46. //Você pode mudar pelo seu sistema de administração
  47. #define Admin(%0) IsPlayerAdmin(%0)
  48. //ex:
  49. //#define Admin(%0) PlayerInfo[%0][pAdmin]
  50. public OnFilterScriptInit()
  51. {
  52.     print("\\n--------------------------------------");
  53.     print(" Sistema de Eventos by [Ricop522] carregado com sucesso !");   // FAVOR NÃO REMOVER OS CRÉDITOS! RETIRÁ-LOS NÃO SIGNIFICA QUE FOI VOCÊ QUEM FEZ.
  54.     print("");
  55.     print("           -----------------------------------------");
  56.     print("");
  57.     print("--------------------------------------\\n");
  58.     return 1;
  59. }
  60.  
  61. public OnFilterScriptExit()
  62. {
  63.     print("\\n--------------------------------------");
  64.     print(" Sistema de Eventos by [Ricop522] descarregado com sucesso !");    // FAVOR NÃO REMOVER OS CRÉDITOS! RETIRÁ-LOS NÃO SIGNIFICA QUE FOI VOCÊ QUEM FEZ.
  65.     print("");
  66.     print("           -----------------------------------------");
  67.     print("");
  68.     print("--------------------------------------\\n");
  69.     return 1;
  70. }
  71. public OnPlayerConnect(playerid)
  72. {
  73.     eEntrou[playerid] = false;
  74.     return 1;
  75. }
  76. public OnPlayerCommandText(playerid, cmdtext[])
  77. {
  78.     new rCmd[0x80], idx, tmp[128];
  79.     if(!strcmp(rCmd, "/ecreditos", true)) // FAVOR NÃO REMOVER OS CRÉDITOS! RETIRÁ-LOS NÃO SIGNIFICA QUE FOI VOCÊ QUEM FEZ.
  80.     {
  81.         ShowPlayerDialog(playerid, DIALOG_CREDITOS, DIALOG_STYLE_LIST, "[ Créditos do sistema de Evento ]", "[Advanced Event System]\\n\\n\\n<<< Sistema de eventos feito por Ricop522 ou Justin_Ston/Lemon >>>\\n\\n\\n Agradecimentos - N/A \\n\\n\\n Obrigado por usufruir desse FS!", "OK", " ");
  82.         return 1;
  83.     }
  84.     if(!strcmp(rCmd, "/evento", true))
  85.     {
  86.         new r_r[0x24], eArma, eOption;
  87.         r_r = strtok(cmdtext, idx);
  88.         if(!strlen(r_r))
  89.         {
  90.             SendClientMessage(playerid, eCor, "Use: /evento [opção]\'");
  91.             SendClientMessage(playerid, -1, "entrar, \\"/ecreditos\\"");
  92.             if(Admin(playerid))
  93.             {
  94.                 SendClientMessage(playerid, -1, "[Admin]: arma[1-8], usarskin, skinevento, vida, colete");
  95.                 SendClientMessage(playerid, -1, "[Admin]: quantidadevagas, abrir, fechar, kick, criarcarro, destruircarro");
  96.             }
  97.             return 0x01;
  98.         }
  99.         if(strcmp(r_r,"destruircarro",true) == 0)
  100.         {
  101.             for(new i = 0; i < MAX_VEHICLES; ++i) {
  102.                 if(eventoCarro[i] == 1)
  103.                     DestroyVehicle(i);
  104.             }
  105.             format(eString, sizeof(eString), "Admin %s destruiu os veículos do evento !", eNome(playerid));
  106.             SendClientMessageToAll(eCor, eString);
  107.             return 1;
  108.         }
  109.         if(strcmp(r_r,"criarcarro",true) == 0)
  110.         {
  111.             new contador = 0;
  112.             for(new i = 0; i < MAX_VEHICLES; ++i) {
  113.                 if(eventoCarro[i] == 1)
  114.                     ++contador;
  115.             }
  116.             if(contador > EventoInfo[eQuantidadeVagas]) return SendClientMessage(playerid, -1, "[ERROR]: A quantidade de carros de evento já excedeu o limite de vagas do evento !");
  117.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  118.             new carroid, cor1, cor2, idcarro;
  119.  
  120.             tmp = strtok(cmdtext, idx); //Carro ID
  121.             if(!strlen(tmp)) return SendClientMessage(playerid, -1, "<!> /evento criarcarro [carroid] [cor1] [cor2]");
  122.             carroid = strval(tmp);
  123.             if(carroid < 400 || carroid > 611) return SendClientMessage(playerid, -1, "[AD:Evento] Ops, veículo ID não permitido!");
  124.  
  125.             tmp = strtok(cmdtext, idx); //Cor 1
  126.             if(!strlen(tmp)) return SendClientMessage(playerid, -1, "<!> /evento criarcarro [carroid] [cor1] [cor2]");
  127.             cor1 = strval(tmp);
  128.             if(cor1 < -1 || cor1 > 126) return SendClientMessage(playerid, -1, "[AD:Evento]: Use cores de 0 - 126");
  129.  
  130.             tmp = strtok(cmdtext, idx); //Cor 2
  131.             if(!strlen(tmp)) return SendClientMessage(playerid, -1, "<!> /evento criarcarro [carroid] [cor1] [cor2]");
  132.             cor2 = strval(tmp);
  133.             if(cor2 < -1 || cor2 > 126) return SendClientMessage(playerid, -1, "[AD:Evento]: Use cores de 0 - 126");
  134.  
  135.             new Float:Pos[3]; GetPlayerPos(playerid, Pos[0],Pos[1],Pos[2]);
  136.             idcarro = CreateVehicle(carroid, Pos[0],Pos[1],Pos[2], 0.0, cor1, cor2, 60000);
  137.             eventoCarro[idcarro] = 1;
  138.             LinkVehicleToInterior(idcarro, GetPlayerInterior(playerid));
  139.             SetVehicleVirtualWorld(idcarro, GetPlayerVirtualWorld(playerid));
  140.             format(eString, sizeof(eString), "<!> Veículo do evento de ID [%d] criado [Modelo: %i cor1: %1, cor2: %i, PosX: %f,Y:%f,Z:%f].", idcarro, carroid, cor1, cor2, Pos[0],Pos[1],Pos[2]);
  141.             SendClientMessage(playerid, eCor, eString);
  142.             format(eString, sizeof(eString), "<!> Admin %s criou o carro [%d] para um evento. [Modelo: %i cor1: %1, cor2: %i, PosX: %f,Y:%f,Z:%f].", idcarro, carroid, cor1, cor2, Pos[0],Pos[1],Pos[2]);
  143.             for(new i = 0; i < GetMaxPlayers(); ++i) if(IsPlayerAdmin(i)) SendClientMessage(i, -1, eString);
  144.             return 0x01;
  145.         }
  146.         if(strcmp(r_r,"kick",true) == 0)
  147.         {
  148.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  149.             tmp = strtok(cmdtext, idx);
  150.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use /evento kick [ID] [Motivo]");
  151.             new id = strval(tmp);
  152.             new length = strlen(cmdtext), offset = idx, result[128]
  153.             while ((idx < length) && (cmdtext[idx] <= \' \')) idx++;
  154.             while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; }
  155.             result[idx - offset] = EOS;
  156.             if(!strlen(result)) return SendClientMessage(playerid, eCor, "<!> Use /evento kick [ID] [Motivo]");
  157.             if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID || eEntrou[id] == false) return SendClientMessage(playerid, -1, "Jogador inválido / offline / Não está no evento.");
  158.             if(strlen(result) == 0) { format(eString, sizeof(eString), "[AD:Evento]: Administrador %s kickou %s do evento, motivo: Não informado", eNome(playerid), eNome(id)); }
  159.             else { format(eString, sizeof(eString), "[AD:Evento]: Administrador %s kickou %s do evento, motivo: %s", eNome(playerid), eNome(id),(result)); }
  160.             SendClientMessageToAll(eCor, eString);
  161.             Kick(id);
  162.             return 0x01;
  163.         }
  164.         if(strcmp(r_r,"fechar",true) == 0)
  165.         {
  166.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  167.             new length = strlen(cmdtext), offset = idx, result[128]
  168.             while ((idx < length) && (cmdtext[idx] <= \' \')) idx++;
  169.             while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; }
  170.             result[idx - offset] = EOS;
  171.             if(!strlen(result)) return SendClientMessage(playerid, eCor, "<!> /evento fechar [motivo]");
  172.             EventoInfo[eStatus] = false;
  173.             if(strlen(result) == 0) { format(eString, sizeof(eString), "[AD:Evento]: Administrador %s fechou o evento, motivo: Não informado", eNome(playerid)); }
  174.             else { format(eString, sizeof(eString), "[AD:Evento]: Administrador %s fechou o evento, motivo: %s", eNome(playerid), (result)); }
  175.             SendClientMessageToAll(eCor, eString);
  176.             resetarEvento();
  177.             return 0x01;
  178.         }
  179.         if(strcmp(r_r,"abrir",true) == 0)
  180.         {
  181.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  182.             EventoInfo[eStatus] = true;
  183.             format(eString, sizeof(eString), "[AD:Evento]: Administrador %s abriu o evento! use \\"/evento entrar\\" para entrar nele! Vagas: %i", eNome(playerid), EventoInfo[eQuantidadeVagas]);
  184.             SendClientMessageToAll(eCor, eString);
  185.             return 0x01;
  186.         }
  187.         if(strcmp(r_r,"quantidadevagas",true) == 0)
  188.         {
  189.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  190.             tmp = strtok(cmdtext, idx);
  191.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento quantidadevagas [qtd]");
  192.             eOption = strval(tmp);
  193.             EventoInfo[eColete] = eOption;
  194.             format(eString, sizeof(eString), "[AD:Evento]: Quantidade de pessoas no evento setada para %i", eOption);
  195.             SendClientMessage(playerid, eCor, eString);
  196.             return 0x01;
  197.         }
  198.         if(strcmp(r_r,"colete",true) == 0)
  199.         {
  200.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  201.             tmp = strtok(cmdtext, idx);
  202.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento colete [qtd]");
  203.             new Float:eOption2 = floatstr(tmp);
  204.             EventoInfo[eColete] = eOption2;
  205.             format(eString, sizeof(eString), "[AD:Evento]: Colete do evento setada para %f", eOption2);
  206.             SendClientMessage(playerid, eCor, eString);
  207.             return 0x01;
  208.         }
  209.         if(strcmp(r_r,"vida",true) == 0)
  210.         {
  211.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  212.             tmp = strtok(cmdtext, idx);
  213.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento vida [qtd]");
  214.             new Float:eOption2 = floatstr(tmp);
  215.             EventoInfo[eVida] = eOption2;
  216.             format(eString, sizeof(eString), "[AD:Evento]: Vida do evento setada para %f", eOption2);
  217.             SendClientMessage(playerid, eCor, eString);
  218.             return 0x01;
  219.         }
  220.         if(strcmp(r_r,"skinevento",true) == 0)
  221.         {
  222.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  223.             if(EventoInfo[eUseSkin] == false) return SendClientMessage(playerid, eCor, "[AD:Evento]: Ultilize \\"/evento usarskin 1\\" para ativar a skin no evento.");
  224.             tmp = strtok(cmdtext, idx);
  225.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento skinevento [skinid]");
  226.             eOption = strval(tmp);
  227.             if(eOption < 0 || eOption > 299) return SendClientMessage(playerid, eCor, "[AD:Evento]: Ultilize skins de 1 a 299.");
  228.             EventoInfo[eSkin] = eOption;
  229.             return 0x01;
  230.         }
  231.         if(strcmp(r_r,"usarskin",true) == 0)
  232.         {
  233.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  234.             tmp = strtok(cmdtext, idx);
  235.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento usarskin [opção]");
  236.             eOption = strval(tmp);
  237.             if(eOption < 0 || eOption > 1) return SendClientMessage(playerid, eCor, "[AD:Evento]: Ultilize (1 - ativado) | (0 - desativado).");
  238.             if(eOption == 1) (EventoInfo[eUseSkin] = true); else (EventoInfo[eUseSkin] = false);
  239.             return 0x01;
  240.         }
  241.         if(strcmp(r_r,"entrar",true) == 0)
  242.         {
  243.             if(EventoInfo[eStatus] == 0) return SendClientMessage(playerid, eCor, "[AD:Evento]: Evento fechado!");
  244.             eEntrou[playerid] = true;
  245.             entrarEvento(playerid);
  246.         }
  247.         if(strcmp(r_r,"arma1",true) == 0)
  248.         {
  249.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  250.             tmp = strtok(cmdtext, idx);
  251.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento arma1 [armaID]");
  252.             eArma = strval(tmp);
  253.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Evento]: Arma inválida.");
  254.             EventoInfo[eArmas][0] = eArma;
  255.             return 0x01;
  256.         }
  257.         if(strcmp(r_r,"arma2",true) == 0)
  258.         {
  259.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  260.             tmp = strtok(cmdtext, idx);
  261.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento arma2 [armaID]");
  262.             eArma = strval(tmp);
  263.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Evento]: Arma inválida.");
  264.             EventoInfo[eArmas][1] = eArma;
  265.             return 0x01;
  266.         }
  267.         if(strcmp(r_r,"arma3",true) == 0)
  268.         {
  269.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  270.             tmp = strtok(cmdtext, idx);
  271.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento arma3 [armaID]");
  272.             eArma = strval(tmp);
  273.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Evento]: Arma inválida.");
  274.             EventoInfo[eArmas][2] = eArma;
  275.             return 0x01;
  276.         }
  277.         if(strcmp(r_r,"arma4",true) == 0)
  278.         {
  279.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  280.             tmp = strtok(cmdtext, idx);
  281.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento arma4 [armaID]");
  282.             eArma = strval(tmp);
  283.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Evento]: Arma inválida.");
  284.             EventoInfo[eArmas][3] = eArma;
  285.             return 0x01;
  286.         }
  287.         if(strcmp(r_r,"arma5",true) == 0)
  288.         {
  289.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  290.             tmp = strtok(cmdtext, idx);
  291.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento arma5 [armaID]");
  292.             eArma = strval(tmp);
  293.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Evento]: Arma inválida.");
  294.             EventoInfo[eArmas][4] = eArma;
  295.             return 0x01;
  296.         }
  297.         if(strcmp(r_r,"arma6",true) == 0)
  298.         {
  299.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  300.             tmp = strtok(cmdtext, idx);
  301.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento arma6 [armaID]");
  302.             eArma = strval(tmp);
  303.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Evento]: Arma inválida.");
  304.             EventoInfo[eArmas][5] = eArma;
  305.             return 0x01;
  306.         }
  307.         if(strcmp(r_r,"arma7",true) == 0)
  308.         {
  309.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  310.             tmp = strtok(cmdtext, idx);
  311.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento arma7 [armaID]");
  312.             eArma = strval(tmp);
  313.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Evento]: Arma inválida.");
  314.             EventoInfo[eArmas][6] = eArma;
  315.             return 0x01;
  316.         }
  317.         if(strcmp(r_r,"arma8",true) == 0)
  318.         {
  319.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Evento]: Você não é administrador Rcon.");
  320.             tmp = strtok(cmdtext, idx);
  321.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /evento arma8 [armaID]");
  322.             eArma = strval(tmp);
  323.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Evento]: Arma inválida.");
  324.             EventoInfo[eArmas][7] = eArma;
  325.             return 0x01;
  326.         }
  327.         return 0x01;
  328.     }
  329.     return 0x0;
  330. }
  331.  
  332. stock resetarEvento()
  333. {
  334.     for(new r = 0; r <= 7; ++r) EventoInfo[eArmas][r] = 0;
  335.     EventoInfo[eUseSkin] = false;
  336.     EventoInfo[eSkin] = 1;
  337.     EventoInfo[eVagas] = 10;
  338.     EventoInfo[eQuantidadeVagas] = 0;
  339.     EventoInfo[eVida] = 100.0;
  340.     EventoInfo[eColete] = 0.0;
  341.     EventoInfo[ePos][0] = 0.0;
  342.     EventoInfo[ePos][1] = 0.0;
  343.     EventoInfo[ePos][2] = 0.0;
  344.     EventoInfo[eInterior] = 0;
  345.     EventoInfo[eVirWorld] = 0;
  346.     EventoInfo[eStatus] = 0;
  347.     return ricop;
  348. }
  349. stock entrarEvento(playerid)
  350. {
  351.     if(eEntrou[playerid] == true) return SendClientMessage(playerid, eCor, "<!> Você já está no evento !");
  352.     if(EventoInfo[eQuantidadeVagas] == EventoInfo[eVagas])
  353.     {
  354.         format(eString, sizeof(eString), "[AD:Evento] o evento já atingiu a quantidade de %i vagas!", EventoInfo[eVagas]);
  355.         SendClientMessageToAll(eCor, eString);
  356.         EventoInfo[eStatus] = false;
  357.         return 1;
  358.     }
  359.     format(eString, sizeof(eString), "[AD:Evento] %s entrou no evento!", eNome(playerid));
  360.     SendClientMessageToAll(eCor, eString);
  361.     entrarEvento(playerid);
  362.     SetPlayerPos(playerid, EventoInfo[ePos][0],EventoInfo[ePos][1],EventoInfo[ePos][2]);
  363.     SetPlayerInterior(playerid, EventoInfo[eInterior]);
  364.     SetPlayerVirtualWorld(playerid, EventoInfo[eVirWorld]);
  365.     SetPlayerHealth(playerid, EventoInfo[eVida]);
  366.     SetPlayerArmour(playerid, EventoInfo[eColete]);
  367.     if(EventoInfo[eUseSkin] == true) SetPlayerSkin(playerid, EventoInfo[eSkin]);
  368.     EventoInfo[eQuantidadeVagas]++;
  369.     return 0x01;
  370. }
  371. stock eNome(playerid)
  372. {
  373.     new nome[MAX_PLAYER_NAME]; GetPlayerName(playerid, nome, sizeof(nome));
  374.     return nome;
  375. }
  376.  
  377. strtok(const string[], &index)
  378. {
  379.     new length = strlen(string);
  380.     while ((index < length) && (string[index] <= \' \')) index++;
  381.     new offset = index;
  382.     new result[20];
  383.     while ((index < length) && (string[index] > \' \') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; }
  384.     result[index - offset] = EOS; return result;
  385. }
  386.  
  387. /*stock motivo(const cmdtext[], idx)
  388. {
  389.     new length = strlen(cmdtext), offset = idx, result[128];
  390.     while ((idx < length) && (cmdtext[idx] <= \' \')) idx++;
  391.     while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; }
  392.     result[idx - offset] = EOS;
  393. } */
');