[FilterScript] Anti-Fly Hack - Profissional

24 de jan. de 2013.

JR_Anti-Fly Hack

Bom galera, depois de procurar muito na internet e não achar nada parecido se quer, nenhuma base pra dar uma ajuda, nem nada, eu resolvi correr atrás com meus próprios conhecimentos e usando lógicas, assim lhes apresento e compartilho com todos um Script que talvez seja procurado por muitos que querem abrir um servidor sério e que lutam contra os S0rveteiros de Plantão.
O código é muito simples, provavelmente alguém já deve ter criado ou pelo menos sabe como faz, porém não compartilhou!

Informações:
Quem já usou o famoso "S0rvete" sabe como funciona mo modo Fly Hack, onde você sai voando como se estivesse nadando, muito bem feito e divertido.
Usando lógicas e códigos bem simples consegui desenvolver um Script profissional contra esse Modo Fly.


O Script:
Você pode usar tanto em um Filter Script como em seu próprio Game Mode, sem problemas:
pawn Código:
//==========================================================// //                                                          //                                                                                                   //                    JR_Anti-Fly Hack                      // //                      Profissional                        // //                    Autor: JR_Junior                      // //                                                          // //==========================================================// #include <a_samp> public OnGameModeInit()// Caso for usar em seu GM, do contrário será em OnGameFilterScritpInit() {    SetTimer("ChecarFlyHackers",1000,1);// Timer repetitivo(1000 = A cada 1 segundo) que irá verificar se há Fly Hackers em ação... } //Identifica se o player está realizando movimentos de natação, assim como o Fly Hack usa... stock IsPlayerNadando(playerid) {         if(!IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)         {             new animlib[32], animname[32];             GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);             if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_GLIDE", true)) return 1;             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_BREAST", true)) return 1;             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_CRAWL", true)) return 1;             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_DIVE_UNDER", true)) return 1;             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_DIVE_GLIDE", true)) return 1;             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_UNDER", true)) return 1;             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_TREAD", true)) return 1;         }         return 0; } //A parte principal e a que deu mais trabalho! Esses são absolutamente todos os locais fora do mar que possuem água e que se podem nadar... stock IsPlayerInAguaForaDoMar(playerid) {     new Float:x,Float:y,Float:z;     GetPlayerPos(playerid, x, y, z);     if((x >= -1408.0629 && y >= 2021.0587 && x <= -460.9319 && y <= 2861.4893) ||//Represa do deserto de Las Venturas     (x >= 1269.5886 && y >= -810.4507 && x <= 1288.8916 && y <= -800.5959) ||//Piscina de uma casa em VineWood (Mad Dog's Mansion)     (x >= 1086.6010 && y >= -683.6998 && x <= 1103.0225 && y <= -662.1832) ||//Piscina de uma casa em VineWood (Perto Mad Dog's Mansion)     (x >= 169.6879 && y >= -1392.6630 && x <= 281.5444 && y <= -1168.9749) ||// 2 Piscinas em VineWood     (x >= -828.3018 && y >= -2107.1487 && x <= -443.5032 && y <= -1855.6273) ||//Lago da árvore caída, ou Lago Morto     (x >= 1198.9982 && y >= -2407.0581 && x <= 1275.7397 && y <= -2341.6262) ||//Lago perto do aeroporto Los Santos     (x >= 2293.1467 && y >= -1432.5869 && x <= 2331.7388 && y <= -1397.6476) ||//Lago perto da Igreja Los Santos     (x >= 1915.3196 && y >= -1236.2382 && x <= 2016.6565 && y <= -1167.9290) ||//Park Glen Los Santos     (x >= -2747.1692 && y >= -510.1152 && x <= -2663.2468 && y <= -411.4905) ||//Lago em San Fierro     (x >= 1838.8041 && y >= 1463.2024 && x <= 2035.4167 && y <= 1703.0480) ||//Cascata do Login em Las Venturas     (x >= 2049.6646 && y >= 1843.3029 && x <= 2119.9021 && y <= 1983.5464) ||//Navio Pirata em Las Venturas     (x >= 2094.9255 && y >= 1085.2852 && x <= 2179.1790 && y <= 1183.0610) ||//Frente de um Cascino em Las Venturas     (x >= 2545.3718 && y >= 2347.7112 && x <= 2593.6794 && y <= 2403.8040))//Piscina de um prédio em Las Venturas     {      return 1;     }     return 0; } forward ChecarFlyHackers();//CallBack chamada a cada 1 segundo para verificação do Cheat... public ChecarFlyHackers() {    for(new i; i < MAX_PLAYERS; i++)    {      if(IsPlayerConnected(i))      {        if(IsPlayerNadando(i))// Primeiro detecta se o player está em movimentos de natação!        {          new Float:XPos,Float:YPos,Float:ZPos;          GetPlayerPos(i,XPos,YPos,ZPos);          if(ZPos > 1.0)// Acima de 1.0 não está em águas do mar!          {             if(!IsPlayerInAguaForaDoMar(i))//Se não está no mar e nem em águas fora dele está com Cheats(Voando)!             {               if(PlayerInfo[i][pAdmin] <= 5)// Você pode colocar exceções, tipo, não ter afeito contra admins, etc...               {                  Kick(i);// Você pode aplicar um Kick, ou Ban, ou o que você desejar ao trapaceiro...                  return 1;               }             }          }        }      }    } }
1 - Detecção: Em menos de segundos, depois que iniciou o vôo.
2 - Compatibilidade: Compatível com absolutamente todos os tipos de servidores e Game modes.
3 - Bugs ou Conflitos: Não trás nenhum conflito com nenhum outro Script e é totalmente editável.
4 - Lógica do Script: Quando se está nadando no mar a posição Z (Altitude) de todo player fica em 1.0 sempre!

Assim, se a posição Z for acima de 1.0 só temos duas 4 opções:
 - Está em uma piscina.
2ª - Está em algum lago ou chafariz.
 - Está nadando na represa do deserto de Las Venturas.
 - Está usando Cheats.

Como você pode ver analisando o Script acima, o sistema vai verificar se o player está em movimentos de natação, se a posição está acima da posição do mar e se realmente está dentro das 3 primeiras opções acima citadas. Do contrário está usando Cheats sem sombra de dúvidas.

Creditos: [DkS]JR_Junior

0 comentários:

Postar um comentário