HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <engine>
  4. #include <fun>
  5. #include <zombieplague>
  6.  
  7. #define TASK_COOLDOWN 27015
  8. #define TASK_REMOVE_TRAP 37015
  9.  
  10. new const zclass_name[] = "Csapda rako Zombi"
  11. new const zclass_info[] = "Csapda lerakas \r[G]"
  12. new const zclass_model[] = "zombie_source"
  13. new const zclass_clawmodel[] = "v_knife_zombie.mdl"
  14. const zclass_health = 5000
  15. const zclass_speed = 230
  16. const Float:zclass_gravity = 1.0
  17. const Float:zclass_knockback = 1.0
  18.  
  19. // Main Trap Vars
  20. new g_zheavy
  21. new bool:can_make_trap[33]
  22. new bool:player_trapped[33]
  23.  
  24. new const trap_string[] = "trap"
  25. new const trap_model[] = "models/zombie_plague/zombie_trap.mdl"
  26.  
  27. new cvar_cooldown
  28. new cvar_trap_hp
  29. new cvar_trap_time
  30.  
  31. public plugin_init()
  32. {
  33. register_plugin("[ZP] Zombie Class: Heavy", "1.2", "Dias")
  34. register_clcmd("drop", "use_skill")
  35. register_event("ResetHUD", "new_round", "be")
  36. register_touch(trap_string, "*", "fw_touch")
  37. register_forward(FM_PlayerPreThink, "fw_think", 0);
  38.  
  39. cvar_register()
  40. }
  41.  
  42. public cvar_register()
  43. {
  44. cvar_cooldown = register_cvar("qz_cooldown", "30")
  45. cvar_trap_time = register_cvar("qz_trap_time", "15")
  46. cvar_trap_hp = register_cvar("qz_trap_hp", "500")
  47. }
  48.  
  49. public plugin_precache()
  50. {
  51. g_zheavy = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
  52. precache_model(trap_model)
  53. }
  54.  
  55. public new_round(id)
  56. {
  57. new trap = find_ent_by_class(0, trap_string)
  58. remove_entity(trap)
  59.  
  60. can_make_trap[id] = false
  61. player_trapped[id] = false
  62.  
  63. set_user_maxspeed(id, -1.0)
  64. set_user_gravity(id, 1.0)
  65.  
  66. remove_task(id+TASK_COOLDOWN)
  67. remove_task(id+TASK_REMOVE_TRAP)
  68. }
  69.  
  70. public zp_user_infected_post(id, attacker)
  71. {
  72. if(zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zheavy)
  73. {
  74. remove_task(id+TASK_COOLDOWN)
  75. client_print(id, print_chat, "[ZP] Te csapda rako Zombi vagy ! Csapda lerakashoz nyomj [G] betut !")
  76. can_make_trap[id] = true
  77. }
  78.  
  79. if(player_trapped[id] == true)
  80. {
  81. player_trapped[id] = false
  82.  
  83. new trap = find_ent_by_class(0, trap_string)
  84. remove_entity(trap)
  85.  
  86. remove_task(id+TASK_REMOVE_TRAP)
  87. }
  88. }
  89.  
  90. public use_skill(id)
  91. {
  92. if(is_user_alive(id) && zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zheavy && !zp_get_user_nemesis(id))
  93. {
  94. if(can_make_trap[id])
  95. {
  96. create_trap(id)
  97. } else {
  98. client_print(id, print_chat, "[ZP] Jelenleg nem rakhatsz csapdat ! Varj %i masodpercet !", get_pcvar_num(cvar_cooldown))
  99. }
  100. }
  101. }
  102.  
  103. public create_trap(id)
  104. {
  105. new Float:Origin[3]
  106. entity_get_vector(id, EV_VEC_origin, Origin)
  107.  
  108. Origin[2] -= 35.0
  109.  
  110. new trap = create_entity("info_target")
  111. entity_set_vector(trap, EV_VEC_origin, Origin)
  112.  
  113. entity_set_float(trap, EV_FL_takedamage, 1.0)
  114. entity_set_float(trap, EV_FL_health, get_pcvar_float(cvar_trap_hp))
  115.  
  116. entity_set_string(trap, EV_SZ_classname, trap_string)
  117. entity_set_model(trap, trap_model)
  118. entity_set_int(trap, EV_INT_solid, 1)
  119.  
  120. entity_set_byte(trap,EV_BYTE_controller1,125);
  121. entity_set_byte(trap,EV_BYTE_controller2,125);
  122. entity_set_byte(trap,EV_BYTE_controller3,125);
  123. entity_set_byte(trap,EV_BYTE_controller4,125);
  124.  
  125. new Float:size_max[3] = {5.0,5.0,5.0}
  126. new Float:size_min[3] = {-5.0,-5.0,-5.0}
  127. entity_set_size(trap, size_min, size_max)
  128.  
  129. entity_set_float(trap, EV_FL_animtime, 2.0)
  130. entity_set_float(trap, EV_FL_framerate, 1.0)
  131. entity_set_int(trap, EV_INT_sequence, 0)
  132.  
  133. drop_to_floor(trap)
  134.  
  135. can_make_trap[id] = false
  136. set_task(get_pcvar_float(cvar_cooldown), "reset_cooldown", id+TASK_COOLDOWN)
  137. }
  138.  
  139. public reset_cooldown(taskid)
  140. {
  141. new id = taskid - TASK_COOLDOWN
  142. if(is_user_alive(id) && zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zheavy)
  143. {
  144. if(can_make_trap[id] == false)
  145. {
  146. can_make_trap[id] = true
  147. client_print(id, print_chat, "[ZP] Skill ujratoltve...Ujra rakhatsz csapdat !")
  148. }
  149. }
  150. }
  151.  
  152. public fw_touch(trap, id)
  153. {
  154. if(!pev_valid(trap))
  155. return
  156.  
  157. if(is_user_alive(id) && !zp_get_user_zombie(id))
  158. {
  159. new ent = find_ent_by_class(0, trap_string)
  160. entity_set_int(ent, EV_INT_sequence, 1)
  161.  
  162. player_trapped[id] = true
  163. set_task(get_pcvar_float(cvar_trap_time), "remove_trap", id+TASK_REMOVE_TRAP)
  164. }
  165. }
  166.  
  167. public remove_trap(taskid)
  168. {
  169. new id = taskid - TASK_REMOVE_TRAP
  170.  
  171. set_user_maxspeed(id, -1.0)
  172. set_user_gravity(id, 1.0)
  173. player_trapped[id] = false
  174.  
  175. new trap = find_ent_by_class(0, trap_string)
  176. remove_entity(trap)
  177.  
  178. remove_task(id+TASK_REMOVE_TRAP)
  179. }
  180.  
  181. public spawn_post(id)
  182. {
  183. if(is_user_alive(id))
  184. {
  185. player_trapped[id] = false
  186. }
  187. }
  188.  
  189. public fw_think(id)
  190. {
  191. if(is_user_alive(id) && player_trapped[id] == true)
  192. {
  193. set_user_maxspeed(id, 0.1)
  194. set_user_gravity(id, 10000.0)
  195. }
  196. }
  197.