HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4.  
  5. //new decals[2] = {105,106}
  6. new decals[2] = {107,108}
  7.  
  8.  
  9. new bool:g_isDying[33]
  10. new g_decalSwitch[33]
  11.  
  12. public plugin_init()
  13. {
  14. register_plugin("Follow the Wounded", "0.1", "KRoTaL")
  15.  
  16. register_cvar("ftw_active", "1")
  17. register_cvar("ftw_health", "20")
  18.  
  19. register_event("ResetHUD","resethud_event","be")
  20. register_event("Damage","damage_event","b")
  21. register_event("DeathMsg","death_event","a")
  22. }
  23.  
  24. public client_connect(id)
  25. {
  26. g_isDying[id] = false
  27. remove_task(4247545+id)
  28. }
  29.  
  30. public resethud_event(id)
  31. {
  32. if(g_isDying[id])
  33. {
  34. g_isDying[id] = false
  35. remove_task(4247545+id)
  36. }
  37. }
  38.  
  39. public damage_event(id)
  40. {
  41. if(get_cvar_num("ftw_active") == 0) return PLUGIN_CONTINUE
  42.  
  43. if(!g_isDying[id] && is_user_alive(id) && get_user_health(id) <= get_cvar_num("ftw_health"))
  44. {
  45. g_isDying[id] = true
  46. g_decalSwitch[id] = 0
  47. new param[1]
  48. param[0] = id
  49. set_task(0.2, "make_footsteps", 4247545+id, param, 1, "b")
  50. }
  51. return PLUGIN_CONTINUE
  52. }
  53.  
  54. public death_event()
  55. {
  56. new id = read_data(2)
  57. if(g_isDying[id])
  58. {
  59. g_isDying[id] = false
  60. remove_task(4247545+id)
  61. }
  62. }
  63.  
  64. public make_footsteps(param[])
  65. {
  66. new id = param[0]
  67. if(!is_user_alive(id) || get_cvar_num("ftw_active") == 0 || get_speed(id) < 120) return
  68. new origin[3]
  69. get_user_origin(id, origin)
  70. if(entity_get_int(id, EV_INT_bInDuck) == 1)
  71. origin[2] -= 18
  72. else
  73. origin[2] -= 36
  74. new Float:velocity[3]
  75. new Float:ent_angles[3]
  76. new Float:ent_origin[3]
  77. new ent
  78.  
  79. entity_get_vector(id, EV_VEC_v_angle, ent_angles)
  80. entity_get_vector(id, EV_VEC_origin, ent_origin)
  81.  
  82. ent = create_entity("info_target")
  83. if(ent > 0)
  84. {
  85. ent_angles[0] = 0.0
  86. if(g_decalSwitch[id] == 0) ent_angles[1] -= 90
  87. else ent_angles[1] += 90
  88. entity_set_vector(ent, EV_VEC_origin, ent_origin)
  89. entity_set_vector(ent, EV_VEC_v_angle, ent_angles)
  90. VelocityByAim(ent, 12, velocity)
  91. remove_entity(ent)
  92. }
  93. message_begin(MSG_BROADCAST, SVC_TEMPENTITY, origin)
  94. write_byte(116)
  95. write_coord(origin[0] + floatround(velocity[0]))
  96. write_coord(origin[1] + floatround(velocity[1]))
  97. write_coord(origin[2])
  98. write_byte(decals[g_decalSwitch[id]])
  99. message_end()
  100. g_decalSwitch[id] = 1 - g_decalSwitch[id]
  101. return
  102. }
  103.