Guest User

Blood Admin 1.1

a guest
Nov 23rd, 2013
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 43.71 KB | None | 0 0
  1. /*
  2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3.     BLOOD ADMIN VERSÃO 1.1
  4. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5.  
  6. Criado por Bruxo00
  7. Não retirar os créditos
  8.  
  9. ---------- Níveis de Admin ----------
  10.  
  11. 0 - Sem admin
  12. 1 - GameMaster
  13. 2 - Administrador
  14. 3 - Owner
  15.  
  16. ---------- Mais Informação ----------
  17.  
  18. /viraradmin - Só funciona se tiver logado na RCON
  19. /painel - Só owner pode usar e não precisa estar On-Duty
  20.  
  21. */
  22.  
  23. #include < a_samp >
  24. #include < DOF2 >
  25. #include < sscanf >
  26. #include < icmd7 >
  27.  
  28. #define Info    0xFFFFFFAA
  29. #define Erro    0xAA3333AA
  30. #define Sucesso 0x10F441AA
  31. #define Azul    0x63AFFF0A
  32.  
  33. #define DIALOG_REGISTO      321
  34. #define DIALOG_LOGAR        456
  35. #define DIALOG_MENU         215
  36. #define DIALOG_SKIN         658
  37. #define DIALOG_ARMAS        125
  38. #define DIALOG_PAINEL       302
  39. #define DIALOG_PAINELVIP    312
  40. #define DIALOG_PAINELAC     123
  41.  
  42. #define PASTA_CONTAS                "Contas/%s.ini"
  43. #define MENSAGEM_SEMADMIN           "Não tens permissão para utilizares esse comando."
  44. #define MENSAGEM_SEMVIP             "Não tens nível VIP suficiente!"
  45. #define MENSAGEM_NAOCONECTADO       "Esse ID não está conectado!"
  46. #define MENSAGEM_BAN                "A tua conta está banida deste servidor."
  47. #define MENSAGEM_NEEDDUTY           "{AA3333}Precisas de estar OnDuty!"
  48. #define MENSAGEM_MESMOID            "{AA3333}Não podes ultilizar esse comando em ti mesmo!"
  49. #define MENSAGEM_VIPDESABILITADO    "O sistema {10F441}VIP {FFFFFF}está foi desabilitado pela administração."
  50. #define MENSAGEM_DLOGIN             "{FFFFFF}Estás {10F441}registado{FFFFFF}, escreve a tua password para logares!"
  51. #define MENSAGEM_DREGISTO           "{FFFFFF}Não estás {AA3333}registado{FFFFFF}, escreva uma password para te registares!"
  52. #define MENSAGEM_DREGISTOSUCESSO    "{10F441}Registado{FFFFFF} com sucesso! \nEfectue o login!"
  53. #define MENSAGEM_DPASSWORD          "{FFFFFF}A password digitada é errada, digite-a novamente para logar! \nÁ terceira tentavia, serás {AA3333}kickado{FFFFFF}."
  54. #define MENSAGEM_DSKIN              "{FFFFFF}Introduz o a {10F441}Skin ID {FFFFFF}que queres. (0-299)"
  55. #define MENSAGEM_DSKIN2             "{FFFFFF}Espaço em branco. Introduz novamente a {10F441}Skin ID {FFFFFF}que queres."
  56. #define MENSAGEM_DPAINEL            "{63AFFF}[1] {10F441}Requer OnDuty\n{63AFFF}[2] {10F441}Chat\n{63AFFF}[3] {10F441}Sistema VIP\n{63AFFF}[4] {10F441}Anti-Cheat"
  57. #define MENSAGEM_DPAINELVIP         "{63AFFF}[1] {10F441}Sistema Total\n{63AFFF}[2] {10F441}Skins\n{63AFFF}[3] {10F441}Armas\n{63AFFF}[4] {10F441}Vida\n{63AFFF}[5] {10F441}Colete"
  58. #define MENSAGEM_DPAINELAC          "{63AFFF}[1] {10F441}Sistema Total\n{63AFFF}[2] {10F441}Anti Fake-Kill\n{63AFFF}[3] {10F441}Anti Rcon-Flood\n{63AFFF}[4] {10F441}Anti BOT"
  59.  
  60. #if !defined isnull
  61.     #define isnull(%1) \
  62.                 ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  63. #endif
  64.  
  65. forward SalvarDados(playerid);
  66. forward KickTimer(playerid);
  67. forward BanTimer(playerid);
  68. forward AntiFakeKill(playerid);
  69. forward Countdown();
  70. forward RCarros();
  71.  
  72. enum pInfo
  73. {
  74.     Password,
  75.     Score,
  76.     Dinheiro,
  77.     Skin,
  78.     Vip,
  79.     Admin,
  80.     Banido
  81. };
  82.  
  83. new PlayerInfo[MAX_PLAYERS][pInfo];
  84.  
  85. new ONDUTYREQ;
  86. new ABILCHAT;
  87.  
  88. new ABILVIP_TOTAL;
  89. new ABILVIP_SKINS;
  90. new ABILVIP_ARMAS;
  91. new ABILVIP_VIDA;
  92. new ABILVIP_COLETE;
  93.  
  94. new ABILAC_TOTAL;
  95. new ABILAC_FAKEKILL;
  96. new ABILAC_RCON;
  97. new ABILAC_BOT;
  98.  
  99. new CFGAC_MAXKILLS;
  100. new CFGAC_MAXATTEMPTS;
  101.  
  102. new AC_CounterMaxKills;
  103. new AC_CounterAttempts;
  104. new AC_Ip[MAX_PLAYERS][24];
  105.  
  106. new OnDuty[MAX_PLAYERS];
  107. new tPass[MAX_PLAYERS];
  108. new ASpecar[MAX_PLAYERS];
  109. new Freezado[MAX_PLAYERS];
  110. new Jailed[MAX_PLAYERS];
  111. new Muted[MAX_PLAYERS];
  112.  
  113. new CounterCountdown;
  114. new CCountdown;
  115. new escolha;
  116.  
  117. stock GetNome(playerid)
  118. {
  119.     new nome[MAX_PLAYER_NAME];
  120.    
  121.     GetPlayerName(playerid, nome, sizeof(nome));
  122.     return nome;
  123. }
  124.  
  125. stock IsAdmin(playerid)
  126. {
  127.     return PlayerInfo[playerid][Admin];
  128. }
  129.  
  130. stock IsVip(playerid)
  131. {
  132.     return PlayerInfo[playerid][Vip];
  133. }
  134.  
  135. public OnFilterScriptInit()
  136. {
  137.     printf("\n Sistema de Admin / VIP / Registo carregado!\n");
  138.    
  139. /*
  140.                 ~~~~~~~~~~~~~~~~~~~~~~
  141.                     CONFIGURAÇÕES
  142.                 ~~~~~~~~~~~~~~~~~~~~~~
  143. */
  144.  
  145.     ONDUTYREQ = 1; // DEFAULT (1) - Precisa de estar OnDuty para efecutar comandos
  146.     ABILCHAT = 1; // DEFAULT (1) - Chat com tags de Admin/Vip activados
  147.    
  148.     ABILVIP_TOTAL = 1; // DEFAULT (1) - Abilita o sistema de VIP completo
  149.     ABILVIP_SKINS = 1; // DEFAULT (1) - Abilita o menu das skins
  150.     ABILVIP_ARMAS = 1; // DEFAULT (1) - Abilita o menu das armas
  151.     ABILVIP_VIDA = 1; // DEFAULT (1) - Dá vida ao jogador
  152.     ABILVIP_COLETE = 1; // DEFAULT (1) - Dá colete ao jogador
  153.    
  154.     ABILAC_TOTAL = 1; // DEFAULT (1) - Activa todos os anti-cheats
  155.     ABILAC_FAKEKILL = 1; // DEFAULT (1) - Activa o Anti Fake-Kill
  156.     ABILAC_RCON = 1; // DEFAULT (1) - Quem errar (2) vezes a rcon é banido
  157.     ABILAC_BOT = 0; // DEFAULT (1) - Se entrar 2 jogadores com IP's iguais o segundo é kickado
  158.  
  159.     CFGAC_MAXKILLS = 5; // DEFAULT (5) - Define o máximo de mortes para ser banido
  160.     CFGAC_MAXATTEMPTS = 2; // DEFAULT (2) - Define o máximo de tentativas na rcon antes de ser banido
  161.    
  162.     return 1;
  163. }
  164.  
  165. public OnFilterScriptExit()
  166. {
  167.     DOF2_Exit();
  168.     return 1;
  169. }
  170.  
  171. public OnRconLoginAttempt(ip[], password[], success)
  172. {
  173.     if(ABILAC_RCON == 0) return 1;
  174.     AC_CounterAttempts++;
  175.     if(AC_CounterAttempts == CFGAC_MAXATTEMPTS)
  176.     {
  177.         if(!success)
  178.         {
  179.             new ipa[16];
  180.             new string[128];
  181.  
  182.             printf("[Blood Admin]: RCON ERRADA [ IP: %s | Password Tentada: %s ]",ip, password);
  183.             for(new i=0; i<MAX_PLAYERS; i++)
  184.             {
  185.                 GetPlayerIp(i, ipa, sizeof(ipa));
  186.                 if(!strcmp(ip, ipa, false))
  187.                 {
  188.                     format(string, sizeof(string), "O jogador {10F441}%s {FFFFFF}foi banido por tentar adivinhar a RCON!", GetNome(i));
  189.                     SendClientMessageToAll(Info, string);
  190.                    
  191.                     SetTimerEx("BanTimer", 50, false, "i", i);
  192.                    
  193.                     AC_CounterAttempts = 0;
  194.                 }
  195.             }
  196.         }
  197.     }
  198.     return 1;
  199. }
  200.  
  201. public OnPlayerDeath(playerid, killerid, reason)
  202. {
  203.     if(ABILAC_TOTAL == 0) return 1;
  204.     if(ABILAC_FAKEKILL == 0) return 1;
  205.    
  206.     SetTimerEx("AntiFakeKill", 1000, false, "i", playerid);
  207.     AC_CounterMaxKills++;
  208.  
  209.     return 1;
  210. }
  211.  
  212. public OnPlayerConnect(playerid)
  213. {
  214.     new ficheiro[32];
  215.    
  216.     format(ficheiro, sizeof(ficheiro), PASTA_CONTAS, GetNome(playerid));
  217.  
  218.     if(ABILAC_BOT == 1)
  219.     {
  220.         GetPlayerIp(playerid, AC_Ip[playerid], 24);
  221.         for(new i = 0; i < MAX_PLAYERS; i++)
  222.         {
  223.             if(IsPlayerConnected(i))
  224.             {
  225.                 if(!strcmp(AC_Ip[playerid], AC_Ip[i], false))
  226.                 {
  227.                     printf("[Blood Admin]: ANTI BOT | IP: %s detectado como possível BOT");
  228.                     Kick(playerid);
  229.                 }
  230.             }
  231.         }
  232.     }
  233.      
  234.     if(Jailed[playerid] == 1)
  235.     {
  236.         SetPlayerPos(playerid, 0, 0, 0); // CORDENADAS DO ADMIN JAIL
  237.         SendClientMessage(playerid, Info, "Não é com um disconnect que te vais safar do AJ! :)");
  238.     }
  239.  
  240.     tPass[playerid] = 0;
  241.    
  242.     if(DOF2_FileExists(ficheiro)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", MENSAGEM_DLOGIN, "Login", "Cancelar");
  243.     else ShowPlayerDialog(playerid, DIALOG_REGISTO, DIALOG_STYLE_INPUT, "Registo", MENSAGEM_DREGISTO, "Registar", "Cancelar");
  244.     return 1;
  245. }
  246.  
  247. public OnPlayerDisconnect(playerid)
  248. {
  249.     OnDuty[playerid] = 0;
  250.    
  251.     SalvarDados(playerid);
  252.     return 1;
  253. }
  254.  
  255. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  256. {
  257.     new ficheiro[32];
  258.  
  259.     format(ficheiro, sizeof(ficheiro), PASTA_CONTAS, GetNome(playerid));
  260.     if(dialogid == DIALOG_REGISTO)
  261.     {
  262.         new d, m, a;
  263.         new s, mi, h;
  264.         new string[128];
  265.        
  266.         if(!response) return Kick(playerid);
  267.         if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Registo", MENSAGEM_DREGISTO, "Registar", "Sair");
  268.         format(ficheiro, sizeof(ficheiro), PASTA_CONTAS, GetNome(playerid));
  269.        
  270.         gettime(h, mi, s);
  271.         getdate(a, m, d);
  272.        
  273.         format(string, sizeof(string), "%d:%d - %d/%d/%d", h, mi, d, m, a);
  274.        
  275.         DOF2_CreateFile(ficheiro);
  276.  
  277.         DOF2_SetString(ficheiro, "Password", inputtext);
  278.         DOF2_SetInt(ficheiro, "Score", PlayerInfo[playerid][Score]);
  279.         DOF2_SetInt(ficheiro, "Dinheiro", PlayerInfo[playerid][Dinheiro]);
  280.         DOF2_SetInt(ficheiro, "Skin", PlayerInfo[playerid][Skin]);
  281.         DOF2_SetInt(ficheiro, "Vip", PlayerInfo[playerid][Vip]);
  282.         DOF2_SetInt(ficheiro, "Admin", PlayerInfo[playerid][Admin]);
  283.         DOF2_SetInt(ficheiro, "Banido", PlayerInfo[playerid][Banido]);
  284.         DOF2_SetString(ficheiro, "LastIP", "0");
  285.         DOF2_SetString(ficheiro, "DataRegisto", string);
  286.         DOF2_SetString(ficheiro, "DataBan", "Unknown");
  287.  
  288.         DOF2_SaveFile();
  289.  
  290.         ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", MENSAGEM_DREGISTOSUCESSO, "Login", "Cancelar");
  291.     }
  292.     if(dialogid == DIALOG_LOGAR)
  293.     {
  294.         new d, m, a;
  295.         new s, mi, h;
  296.         new string[128];
  297.        
  298.         gettime(h, mi, s);
  299.         getdate(a, m, d);
  300.  
  301.         format(string, sizeof(string), "%d:%d - %d/%d/%d", h, mi, d, m, a);
  302.         DOF2_SetString(ficheiro, "DataLastLogin", string);
  303.        
  304.         if(!response) return Kick(playerid);
  305.         format(ficheiro, sizeof(ficheiro), PASTA_CONTAS, GetNome(playerid));
  306.         if(!strcmp(DOF2_GetString(ficheiro, "Password"), inputtext, false))
  307.         {
  308.             PlayerInfo[playerid][Score] = DOF2_GetInt(ficheiro, "Score");
  309.             PlayerInfo[playerid][Dinheiro] = DOF2_GetInt(ficheiro, "Dinheiro");
  310.             PlayerInfo[playerid][Skin] = DOF2_GetInt(ficheiro, "Skin");
  311.             PlayerInfo[playerid][Vip] = DOF2_GetInt(ficheiro, "Vip");
  312.             PlayerInfo[playerid][Admin] = DOF2_GetInt(ficheiro, "Admin");
  313.             PlayerInfo[playerid][Banido] = DOF2_GetInt(ficheiro, "Banido");
  314.            
  315.             SetPlayerScore(playerid, PlayerInfo[playerid][Score]);
  316.             GivePlayerMoney(playerid, PlayerInfo[playerid][Dinheiro]);
  317.             SetPlayerSkin(playerid, PlayerInfo[playerid][Skin]);
  318.            
  319.             if(PlayerInfo[playerid][Banido] == 1)
  320.             {
  321.                 SendClientMessage(playerid, Erro, MENSAGEM_BAN);
  322.                 SetTimerEx("KickTimer", 50, false, "i", playerid);
  323.             }
  324.             DOF2_SetString(ficheiro, "DataLastLogin", string);
  325.         }
  326.         else
  327.         {
  328.             if(tPass[playerid] != 3)
  329.             {
  330.                 tPass[playerid]++;
  331.                 ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", MENSAGEM_DPASSWORD, "Login", "Cancelar");
  332.                 DOF2_SetString(ficheiro, "DataLastLogin", string);
  333.             }
  334.             else
  335.             {
  336.                 SendClientMessage(playerid, Erro, "Foste kickado por errares a password 3 vezes.");
  337.                 SetTimerEx("KickTimer", 50, false, "i", playerid);
  338.             }
  339.         }
  340.     }
  341.     if(dialogid == DIALOG_MENU)
  342.     {
  343.         if(!response) return 1;
  344.         switch(listitem)
  345.         {
  346.             case 0:
  347.             {
  348.                 if(ABILVIP_SKINS == 0) return SendClientMessage(playerid, Erro, "Esse menu foi desabilitado pela administração.");
  349.                 ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_INPUT, "#1 SKIN", MENSAGEM_DSKIN, "Escolher", "Cancelar");
  350.             }
  351.             case 1:
  352.             {
  353.                 if(ABILVIP_ARMAS == 0) return SendClientMessage(playerid, Erro, "Esse menu foi desabilitado pela administração.");
  354.                 ShowPlayerDialog(playerid, DIALOG_ARMAS, DIALOG_STYLE_LIST, "#2 ARMAS", "Desert Eagle\nShotgun\nSawnoff\nCombat Shotgun\nMP5\nM4\nAK-47", "Escolher", "Cancelar");
  355.             }
  356.             case 2:
  357.             {
  358.                 if(ABILVIP_VIDA == 0) return SendClientMessage(playerid, Erro, "Essa opção foi desabilitado pela administração.");
  359.                 SetPlayerHealth(playerid, 100.00);
  360.                 SendClientMessage(playerid, Sucesso, "Foste curado!");
  361.             }
  362.             case 3:
  363.             {
  364.                 if(ABILVIP_COLETE == 0) return SendClientMessage(playerid, Erro, "Essa opção foi desabilitado pela administração.");
  365.                 SetPlayerArmour(playerid, 100.00);
  366.                 SendClientMessage(playerid, Sucesso, "Recebeste colete!");
  367.             }
  368.         }
  369.     }
  370.     if(dialogid == DIALOG_SKIN)
  371.     {
  372.         if(!response) return 1;
  373.         new string[128];
  374.         new s;
  375.        
  376.         s = strval(inputtext);
  377.        
  378.         if(isnull(inputtext)) return ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_INPUT, "#1 SKIN", MENSAGEM_DSKIN, "Escolher", "Cancelar");
  379.        
  380.         format(string, sizeof(string), "Skin {10F441}%d {FFFFFF}selecionada com sucesso!", s);
  381.         SendClientMessage(playerid, Info, string);
  382.        
  383.         SetPlayerSkin(playerid, s);
  384.     }
  385.     if(dialogid == DIALOG_ARMAS)
  386.     {
  387.         if(!response) return 1;
  388.         switch(listitem)
  389.         {
  390.             case 0:
  391.             {
  392.                 GivePlayerWeapon(playerid, 24, 1000);
  393.                 SendClientMessage(playerid, Info, "Recebeste uma {10F441}Desert Eagle{FFFFFF}!");
  394.             }
  395.             case 1:
  396.             {
  397.                 GivePlayerWeapon(playerid, 25, 1000);
  398.                 SendClientMessage(playerid, Info, "Recebeste uma {10F441}Shotgun{FFFFFF}!");
  399.             }
  400.             case 2:
  401.             {
  402.                 GivePlayerWeapon(playerid, 26, 1000);
  403.                 SendClientMessage(playerid, Info, "Recebeste uma {10F441}Sawnoff Shotgun{FFFFFF}!");
  404.             }
  405.             case 3:
  406.             {
  407.                 GivePlayerWeapon(playerid, 27, 1000);
  408.                 SendClientMessage(playerid, Info, "Recebeste uma {10F441}Combat Shotgun{FFFFFF}!");
  409.             }
  410.             case 4:
  411.             {
  412.                 GivePlayerWeapon(playerid, 29, 1000);
  413.                 SendClientMessage(playerid, Info, "Recebeste uma {10F441}MP5{FFFFFF}!");
  414.             }
  415.             case 5:
  416.             {
  417.                 GivePlayerWeapon(playerid, 31, 1000);
  418.                 SendClientMessage(playerid, Info, "Recebeste uma {10F441}M4{FFFFFF}!");
  419.             }
  420.             case 6:
  421.             {
  422.                 GivePlayerWeapon(playerid, 30, 1000);
  423.                 SendClientMessage(playerid, Info, "Recebeste uma {10F441}AK-47{FFFFFF}!");
  424.             }
  425.         }
  426.     }
  427.     if(dialogid == DIALOG_PAINEL)
  428.     {
  429.         if(!response) return 1;
  430.         switch(listitem)
  431.         {
  432.             case 0:
  433.             {
  434.                 if(ONDUTYREQ == 1)
  435.                 {
  436.                     ONDUTYREQ = 0;
  437.  
  438.                     SendClientMessage(playerid, Info, "O requerimento{10F441}On-Duty {FFFFFF}foi {AA3333}desactivado{FFFFFF}.");
  439.                 }
  440.                 else
  441.                 {
  442.                     ONDUTYREQ = 1;
  443.  
  444.                     SendClientMessage(playerid, Info, "O requerimento{10F441}On-Duty {FFFFFF}foi {10F441}activado{FFFFFF}.");
  445.                 }
  446.             }
  447.             case 1:
  448.             {
  449.                 if(ABILCHAT == 1)
  450.                 {
  451.                     ABILCHAT = 0;
  452.  
  453.                     SendClientMessage(playerid, Info, "O {10F441}Chat {FFFFFF}foi {AA3333}desactivado{FFFFFF}.");
  454.                 }
  455.                 else
  456.                 {
  457.                     ABILCHAT = 1;
  458.  
  459.                     SendClientMessage(playerid, Info, "O {10F441}Chat {FFFFFF}foi {10F441}activado{FFFFFF}.");
  460.                 }
  461.             }
  462.             case 2:
  463.             {
  464.                 ShowPlayerDialog(playerid, DIALOG_PAINELVIP, DIALOG_STYLE_LIST, "Painel de Controlo > VIP", MENSAGEM_DPAINELVIP, "Escolher", "Voltar");
  465.             }
  466.             case 3:
  467.             {
  468.                 ShowPlayerDialog(playerid, DIALOG_PAINELAC, DIALOG_STYLE_LIST, "Painel de Controlo > Anti-Cheat", MENSAGEM_DPAINELAC, "Escolher", "Voltar");
  469.             }
  470.         }
  471.     }
  472.     if(dialogid == DIALOG_PAINELVIP)
  473.     {
  474.         if(!response) return ShowPlayerDialog(playerid, DIALOG_PAINEL, DIALOG_STYLE_LIST, "Painel de Controlo", MENSAGEM_DPAINEL, "Escolher", "Sair");
  475.         switch(listitem)
  476.         {
  477.             case 0:
  478.             {
  479.                 if(ABILVIP_TOTAL == 1)
  480.                 {
  481.                     ABILVIP_TOTAL = 0;
  482.  
  483.                     SendClientMessage(playerid, Info, "O sistema de {10F441}VIP {FFFFFF}foi {AA3333}desactivado{FFFFFF}.");
  484.                 }
  485.                 else
  486.                 {
  487.                     ABILVIP_TOTAL = 1;
  488.  
  489.                     SendClientMessage(playerid, Info, "O sistema de {10F441}VIP {FFFFFF}foi {10F441}activado{FFFFFF}.");
  490.                 }
  491.                 return 1;
  492.             }
  493.             case 1:
  494.             {
  495.                 if(ABILVIP_SKINS == 1)
  496.                 {
  497.                     ABILVIP_SKINS = 0;
  498.                    
  499.                     SendClientMessage(playerid, Info, "O menu das {10F441}Skins {FFFFFF}foi {AA3333}desactivado{FFFFFF}.");
  500.                 }
  501.                 else
  502.                 {
  503.                     ABILVIP_SKINS = 1;
  504.                    
  505.                     SendClientMessage(playerid, Info, "O menu das {10F441}Skins {FFFFFF}foi {10F441}activado{FFFFFF}.");
  506.                 }
  507.             }
  508.             case 2:
  509.             {
  510.                 if(ABILVIP_ARMAS == 1)
  511.                 {
  512.                     ABILVIP_ARMAS = 0;
  513.  
  514.                     SendClientMessage(playerid, Info, "O menu das {10F441}Armas {FFFFFF}foi {AA3333}desactivado{FFFFFF}.");
  515.                 }
  516.                 else
  517.                 {
  518.                     ABILVIP_ARMAS = 1;
  519.  
  520.                     SendClientMessage(playerid, Info, "O menu das{10F441}Armas {FFFFFF}foi {10F441}activado{FFFFFF}.");
  521.                 }
  522.             }
  523.             case 3:
  524.             {
  525.                 if(ABILVIP_VIDA == 1)
  526.                 {
  527.                     ABILVIP_VIDA = 0;
  528.  
  529.                     SendClientMessage(playerid, Info, "A opção da {10F441}Vida {FFFFFF}foi {AA3333}desactivada{FFFFFF}.");
  530.                 }
  531.                 else
  532.                 {
  533.                     ABILVIP_VIDA = 1;
  534.  
  535.                     SendClientMessage(playerid, Info, "A opção da {10F441}Vida {FFFFFF}foi {10F441}activada{FFFFFF}.");
  536.                 }
  537.             }
  538.             case 4:
  539.             {
  540.                 if(ABILVIP_COLETE == 1)
  541.                 {
  542.                     ABILVIP_COLETE = 0;
  543.  
  544.                     SendClientMessage(playerid, Info, "A opção do {10F441}Colete {FFFFFF}foi {AA3333}desactivada{FFFFFF}.");
  545.                 }
  546.                 else
  547.                 {
  548.                     ABILVIP_COLETE = 1;
  549.  
  550.                     SendClientMessage(playerid, Info, "A opção do {10F441}Colete {FFFFFF}foi {10F441}activada{FFFFFF}.");
  551.                 }
  552.             }
  553.         }
  554.     }
  555.     if(dialogid == DIALOG_PAINELAC)
  556.     {
  557.         if(!response) return ShowPlayerDialog(playerid, DIALOG_PAINEL, DIALOG_STYLE_LIST, "Painel de Controlo", MENSAGEM_DPAINEL, "Escolher", "Sair");
  558.         switch(listitem)
  559.         {
  560.             case 0:
  561.             {
  562.                 if(ABILAC_TOTAL == 1)
  563.                 {
  564.                     ABILAC_TOTAL = 0;
  565.  
  566.                     SendClientMessage(playerid, Info, "O sistema de {10F441}Anti-Cheat {FFFFFF}foi {AA3333}desactivado{FFFFFF}.");
  567.                 }
  568.                 else
  569.                 {
  570.                     ABILAC_TOTAL = 1;
  571.  
  572.                     SendClientMessage(playerid, Info, "O sistema de {10F441}Anti-Cheat {FFFFFF}foi {10F441}activado{FFFFFF}.");
  573.                 }
  574.             }
  575.             case 1:
  576.             {
  577.                 if(ABILAC_FAKEKILL == 1)
  578.                 {
  579.                     ABILAC_FAKEKILL = 0;
  580.  
  581.                     SendClientMessage(playerid, Info, "A opção da {10F441}Anti Fake Kill {FFFFFF}foi {AA3333}desactivada{FFFFFF}.");
  582.                 }
  583.                 else
  584.                 {
  585.                     ABILAC_FAKEKILL = 1;
  586.  
  587.                     SendClientMessage(playerid, Info, "A opção da {10F441}Anti Fake Kill {FFFFFF}foi {10F441}activada{FFFFFF}.");
  588.                 }
  589.             }
  590.             case 2:
  591.             {
  592.                 if(ABILAC_RCON == 1)
  593.                 {
  594.                     ABILAC_RCON = 0;
  595.  
  596.                     SendClientMessage(playerid, Info, "A opção da {10F441}Anti Rcon Flood {FFFFFF}foi {AA3333}desactivada{FFFFFF}.");
  597.                 }
  598.                 else
  599.                 {
  600.                     ABILAC_RCON = 1;
  601.  
  602.                     SendClientMessage(playerid, Info, "A opção da {10F441}Anti Rcon Flood {FFFFFF}foi {10F441}activada{FFFFFF}.");
  603.                 }
  604.             }
  605.             case 3:
  606.             {
  607.                 if(ABILAC_BOT == 1)
  608.                 {
  609.                     ABILAC_BOT = 0;
  610.  
  611.                     SendClientMessage(playerid, Info, "A opção do {10F441}Anti BOT {FFFFFF}foi {AA3333}desactivada{FFFFFF}.");
  612.                 }
  613.                 else
  614.                 {
  615.                     ABILAC_RCON = 1;
  616.  
  617.                     SendClientMessage(playerid, Info, "A opção do {10F441}Anti BOT {FFFFFF}foi {10F441}activada{FFFFFF}.");
  618.                 }
  619.             }
  620.         }
  621.     }
  622.     return 1;
  623. }
  624.  
  625. public OnPlayerSpawn(playerid)
  626. {
  627.     new ip[16];
  628.     new lip[16];
  629.     new ficheiro[32];
  630.  
  631.     format(ficheiro, sizeof(ficheiro), PASTA_CONTAS, GetNome(playerid));
  632.     format(lip, sizeof(lip), "%s", DOF2_GetString(ficheiro, "LastIP"));
  633.    
  634.     GetPlayerIp(playerid, ip, sizeof(ip));
  635.    
  636.     if(!strcmp(ip, lip))
  637.     {
  638.         SendClientMessage(playerid, Azul, "^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^");
  639.         SendClientMessage(playerid, Info, "A tua última visita utilizou um IP diferente!");
  640.         SendClientMessage(playerid, Azul, "^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^");
  641.     }
  642.     return 1;
  643. }
  644.  
  645. public OnPlayerCommandText(playerid, commandid, params[])
  646. {
  647.     switch(commandid)
  648.     {
  649.         case iscmd("s,e,t,v,i,p"):
  650.         {
  651.             if(IsAdmin(playerid) == 3)
  652.             {
  653.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  654.  
  655.                 new id;
  656.                 new lvl;
  657.                 new string[128];
  658.                 new string1[128];
  659.  
  660.                 if(sscanf(params, "dd", id, lvl)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/setvip [playerid] [nível]");
  661.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  662.  
  663.                 format(string, sizeof(string), "Colocaste o jogador {10F441}%s {FFFFFF}VIP com nível {10F441}%d{FFFFFF}.", GetNome(id), lvl);
  664.                 format(string1, sizeof(string1), "O administrador {10F441}%s {FFFFFF}colocou-te VIP nível {10F441}%d{FFFFFF}.", GetNome(playerid), lvl);
  665.                 SendClientMessage(playerid, Info, string);
  666.                 SendClientMessage(id, Info, string1);
  667.                
  668.                 PlayerInfo[id][Vip] = lvl;
  669.             }
  670.             else
  671.             {
  672.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  673.             }
  674.             return 1;
  675.         }
  676.         case iscmd("a,c,m,d,s"):
  677.         {
  678.             if(IsAdmin(playerid) >= 1)
  679.             {
  680.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  681.                
  682.                 SendClientMessage(playerid, Info, "{AA3333}-------------------- {FFFFFF}[ {10F441}COMANDOS {FFFFFF}] {AA3333}--------------------");
  683.                 SendClientMessage(playerid, Info, "{AA3333}[ADMINISTRAÇÃO]{FFFFFF} /aduty  /kick  /banconta  /banip  /spec  /freeze  /dardinheiro");
  684.                 SendClientMessage(playerid, Info, "{AA3333}[ADMINISTRAÇÃO]{FFFFFF} /goto  /gethere  /mute  /(a)dmin(j)ail");
  685.                 SendClientMessage(playerid, Info, "{AA3333}[VIP]{FFFFFF} /setvip");
  686.             }
  687.             else
  688.             {
  689.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  690.             }
  691.             return 1;
  692.         }
  693.         case iscmd("a,d,u,t,y"):
  694.         {
  695.             if(IsAdmin(playerid) >= 1)
  696.             {
  697.                 new string[128];
  698.                
  699.                 if(OnDuty[playerid] == 0)
  700.                 {
  701.                     SetPlayerHealth(playerid, 100000);
  702.                     SetPlayerArmour(playerid, 100000.0);
  703.                    
  704.                     format(string, sizeof(string), "O administrador {10F441}%s {FFFFFF}está agora {10F441}On-Duty{FFFFFF}!", GetNome(playerid));
  705.                     SendClientMessage(playerid, Info, string);
  706.                    
  707.                     OnDuty[playerid] = 1;
  708.                 }
  709.                 else
  710.                 {
  711.                     SetPlayerHealth(playerid, 100);
  712.                     SetPlayerArmour(playerid, 0);
  713.  
  714.                     format(string, sizeof(string), "O administrador {10F441}%s {FFFFFF}está agora {AA3333}Off-Duty{FFFFFF}!", GetNome(playerid));
  715.                     SendClientMessage(playerid, Info, string);
  716.  
  717.                     OnDuty[playerid] = 0;
  718.                 }
  719.             }
  720.             else
  721.             {
  722.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  723.             }
  724.             return 1;
  725.         }
  726.         case iscmd("a,j"), iscmd("a,d,m,i,n,j,a,i,l"):
  727.         {
  728.             if(IsAdmin(playerid))
  729.             {
  730.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  731.  
  732.                 new id;
  733.                 new reason[32];
  734.                 new string[128];
  735.                 new string1[128];
  736.  
  737.                 if(sscanf(params, "dd", id, reason)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/aj [playerid] [razão]");
  738.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  739.  
  740.                 if(Jailed[id] == 0)
  741.                 {
  742.                     format(string, sizeof(string), "Mandaste o jogador {10F441}%s {FFFFFF}para o AdminJail. Razão: {10F441}%s{FFFFFF}.", GetNome(id), reason);
  743.                     format(string1, sizeof(string1), "Foste de AJ pelo administrador {10F441}%s{FFFFFF}. Razão: {10F441}%s{FFFFFF}.", GetNome(playerid), reason);
  744.                     SendClientMessage(playerid, Info, string);
  745.                     SendClientMessage(id, Info, string1);
  746.                
  747.                     Jailed[id] = 1;
  748.                     SetPlayerPos(playerid, 0, 0, 0); // COORDENADAS DO ADMIN JAIL
  749.                 }
  750.                 else
  751.                 {
  752.                     format(string, sizeof(string), "Tiraste o jogador {10F441}%s {FFFFFF} do AdminJail. Razão: {10F441}%s{FFFFFF}.", GetNome(id), reason);
  753.                     format(string1, sizeof(string1), "O administrador {10F441}%s{FFFFFF} retirou-te do AJ. Razão: {10F441}%s{FFFFFF}.", GetNome(playerid), reason);
  754.                     SendClientMessage(playerid, Info, string);
  755.                     SendClientMessage(id, Info, string1);
  756.  
  757.                     Jailed[id] = 0;
  758.                     SetPlayerPos(playerid, 0, 0, 0); // COORDENADAS DA SAÍDA DO ADMIN JAIL
  759.                 }
  760.             }
  761.             else
  762.             {
  763.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  764.             }
  765.             return 1;
  766.         }
  767.         case iscmd("v,i,r,a,r,a,d,m,i,n"):
  768.         {
  769.             if(!IsPlayerAdmin(playerid)) return Kick(playerid);
  770.             SendClientMessage(playerid, Sucesso, "Tu colocaste-te administrador nível 3");
  771.  
  772.             PlayerInfo[playerid][Admin] = 3;
  773.  
  774.             SalvarDados(playerid);
  775.             return 1;
  776.         }
  777.         case iscmd("s,e,t,a,d,m,i,n"):
  778.         {
  779.             if(IsAdmin(playerid) == 3)
  780.             {
  781.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  782.  
  783.                 new id;
  784.                 new lvl;
  785.                 new string[128];
  786.                 new string1[128];
  787.  
  788.                 if(sscanf(params, "dd", id, lvl)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/setadmin [playerid] [nível]");
  789.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  790.  
  791.                 format(string, sizeof(string), "Colocaste o jogador {10F441}%s {FFFFFF}administrador de nível {10F441}%d{FFFFFF}.", GetNome(id), lvl);
  792.                 format(string1, sizeof(string1), "O administrador {10F441}%s {FFFFFF}colocou-te administrador nível {10F441}%d{FFFFFF}.", GetNome(playerid), lvl);
  793.  
  794.                 SendClientMessage(playerid, Info, string);
  795.                 SendClientMessage(playerid, Info, string1);
  796.                
  797.                 PlayerInfo[id][Admin] = lvl;
  798.             }
  799.             else
  800.             {
  801.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  802.             }
  803.             return 1;
  804.         }
  805.         case iscmd("k,i,c,k"):
  806.         {
  807.             if(IsAdmin(playerid) >= 1)
  808.             {
  809.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  810.                
  811.                 new id;
  812.                 new reason[64];
  813.                 new string[128];
  814.                
  815.                 if(sscanf(params, "ds", id, reason)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/kick [playerid] [razão]");
  816.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  817.                
  818.                 format(string, sizeof(string), "O administrador {10F441}%s {FFFFFF}kickou o jogador {10F441}%s{FFFFFF}. Razão: {10F441}%s{FFFFFF}.", GetNome(playerid), GetNome(id), reason);
  819.                 SendClientMessageToAll(Info, string);
  820.                
  821.                 SetTimerEx("KickTimer", 50, false, "i", id);
  822.             }
  823.             else
  824.             {
  825.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  826.             }
  827.             return 1;
  828.         }
  829.         case iscmd("b,a,n,c,o,n,t,a"):
  830.         {
  831.             if(IsAdmin(playerid) >= 2)
  832.             {
  833.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  834.                
  835.                 new id;
  836.                 new reason [64];
  837.                 new string[128];
  838.  
  839.                 if(sscanf(params, "ds", id, reason)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/banconta [playerid] [razão]");
  840.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  841.  
  842.                 format(string, sizeof(string), "O administrador {10F441}%s {FFFFFF}baniu o jogador (Conta) {10F441}%s{FFFFFF}. Razão: {10F441}%s{FFFFFF}.", GetNome(playerid), GetNome(id), reason);
  843.                 SendClientMessageToAll(Info, string);
  844.                
  845.                 PlayerInfo[id][Banido] = 1;
  846.                
  847.                 SalvarDados(id);
  848.  
  849.                 SetTimerEx("KickTimer", 50, false, "i", id);
  850.             }
  851.             else
  852.             {
  853.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  854.             }
  855.             return 1;
  856.         }
  857.         case iscmd("b,a,n,i,p"):
  858.         {
  859.             if(IsAdmin(playerid) >= 2)
  860.             {
  861.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  862.                
  863.                 new id;
  864.                 new reason [64];
  865.                 new string[128];
  866.  
  867.                 if(sscanf(params, "ds", id, reason)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/banip [playerid] [razão]");
  868.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  869.  
  870.                 format(string, sizeof(string), "O administrador {10F441}%s {FFFFFF}baniu o jogador (Conta e IP) {10F441}%s{FFFFFF}. Razão: {10F441}%s{FFFFFF}.", GetNome(playerid), GetNome(id), reason);
  871.                 SendClientMessageToAll(Info, string);
  872.  
  873.                 PlayerInfo[id][Banido] = 1;
  874.  
  875.                 SalvarDados(id);
  876.  
  877.                 SetTimerEx("BanTimer", 50, false, "i", id);
  878.             }
  879.             else
  880.             {
  881.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  882.             }
  883.             return 1;
  884.         }
  885.         case iscmd("s,p,e,c"):
  886.         {
  887.             if(IsAdmin(playerid) >= 1)
  888.             {
  889.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  890.                
  891.                 new id;
  892.                 new string[128];
  893.  
  894.                 if(ASpecar[playerid] == 1)
  895.                 {
  896.                     TogglePlayerSpectating(playerid, 0);
  897.                     SendClientMessage(playerid, Info, "Paraste o spectate.");
  898.                    
  899.                     ASpecar[playerid] = 0;
  900.                 }
  901.                 else
  902.                 {
  903.                     if(sscanf(params, "i", id)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/spec [playerid] (on & off)");
  904.                     if(id == playerid) return SendClientMessage(playerid, Info, MENSAGEM_MESMOID);
  905.                     if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  906.                     format(string, sizeof(string), "Estás a specar o jogador {10F441}%s{FFFFFF}.",GetNome(id));
  907.                     SendClientMessage(playerid, Info, string);
  908.                     if(IsPlayerInAnyVehicle(id))
  909.                     {
  910.                         PlayerSpectateVehicle(playerid, id);
  911.                     }
  912.                     else
  913.                     {
  914.                         PlayerSpectatePlayer(playerid, id);
  915.                     }
  916.                     ASpecar[playerid] = 1;
  917.                 }
  918.             }
  919.             else
  920.             {
  921.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  922.             }
  923.             return 1;
  924.         }
  925.         case iscmd("f,r,e,e,z,e"):
  926.         {
  927.             if(IsAdmin(playerid) >= 1)
  928.             {
  929.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  930.                
  931.                 new id;
  932.                 new string[128];
  933.                 new string1[128];
  934.  
  935.                 if(sscanf(params, "i", id)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/freeze [playerid] (on & off)");
  936.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  937.                
  938.                 if(Freezado[id] == 0)
  939.                 {
  940.                     format(string, sizeof(string), "Tu freezaste o jogador {10F441}%s{FFFFFF}.", GetNome(id));
  941.                     format(string1, sizeof(string1), "Foste congelado pelo administrador {10F441}%s{FFFFFF}.", GetNome(playerid));
  942.  
  943.                     SendClientMessage(playerid, Info, string);
  944.                     SendClientMessage(id, Info, string1);
  945.  
  946.                     TogglePlayerControllable(id, 0);
  947.                    
  948.                     Freezado[id] = 1;
  949.                 }
  950.                 else
  951.                 {
  952.                     format(string, sizeof(string), "Tu unfreezaste o jogador {10F441}%s{FFFFFF}.", GetNome(id));
  953.                     format(string1, sizeof(string1), "Foste descongelado pelo administrador {10F441}%s{FFFFFF}.", GetNome(playerid));
  954.  
  955.                     SendClientMessage(playerid, Info, string);
  956.                     SendClientMessage(id, Info, string1);
  957.  
  958.                     TogglePlayerControllable(id, 1);
  959.  
  960.                     Freezado[id] = 0;
  961.                 }
  962.             }
  963.             else
  964.             {
  965.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  966.             }
  967.             return 1;
  968.         }
  969.         case iscmd("d,a,r,d,i,n,h,e,i,r,o"):
  970.         {
  971.             if(IsAdmin(playerid) >= 1)
  972.             {
  973.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  974.  
  975.                 new id;
  976.                 new q;
  977.                 new string[128];
  978.                 new string1[128];
  979.  
  980.                 if(sscanf(params, "ii", id, q)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/dardinheiro [playerid] [quantia]");
  981.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  982.  
  983.                 format(string, sizeof(string), "Tu deste {10F441}%i ${FFFFFF} ao jogador {10F441}%s{FFFFFF}.", q, GetNome(id));
  984.                 format(string1, sizeof(string1), "Recebeste {10F441}%i ${FFFFFF} do administrador {10F441}%s{FFFFFF}.", q, GetNome(playerid));
  985.  
  986.                 SendClientMessage(playerid, Info, string);
  987.                 SendClientMessage(id, Info, string1);
  988.                
  989.                 GivePlayerMoney(id, q);
  990.             }
  991.             else
  992.             {
  993.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  994.             }
  995.             return 1;
  996.         }
  997.         case iscmd("g,o,t,o"):
  998.         {
  999.             if(IsAdmin(playerid) >= 1)
  1000.             {
  1001.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  1002.  
  1003.                 new id;
  1004.                 new string[128];
  1005.                 new string1[128];
  1006.                 new Float:x, Float:y, Float:z;
  1007.                
  1008.                 if(sscanf(params, "i", id)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/goto [playerid]");
  1009.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  1010.  
  1011.                 format(string, sizeof(string), "Foste até ao jogador {10F441}%s{FFFFFF}.", GetNome(id));
  1012.                 format(string1, sizeof(string1), "O administrador {10F441}%s{FFFFFF} teletransportou-se para ti.", GetNome(playerid));
  1013.  
  1014.                 SendClientMessage(playerid, Info, string);
  1015.                 SendClientMessage(id, Info, string1);
  1016.                
  1017.                 GetPlayerPos(id, x, y, z);
  1018.                
  1019.                 SetPlayerPos(playerid, x+2, y, z+2);
  1020.             }
  1021.             else
  1022.             {
  1023.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  1024.             }
  1025.             return 1;
  1026.         }
  1027.         case iscmd("g,e,t,h,e,r,e"):
  1028.         {
  1029.             if(IsAdmin(playerid) >= 1)
  1030.             {
  1031.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  1032.  
  1033.                 new id;
  1034.                 new string[128];
  1035.                 new string1[128];
  1036.                 new Float:x, Float:y, Float:z;
  1037.  
  1038.                 if(sscanf(params, "i", id)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/gethere [playerid]");
  1039.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  1040.  
  1041.                 format(string, sizeof(string), "Trouxeste o jogador {10F441}%s{FFFFFF} até ti.", GetNome(id));
  1042.                 format(string1, sizeof(string1), "O administrador {10F441}%s{FFFFFF} teletransportou-te para ele.", GetNome(playerid));
  1043.  
  1044.                 SendClientMessage(playerid, Info, string);
  1045.                 SendClientMessage(id, Info, string1);
  1046.  
  1047.                 GetPlayerPos(playerid, x, y, z);
  1048.  
  1049.                 SetPlayerPos(id, x+2, y, z+2);
  1050.             }
  1051.             else
  1052.             {
  1053.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  1054.             }
  1055.             return 1;
  1056.         }
  1057.         case iscmd("m,u,t,e"):
  1058.         {
  1059.             if(IsAdmin(playerid) >= 1)
  1060.             {
  1061.                 if(ONDUTYREQ == 1 && OnDuty[playerid] == 0) return SendClientMessage(playerid, Info, MENSAGEM_NEEDDUTY);
  1062.                
  1063.                 new id;
  1064.                 new reason[32];
  1065.                 new string[128];
  1066.                 new string1[128];
  1067.  
  1068.                 if(sscanf(params, "is", id, reason)) return SendClientMessage(playerid, Info, "{10F441}' USO ' {FFFFFF}/mute [playerid] [razão]");
  1069.                 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Erro, MENSAGEM_NAOCONECTADO);
  1070.  
  1071.                 if(Muted[id] == 0)
  1072.                 {
  1073.                     format(string, sizeof(string), "Deste mute ao jogador {10F441}%s{FFFFFF}. Razão: {10F441}%s{FFFFFF}.", GetNome(id), reason);
  1074.                     format(string1, sizeof(string1), "O administrador {10F441}%s{FFFFFF} deu-te mute. Razão: {10F441}%s{FFFFFF}.", GetNome(playerid), reason);
  1075.  
  1076.                     SendClientMessage(playerid, Info, string);
  1077.                     SendClientMessage(id, Info, string1);
  1078.  
  1079.                     Muted[id] = 1;
  1080.                 }
  1081.                 else
  1082.                 {
  1083.                     format(string, sizeof(string), "Deste unmute ao jogador {10F441}%s{FFFFFF}. Razão: {10F441}%s{FFFFFF}.", GetNome(id), reason);
  1084.                     format(string1, sizeof(string1), "O administrador {10F441}%s{FFFFFF} deu-te unmute. Razão: {10F441}%s{FFFFFF}.", GetNome(playerid), reason);
  1085.  
  1086.                     SendClientMessage(playerid, Info, string);
  1087.                     SendClientMessage(id, Info, string1);
  1088.  
  1089.                     Muted[id] = 0;
  1090.                 }
  1091.             }
  1092.             else
  1093.             {
  1094.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  1095.             }
  1096.             return 1;
  1097.         }
  1098.         case iscmd("r,e,s,p,a,w,n,c,a,r,r,o,s"):
  1099.         {
  1100.             if(IsAdmin(playerid) >= 1)
  1101.             {
  1102.                 new string[128];
  1103.  
  1104.                 format(string, sizeof(string), "O administrador {10F441}%s{FFFFFF} começou um countdown de respawn!", GetNome(playerid));
  1105.                 SendClientMessageToAll(Info, string);
  1106.  
  1107.                 CounterCountdown = 10;
  1108.                 escolha = 1;
  1109.  
  1110.                 CCountdown = SetTimer("Countdown", 1000, true);
  1111.             }
  1112.             else
  1113.             {
  1114.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  1115.             }
  1116.             return 1;
  1117.         }
  1118.         case iscmd("c,d,o,w,n"):
  1119.         {
  1120.             if(IsAdmin(playerid) >= 1)
  1121.             {
  1122.                 new string[128];
  1123.                
  1124.                 format(string, sizeof(string), "O administrador {10F441}%s{FFFFFF} começou um countdown!", GetNome(playerid));
  1125.                
  1126.                 CounterCountdown = 10;
  1127.                 escolha = 2;
  1128.                
  1129.                 CCountdown = SetTimer("Countdown", 1000, true);
  1130.             }
  1131.             else
  1132.             {
  1133.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  1134.             }
  1135.             return 1;
  1136.         }
  1137.         case iscmd("p,a,i,n,e,l"):
  1138.         {
  1139.             if(IsAdmin(playerid) == 3)
  1140.             {
  1141.                 ShowPlayerDialog(playerid, DIALOG_PAINEL, DIALOG_STYLE_LIST, "Painel de Controlo", MENSAGEM_DPAINEL, "Escolher", "Sair");
  1142.             }
  1143.             else
  1144.             {
  1145.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMADMIN);
  1146.             }
  1147.             return 1;
  1148.         }
  1149.         case iscmd("a,d,m,i,n,s"):
  1150.         {
  1151.             new c;
  1152.             new string[128];
  1153.            
  1154.             for(new i = 0; i < MAX_PLAYERS; i++)
  1155.             {
  1156.                 if(!IsPlayerConnected(i)) continue;
  1157.                 if(IsAdmin(i))
  1158.                 {
  1159.                     if(OnDuty[i] == 0)
  1160.                     {
  1161.                         format(string, sizeof(string), "[ADMINISTRADOR ONLINE]{FFFFFF}: {10F441}%s", GetNome(i));
  1162.                         SendClientMessage(playerid, Erro, string);
  1163.                     }
  1164.                     else
  1165.                     {
  1166.                         format(string, sizeof(string), "[ADMINISTRADOR ONLINE]{FFFFFF}: {10F441}%s {10F441}[ {10F441}ON DUTY {10F441}]", GetNome(i));
  1167.                         SendClientMessage(playerid, Erro, string);
  1168.                     }
  1169.                     c++;
  1170.                 }
  1171.                 if(i == MAX_PLAYERS && c == 0) SendClientMessage(playerid, Info, "Não há administradores online.");
  1172.             }
  1173.             return 1;
  1174.         }
  1175.         case iscmd("m,e,n,u,v,i,p"):
  1176.         {
  1177.             if(ABILVIP_TOTAL == 0) return SendClientMessage(playerid, Info, MENSAGEM_VIPDESABILITADO);
  1178.             if(IsVip(playerid) >= 1)
  1179.             {
  1180.                 ShowPlayerDialog(playerid, DIALOG_MENU, DIALOG_STYLE_LIST, "Menu VIP", "Skins\nArmas\nVida\nColete", "Selecionar", "Sair");
  1181.             }
  1182.             else
  1183.             {
  1184.                 SendClientMessage(playerid, Erro, MENSAGEM_SEMVIP);
  1185.             }
  1186.             return 1;
  1187.         }
  1188.     }
  1189.     return 0;
  1190. }
  1191.  
  1192. public OnPlayerText(playerid, text[])
  1193. {
  1194.     if(ABILCHAT == 0) return 1;
  1195.     if(Muted[playerid] == 1) return 0;
  1196.    
  1197.     new string[128];
  1198.    
  1199.     if(!IsVip(playerid) && !IsAdmin(playerid)) return 1;
  1200.    
  1201.     if(IsVip(playerid) == 1 && !IsAdmin(playerid))
  1202.     {
  1203.         format(string, sizeof(string), "{AAFFCC}[Vip Iron] {FFFFFF}%s: {63AFFF}%s", GetNome(playerid), text);
  1204.         SendClientMessageToAll(Info, string);
  1205.     }
  1206.     if(IsVip(playerid) == 2 && !IsAdmin(playerid))
  1207.     {
  1208.         format(string, sizeof(string), "{DEC03A}[Vip Gold] {FFFFFF}%s: {63AFFF}%s", GetNome(playerid), text);
  1209.         SendClientMessageToAll(Info, string);
  1210.     }
  1211.     if(IsAdmin(playerid) == 1)
  1212.     {
  1213.         format(string, sizeof(string), "{11EDD7}[Game-Master] {FFFFFF}%s: {63AFFF}%s", GetNome(playerid), text);
  1214.         SendClientMessageToAll(Info, string);
  1215.     }
  1216.     if(IsAdmin(playerid) == 2)
  1217.     {
  1218.         format(string, sizeof(string), "{FF0000}[Administrador] {FFFFFF}%s: {63AFFF}%s", GetNome(playerid), text);
  1219.         SendClientMessageToAll(Info, string);
  1220.     }
  1221.     if(IsAdmin(playerid) == 3)
  1222.     {
  1223.         format(string, sizeof(string), "{FF00EA}[Owner] {FFFFFF}%s: {00FFE1}%s", GetNome(playerid), text);
  1224.         SendClientMessageToAll(Info, string);
  1225.     }
  1226.     return 0;
  1227. }
  1228.  
  1229. public SalvarDados(playerid)
  1230. {
  1231.     new ficheiro[32];
  1232.    
  1233.     format(ficheiro, sizeof(ficheiro), PASTA_CONTAS, GetNome(playerid));
  1234.    
  1235.     if(DOF2_FileExists(ficheiro))
  1236.     {
  1237.         new ip[16];
  1238.        
  1239.         GetPlayerIp(playerid, ip, sizeof(ip));
  1240.         PlayerInfo[playerid][Dinheiro] = GetPlayerMoney(playerid);
  1241.         PlayerInfo[playerid][Skin] = GetPlayerSkin(playerid);
  1242.         PlayerInfo[playerid][Score] = GetPlayerScore(playerid);
  1243.  
  1244.         DOF2_SetInt(ficheiro, "Score", PlayerInfo[playerid][Score]);
  1245.         DOF2_SetInt(ficheiro, "Dinheiro", PlayerInfo[playerid][Dinheiro]);
  1246.         DOF2_SetInt(ficheiro, "Skin", PlayerInfo[playerid][Skin]);
  1247.         DOF2_SetInt(ficheiro, "Vip", PlayerInfo[playerid][Vip]);
  1248.         DOF2_SetInt(ficheiro, "Admin", PlayerInfo[playerid][Admin]);
  1249.         DOF2_SetInt(ficheiro, "Banido", PlayerInfo[playerid][Banido]);
  1250.         DOF2_SetString(ficheiro, "LastIP", ip);
  1251.  
  1252.         DOF2_SaveFile();
  1253.     }
  1254.     else return Kick(playerid);
  1255.     return 1;
  1256. }
  1257.  
  1258. public KickTimer(playerid)
  1259. {
  1260.     Kick(playerid);
  1261.     return 1;
  1262. }
  1263.  
  1264. public BanTimer(playerid)
  1265. {
  1266.     new string[128];
  1267.     new ficheiro[32];
  1268.    
  1269.     new d, m, a;
  1270.     new s, mi, h;
  1271.    
  1272.     gettime(h, mi, s);
  1273.     getdate(a, m, d);
  1274.    
  1275.     format(ficheiro, sizeof(ficheiro), PASTA_CONTAS, GetNome(playerid));
  1276.     format(string, sizeof(string), "%d:%d - %d/%d/%d", h, mi, d, m, a);
  1277.     DOF2_SetString(ficheiro, "DataBan", string);
  1278.    
  1279.     PlayerInfo[playerid][Banido] = 1;
  1280.     SalvarDados(playerid);
  1281.    
  1282.     Ban(playerid);
  1283.     return 1;
  1284. }
  1285.  
  1286. public AntiFakeKill(playerid)
  1287. {
  1288.     AC_CounterMaxKills--;
  1289.     if(AC_CounterMaxKills >= CFGAC_MAXKILLS)
  1290.     {
  1291.         new string[128];
  1292.        
  1293.         SetTimerEx("BanTimer", 50, false, "i", playerid);
  1294.         format(string, sizeof(string), "O jogador {10F441}%s foi banido. Razão: {10F441}Fake Kill Cheat{FFFFFF}.", GetNome(playerid));
  1295.         SendClientMessageToAll(Info, string);
  1296.     }
  1297.     return 1;
  1298. }
  1299.  
  1300. public Countdown()
  1301. {
  1302.     new string[3];
  1303.     if(CounterCountdown != 1)
  1304.     {
  1305.         CounterCountdown--;
  1306.  
  1307.         format(string, sizeof(string), "%i", CounterCountdown);
  1308.         GameTextForAll(string, 999, 4);
  1309.  
  1310.         for(new i = 0; i < MAX_PLAYERS; i++)
  1311.         {
  1312.             if(IsPlayerConnected(i))
  1313.             {
  1314.                 PlayerPlaySound(i, 5201, 0.0, 0.0, 0.0);
  1315.             }
  1316.         }
  1317.     }
  1318.     else if(CounterCountdown == 1)
  1319.     {
  1320.         KillTimer(CCountdown);
  1321.         for(new i = 0; i < MAX_PLAYERS; i++)
  1322.         {
  1323.             if(IsPlayerConnected(i))
  1324.             {
  1325.                 PlayerPlaySound(i, 5205, 0.0, 0.0, 0.0);
  1326.             }
  1327.         }
  1328.         switch(escolha)
  1329.         {
  1330.             case 1:
  1331.             {
  1332.                 RCarros();
  1333.                 GameTextForAll("* RESPAWN *", 1000, 4);
  1334.  
  1335.                 escolha = 0;
  1336.             }
  1337.             case 2:
  1338.             {
  1339.                 GameTextForAll("GO GO GO!!!", 1000, 4);
  1340.  
  1341.                 escolha = 0;
  1342.             }
  1343.         }
  1344.     }
  1345.     return 1;
  1346. }
  1347.  
  1348. public RCarros()
  1349. {
  1350.     new bool:vehicle[MAX_VEHICLES];
  1351.     for(new j = 1; GetVehicleModel(j); ++j)
  1352.     {
  1353.         vehicle[j] = false;
  1354.         for(new i, p = GetMaxPlayers(); i < p; ++i)
  1355.         {
  1356.             if(!IsPlayerInAnyVehicle(i) || !IsPlayerConnected(i)) continue;
  1357.             if(IsPlayerInVehicle(i, j))
  1358.             {
  1359.                 vehicle[j] = true;
  1360.                 break;
  1361.             }
  1362.         }
  1363.         if(!vehicle[j]) SetVehicleToRespawn(j);
  1364.     }
  1365.     return 1;
  1366. }
Advertisement
Add Comment
Please, Sign In to add comment