Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- __________________________________________________________________________
- | |
- | /| /| /¯¯¯¯¯¯¯¯¯¯/ |
- | | | | | | |¯¯¯¯¯¯¯¯ |
- | | | | | | ¯¯¯¯¯¯¯¯¯ \ |
- | | ¯¯¯¯ | ¯¯¯¯¯¯¯¯¯| | |
- | | |¯¯¯¯| | | | \ / |
- | | | | | /¯¯¯¯¯¯¯¯¯ / \/. 2.0 |
- | |/ |/ ¯¯¯¯¯¯¯¯¯¯¯ |
- | |
- | Helper System - v. 2.0 ~ Created by Twist (Kon_BR) |
- | All Rights reserveds ® |
- | |
- | |
- | http://forum.sa-mp.com/showthread.php?p=1906516#post1906516 |
- | http://forum.sa-mp.com/member.php?u=158736 |
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- */
- // Include
- #include <a_samp>
- // News
- new str[256]; // - New da string
- new Nick[MAX_PLAYER_NAME]; // - New do nick (GetPlayerName)
- new tmp[256]; // - Função tmp ~ cmd
- new Helper[MAX_PLAYERS]; // - Definimos o Helper (Quem é e quem não é)
- new HelperBloqueado[MAX_PLAYERS]; // - Variavel de quando um player é retirado de Helper (/RetirarHelper)
- new HelperDisponivel[MAX_PLAYERS]; // - Variavel de quando um helper está disponivel/indisponivel (/HPDisponivel e /HPIndisponivel)
- new NomeADM[MAX_PLAYER_NAME]; // - Variavel para nick de ADM.
- new ErrosSenhaHelper[MAX_PLAYERS]; // - Variaval de contar os erros de quando erra o dialog de login de Helper
- // Defines
- #define DialogLoginHelper 1576 // - Define da Dialog
- #define DialogHideForPlayer(%0) ShowPlayerDialog(%0, -1, 0, " ", " ", "", "") // - EXCELENTE define para esconder Dialogs. (By Kon_BR)
- // \ - > Inicio
- public OnFilterScriptInit()
- {
- print("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
- print(" ");
- print(" • [ HS ] Helper System - V. 2.0 • ");
- print(" - ");
- print(" Created by Twist (Kon_BR) ");
- print(" ® All Rights reserveds . ");
- print(" ");
- print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- Helper[playerid] = 0;
- HelperBloqueado[playerid] = 0;
- ErrosSenhaHelper[playerid] = 0;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- Helper[playerid] = 0;
- HelperBloqueado[playerid] = 0;
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- // • Falar como Helper
- if( (text[0] == '*') && Helper[playerid] == 1 && (strlen(text) > 1))
- {
- GetPlayerName(playerid, Nick, MAX_PLAYER_NAME);
- format(str, 128, "* Helper %s : %s", Nick, text[1]);
- for(new iPlayerID; iPlayerID < MAX_PLAYERS; iPlayerID++)
- {
- if(!IsPlayerConnected(iPlayerID)) continue;
- SendClientMessage(iPlayerID, 0xFFFF00FF, str);
- }
- return 0;
- }
- // • Chat dos Helpers
- if((text[0] == '!') && Helper[playerid] == 1 && (strlen(text) > 1))
- {
- GetPlayerName(playerid, Nick, MAX_PLAYER_NAME);
- strdel(text, 0, 1);
- format(text,128,"{FFFF00}| CHAT HELPER |{FFFFFF} » %s(%d) : %s", Nick,playerid, text);
- for(new x = 0, y = GetMaxPlayers(); x != y; x++)
- {
- if(Helper[playerid] == 1 || IsPlayerAdmin(playerid))
- {
- SendClientMessage(x, -1, text);
- }
- }
- return 0;
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- // - Funções dos cmds
- new cmd[256];
- new idx;
- cmd = strtok(cmdtext, idx);
- // =============== Comandos normais ===============
- // • Ver Helpers online !
- if(strcmp(cmd, "/helpers", true) == 0)
- {
- new count = 0;
- new msg[120];
- SendClientMessage(playerid, 0xFFFF00FF, "{FFFFFF}~~~~ | {FFFF00}Helpers Online{FFFFFF} | ~~~~");
- for(new i=0; i<MAX_PLAYERS; i++)
- {
- if(Helper[i] == 1)
- {
- if(IsPlayerConnected(i)){
- GetPlayerName(i, Nick, MAX_PLAYER_NAME);
- if(HelperDisponivel[playerid] == 1)
- {
- format(msg,sizeof(msg),"{FFFFFF}» {FFFF00}%s {FFFFFF}- {80FF00}Disponivel", Nick);
- SendClientMessage(playerid, -1, msg);
- }
- if(HelperDisponivel[playerid] == 0)
- {
- format(msg,sizeof(msg),"{FFFFFF}» {FFFF00}%s {FFFFFF}- {FF0000}Indisponivel", Nick);
- SendClientMessage(playerid, -1, msg);
- }
- count++;
- }
- }
- }
- if(count == 0){
- SendClientMessage(playerid, -1, "{C0C0C0}~ Nenhum Helper online no momento !");
- }
- return 1;
- }
- // • Pedir ajuda aos helpers (mensagem enviada aos Helpers)
- if(strcmp(cmd, "/pedirajuda", true) == 0 || strcmp(cmd,"/pa", true) == 0)
- {
- new pedido[256];
- pedido = strrest(cmdtext,idx);
- if(!strlen(pedido)) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | Use : /PedirAjuda (Pedido) ");
- if(strlen(pedido) > 256)
- {
- SendClientMessage(playerid,-1,"{FF0000}| ERRO | Pedido muito grande ! (Limite : 256 Caracteres)");
- return 0;
- }
- GetPlayerName(playerid, Nick, MAX_PLAYER_NAME);
- for(new i = 0, e = GetMaxPlayers(); i < e; i++)
- {
- if(Helper[i] == 1)
- {
- SendClientMessage(i,-1," ");
- SendClientMessage(i,-1,"{808000} • PEDIDO DE AJUDA •{FFFFFF}");
- format(str, sizeof(str), "{FFFF00} » {FFFFFF}Pedido de : {008080}%s {FFFFFF}(ID : %d).", Nick,playerid);
- SendClientMessage(i,-1,str);
- format(str, sizeof(str), "{FFFF00} » {FFFFFF}Ocorrência : ' {FFFF00}%s{FFFFFF} ' .",pedido);
- SendClientMessage(i,-1,str);
- SendClientMessage(i,-1," • ----------------------------- • ");
- SendClientMessage(i,-1," ");
- PlayerPlaySound(i, 1056, 0,0,0);
- GameTextForPlayer(i, "~y~P.A ~w~!", 2000, 1);
- }
- }
- SendClientMessage(playerid, -1, "{FFFF00}| INFO | Seu pedido de ajuda foi enviado aos Helpers ! ");
- SendClientMessage(playerid, -1, "* Caso seu pedido seja 'inutil' ou não tenha nada em relação, será ignorado. E caso continue mandando o mesmo terá providências .");
- return 1;
- }
- // • Login de helper
- if(strcmp(cmd, "/logarhelper", true) == 0)
- {
- if(Helper[playerid] == 1) return SendClientMessage(playerid,-1,"{FF0000}| ERRO | Você já está logado como um helper !");
- if(HelperBloqueado[playerid] == 1) return SendClientMessage(playerid,-1,"{FF0000}| ERRO | Você está bloqueado de logar pois um admin o retirou deste cargo !");
- ShowPlayerDialog(playerid,DialogLoginHelper,DIALOG_STYLE_PASSWORD,"{FFFFFF}| {FFFF00}Login de Helper {FFFFFF}|","• Digite a senha !","Ok","Cancelar");
- return 1;
- }
- // =============== Comandos apenas logado de Helper ! ===============
- // - Função de apenas Helpers poderem executar o comando !
- if(Helper[playerid] == 1)
- {
- // • Deslogar de helper
- if(strcmp(cmd, "/deslogarhelper", true) == 0)
- {
- if(Helper[playerid] == 0) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | Você não está logado como um Helper para deslogar !");
- SendClientMessage(playerid, -1, "{FFFF00}| INFO | Você deslogou seu Helper ! Para logar denovo digite /LogarHelper ! ");
- Helper[playerid] = 0;
- GetPlayerName(playerid, Nick, MAX_PLAYER_NAME);
- for(new i = 0, e = GetMaxPlayers(); i < e; i++)
- {
- if(IsPlayerAdmin(i))
- {
- format(str, sizeof(str), "{0080C0}| INFO ADMINS | O player %s deslogou como Helper !",Nick);
- SendClientMessage(i,-1,str);
- }
- }
- return 1;
- }
- // • Ir até os jogadores !
- if(strcmp( cmd, "/hpir", true ) == 0)
- {
- tmp = strtok(cmdtext,idx);
- if(!strlen(tmp)) { return SendClientMessage(playerid, -1, "{FF0000}| ERRO | USE : /HPIr (ID do jogador)"); }
- new Float:X, Float:Y, Float:Z;
- new id = strval(tmp);
- if(!IsPlayerConnected(id)) {
- SendClientMessage(playerid,-1,"{FF0000}| ERRO | Player não conectado !");
- }
- if(IsPlayerConnected(id)) {
- if(GetPlayerVehicleID(playerid))
- {
- GetPlayerPos( strval(tmp), X, Y, Z );
- SetVehiclePos( GetPlayerVehicleID(playerid), X+2, Y+2, Z );
- } else {
- GetPlayerPos( strval(tmp), X, Y, Z );
- SetPlayerPos( playerid, X+2, Y+2, Z );
- new pName[MAX_PLAYER_NAME];
- GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
- format(str,sizeof str,"{FFFF00}| HELPER | O Helper %s foi até a sua posição !",pName);
- SendClientMessage(strval(tmp),-1,str);
- new tName[MAX_PLAYER_NAME];
- GetPlayerName(strval(tmp),tName,MAX_PLAYER_NAME);
- format(str,sizeof str,"{FFFF80}| INFO HELPER | Você foi até a posição de %s !",tName);
- SendClientMessage(playerid,-1,str);
- }
- }
- return 1;
- }
- // • Trazer o jogador
- if(strcmp(cmd, "/hptrazer", true) == 0)
- {
- tmp = strtok(cmdtext, idx);
- if(!strlen(tmp)) { return SendClientMessage(playerid, -1, "{FF0000}| ERRO | USE : /HPIr (ID do jogador)"); }
- new Float:X, Float:Y, Float:Z;
- new id = strval(tmp);
- if(!IsPlayerConnected(id)) {
- SendClientMessage(playerid,-1,"{FF0000}| ERRO | Player invalido/não conectado !");
- }
- if(IsPlayerConnected(id)) {
- if(GetPlayerVehicleID(strval(tmp)))
- {
- GetPlayerPos(playerid, X, Y, Z);
- SetVehiclePos(GetPlayerVehicleID(strval(tmp)), X+2, Y+2, Z);
- } else {
- GetPlayerPos(playerid, X, Y, Z);
- SetPlayerPos(strval(tmp), X+2, Y+2, Z);
- new pName[MAX_PLAYER_NAME];
- GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
- format(str,sizeof str,"{FFFF00}| HELPER | O Helper %s trouxe você à esta posição !",pName);
- SendClientMessage(strval(tmp),-1,str);
- new tName[MAX_PLAYER_NAME];
- GetPlayerName(strval(tmp),tName,MAX_PLAYER_NAME);
- format(str,sizeof str,"{FFFF80}| INFO HELPER | Você trouxe %s à esta posição !",tName);
- SendClientMessage(playerid,-1,str);
- }
- }
- return 1;
- }
- // • Ficar Disponivel (/Helpers)
- if(strcmp(cmd, "/hpdisponivel", true) == 0)
- {
- if(HelperDisponivel[playerid] == 1) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | Você já está disponivel !");
- SendClientMessage(playerid, -1, "{FFFF80}| INFO HELPER | Você agora está disponivel (/Helpers)! ");
- HelperDisponivel[playerid] = 1;
- return 1;
- }
- // • Ficar Indisponivel (/Helpers)
- if(strcmp(cmd, "/hpindisponivel", true) == 0)
- {
- if(HelperDisponivel[playerid] == 0) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | Você já está indisponivel !");
- SendClientMessage(playerid, -1, "{FFFF80}| INFO HELPER | Você, agora está indisponivel (/Helpers)!");
- HelperDisponivel[playerid] = 0;
- return 1;
- }
- // • Ver comandos Helpers !
- if (strcmp(cmd, "/comandoshelper", true) == 0)
- {
- new msgdialog[410] = "\n\n{ABCDEF} • * (Texto) - Falar como Helper no chat \n • ! (Texto) - Falar no chat entre Helpers \n • /HPIr (ID) - Ir até o jogador que quer ajuda ! \n • /HPTrazer (ID) - Trazer o jogador que quer ajuda até a sua pos. \n • /DeslogarHelper - Deslogin de helper !\n • /HPDisponivel - Ficar disponivel\n • /HPIndisponivel - Ficar Indisponivel";
- strcat(msgdialog, "\n\n\n {FFFFFF}[ {FFFF00}HS{FFFFFF} ] Helper System v. 2.0 by {008000}Kon_BR");
- ShowPlayerDialog(playerid,1713,DIALOG_STYLE_MSGBOX,"{FFFFFF}|{FFFF00} Comandos de Helper {FFFFFF}| ",msgdialog,"Fechar","");
- return 1;
- }
- }
- // =============== Comandos de Administradores ! (Apenas logado na Rcon) ===============
- // • Mudar a senha dos Helpers !
- if(strcmp(cmd, "/mudarsenhahelper", true) == 0 && IsPlayerAdmin(playerid))
- {
- tmp = strtok(cmdtext,idx);
- if(!strlen(tmp)) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | Use : /MudarSenhaHelper (Nova Senha) ");
- if(strlen(tmp) > 15) return SendClientMessage(playerid,-1,"{FF0000}| ERRO | Senha muito grande ! (Limite : 15 Caracteres)");
- new File:arquivo=fopen("SenhaHelper.txt", io_write);
- if(arquivo)
- {
- fwrite(arquivo, tmp);
- fclose(arquivo);
- }
- format(str,sizeof str,"{0080C0}| INFO ADMIN | Você mudou a senha dos Helpers (/LogarHelper) para : ' %s ' !",tmp);
- SendClientMessage(playerid,-1,str);
- GetPlayerName(playerid, NomeADM, MAX_PLAYER_NAME);
- for(new i = 0, e = GetMaxPlayers(); i < e; i++)
- {
- if(IsPlayerAdmin(i))
- {
- format(str, sizeof(str), "{0080C0}| INFO ADMINS | O Administrador %s mudou a senha dos Helpers para : ' %s '",NomeADM,tmp);
- SendClientMessage(i,-1,str);
- }
- }
- return 1;
- }
- // • Retirar Helper
- if(strcmp( cmd, "/retirarhelper", true ) == 0 && IsPlayerAdmin(playerid))
- {
- tmp = strtok(cmdtext,idx);
- if(!strlen(tmp)) { return SendClientMessage(playerid, -1, "{FF0000}| ERRO | USE : /RetirarHelper (ID do Helper)"); }
- new id = strval(tmp);
- if(!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"{FF0000}| ERRO | Player invalido/não conectado !");
- if(Helper[id] == 0) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | Este player não está logado como um Helper para você retirá-lo do mesmo.");
- if(IsPlayerConnected(id)) {
- Helper[id] = 0;
- HelperBloqueado[id] = 1;
- new tName[MAX_PLAYER_NAME];
- GetPlayerName(strval(tmp),tName,MAX_PLAYER_NAME);
- format(str,sizeof str,"{0080C0}| INFO ADMIN | Você retirou o Helper de %s !",tName);
- SendClientMessage(playerid,-1,str);
- new gName[MAX_PLAYER_NAME];
- GetPlayerName(playerid,gName,MAX_PLAYER_NAME);
- format(str,sizeof str,"{FFFF00}| INFO | Seu Helper foi retirado pelo Administrador %s !",gName);
- SendClientMessage(id,-1,str);
- GetPlayerName(playerid, NomeADM, MAX_PLAYER_NAME);
- GetPlayerName(id, Nick, MAX_PLAYER_NAME);
- for(new i = 0, e = GetMaxPlayers(); i < e; i++)
- {
- if(IsPlayerAdmin(i))
- {
- format(str, sizeof(str), "{0080C0}| INFO ADMINS | O Administrador %s retirou/bloqueou o login de Helper de : ' %s '",NomeADM,Nick);
- SendClientMessage(i,-1,str);
- }
- }
- }
- return 1;
- }
- // • Helper ON
- if(strcmp(cmd, "/helperon", true) == 0 && IsPlayerAdmin(playerid))
- {
- if(Helper[playerid] == 1) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | Você já está com as funções de Helper ativadas !");
- SendClientMessage(playerid, -1, "{0080C0}| INFO ADMIN | Você ligou seu Helper (Ganhou as funções do mesmo) ! ");
- Helper[playerid] = 1;
- return 1;
- }
- // • Helper OFF
- if(strcmp(cmd, "/helperoff", true) == 0 && IsPlayerAdmin(playerid))
- {
- if(Helper[playerid] == 0) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | Você já está com as funções de Helper desativadas !");
- SendClientMessage(playerid, -1, "{0080C0}| INFO ADMIN | Você desligou seu Helper ! ");
- Helper[playerid] = 0;
- return 1;
- }
- return 0;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- new id = playerid;
- new nomep[MAX_PLAYER_NAME];
- // =============== DIALOG DE LOGIN DE HELPER ===============
- if(dialogid == DialogLoginHelper)
- {
- new sa[64];
- new File:arquivo = fopen("SenhaHelper.txt", io_read);
- if(!response) return SendClientMessage(playerid,-1,"{FFFF00}| INFO | Você cancelou o login de Helper ! .");
- if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DialogLoginHelper,DIALOG_STYLE_PASSWORD,"{FFFFFF}| {FFFF00}Login de Helper {FFFFFF}|","Digite a senha !","Ok","Cancelar");
- fread(arquivo, sa);
- if(strcmp(inputtext,sa,false)==0)
- {
- SendClientMessage(playerid,-1,"{FFFF80}| INFO HELPER | Logado como Helper com sucesso !");
- Helper[playerid] = 1;
- HelperDisponivel[playerid] = 1;
- GetPlayerName(id, nomep, MAX_PLAYER_NAME);
- for(new i = 0, e = GetMaxPlayers(); i < e; i++)
- {
- if(IsPlayerAdmin(i))
- {
- format(str, sizeof(str), "{0080C0}| INFO ADMINS | O player %s logou como Helper com sucesso !",nomep);
- SendClientMessage(i,-1,str);
- }
- }
- }
- else
- {
- ShowPlayerDialog(playerid,DialogLoginHelper,DIALOG_STYLE_PASSWORD,"{FFFFFF}| {FFFF00}Login de Helper {FFFFFF}|","{FF0000}Senha incorreta {FFFFFF} - Digite novamente !","Ok","Cancelar");
- GetPlayerName(id, nomep, MAX_PLAYER_NAME);
- for(new i = 0, e = GetMaxPlayers(); i < e; i++)
- {
- if(IsPlayerAdmin(i))
- {
- format(str, sizeof(str), "{0080C0}| INFO ADMINS | O player %s tentou logar de Helper com a senha : ' %s '",nomep,inputtext);
- SendClientMessage(i,-1,str);
- }
- }
- ErrosSenhaHelper[playerid]++;
- if(ErrosSenhaHelper[playerid] == 3)
- {
- SendClientMessage(playerid, -1, "{FF0000}| BAN | Você foi banido por errar a senha de Helper 3 vezes ! ");
- DialogHideForPlayer(playerid);
- Ban(playerid);
- return 1;
- }
- }
- fclose(arquivo);
- }
- return 0;
- }
- // / - > Final
- // - Strrest
- stock strrest(const string[], &index)
- {
- new length = strlen(string);
- while ((index < length) && (string[index] <= ' '))
- {
- index++;
- }
- new offset = index;
- new result[128];
- while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- return result;
- }
- // - Strtok
- strtok(const string[], &index)
- {
- new length = strlen(string);
- while ((index < length) && (string[index] <= ' '))
- {
- index++;
- }
- new offset = index;
- new result[20];
- while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement