I also forgot to say that it is a requirement to use pcvars. So I added it here. I hope, you understand what the code does.
PHP Code:
#include <amxmodx>
#include <colorchat>
#include <fun>
#include <engine>
#include <hamsandwich>
#define PLUGIN "Hunting Bunnies"
#define VERSION "1.1"
#define AUTHOR "Doondook"
#define SetUserBot(%1) g_bIsBot |= 1<<(%1&31)
#define ClearUserBot(%1) g_bIsBot &= ~(1<<(%1&31))
#define IsUserBot(%1) g_bIsBot & 1<<(%1&31)
#define SetUserAlive(%1) g_bIsAlive |= 1<<(%1&31)
#define ClearUserAlive(%1) g_bIsAlive &= ~(1<<(%1&31))
#define IsUserAlive(%1) g_bIsAlive & 1<<(%1&31)
#define SetUserConnected(%1) g_bIsConnected |= 1<<(%1&31)
#define ClearUserConnected(%1) g_bIsConnected &= ~(1<<(%1&31))
#define IsUserConnected(%1) g_bIsConnected & 1<<(%1&31)
new g_bIsBot, g_bIsAlive, g_bIsConnected, bhop_limit
new g_frames[33]
new g_bhops[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1)
RegisterHam(Ham_Killed, "player", "Player_Killed")
bhop_limit = register_cvar("bhop_limit", "2")
}
public client_putinserver(id)
{
ClearUserAlive(id)
SetUserConnected(id)
if(is_user_bot(id) || is_user_hltv(id))
SetUserBot(id)
}
public client_disconnect(id)
{
ClearUserAlive(id)
ClearUserConnected(id)
ClearUserBot(id)
}
public Player_Spawn(id)
{
if(is_user_alive(id))
{
SetUserAlive(id)
}
}
public Player_Killed(victim, killer, shouldgib)
{
ClearUserAlive(victim)
}
public client_PreThink(id)
{
if(~IsUserBot(id) && IsUserAlive(id))
{
new button = entity_get_int(id, EV_INT_button)
new jump = (button & IN_JUMP)
if(jump && get_speed(id)>floatround(get_user_maxspeed(id)) && g_frames[id]<5){
g_frames[id]++
if(!task_exists(id))
set_task(0.3, "BHop_Check", id)
}
if(get_speed(id)<=floatround(get_user_maxspeed(id)))
g_bhops[id]=0
}
}
public BHop_Check(id)
{
if(~IsUserConnected(id))
return
if(g_frames[id]==1)
{
g_bhops[id]++
if(g_bhops[id]==get_pcvar_num(bhop_limit))
{
new name[32]
get_user_name(id, name, 31)
ColorChat(0, RED, "^4%s ^3has been kicked! ^1'Bunny Hop' scripts are detected.", name)
server_cmd("kick #%d using 'Bunny Hop' scripts", get_user_userid(id))
}
}
g_frames[id]=0
}
__________________
Selling tons of my own private works.
Accepting paid work for clans and communities.
Don't hesitate to contact me.