Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <fakemeta>
- #define VERSION "1.1.0"
- #define MIN_ADVERTISE_PERCENT 70
- #define MIN_PERFBHOPS_FOR_BAN 60
- #define MIN_PERCENTS_FOR_BAN 85
- #define BHOPS_CHECK_FREQ 15
- #define MAX_PLAYERS 32
- #define PERFECT_BHOP 1
- #define GOOD_BHOP 3
- #define BHOP 10
- #define m_afButtonPressed 246
- new g_cGroundFrames[MAX_PLAYERS+1 char]
- new g_cPerfectBhops[MAX_PLAYERS+1 char]
- new g_cGoodBhops[MAX_PLAYERS+1 char]
- new g_cBhops[MAX_PLAYERS+1 char]
- public plugin_init()
- {
- register_forward(FM_PlayerPreThink, "OnPlayerPreThink_Post", true)
- }
- public client_putinserver( id )
- {
- g_cGroundFrames{id} = 0
- g_cPerfectBhops{id} = 0
- g_cGoodBhops{id} = 0
- g_cBhops{id} = 0
- }
- public OnPlayerPreThink_Post( id )
- {
- if( !is_user_alive(id) || !(pev(id, pev_flags) & FL_ONGROUND) )
- {
- g_cGroundFrames{id} = 0
- return
- }
- new iGroundFrames = ++g_cGroundFrames{id}
- if( get_pdata_int(id, m_afButtonPressed) & IN_JUMP )
- {
- if( iGroundFrames < BHOP )
- {
- new iBhops = ++g_cBhops{id}
- if( iGroundFrames == PERFECT_BHOP )
- {
- ++g_cPerfectBhops{id}
- }
- else if( iGroundFrames <= GOOD_BHOP )
- {
- ++g_cGoodBhops{id}
- }
- if( iBhops % BHOPS_CHECK_FREQ == 0 && iBhops > BHOPS_CHECK_FREQ )
- {
- ComputePlayerStats(id)
- }
- }
- }
- }
- ComputePlayerStats(id)
- {
- new iBhops = g_cBhops{id},
- iPerfectBhops = g_cPerfectBhops{id}
- new iPercents = (iPerfectBhops * 100) / iBhops
- if( iPercents >= MIN_ADVERTISE_PERCENT )
- {
- new szName[32], szAuthid[32]
- get_user_name(id, szName, charsmax(szName))
- get_user_authid(id, szAuthid, charsmax(szAuthid))
- new iPlayers[MAX_PLAYERS], iNum, plr, i
- get_players(iPlayers, iNum)
- if( iPercents > MIN_PERCENTS_FOR_BAN )
- {
- for(i=0; i<iNum; i++)
- {
- plr = iPlayers[i]
- if( get_user_flags(plr) & ADMIN_BAN )
- {
- client_print(plr, print_chat, "%s is very suspicious with %d%%% of perfect bhops (%d/%d)",
- szName, iPercents, iPerfectBhops, iBhops)
- }
- }
- if( iPerfectBhops >= MIN_PERFBHOPS_FOR_BAN /*&& iPercents > MIN_PERCENTS_FOR_BAN */)
- {
- client_print(0, print_chat, "[AMXX] %s has been banned for bhop hack !!", szName)
- server_cmd("amx_ban ^"%s^" 0 ^"AutoBhop Cheat^"", szAuthid)
- }
- }
- else
- {
- for(i=0; i<iNum; i++)
- {
- plr = iPlayers[i]
- if( get_user_flags(plr) & ADMIN_BAN )
- {
- client_print(plr, print_chat, "%s could use a cheat with %d%%% of perfect bhops (%d/%d)",
- szName, iPercents, iPerfectBhops, iBhops)
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment