HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*================================================================================
  2. Név: Fegyverzáró zombi
  3. Típus: Zombi osztály
  4. Mód: Zombie Plague 4.3
  5. Készítő: Dias Leon
  6. Kreditek:
  7. - Dias | Plugin készítője
  8. ================================================================================*/
  9.  
  10. #include <amxmodx>
  11. #include <fakemeta>
  12. #include <fakemeta_util>
  13. #include <zombieplague>
  14.  
  15. // Zombi testreszabás
  16. new const zclass_name[] = "Fegyverzáró zombi" // név
  17. new const zclass_info[] = "Lezárja az emberek fegyverét - (G) betű" // leírás
  18. new const zclass_model[] = "zombie_source" // modell
  19. new const zclass_clawmodel[] = "v_knife_zombie.mdl" // kéz modell
  20. const zclass_health = 750 // élet
  21. const zclass_speed = 250 // gyorsaság
  22. const Float:zclass_gravity = 1.0 // gravitáció
  23. const Float:zclass_knockback = 1.0 // hátralökés
  24.  
  25. // Osztály ID
  26. new g_lockerz
  27.  
  28. // Main var
  29. new beam
  30. new bool:can_lock[33]
  31. new bool:target_locked[33]
  32.  
  33. // Cvarok
  34. new cvar_distance
  35. new cvar_cooldown
  36. new cvar_cooldown_target
  37.  
  38. public plugin_init()
  39. {
  40. register_plugin("[ZP] Zombi osztály: Fegyverzáró zombi", "1.0", "Dias Leon")
  41. register_clcmd("drop", "lock_now")
  42. register_forward(FM_CmdStart, "fw_Start")
  43. cvar_distance = register_cvar("lz_distance", "750") //Távolság ,amelyen belül lezárhatja az emberek fegyverét | Alap: 750
  44. cvar_cooldown = register_cvar("lz_cooldown_time", "30.0") //Mennyi idő után használhatja újra a képességét (másodperc) | Alap: 30
  45. cvar_cooldown_target = register_cvar("lz_cooldown_target_time", "10.0") //Akinek lezárta a fegyverét az mennyi idő után tudja újra használni (másodperc) | Alap: 10
  46. }
  47.  
  48. public plugin_precache()
  49. {
  50. g_lockerz = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
  51. beam = precache_model("sprites/lgtning.spr")
  52. }
  53.  
  54. public zp_user_infected_post(id, infector)
  55. {
  56. if(is_user_alive(id) && zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_lockerz)
  57. {
  58. client_print(id, print_chat, "[Fegyverzáró zombi] Célozz a játékosra akinek szeretnéd blokkolni a fegyverét, és nyomj (G)-t !!!")
  59. can_lock[id] = true
  60. }
  61. }
  62.  
  63. public zp_user_humanized_post(id)
  64. {
  65. if(is_user_alive(id) && zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_lockerz)
  66. {
  67. can_lock[id] = false
  68. }
  69. }
  70.  
  71. public lock_now(id)
  72. {
  73. if(is_user_alive(id) && zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_lockerz)
  74. {
  75. if(is_user_alive(id) && can_lock[id] == true)
  76. {
  77. new target1, body1
  78. static Float:start1[3]
  79. static Float:end1[3]
  80.  
  81. pev(id, pev_origin, start1)
  82. start1[2] += 16.0
  83. fm_get_aim_origin(id, end1)
  84. end1[2] += 16.0
  85.  
  86. get_user_aiming(id, target1, body1, cvar_distance)
  87. if(is_user_alive(target1) && !zp_get_user_zombie(target1) && !zp_get_user_survivor(target1))
  88. {
  89. lock_target(target1)
  90. client_print(id, print_center, "Ellenfél fegyvere lezárva [Találat]")
  91. } else {
  92. client_print(id, print_center, "Ellenfél fegyverét nem sikerült lezárni [Nem talált]")
  93. }
  94. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  95. write_byte(0)
  96. engfunc(EngFunc_WriteCoord, start1[0])
  97. engfunc(EngFunc_WriteCoord, start1[1])
  98. engfunc(EngFunc_WriteCoord, start1[2])
  99. engfunc(EngFunc_WriteCoord, end1[0])
  100. engfunc(EngFunc_WriteCoord, end1[1])
  101. engfunc(EngFunc_WriteCoord, end1[2])
  102. write_short(beam)
  103. write_byte(0)
  104. write_byte(30)
  105. write_byte(20)
  106. write_byte(50)
  107. write_byte(50)
  108. write_byte(255)
  109. write_byte(255)
  110. write_byte(255)
  111. write_byte(100)
  112. write_byte(50)
  113. message_end()
  114.  
  115. can_lock[id] = false
  116. set_task(get_pcvar_float(cvar_cooldown), "ability_reload", id)
  117. } else {
  118. if(is_user_alive(id) && can_lock[id] == false)
  119. {
  120. client_print(id, print_chat, "[Fegyverzáró zombi] Még nem tudod használni a képességet. Kérlek várj %i másodpercet", get_pcvar_num(cvar_cooldown))
  121. }
  122. }
  123. }
  124. }
  125.  
  126. public lock_target(id)
  127. {
  128. target_locked[id] = true
  129.  
  130. set_task(get_pcvar_float(cvar_cooldown_target), "unlock_target", id)
  131. client_print(id, print_chat, "Az összes fegyvered lelett zárva, most nem tudsz tüzelni. Kérlek várj %i másodpercet", get_pcvar_num(cvar_cooldown_target))
  132.  
  133. return PLUGIN_HANDLED
  134. }
  135.  
  136. public ability_reload(id)
  137. {
  138. can_lock[id] = true
  139. client_print(id, print_chat, "[Fegyverzáró zombi] MOST! Újra elérhető a képességed, Nyomj (G)-t!")
  140. }
  141.  
  142. public unlock_target(id)
  143. {
  144. target_locked[id] = false
  145. client_print(id, print_chat, "Az összes fegyver felvan oldva, Most tudsz lőni újra.")
  146.  
  147. return PLUGIN_HANDLED
  148. }
  149.  
  150. public fw_Start(id, uc_handle, seed)
  151. {
  152. if(is_user_alive(id) && target_locked[id] == true)
  153. {
  154. new button = get_uc(uc_handle,UC_Buttons)
  155. if(button & IN_ATTACK || button & IN_ATTACK2)
  156. {
  157. set_uc(uc_handle,UC_Buttons,(button & ~IN_ATTACK) & ~IN_ATTACK2)
  158. }
  159. }
  160. }
  161.