teol

Untitled

Jun 2nd, 2012
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.18 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <fakemeta>
  3.  
  4. #define VERSION "1.1.0"
  5.  
  6. #define MIN_ADVERTISE_PERCENT 70
  7. #define MIN_PERFBHOPS_FOR_BAN 60
  8. #define MIN_PERCENTS_FOR_BAN 85
  9. #define BHOPS_CHECK_FREQ 15
  10.  
  11. #define MAX_PLAYERS 32
  12.  
  13. #define PERFECT_BHOP 1
  14. #define GOOD_BHOP 3
  15. #define BHOP 10
  16.  
  17. #define m_afButtonPressed 246
  18.  
  19. new g_cGroundFrames[MAX_PLAYERS+1 char]
  20.  
  21. new g_cPerfectBhops[MAX_PLAYERS+1 char]
  22. new g_cGoodBhops[MAX_PLAYERS+1 char]
  23. new g_cBhops[MAX_PLAYERS+1 char]
  24.  
  25. public plugin_init()
  26. {
  27.     register_forward(FM_PlayerPreThink, "OnPlayerPreThink_Post", true)
  28. }
  29.  
  30. public client_putinserver( id )
  31. {
  32.     g_cGroundFrames{id} = 0
  33.     g_cPerfectBhops{id} = 0
  34.     g_cGoodBhops{id} = 0
  35.     g_cBhops{id} = 0
  36. }
  37.  
  38. public OnPlayerPreThink_Post( id )
  39. {
  40.     if( !is_user_alive(id) || !(pev(id, pev_flags) & FL_ONGROUND) )
  41.     {
  42.         g_cGroundFrames{id} = 0
  43.         return
  44.     }
  45.  
  46.     new iGroundFrames = ++g_cGroundFrames{id}
  47.  
  48.     if( get_pdata_int(id, m_afButtonPressed) & IN_JUMP )
  49.     {
  50.         if( iGroundFrames < BHOP )
  51.         {
  52.             new iBhops = ++g_cBhops{id}
  53.  
  54.             if( iGroundFrames == PERFECT_BHOP )
  55.             {
  56.                 ++g_cPerfectBhops{id}
  57.             }
  58.             else if( iGroundFrames <= GOOD_BHOP )
  59.             {
  60.                 ++g_cGoodBhops{id}
  61.             }
  62.    
  63.             if( iBhops % BHOPS_CHECK_FREQ == 0 && iBhops > BHOPS_CHECK_FREQ )
  64.             {
  65.                 ComputePlayerStats(id)
  66.             }
  67.         }
  68.     }
  69. }
  70.  
  71. ComputePlayerStats(id)
  72. {
  73.     new iBhops = g_cBhops{id},
  74.         iPerfectBhops = g_cPerfectBhops{id}
  75.     new iPercents = (iPerfectBhops * 100) / iBhops
  76.     if( iPercents >= MIN_ADVERTISE_PERCENT )
  77.     {
  78.         new szName[32], szAuthid[32]
  79.         get_user_name(id, szName, charsmax(szName))
  80.         get_user_authid(id, szAuthid, charsmax(szAuthid))
  81.         new iPlayers[MAX_PLAYERS], iNum, plr, i
  82.         get_players(iPlayers, iNum)
  83.         if( iPercents > MIN_PERCENTS_FOR_BAN )
  84.         {
  85.             for(i=0; i<iNum; i++)
  86.             {
  87.                 plr = iPlayers[i]
  88.                 if( get_user_flags(plr) & ADMIN_BAN )
  89.                 {
  90.                     client_print(plr, print_chat, "%s is very suspicious with %d%%% of perfect bhops (%d/%d)",
  91.                                 szName,                     iPercents,             iPerfectBhops, iBhops)
  92.                 }
  93.             }
  94.             if( iPerfectBhops >= MIN_PERFBHOPS_FOR_BAN /*&& iPercents > MIN_PERCENTS_FOR_BAN */)
  95.             {
  96.                 client_print(0, print_chat, "[AMXX] %s has been banned for bhop hack !!", szName)
  97.  
  98.                 server_cmd("amx_ban ^"%s^" 0 ^"AutoBhop Cheat^"", szAuthid)
  99.             }
  100.         }
  101.         else
  102.         {
  103.             for(i=0; i<iNum; i++)
  104.             {
  105.                 plr = iPlayers[i]
  106.                 if( get_user_flags(plr) & ADMIN_BAN )
  107.                 {
  108.                     client_print(plr, print_chat, "%s could use a cheat with %d%%% of perfect bhops (%d/%d)",
  109.                                                             szName,                             iPercents,                     iPerfectBhops, iBhops)
  110.                 }
  111.             }
  112.         }
  113.     }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment