HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <cstrike>
  3. #include <fakemeta>
  4. #include <fun>
  5. #include <engine>
  6. #include <hamsandwich>
  7. #include <zombieplague>
  8.  
  9. new g_item, ElectroSpr, g_electro[33], g_Weapon[33]
  10. new bool:g_electroweapon[33]
  11. new g_iMaxPlayers
  12.  
  13. public plugin_init()
  14. {
  15. register_plugin("Electro Weapon", "1.0", "Zapdos1")
  16. g_item = zp_register_extra_item("Electro MP5", 15, ZP_TEAM_HUMAN)
  17.  
  18. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  19. register_event("CurWeapon", "event_CurWeapon", "b", "1=1")
  20. register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
  21. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  22.  
  23. g_iMaxPlayers = get_maxplayers()
  24. }
  25.  
  26. public plugin_precache()
  27. {
  28. precache_model("models/zombie_plague/v_electro.mdl");
  29. precache_sound("zombie_plague/spark6.wav");
  30. ElectroSpr = precache_model("sprites/spark1.spr");
  31. }
  32.  
  33. public event_round_start()
  34. {
  35. for (new i = 1; i <= g_iMaxPlayers; i++)
  36. {
  37. if (!is_user_connected(i))
  38. continue
  39.  
  40. if (g_electroweapon[i])
  41. {
  42. g_electroweapon[i] = false
  43. }
  44. if(g_electro[i])
  45. {
  46. g_electro[i] = false
  47. }
  48. }
  49. }
  50.  
  51. public zp_extra_item_selected(player, itemid)
  52. {
  53. if (itemid == g_item)
  54. {
  55. client_print(player, print_chat, "Vettel egy Villam Fegyvert!")
  56.  
  57. g_electroweapon[player] = true
  58.  
  59. strip_user_weapons(player)
  60.  
  61. give_item(player, "weapon_mp5navy")
  62.  
  63. cs_set_user_bpammo(player, CSW_MP5NAVY, 120)
  64.  
  65. set_hudmessage(255, 255, 0, -1.0, -1.0, 0, 6.0, 5.0)
  66. show_hudmessage(player, "Villam ero aktivalva !")
  67.  
  68. }
  69. }
  70.  
  71. public zp_user_infected_post(infected, infector)
  72. {
  73. if (g_electroweapon[infected])
  74. {
  75. g_electroweapon[infected] = false
  76. }
  77. }
  78.  
  79. public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
  80. {
  81. if(!is_user_connected(attacker) || !is_user_connected(victim) || zp_get_user_nemesis(victim) || attacker == victim || !attacker)
  82. return HAM_IGNORED
  83.  
  84. static Float:originF[3]
  85. pev(victim, pev_origin, originF)
  86.  
  87. static originF2[3]
  88. get_user_origin(victim, originF2)
  89.  
  90. if (g_electroweapon[attacker] && get_user_weapon(attacker) == CSW_MP5NAVY)
  91. {
  92. ElectroRing(originF)
  93.  
  94. ElectroSound(originF2)
  95. }
  96.  
  97. if(zp_get_user_nemesis(victim))
  98. {
  99. return HAM_IGNORED
  100. }
  101. return PLUGIN_HANDLED;
  102. }
  103.  
  104. public event_CurWeapon(id)
  105. {
  106. if (!is_user_alive(id))
  107. return PLUGIN_CONTINUE
  108.  
  109. g_Weapon[id] = read_data(2)
  110.  
  111. if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
  112. return PLUGIN_CONTINUE
  113.  
  114. if(!g_electroweapon[id] || g_Weapon[id] != CSW_MP5NAVY)
  115. return PLUGIN_CONTINUE
  116.  
  117. entity_set_string(id, EV_SZ_viewmodel, "models/zombie_plague/v_electro.mdl")
  118.  
  119. return PLUGIN_CONTINUE
  120. }
  121.  
  122. public fw_PlayerPreThink(id)
  123. {
  124. if (!is_user_alive(id))
  125. return;
  126. }
  127.  
  128. public ElectroSound(iOrigin[3])
  129. {
  130. new Entity = create_entity("info_target")
  131.  
  132. new Float:flOrigin[3]
  133. IVecFVec(iOrigin, flOrigin)
  134.  
  135. entity_set_origin(Entity, flOrigin)
  136.  
  137. emit_sound(Entity, CHAN_WEAPON, "zombie_plague/spark6.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  138.  
  139. remove_entity(Entity)
  140. }
  141.  
  142. // Frost Effect Ring
  143. ElectroRing(const Float:originF3[3])
  144. {
  145. // Largest ring
  146. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF3, 0)
  147. write_byte(TE_BEAMCYLINDER)
  148. engfunc(EngFunc_WriteCoord, originF3[0])
  149. engfunc(EngFunc_WriteCoord, originF3[1])
  150. engfunc(EngFunc_WriteCoord, originF3[2])
  151. engfunc(EngFunc_WriteCoord, originF3[0])
  152. engfunc(EngFunc_WriteCoord, originF3[1])
  153. engfunc(EngFunc_WriteCoord, originF3[2]+100.0)
  154. write_short(ElectroSpr)
  155. write_byte(0)
  156. write_byte(0)
  157. write_byte(4)
  158. write_byte(60)
  159. write_byte(0)
  160. write_byte(41)
  161. write_byte(138)
  162. write_byte(255)
  163. write_byte(200)
  164. write_byte(0)
  165. message_end()
  166. }
  167.  
  168. public client_putinserver(id)
  169. {
  170. g_electroweapon[id] = false
  171. g_electro[id] = false
  172. }
  173.  
  174. public client_disconnect(id)
  175. {
  176. g_electroweapon[id] = false
  177. g_electro[id] = false
  178. }
  179.