seroff

SGS and DD run Hack Detector 1.0 By Seroff

Dec 27th, 2015
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <colorchat>
  5.  
  6. new WarDuck[33];
  7.  
  8. public plugin_init()
  9. {
  10. register_plugin("SGS and DD run Hack Detector","1.0","Seroff");
  11.  
  12. register_forward(FM_PlayerPreThink, "Player_PreThink");
  13. }
  14. public Player_PreThink(id)
  15. {
  16. if(is_user_alive(id))
  17. {
  18. static Buttons;Buttons = pev(id, pev_button);
  19. static OldButtons;OldButtons = pev(id, pev_oldbuttons);
  20.  
  21. static OldDuckCount[33],OldGroundFrame[33];
  22. static Float:Speed[3],GroundFrame[33],DuckCount[33];
  23.  
  24. if(Buttons & IN_DUCK && !(OldButtons & IN_DUCK)) DuckCount[id]++;
  25.  
  26. if(pev(id, pev_flags) & FL_ONGROUND) GroundFrame[id]++;
  27.  
  28. else if(GroundFrame[id] && !IsUserSurfing(id))
  29. {
  30. pev(id, pev_velocity, Speed); Speed[2] = 0.0;
  31.  
  32. if(DuckCount[id] == OldDuckCount[id]
  33. && GroundFrame[id] == OldGroundFrame[id] && vector_length(Speed) > 250.0)
  34. {
  35. if(++WarDuck[id] >= 9)
  36. {
  37. static szName[32],szIP[32];
  38. get_user_name(id, szName, charsmax(szName));
  39. get_user_ip(id, szIP, charsmax(szIP));
  40.  
  41. WarDuck[id] = 0;
  42. user_kill(id,1);
  43. server_cmd("amx_ban 0 %s ^"Gstrafe Hack Detected^"",szIP);
  44. ColorChat(0,NORMAL,"[^3Анти-Чит^1]Игрок ^4%s ^1Использует ^1[^4Gstrafe Hack^1]",szName);
  45. }
  46. }
  47. else WarDuck[id] = 0;
  48.  
  49. OldDuckCount[id] = DuckCount[id];
  50. OldGroundFrame[id] = GroundFrame[id];
  51. DuckCount[id] = 0; GroundFrame[id] = 0;
  52. }
  53. }
  54. return FMRES_IGNORED;
  55. }
  56. IsUserSurfing(id)
  57. {
  58. if(is_user_alive(id))
  59. {
  60. new Flags;Flags = pev(id, pev_flags);
  61. if(Flags & FL_ONGROUND) return 0;
  62.  
  63. new Float:origin[3], Float:dest[3];
  64. pev(id, pev_origin, origin)
  65.  
  66. dest[0] = origin[0];
  67. dest[1] = origin[1];
  68. dest[2] = origin[2] - 1.0;
  69.  
  70. new ptr = create_tr2();
  71. engfunc(EngFunc_TraceHull, origin, dest, 0, Flags & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, id, ptr);
  72. new Float:flFraction;
  73. get_tr2(ptr, TR_flFraction, flFraction);
  74. if(flFraction >= 1.0)
  75. {
  76. free_tr2(ptr);
  77. return 0;
  78. }
  79.  
  80. get_tr2(ptr, TR_vecPlaneNormal, dest);
  81. free_tr2(ptr);
  82.  
  83. return dest[2] <= 0.7;
  84. }
  85. return 0;
  86. }
Add Comment
Please, Sign In to add comment