HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <hamsandwich>
  4. #include <zombieplague>
  5.  
  6. #define PLUGIN "[ZP] Addon: Show Zombie Health"
  7. #define VERSION "1.0"
  8. #define AUTHOR "Dias : BlackCat (bug fix)"
  9.  
  10. new const healthbar_spr[] = "sprites/zb_healthbar.spr"
  11. new g_playerbar[33] , g_isAlive[33]
  12. new g_playerMaxHealth[33]
  13.  
  14. public plugin_init()
  15. {
  16. register_plugin(PLUGIN, VERSION, AUTHOR)
  17.  
  18. RegisterHam(Ham_Spawn, "player", "ham_spawn_post", 1)
  19. register_forward(FM_AddToFullPack, "fm_addtofullpack_post", 1)
  20.  
  21. register_event("ResetHUD", "event_resethud", "be")
  22. register_event("DeathMsg", "event_death", "a")
  23. register_event("Health", "event_health", "be")
  24.  
  25. make_healthbar()
  26. }
  27.  
  28. public make_healthbar()
  29. {
  30. static playerBar, allocString
  31. allocString = engfunc(EngFunc_AllocString, "env_sprite")
  32.  
  33. for( new id = 1; id <= get_maxplayers(); id ++ )
  34. {
  35. g_playerbar[id] = engfunc(EngFunc_CreateNamedEntity, allocString)
  36. playerBar = g_playerbar[id]
  37.  
  38. if(pev_valid(playerBar))
  39. {
  40. set_pev(playerBar, pev_scale, 0.25)
  41. engfunc(EngFunc_SetModel, playerBar, healthbar_spr)
  42. set_pev(playerBar, pev_effects, pev(playerBar, pev_effects ) | EF_NODRAW)
  43. }
  44. }
  45. }
  46.  
  47. public plugin_precache() engfunc(EngFunc_PrecacheModel, healthbar_spr)
  48.  
  49. public ham_spawn_post(id)
  50. {
  51. if(is_user_alive(id))
  52. {
  53. g_isAlive[id] = 1
  54. }
  55. }
  56.  
  57. public zp_user_infected_post(id)
  58. {
  59. g_playerMaxHealth[id] = get_user_health(id)
  60. }
  61.  
  62. public zp_user_humanized_post(id)
  63. {
  64. set_pev(g_playerbar[id], pev_effects, pev(g_playerbar[id], pev_effects) | EF_NODRAW)
  65. }
  66.  
  67. public client_disconnect(id)
  68. {
  69. set_pev(g_playerbar[id], pev_effects, pev(g_playerbar[id], pev_effects) | EF_NODRAW)
  70. }
  71.  
  72. public event_resethud(id)
  73. {
  74. set_pev(g_playerbar[id], pev_effects, pev(g_playerbar[id], pev_effects) | EF_NODRAW)
  75. }
  76.  
  77. public event_death()
  78. {
  79. new id = read_data(2)
  80.  
  81. g_isAlive[id] = 0
  82. set_pev(g_playerbar[id], pev_effects, pev(g_playerbar[id], pev_effects) | EF_NODRAW)
  83. }
  84.  
  85. public event_health(id)
  86. {
  87. new hp = get_user_health(id)
  88.  
  89. if(g_playerMaxHealth[id] < hp)
  90. {
  91. g_playerMaxHealth[id] = hp
  92. set_pev(g_playerbar[id], pev_frame, 99.0)
  93. }
  94. else
  95. {
  96. set_pev(g_playerbar[id], pev_frame, 0.0 + (((hp - 1) * 100) / g_playerMaxHealth[id]))
  97. }
  98. }
  99.  
  100. public fm_addtofullpack_post(es, e, user, host, host_flags, player, p_set)
  101. {
  102. if(!player)
  103. return FMRES_IGNORED
  104.  
  105. if(!is_user_alive(host) || !is_user_alive(user))
  106. return FMRES_IGNORED
  107.  
  108. if(!zp_get_user_zombie(user))
  109. return FMRES_IGNORED
  110.  
  111. if(host == user)
  112. return FMRES_IGNORED
  113.  
  114. new Float:PlayerOrigin[3]
  115. pev(user, pev_origin, PlayerOrigin)
  116.  
  117. PlayerOrigin[2] += 60.0
  118.  
  119. engfunc(EngFunc_SetOrigin, g_playerbar[user], PlayerOrigin)
  120. set_pev(g_playerbar[user], pev_effects, pev(g_playerbar[user], pev_effects) & ~EF_NODRAW)
  121.  
  122. return FMRES_HANDLED
  123. }
  124.  
  125.