HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <zombieplague>
  7. #include <xs>
  8.  
  9. #define PLUGIN "[ZP] Addon: Infect-Effect"
  10. #define VERSION "1.0"
  11. #define AUTHOR "Dias"
  12.  
  13. new g_effect_id[33], g_had_effect[33]
  14. new const effect_model[] = "sprites/infect-effect.spr"
  15.  
  16. new cvar_scale, cvar_showtime, cvar_lightlevel
  17.  
  18. public plugin_init()
  19. {
  20. register_plugin(PLUGIN, VERSION, AUTHOR)
  21.  
  22. RegisterHam(Ham_Spawn, "player", "fw_spawn_post", 1)
  23. register_forward(FM_AddToFullPack, "fw_WhatTheFuck_Post", 1)
  24.  
  25. cvar_scale = register_cvar("zp_in-ef_scale", "0.035")
  26. cvar_showtime = register_cvar("zp_in-ef_showtime", "2.0")
  27. cvar_lightlevel = register_cvar("zp_in-ef_lightlevel", "100.0")
  28. }
  29.  
  30. public plugin_precache()
  31. {
  32. precache_model(effect_model)
  33. }
  34.  
  35. public fw_spawn_post(id)
  36. {
  37. if(g_had_effect[id])
  38. remove_effect(id)
  39. }
  40.  
  41. public zp_user_infected_post(id, attacker)
  42. {
  43. if(is_user_alive(attacker))
  44. {
  45. show_effect(id)
  46. }
  47. }
  48.  
  49. public show_effect(id)
  50. {
  51. g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
  52.  
  53. if (!pev_valid(g_effect_id[id]))
  54. return
  55.  
  56. g_had_effect[id] = 1
  57.  
  58. set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
  59. set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
  60.  
  61. engfunc(EngFunc_SetModel, g_effect_id[id], effect_model)
  62.  
  63. set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
  64. set_pev(g_effect_id[id], pev_renderamt, 0.0)
  65. set_pev(g_effect_id[id], pev_owner, id)
  66. set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
  67. set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
  68.  
  69. set_task(get_pcvar_float(cvar_showtime), "remove_effect", g_effect_id[id])
  70. }
  71.  
  72. public fw_WhatTheFuck_Post(es, e, ent, host, host_flags, player, p_set)
  73. {
  74. if(!(0 < host < 33))
  75. return FMRES_IGNORED
  76.  
  77. if(ent != g_effect_id[host] || !pev_valid(ent))
  78. return FMRES_IGNORED
  79.  
  80. if(pev(ent, pev_owner) != host)
  81. return FMRES_IGNORED
  82.  
  83. if(!is_user_alive(host))
  84. return FMRES_IGNORED
  85.  
  86. static Float:origin[3], Float:forvec[3], Float:voffsets[3], Float:Angles[3]
  87.  
  88. pev(host, pev_origin, origin)
  89. pev(host, pev_view_ofs, voffsets)
  90. pev(host, pev_angles, Angles)
  91.  
  92. xs_vec_add(origin, voffsets, origin)
  93.  
  94. // Get a forward vector in the direction of player's aim
  95. velocity_by_aim(host, 10, forvec)
  96.  
  97. // Set the sprite on the new origin
  98. xs_vec_add(origin, forvec, origin)
  99.  
  100. engfunc(EngFunc_SetOrigin, ent, origin)
  101. set_es(es, ES_Origin, origin)
  102. set_es(es, ES_Angles, Angles)
  103.  
  104. // Make the sprite visible
  105. set_es(es, ES_RenderMode, kRenderTransAdd)
  106. set_es(es, ES_RenderAmt, 200)
  107.  
  108. return FMRES_HANDLED
  109. }
  110.  
  111. public remove_effect(ent)
  112. {
  113. g_had_effect[pev(ent, pev_owner)] = 0
  114.  
  115. if(pev_valid(ent))
  116. engfunc(EngFunc_RemoveEntity, ent)
  117. }
  118.