Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ////////////////////////////////////////////////////////////////////////////////
- • Insanity Anti-Bunny Hopping •
- - Description
- The filterscript avoid the use of Bunny Hopping in your server sending a message to the ao admins
- online or kicking the player(you can configure it), if you use the GodFather,
- you can use CallRemoteFunction to send a message to admins and/or call the function KickLog.
- - Author
- Allan Jader (CyNiC)
- - Note
- You can change how much you want the filterscript, leaving the credit to creator.
- ////////////////////////////////////////////////////////////////////////////////
- */
- //Extern
- #include <a_samp>
- //Message Color
- #define COLOR_WHITE 0xFFFFFFAA
- //Configuration
- #define MODE 0 // Mode 0: SEND A MESSAGE TO ADMINS / Mode 1: KICK THE PLAYER
- #define MAX_WARNINGS 3
- //Variables
- new oldanim[MAX_PLAYERS][32],
- PlayerSequence[MAX_PLAYERS][100],
- count[MAX_PLAYERS],
- pTimer[MAX_PLAYERS];
- //Forwards
- forward CheckBunnyHopping(playerid);
- forward ResetPlayer(playerid);
- //Functions
- public OnFilterScriptInit()
- {
- for(new i=0; i<MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i))
- {
- pTimer[i]=SetTimerEx("CheckBunnyHopping",100,true,"d",i);
- }
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- pTimer[playerid]=SetTimerEx("CheckBunnyHopping",100,true,"d",playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid)
- {
- KillTimer(pTimer[playerid]);
- return 1;
- }
- public CheckBunnyHopping(playerid)
- {
- new animlib[32];
- new animname[32];
- GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
- if(strcmp(oldanim[playerid],animname,true) != 0)
- {
- strcat(PlayerSequence[playerid],oldanim[playerid],100);
- count[playerid]++;
- if(count[playerid] >= 3 && GetPVarInt(playerid,"HasSended") == 0)
- {
- if(strfind(PlayerSequence[playerid],"JUMP_LAUNCH",true) != -1
- && strfind(PlayerSequence[playerid],"JUMP_LAND",true) != -1
- && strfind(PlayerSequence[playerid],"JUMP_GLIDE",true) != -1)
- {
- new string[80];
- count[playerid]=0;
- format(PlayerSequence[playerid],1,"");
- #if MODE == 0
- format(string,80,"[WARNING] %s are doing Bunny Hopping!",GetNick(playerid));
- for(new i=0; i<MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i) && IsPlayerAdmin(i))
- {
- SendClientMessage(i,COLOR_WHITE,string);
- }
- }
- #else
- if(GetPVarInt(playerid,"Warnings") == MAX_WARNINGS)
- {
- format(string,80,"[WARNING] %s has kicked for doing Bunny Hopping!",GetNick(playerid));
- SendClientMessageToAll(COLOR_WHITE,string);
- Kick(playerid);
- return 1;
- }
- #endif
- SendClientMessage(playerid,COLOR_WHITE,"You're doing Bunny Hopping, stop or you will be kicked.");
- SetPVarInt(playerid,"HasSended",1);
- SetPVarInt(playerid,"Warnings",GetPVarInt(playerid,"Warnings")+1);
- SetTimerEx("ResetPlayer",5000,false,"d",playerid);
- }
- format(PlayerSequence[playerid],1,"");
- count[playerid]=0;
- }
- }
- format(oldanim[playerid],32,"%s",animname);
- return 1;
- }
- public ResetPlayer(playerid) return SetPVarInt(playerid,"HasSended",0);
- GetNick(playerid) {
- new N[MAX_PLAYER_NAME];
- GetPlayerName(playerid, N, sizeof N);
- return N;
- }
Advertisement
Add Comment
Please, Sign In to add comment