Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ! FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !
- ! FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !
- NAO RETIRE OS CREDITOS !! NAO RETIRE OS CREDITOS !!
- NAO RETIRE OS CREDITOS !! NAO RETIRE OS CREDITOS !!*/
- #include <a_samp>
- #include <zcmd>
- #include <dini>
- forward Msgs();
- new str[128];
- new Fila = 1;
- new bool:Helper[MAX_PLAYERS];
- new Atendimentos[MAX_PLAYERS];
- new Senha[MAX_PLAYERS];
- new Cores[6] = { 0xE02A2AFF, 0x3CE02AFF, 0xED8E12FF, 0xED12BAFF, 0x4912EDFF, 0x12EDAFFF };
- #define CINZA 0xD6D6D6FF
- #define VERMELHO 0xFF0000FF
- #define AMARELO 0xF7E200FF
- #define LARANJA 0xE89200FF
- public OnFilterScriptInit()
- {
- print("--------------------------------------------");
- print(" Sistema de Atendimento criado por Shadoww5");
- print(" CARREGADO COM SUCESSO !");
- print("--------------------------------------------");
- if(!fexist("Atendimentos.txt"))
- {
- dini_Create("Atendimentos.txt");
- dini_Set("Atendimentos.txt", "Recorde - Helper", "---");
- dini_IntSet("Atendimentos.txt", "Recorde - Atendimentos", 0);
- }
- if(!fexist("Atendentes.txt"))
- {
- dini_Create("Atendentes.txt");
- dini_Set("Atendentes.txt", "ADMINISTRADOR1", "---");
- dini_Set("Atendentes.txt", "ADMINISTRADOR2", "---");
- }
- SetTimer("Msgs", 450000, true);
- return 1;
- }
- public OnFilterScriptExit()
- {
- print("--------------------------------------------");
- print(" Sistema de Atendimento criado por Shadoww5");
- print(" DESCARREGADO COM SUCESSO !");
- print("--------------------------------------------");
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- Atendimentos[playerid] = 0;
- Senha[playerid] = 0;
- GetPlayerName(playerid, str, 24);
- if(dini_Isset("Atendentes.txt", str)) { Helper[playerid] = bool:dini_Bool("Atendentes.txt", str); }
- else { Helper[playerid] = false; }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- GetPlayerName(playerid, str, 24);
- dini_BoolSet("Atendentes.txt", str, Helper[playerid]);
- if(Helper[playerid]) { dini_IntSet("Atendimentos.txt", str, Atendimentos[playerid]); }
- if(Atendimentos[playerid] > dini_Int("Atendimentos.txt", "Recorde - Atendimentos"))
- {
- dini_IntSet("Atendimentos.txt", "Recorde - Atendimentos", Atendimentos[playerid]);
- dini_Set("Atendimentos.txt", "Recorde - Helper", str);
- }
- return 1;
- }
- public Msgs()
- return SendClientMessageToAll(Cores[random(sizeof Cores)], "Precisa de ajuda com o sistema de atendimento ? Digite /ajudafila.");
- CMD:trocaradm(playerid, params[])
- {
- new admin;
- if(!IsPlayerAdmin(playerid))
- return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
- else if(sscanf(params, "ds", admin, str))
- return SendClientMessage(playerid, CINZA, "USO: /trocaradm [1/2] [novo nome]");
- else if(!(admin == 2 || admin == 1))
- return SendClientMessage(playerid, VERMELHO, "Escolha entre administrador 1 ou 2.");
- else if(strlen(str) > 24)
- return SendClientMessage(playerid, VERMELHO, "O novo nome deve ter no maximo 24 caracteres.");
- if(admin == 1)
- {
- dini_Set("Atendentes.txt", "ADMINISTRADOR1", str);
- format(str, sizeof str, "Administrador 1 trocado com sucesso: \"{F7E200}%s{E89200}\".", str);
- }
- else
- {
- dini_Set("Atendentes.txt", "ADMINISTRADOR2", str);
- format(str, sizeof str, "Administrador 2 trocado com sucesso: \"{F7E200}%s{E89200}\".", str);
- }
- SendClientMessage(playerid, LARANJA, str);
- return 1;
- }
- CMD:darhelper(playerid, params[])
- {
- new Jogador;
- GetPlayerName(playerid, str, 24);
- if(sscanf(params, "u", Jogador))
- return SendClientMessage(playerid, CINZA, "USO: /darhelper [nome do jogador / id]");
- else if(!IsPlayerConnected(Jogador))
- return SendClientMessage(playerid, VERMELHO, "Jogador OFFLINE.");
- else if(!(strcmp(str, dini_Get("Atendentes.txt", "ADMINISTRADOR1"), false) == 0 || strcmp(str, dini_Get("Atendentes.txt", "ADMINISTRADOR2"), false) == 0 || IsPlayerAdmin(playerid)))
- return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
- else if(Helper[Jogador])
- return SendClientMessage(playerid, VERMELHO, "Este jogador já é helper.");
- Helper[Jogador] = true;
- format(str, sizeof str, "O administrador %s [ID %d] te tornou um helper.", str, playerid);
- SendClientMessage(Jogador, AMARELO, str);
- GetPlayerName(Jogador, str, 24);
- format(str, sizeof str, "Você tornou o jogador %s [ID %d] um helper.", str, Jogador);
- SendClientMessage(playerid, AMARELO, str);
- return 1;
- }
- CMD:retirarhelper(playerid, params[])
- {
- new Jogador;
- GetPlayerName(playerid, str, 24);
- if(sscanf(params, "u", Jogador))
- return SendClientMessage(playerid, CINZA, "USO: /retirarhelper [nome do jogador / id]");
- else if(!IsPlayerConnected(Jogador))
- return SendClientMessage(playerid, VERMELHO, "Jogador OFFLINE.");
- else if(!(strcmp(str, dini_Get("Atendentes.txt", "ADMINISTRADOR1"), false) == 0 || strcmp(str, dini_Get("Atendentes.txt", "ADMINISTRADOR2"), false) == 0 || IsPlayerAdmin(playerid)))
- return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
- else if(!Helper[Jogador])
- return SendClientMessage(playerid, VERMELHO, "Este jogador não é helper.");
- Helper[Jogador] = false;
- format(str, sizeof str, "O administrador %s [ID %d] te tirou do cargo de helper.", str, playerid);
- SendClientMessage(Jogador, AMARELO, str);
- GetPlayerName(Jogador, str, 24);
- format(str, sizeof str, "Você tirou o jogador %s [ID %d] do cargo de helper.", str, Jogador);
- SendClientMessage(playerid, AMARELO, str);
- return 1;
- }
- CMD:senha(playerid, params[])
- {
- #pragma unused params
- if(Helper[playerid])
- return SendClientMessage(playerid, VERMELHO, "Helpers não podem pegar senha.");
- else if(IsPlayerAdmin(playerid))
- return SendClientMessage(playerid, VERMELHO, "Administradores não podem pegar senha.");
- else if(Senha[playerid] != 0)
- return SendClientMessage(playerid, VERMELHO, "Você já está na fila de atendimento.");
- Senha[playerid] = Fila;
- Fila++;
- SendClientMessage(playerid, LARANJA, "Você entrou na fila de atendimento. Aguarde até que algum helper venha te atender.");
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(!Helper[i]) continue;
- GetPlayerName(playerid, str, 24);
- format(str, sizeof str, "%s entrou na fila de atendimento. Para atendê-lo digite /irsenha %d.", str, Senha[playerid]);
- SendClientMessage(i, AMARELO, str);
- }
- return 1;
- }
- CMD:sairfila(playerid, params[])
- {
- #pragma unused params
- if(Senha[playerid] == 0)
- return SendClientMessage(playerid, VERMELHO, "Você não está na fila de atendimento.");
- Senha[playerid] = 0;
- SendClientMessage(playerid, LARANJA, "Você saiu da fila de atendimento.");
- return 1;
- }
- CMD:chat(playerid, params[])
- {
- #pragma unused params
- new nome[24];
- if(!Helper[playerid])
- return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
- else if(sscanf(params, "s", str))
- return SendClientMessage(playerid, CINZA, "USO: /chat [texto]");
- GetPlayerName(playerid, nome, 24);
- format(str, sizeof str, "[CHAT HELPER]{FFFFFF} %s: %s", nome, str);
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(!Helper[i] || !IsPlayerConnected(i)) continue;
- SendClientMessage(i, AMARELO, str);
- }
- return 1;
- }
- CMD:fila(playerid, params[])
- {
- #pragma unused params
- new found, name[24];
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(Senha[i] != 0) { found++; }
- if(found > 1) { break; }
- }
- if(!found)
- return SendClientMessage(playerid, VERMELHO, "Não há nenhum jogador na fila de atendimento.");
- SendClientMessage(playerid, AMARELO, "======= {FFFFFF}[ Fila de Atendimento ] {F7E200}=======");
- for(new s = 1; s < (Fila+1); s++)
- {
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(!IsPlayerConnected(i)) continue;
- if(Senha[i] != s) continue;
- GetPlayerName(i, name, 24);
- format(str, sizeof str, " » [ID %d] %s - Senha: %d", i, name, Senha[i]);
- SendClientMessage(playerid, AMARELO, str);
- }
- }
- return 1;
- }
- CMD:proximo(playerid, params[])
- {
- #pragma unused params
- if(!Helper[playerid])
- return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
- new bool:found;
- for(new s = 1; s < (Fila+1); s++)
- {
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(!IsPlayerConnected(i)) continue;
- if(Senha[i] != s) continue;
- new Float:Pos[3];
- GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
- SetPlayerPos(playerid, Pos[0]+1, Pos[1], Pos[2]+0.5);
- SetPlayerInterior(playerid, GetPlayerInterior(i));
- Senha[i] = 0;
- GetPlayerName(playerid, str, 24);
- format(str, sizeof str, "O helper %s [ID %d] veio te ajudar.", str, playerid);
- SendClientMessage(i, AMARELO, str);
- GetPlayerName(i, str, 24);
- format(str, sizeof str, "Você veio atender o jogador %s [ID %d].", str, i);
- SendClientMessage(playerid, AMARELO, str);
- Atendimentos[playerid]++;
- found = true;
- break;
- }
- if(found) { break; }
- }
- if(!found) { SendClientMessage(playerid, VERMELHO, "Não há nenhum jogador na fila de atendimento."); }
- return 1;
- }
- CMD:irsenha(playerid, params[])
- {
- new senha;
- if(!Helper[playerid])
- return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
- else if(sscanf(params, "d", senha))
- return SendClientMessage(playerid, CINZA, "USO: /irsenha [numero da senha]");
- else if(senha < 1)
- return SendClientMessage(playerid, VERMELHO, "Não há ninguém no servidor com esta senha.");
- new bool:found;
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(Senha[i] == senha)
- {
- new Float:Pos[3];
- GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
- SetPlayerPos(playerid, Pos[0]+1, Pos[1], Pos[2]+0.5);
- SetPlayerInterior(playerid, GetPlayerInterior(i));
- Senha[i] = 0;
- GetPlayerName(playerid, str, 24);
- format(str, sizeof str, "O helper %s [ID %d] veio te ajudar.", str, playerid);
- SendClientMessage(i, AMARELO, str);
- GetPlayerName(i, str, 24);
- format(str, sizeof str, "Você veio atender o jogador %s [ID %d].", str, i);
- SendClientMessage(playerid, AMARELO, str);
- Atendimentos[playerid]++;
- found = true;
- break;
- }
- }
- if(!found) { SendClientMessage(playerid, VERMELHO, "Não há ninguém no servidor com esta senha."); }
- return 1;
- }
- CMD:atendimentos(playerid, params[])
- {
- #pragma unused params
- if(!Helper[playerid])
- return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
- SendClientMessage(playerid, AMARELO, "======= {FFFFFF}[ Numero de Atendimentos por Helper ] {F7E200}=======");
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(!Helper[i]) continue;
- GetPlayerName(i, str, 24);
- format(str, sizeof str, " » %s - Atendimentos: %d", str, Atendimentos[i]);
- SendClientMessage(playerid, AMARELO, str);
- }
- return 1;
- }
- CMD:zerarfila(playerid, params[])
- {
- #pragma unused params
- if(!Helper[playerid])
- return SendClientMessage(playerid, VERMELHO, "Você não está autorizado a usar este comando.");
- Fila = 1;
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- Senha[i] = 0;
- if(!Helper[i]) continue;
- GetPlayerName(playerid, str, 24);
- format(str, sizeof str, "A fila de atendimento foi zerada pelo Helper %s.", str);
- SendClientMessage(i, AMARELO, str);
- }
- return 1;
- }
- CMD:ajudafila(playerid, params[])
- {
- new sStr[1152];
- strcat(sStr, "\t- /senha: Comando utilizado para pegar uma senha de atendimento.");
- strcat(sStr, "\n\t- /sairfila: Comando utilizado para sair da fila de atendimento.");
- strcat(sStr, "\n\t- /fila: Comando utilizado para saber quais jogadores estão na fila à espera de ajuda.");
- if(Helper[playerid])
- {
- strcat(sStr, "\n\t- /proximo: Comando utilizado para atender a proxima senha.");
- strcat(sStr, "\n\t- /irsenha: Comando utilizado para atender uam senha específica.");
- strcat(sStr, "\n\t- /zerarfila: Comando utilizado para limpar a fila de atendimento.");
- strcat(sStr, "\n\t- /atendimentos: Comando utilizado para saber a quantidade de jogadores atendidos por cada helper ONLINE.");
- strcat(sStr, "\n\t- /darhelper: Comando utilizado dar o cargo de helper à um jogador.");
- strcat(sStr, "\n\t- /retirarhelper: Este comando faz a operação inversa do comando anterior.");
- strcat(sStr, "\n\t- /trocaradm: Comando utilizado para trocar o atual administrador 1/2 presente no arquivo \"Atendentes.txt\".");
- 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\".");
- strcat(sStr, "\n\tOBS²: O comando /trocardono só pode ser utilizado por administradores que realizaram login na RCON.");
- strcat(sStr, "\n\n\t FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !");
- }
- else { strcat(sStr, "\n\n\t FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !"); }
- ShowPlayerDialog(playerid, 497, DIALOG_STYLE_MSGBOX, "Sistema de Atendimento criado por Shadoww5 !", sStr, "Fechar", "");
- return 1;
- }
- // ================[ SSCANF ]================ //
- stock sscanf(string[], format[], {Float,_}:...)
- {
- #if defined isnull
- if (isnull(string))
- #else
- if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
- #endif
- {
- return format[0];
- }
- #pragma tabsize 4
- new
- formatPos = 0,
- stringPos = 0,
- paramPos = 2,
- paramCount = numargs(),
- delim = ' ';
- while (string[stringPos] && string[stringPos] <= ' ')
- {
- stringPos++;
- }
- while (paramPos < paramCount && string[stringPos])
- {
- switch (format[formatPos++])
- {
- case '\0':
- {
- return 0;
- }
- case 'i', 'd':
- {
- new
- neg = 1,
- num = 0,
- ch = string[stringPos];
- if (ch == '-')
- {
- neg = -1;
- ch = string[++stringPos];
- }
- do
- {
- stringPos++;
- if ('0' <= ch <= '9')
- {
- num = (num * 10) + (ch - '0');
- }
- else
- {
- return -1;
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num * neg);
- }
- case 'h', 'x':
- {
- new
- num = 0,
- ch = string[stringPos];
- do
- {
- stringPos++;
- switch (ch)
- {
- case 'x', 'X':
- {
- num = 0;
- continue;
- }
- case '0' .. '9':
- {
- num = (num << 4) | (ch - '0');
- }
- case 'a' .. 'f':
- {
- num = (num << 4) | (ch - ('a' - 10));
- }
- case 'A' .. 'F':
- {
- num = (num << 4) | (ch - ('A' - 10));
- }
- default:
- {
- return -1;
- }
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num);
- }
- case 'c':
- {
- setarg(paramPos, 0, string[stringPos++]);
- }
- case 'f':
- {
- new changestr[16], changepos = 0, strpos = stringPos;
- while(changepos < 16 && string[strpos] && string[strpos] != delim)
- {
- changestr[changepos++] = string[strpos++];
- }
- changestr[changepos] = '\0';
- setarg(paramPos,0,_:floatstr(changestr));
- }
- case 'p':
- {
- delim = format[formatPos++];
- continue;
- }
- case '\'':
- {
- new
- end = formatPos - 1,
- ch;
- while ((ch = format[++end]) && ch != '\'') {}
- if (!ch)
- {
- return -1;
- }
- format[end] = '\0';
- if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
- {
- if (format[end + 1])
- {
- return -1;
- }
- return 0;
- }
- format[end] = '\'';
- stringPos = ch + (end - formatPos);
- formatPos = end + 1;
- }
- case 'u':
- {
- new
- end = stringPos - 1,
- id = 0,
- bool:num = true,
- ch;
- while ((ch = string[++end]) && ch != delim)
- {
- if (num)
- {
- if ('0' <= ch <= '9')
- {
- id = (id * 10) + (ch - '0');
- }
- else
- {
- num = false;
- }
- }
- }
- if (num && IsPlayerConnected(id))
- {
- setarg(paramPos, 0, id);
- }
- else
- {
- #if !defined foreach
- #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
- #define __SSCANF_FOREACH__
- #endif
- string[end] = '\0';
- num = false;
- new
- name[MAX_PLAYER_NAME];
- id = end - stringPos;
- foreach (Player, playerid)
- {
- GetPlayerName(playerid, name, sizeof (name));
- if (!strcmp(name, string[stringPos], true, id))
- {
- setarg(paramPos, 0, playerid);
- num = true;
- break;
- }
- }
- if (!num)
- {
- setarg(paramPos, 0, INVALID_PLAYER_ID);
- }
- string[end] = ch;
- #if defined __SSCANF_FOREACH__
- #undef foreach
- #undef __SSCANF_FOREACH__
- #endif
- }
- stringPos = end;
- }
- case 's', 'z':
- {
- new
- i = 0,
- ch;
- if (format[formatPos])
- {
- while ((ch = string[stringPos++]) && ch != delim)
- {
- setarg(paramPos, i++, ch);
- }
- if (!i)
- {
- return -1;
- }
- }
- else
- {
- while ((ch = string[stringPos++]))
- {
- setarg(paramPos, i++, ch);
- }
- }
- stringPos--;
- setarg(paramPos, i, '\0');
- }
- default:
- {
- continue;
- }
- }
- while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
- {
- stringPos++;
- }
- while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
- {
- stringPos++;
- }
- paramPos++;
- }
- do
- {
- if ((delim = format[formatPos++]) > ' ')
- {
- if (delim == '\'')
- {
- while ((delim = format[formatPos++]) && delim != '\'') {}
- }
- else if (delim != 'z')
- {
- return delim;
- }
- }
- }
- while (delim > ' ');
- return 0;
- }
- /* ! FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !
- ! FILTERSCRIPT DE ATENDIMENTO DESENVOLVIDO POR SHADOWW5 !
- NAO RETIRE OS CREDITOS !! NAO RETIRE OS CREDITOS !!
- NAO RETIRE OS CREDITOS !! NAO RETIRE OS CREDITOS !!*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement