HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1.  
  2. #include <amxmodx>
  3. #include <engine>
  4.  
  5. #define MAXPLAYERS 32
  6. #define MaxAngelChange 1500
  7. #define MAX_DETECTIONS 25
  8.  
  9. #define PLAYER_LEFT 128 // Player is holdign down the left button
  10. #define PLAYER_RIGHT 256 // Player is holdign down the right button
  11.  
  12. #define UseAMXBANS 0
  13.  
  14. new Float:gf_LastAng[MAXPLAYERS+1][3]
  15. new Float:gf_TotalAng[MAXPLAYERS+1]
  16. new g_Detections[MAXPLAYERS+1]
  17.  
  18. new g_MaxPlayers
  19.  
  20. public plugin_init()
  21. {
  22. register_plugin("Spin hack Detector", "1.0.4" ,"EKS")
  23. g_MaxPlayers = get_maxplayers()
  24. set_task(1.0,"Task_CheckSpinTotal",128,_,_,"b")
  25. }
  26. public client_connect(id)
  27. {
  28. g_Detections[id] = 0
  29. }
  30. public Task_CheckSpinTotal()
  31. {
  32. for(new i=1;i<=g_MaxPlayers;i++)
  33. {
  34. if(is_user_alive(i))
  35. {
  36. if(gf_TotalAng[i] >= MaxAngelChange)
  37. {
  38. if(g_Detections[i] >= MAX_DETECTIONS)
  39. {
  40. RegisterOffense(i)
  41. }
  42. g_Detections[i]++
  43. }
  44. else
  45. g_Detections[i] = 0
  46.  
  47. gf_TotalAng[i] = 0.0
  48. }
  49. }
  50. }
  51. public client_PostThink(id)
  52. {
  53. if(is_user_alive(id))
  54. {
  55. new Float:Angel[3]
  56. entity_get_vector(id,EV_VEC_angles,Angel)
  57.  
  58. gf_TotalAng[id] += vector_distance(gf_LastAng[id],Angel)
  59.  
  60. CopyVector(Angel,gf_LastAng[id])
  61.  
  62. new flags = entity_get_int(id,EV_INT_button)
  63. if(flags & PLAYER_LEFT || flags & PLAYER_RIGHT)
  64. {
  65. g_Detections[id] = 0
  66. }
  67. }
  68. }
  69. stock RegisterOffense(id)
  70. {
  71. new Authid[35],Name[32],Message[256],CurrentTime[29],Map[32],ping,loss
  72. get_user_name(id,Name,31)
  73. get_user_authid(id,Authid,34)
  74. get_time("%d/%m-%Y - %H:%M:%S",CurrentTime,29)
  75. get_mapname(Map,31)
  76. get_user_ping(id,ping,loss)
  77.  
  78. g_Detections[id]++
  79.  
  80. format(Message,255,"[Spin hack Detector %s - %s] %s<%s> Tul gyorsan mozgott az utolso %d masodpercben. ( Ping: %d )",CurrentTime,Map,Name,Authid,g_Detections[id],ping)
  81. log_amx(Message)
  82. #if UseAMXBANS == 0
  83. server_cmd("kick #%d Spin hackel rendelkezik, ezert bannoltuk!",get_user_userid(id))
  84. server_cmd("banid 0.0 %s",Authid)
  85. server_cmd("writeid")
  86. #else
  87. server_cmd("amx_ban 0 %s spin hack eszlelve",Authid)
  88. #endif
  89. client_print(0,print_chat,"%s<%s> Bannoltuk mert spin hackel rendelkezik.",Name,Authid)
  90. }
  91. stock CopyVector(Float:Vec1[3],Float:Vec2[3])
  92. {
  93. Vec2[0] = Vec1[0]
  94. Vec2[1] = Vec1[1]
  95. Vec2[2] = Vec1[2]
  96. }