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;
• 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_