[FS] - Knight's Anti Cheat

Conteúdo & explicação do próprio:


• Anti armas - A primeira vez o jogador é avisado e são retiradas as armas, à segunda vez é kickado;
• Anti Ping - O jogador que tiver o ping acima do permitido é avisado 1 vez, à segunda vez é kickado;
• Anti Spam - O jogador que fizer Spam é avisado, se fizer denovo é kickado;
• Anti DB - O jogador que fizer DB é preso durante 2 minutos;
• Anti Palavrões - O jogador que digitar alguma palavra proibida, é alterada para estrelas (*).
• Anti Money Hack - Não interfere com Amunnations nem máquinas de rua, apenas com EnableStuntBonusForAll e EnableStuntBonusForPlayer;
/*                  [K.A.C] Knight's Anti Cheat • Anti armas - A primeira vez o jogador é avisado e são retiradas as armas, à segunda vez é kickado; • Anti Ping - O jogador que tiver o ping acima do permitido é avisado 1 vez, à segunda vez é kickado; • Anti Spam - O jogador que fizer Spam é avisado, se fizer denovo é kickado; • Anti DB - O jogador que fizer DB é preso durante 2 minutos; • Anti Palavrões - O jogador que digitar alguma palavra proibida, é alterada para estrelas (*). • Anti Money Hack -  Não interfere com Amunnations nem máquinas de rua, apenas com EnableStuntBonusForAll e EnableStuntBonusForPlayer;                      • Criador Geral: The Knight                      • Anti Money Hack: DraKiNs                      • Anti Palavrões: SuB_ZeRo0_     */ //Includes #include <a_samp> //Defines #define MAX_PALAVRAS_SZ 14 //Altere para o número de palavras que "PPalavras" contém #define MaxPing 650 //Altere para o número que quiser que seja o máximo de ping permitido #define Cinzento                                                    (0x9C9C9CFF) #define Vermelho                                                    (0xEE0000FF) #define Amarelo                                                     (0xEEAD0EFF) #define Laranja                                                     (0xFF7F00FF) #define Verde                                                       (0x228B22FF) #define Branco                                                      (0xFFFFFFAA) #define Roxo                                                        (0x9F79EEFF) #define Rosa                                                        (0xFF6A6AFF) #define Azulll                                                       (0x9C9C9C) #define Azull                                                        (0x5CACEE) #define Azul                                                         (0x4682B4) //Variáveis new PPalavras[MAX_PALAVRAS_SZ][50] = { "puta", "p.u.t.a", "p-u-t-a", "noob", "n.o.o.b", "n-o-o-b", "n.oo.b", "n-oo-b", "corno", "c.o.r.n.o", "c-o-r-n-o", "viado", "v.i.a.d.o", "v-i-a-d-o" }; enum jInformacoes {    kNome[ 24 ],    Nome[ 24 ],      aAvisos,    pAvisos,      nMsgs,      Preso } new jInfo[ MAX_PLAYERS ][ jInformacoes ]; new aProibidas[][] = {         {38},         {32},         {36},         {25}   }; new sStr[ 128 ]; //Forward forward @dDinheiro( playerid ); forward @sPreso( killerid ); forward @pArmas( playerid ); forward @aPing( playerid ); forward @aSpam( playerid ); public OnFilterScriptInit() {    print("oi");    SetTimer( "@pArmas", 500, true ); //500 = 5 milesimas de segundo (meio minuto)    SetTimer( "@aPing", 5000, true ); //30000 = 30 segundos    SetTimer( "@dDinheiro", 2000, true); //2000 = 2 segundos    EnableStuntBonusForAll( 0 );        return true;   } //Calbacks public OnPlayerConnect( playerid ) {    GetPlayerName( playerid, jInfo[ playerid ][ Nome ], 23 );      return true;   } public OnPlayerCommandText( playerid, cmdtext[] ) {    if( !strcmp( cmdtext, "/jPresos", true ) )      {         if( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, Vermelho, "Só administradores logados na RCON podem usar este comando!" );             SendClientMessage( playerid, Azull, "|PRESOS| Jogadores Presos:" );             for( new j = 0; j < MAX_PLAYERS; j++ )             {                if( IsPlayerConnected( j ) )                  {                     if( jInfo[ j ][ Preso ] == 1 )                     {                        GetPlayerName( j, jInfo[ playerid ][ Nome ], 23 );                            format( sStr, sizeof( sStr ), "{5CACEE}Jogador(a): {FFFFFF}%s | {5CACEE}ID: {FFFFFF}%i", jInfo[ playerid ][ Nome ], j );                            SendClientMessage( playerid, Amarelo, sStr );                         }          }               }             return true;          }    return false;   } public @pArmas( playerid ) {    for( new X = 0; X < sizeof( aProibidas ); X++ )        {       if( GetPlayerWeapon( playerid ) == aProibidas[ X ][ 0 ] )       {              if( jInfo[ playerid ][ aAvisos ] == 1)                {                                                                                                                             format( sStr, sizeof( sStr ), "[K.A.C] %s foi kickado do servidor! [Motivo: Uso de armas proibidas]", jInfo[ playerid ][ Nome ]);                     SendClientMessageToAll( Vermelho, sStr );             SendClientMessage( playerid, Cinzento, "[K.A.C] Foi avisado 2 vezes antes, agora foi kickado ...");             for( new j = 0; j <= MAX_PLAYERS; j++ )             {                if( IsPlayerConnected( j ) )                {                   if( IsPlayerAdmin( j ) )                   {                      SendClientMessage( j, Vermelho, sStr );                   }                }             }             Kick( playerid );          }          else if( jInfo[ playerid ][ aAvisos ] == 0 )          {                   ResetPlayerWeapons( playerid );             format( sStr, sizeof( sStr ), "[K.A.C] %s está a usar armas proibidas, se usar mais 1 vez é kickado!", jInfo[ playerid ][ Nome ])             SendClientMessageToAll( Vermelho, sStr );             SendClientMessage( playerid, Cinzento, "[K.A.C] Foi apanhado a usar armas proibidas, se usar mais 1 vez é kickado ...");             jInfo[ playerid ][ aAvisos ] = 1;             for( new j = 0; j <= MAX_PLAYERS; j++ )             {                if( IsPlayerConnected( j ) )                {                   if( IsPlayerAdmin( j ) )                   {                      SendClientMessage( j, Vermelho, sStr );                   }                }             }          }                                                                                         }          }    return true; } public OnPlayerText(playerid, text[]) {    new findsub,subzeropos,subzero[50],sz[128];    format(sz,128,"%s",text);    while(subzeropos<=strlen(sz))    {       for(new d=0;d<MAX_PALAVRAS_SZ;d++)       {          findsub=strfind(sz,PPalavras[d],true,subzeropos);          if(findsub!=-1&&findsub==subzeropos)          {             strdel(sz,findsub,findsub+strlen(PPalavras[d]));             for(new h=0;h<strlen(PPalavras[d]);h++)             {                strcat(subzero,"*");             }             strins(sz,subzero,findsub,256);             strdel(subzero,0,strlen(subzero));          }       }       subzeropos++;    }    SendPlayerMessageToAll(playerid,sz);    SetTimerEx( "@aSpam", 3000, false, "i", playerid ); //3000 = 3 segundos      jInfo[ playerid ][ nMsgs ]++;        if( jInfo[ playerid ][ nMsgs ] >= 3)      {         SendClientMessage( playerid, Vermelho, "[K.A.C] Não faça spam, para a próxima vez será kickado!" );          }      if( jInfo[ playerid ][ nMsgs ] >= 4 )      {         format( sStr, sizeof( sStr ), "[K.A.C] %s foi kickado do servidor! [Motivo: Spam]", jInfo[ playerid ][ Nome ] );             SendClientMessageToAll( Vermelho, sStr );             SendClientMessage( playerid, Cinzento, "[K.A.C] Você foi kickado do servidor por fazer Spam!" );             Kick( playerid );          }    return false; } public @aSpam( playerid ) { jInfo[ playerid ][ nMsgs ] = 0; return true; } public @aPing( playerid ) {    for( new i = 0; i < MAX_PLAYERS; i++ )      {         if( GetPlayerPing( i ) >= MaxPing )             {          if( jInfo[ playerid ][ pAvisos ] == 1 )                {                 format( sStr, sizeof( sStr ), "[K.A.C] %s foi kickado do servidor! [Motivo: Ping %d | Máximo: %d]", jInfo[ i ][ Nome ], GetPlayerPing( i ), MaxPing );                     SendClientMessageToAll( Vermelho, sStr );             SendClientMessage( playerid, Cinzento, "[K.A.C] Foi avisado 2 vezes sobre o seu ping, agora foi kickado..." );                     for( new j = 0; j <= MAX_PLAYERS; j++ )             {                if( IsPlayerConnected( j ) )                {                   if( IsPlayerAdmin( j ) )                   {                      SendClientMessage( j, Vermelho, sStr );                   }                }             }             Kick( playerid );                      }                        else if( jInfo[ playerid ][ pAvisos ] == 0 )          {                   format( sStr, sizeof( sStr ), "[K.A.C] %s está com o ping acima do limite, se fôr avisado mais 1 vez é kickado!", jInfo[ playerid ][ Nome ])             SendClientMessageToAll( Vermelho, sStr );             SendClientMessage( playerid, Cinzento, "[K.A.C] O seu ping está demasiado alto, se tiver mais 1 aviso sobre o ping será kickado ...");             jInfo[ playerid ][ pAvisos ] = 1;             for( new j = 0; j <= MAX_PLAYERS; j++ )             {                if( IsPlayerConnected( j ) )                {                   if( IsPlayerAdmin( j ) )                   {                      SendClientMessage( j, Vermelho, sStr );                   }                }             }                      }       }    }                return true;   } public OnPlayerDeath( playerid, killerid, reason ) {    if( IsPlayerInAnyVehicle( killerid ) && reason != WEAPON_VEHICLE )    {       SetPlayerInterior( killerid, 0 );           SetPlayerPos( killerid, 2143.4492,622.0122,-3.4715 );                   GetPlayerName( killerid, jInfo[ killerid ][ kNome ], 23 );             format( sStr, sizeof( sStr ), "[K.A.C] %s foi preso! [Motivo: DriveBy | Tempo: 2 minutos]", kNome );       SendClientMessageToAll( Vermelho, sStr );       SendClientMessage( killerid, Cinzento, "[K.A.C] Você foi preso por cometer DriveBy! (2 minutos)" );       SetTimerEx( "@sPreso", 120000, false, "d", killerid );       jInfo[ killerid ][ Preso ] = 1;          }    return true; } public @sPreso( killerid ) {    GetPlayerName( killerid, jInfo[ killerid ][ kNome ], 23 );    format( sStr, sizeof( sStr ), "[K.A.C] %s cumpriu o seu tempo na prisão e foi solto!", kNome);        SendClientMessageToAll( Verde, sStr );    SendClientMessage( killerid, Verde, "[K.A.C] Você cumpriu seu tempo na prisão e foi solto!" );    GameTextForPlayer( killerid, "~g~Voce foi solto", 3000, 1 );    SpawnPlayer( killerid );    jInfo[ killerid ][ Preso ] = 0;    return true; } public @dDinheiro( playerid ) {    for( new aMH = 0; aMH < MAX_PLAYERS; aMH++ )    {       if( GetPVarInt( aMH, "Money Hack" ) == 10 )       {          SetPVarInt( aMH , "Money Hack", 0 );          return false;       }       if( GetPlayerMoney( aMH ) < GetPVarInt( aMH, "Dinheiro" ) ) SetPVarInt( aMH, "Dinheiro", GetPlayerMoney( aMH ) );       while( GetPlayerMoney( aMH ) <= GetPVarInt( aMH, "Dinheiro" ) )  return false;       format( sStr, sizeof( sStr ), "[K.A.C] %s foi kickado do servidor! [Motivo: Money Hack]", jInfo[ playerid ][ Nome ] );             SendClientMessageToAll( Vermelho, sStr );             SendClientMessage( playerid, Cinzento, "[K.A.C] Você foi kickado do servidor por tentativa de MoneyHack!" );    }                  return true; } //Stocks stock GivePlayerCash(playerid, dQuantia) {    GivePlayerMoney( playerid, dQuantia);    SetPVarInt( playerid, "Dinheiro",GetPlayerMoney(playerid));    SetPVarInt( playerid, "Money Hack", 10); }

Créditos:
Criador Geral: The Knight
Anti Money Hack: DraKiNs
Anti Palavrões: SuB_ZeRo0_

COMPARTILHE

VEJA TAMBÉM

Próxima
« Anterior
Anterior
Próximo »