SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 05/05/2011, 12:39 AM   #1
The Knight
Huge Clucker
 
The Knight's Avatar
 
Join Date: Apr 2011
Posts: 354
Reputation: 9
Default [K.A.S] Knight's Anti Cheat (Anti: Armas, Spam, DB, MaxPing, Palavrões, Money Hack)

Mais um trabalho que acabei agora, tentei fazer a extrutura o mais simples possível para que ambos os scripters (avançados, intermédios e novatos) consigam perceber e editar o sistema.
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;

Como alterar algo no sistema?

Como posso alterar o limite de ping do sistema?
Procure pela linha:
pawn Code:
#define MaxPing 650
E altere o 650 para o número que quer que seja o máximo de ping.

Como coloco mais palavras proibidas para elas serem substituidas por *?
Procure por:
pawn Code:
new PPalavras[MAX_PALAVRAS_SZ][50] = {
E em baixo adicione as palavras que quiser... Nunca se esqueça de contar as palavras, porque o número de palavras que tiver deve ser o número que está definido em:
pawn Code:
MAX_PALAVRAS_SZ ?


Como modificar a * para outro caractér (exemplo: -) ?
Procure por:
pawn Code:
strcat(subzero,"*");
E altere o "*" pelo caractér que quer.

Observações:

Se usar este sistema, troque todos os:
pawn Code:
GivePlayerMoney( playerid, Quantia );
que tiver no seu gamemode/filterscript por:
pawn Code:
GivePlayerCash( playerid, Quantia );

Desabilite o stunt bonus do seu gamemode/filterscript para não dar conflito com o Anti Money Hack, coloque o seguinte no OnGameModeInit:
pawn Code:
EnableStuntBonusForAll( 0 );

Sistema:

pawn Code:
/*                  [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);
}

Tem idéias para melhora do sistema? Mande-me uma MP ou poste aqui mesmo neste tópico (:
Próxima versão lançada em breve...

Créditos:

Criador Geral: The Knight
Anti Money Hack: DraKiNs
Anti Palavrões: SuB_ZeRo0_
The Knight is offline   Reply With Quote
Old 05/05/2011, 12:49 AM   #2
Carl_Thuse
Big Clucker
 
Carl_Thuse's Avatar
 
Join Date: Mar 2011
Location: Minas Gerais
Posts: 196
Reputation: 0
Default Re: [K.A.S] Knight's Anti Cheat (Anti: Armas, Spam, DB, MaxPing, Palavrões, Money Hack)

Mais Um?
A coisa mais facil é fazer anti-cheat.
Mesmo assim parabéns.
Carl_Thuse is offline   Reply With Quote
Old 05/05/2011, 01:02 AM   #3
The Knight
Huge Clucker
 
The Knight's Avatar
 
Join Date: Apr 2011
Posts: 354
Reputation: 9
Default Re: [K.A.S] Knight's Anti Cheat (Anti: Armas, Spam, DB, MaxPing, Palavrões, Money Hack)

Antes de falar, deveria examinar primeiro...
Na bord pt/br não existe nenhum, e se existe, não está completo mas sim é apenas um único tipo de anti algo.
The Knight is offline   Reply With Quote
Old 05/05/2011, 01:17 AM   #4
Macintosh
High-roller
 
Macintosh's Avatar
 
Join Date: Aug 2010
Location: Somewhere Far *User Type: Administrator
Posts: 3,638
Reputation: 115
Default Re: [K.A.S] Knight's Anti Cheat (Anti: Armas, Spam, DB, MaxPing, Palavrões, Money Hack)

Tem o do DraKiNs ou é do Higor, mais parabéns Diogo Bras
__________________

"É tão estranho
Os bons morrem jovens
Assim parece ser, quando me lembro de você
Que acabou indo embora, cedo demais
"

Os bons morrem jovens (Legião Urbana).

Um dia a gente irá se encontrar numa bem melhor brother

Macintosh is offline   Reply With Quote
Old 05/05/2011, 03:55 AM   #5
hitachi_uchila
Huge Clucker
 
Join Date: Jan 2010
Posts: 228
Reputation: 4
Default Re: [K.A.S] Knight's Anti Cheat (Anti: Armas, Spam, DB, MaxPing, Palavrões, Money Hack)

Muito Completo... Muito Legal
Muito Cool.
Gostei Parabens
hitachi_uchila is offline   Reply With Quote
Old 05/05/2011, 04:41 AM   #6
[S]trong
Guest
 
Posts: n/a
Default Re: [K.A.S] Knight's Anti Cheat (Anti: Armas, Spam, DB, MaxPing, Palavrões, Money Hack)

The Knight não existe necessidade em um timer no anti spaw.
  Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Include] [INC] Anti Money Cheat, Anti Ban Weapon FreshKilla Includes 28 11/08/2014 04:05 PM
[FilterScript] Money Hack anti-cheat Mean Filterscripts 7 01/12/2010 03:02 PM
anti-money hack versus money hack impossibility(?) maij Help Archive 6 11/08/2010 02:58 AM


All times are GMT. The time now is 10:59 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.