HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*=============================[FORDÍTÁS]=============================*/
  2. /* mdL* */
  3. #include <amxmodx>
  4. #include <amxmisc>
  5. #include <engine>
  6. #include <cstrike>
  7. #include <zombieplague>
  8. #include <hamsandwich>
  9. #include <fakemeta_util>
  10. #include <fun>
  11.  
  12.  
  13. #define PLUGIN "[ZP] Extra Item: Force Field Grenade"
  14. #define VERSION "v1.6"
  15. #define AUTHOR "lucas_7_94" // Köszönhető a plugin.
  16.  
  17. /*=============================[Plugin Customization]=============================*/
  18. //#define CAMPO_TASK
  19. #define CAMPO_ROUND
  20.  
  21. new const NADE_TYPE_CAMPO = 7000
  22.  
  23. new const model_grenade[] = "models/zombie_plague/v_auragren.mdl"
  24. new g_bomb[33]
  25. new g_itemID
  26. new const model[] = "models/zombie_plague/aura8.mdl"
  27.  
  28. new const entclas[] = "campo_grenade_forze"
  29. new cvar_flaregrenades
  30. new g_trailSpr
  31. const m_pPlayer = 41;
  32.  
  33. new cvar_push
  34.  
  35. new g_SayText
  36. new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
  37.  
  38. /*=============================[End Customization]=============================*/
  39.  
  40. public plugin_init()
  41. {
  42. register_plugin(PLUGIN, VERSION, AUTHOR)
  43.  
  44. RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
  45.  
  46. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  47.  
  48. cvar_flaregrenades = get_cvar_pointer("zp_flare_grenades")
  49.  
  50. register_forward(FM_SetModel, "fw_SetModel")
  51.  
  52. RegisterHam( Ham_Item_Deploy, "weapon_smokegrenade", "FwdHamSmokeDeploy", 1 );
  53.  
  54. register_touch(entclas, "player", "entity_touch")
  55.  
  56. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  57.  
  58. g_SayText = get_user_msgid("SayText")
  59.  
  60. // cvar to push!!.
  61. register_cvar("zp_shield_creator", AUTHOR, FCVAR_SERVER)
  62.  
  63. #if defined CAMPO_ROUND
  64. g_itemID = zp_register_extra_item( "Force Shield (One Round)", 30 , ZP_TEAM_HUMAN)
  65. #else
  66. g_itemID = zp_register_extra_item( "Force Shield (Short-acting)", 15 , ZP_TEAM_HUMAN)
  67. #endif
  68.  
  69. cvar_push = register_cvar("zp_forze_push", "7.5")
  70. }
  71. public event_round_start()
  72. {
  73. #if defined CAMPO_ROUND
  74. remove_entity_name(entclas)
  75. #endif
  76.  
  77. arrayset( g_bomb, false, 33 );
  78. }
  79.  
  80. public plugin_precache()
  81. {
  82. g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
  83.  
  84. engfunc(EngFunc_PrecacheModel, model_grenade)
  85. engfunc(EngFunc_PrecacheModel, model)
  86. }
  87.  
  88. public client_disconnect(id)
  89. {
  90. g_bomb[id] = false
  91. }
  92.  
  93. public zp_extra_item_selected(player, itemid)
  94. {
  95. if(itemid == g_itemID)
  96. {
  97. if(g_bomb[player])
  98. {
  99. Color(player, "!g[Shield]!y vettél 1 pajzs gránátot")
  100. }
  101. else
  102. {
  103. g_bomb[player] = true
  104. give_item(player,"weapon_smokegrenade")
  105.  
  106.  
  107. #if defined CAMPO_ROUND
  108. Color(player, "!g[Shield]!y Vettél pajzs gránátott, 1 körig tart!.")
  109. #else
  110. Color(player, "!g[Shield]!y Te már nem kaphatsz, 1 körben 1,-et lehet venni csak!")
  111. #endif
  112. }
  113.  
  114.  
  115. }
  116.  
  117. }
  118.  
  119. public fw_PlayerKilled(victim, attacker, shouldgib) g_bomb[victim] = false
  120.  
  121.  
  122. public fw_ThinkGrenade(entity)
  123. {
  124. if(!pev_valid(entity))
  125. return HAM_IGNORED
  126.  
  127. static Float:dmgtime
  128. pev(entity, pev_dmgtime, dmgtime)
  129.  
  130. if (dmgtime > get_gametime())
  131. return HAM_IGNORED
  132.  
  133. if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_CAMPO)
  134. crear_ent(entity)
  135.  
  136.  
  137. return HAM_SUPERCEDE
  138. }
  139.  
  140. public FwdHamSmokeDeploy(const iEntity) {
  141. if(pev_valid(iEntity) != 2 )
  142. return HAM_IGNORED
  143.  
  144. new id = get_pdata_cbase(iEntity, m_pPlayer, 4)
  145.  
  146. if(g_bomb[id] && !zp_get_user_zombie(id))
  147. {
  148. set_pev( id, pev_viewmodel2, model_grenade )
  149. }
  150.  
  151. return HAM_IGNORED;
  152. }
  153.  
  154. public fw_SetModel(entity, const model[])
  155. {
  156. static Float:dmgtime
  157. pev(entity, pev_dmgtime, dmgtime)
  158.  
  159. if (dmgtime == 0.0)
  160. return
  161.  
  162. if (equal(model[7], "w_sm", 4))
  163. {
  164. new owner = pev(entity, pev_owner)
  165.  
  166. if(!zp_get_user_zombie(owner) && g_bomb[owner])
  167. {
  168. set_pcvar_num(cvar_flaregrenades,0)
  169.  
  170. fm_set_rendering(entity, kRenderFxGlowShell, 000, 255, 255, kRenderNormal, 16)
  171.  
  172. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  173. write_byte(TE_BEAMFOLLOW) // TE id
  174. write_short(entity) // entity
  175. write_short(g_trailSpr) // sprite
  176. write_byte(10) // life
  177. write_byte(10) // width
  178. write_byte(000) // r
  179. write_byte(255) // g
  180. write_byte(255) // b
  181. write_byte(500) // brightness
  182. message_end()
  183.  
  184. set_pev(entity, pev_flTimeStepSound, NADE_TYPE_CAMPO)
  185.  
  186. set_task(6.0, "DeleteEntityGrenade" ,entity)
  187. }
  188. }
  189.  
  190. }
  191.  
  192. public DeleteEntityGrenade(entity) remove_entity(entity)
  193.  
  194. public crear_ent(id)
  195. {
  196. set_pcvar_num(cvar_flaregrenades,1)
  197.  
  198. // Create entitity
  199. new iEntity = create_entity("info_target")
  200.  
  201. if(!is_valid_ent(iEntity))
  202. return PLUGIN_HANDLED
  203.  
  204. new Float: Origin[3]
  205. entity_get_vector(id, EV_VEC_origin, Origin)
  206. Origin[2] -= 0.00
  207.  
  208. entity_set_string(iEntity, EV_SZ_classname, entclas)
  209.  
  210. entity_set_vector(iEntity,EV_VEC_origin, Origin)
  211. entity_set_model(iEntity,model)
  212. entity_set_int(iEntity, EV_INT_solid, SOLID_TRIGGER)
  213. entity_set_size(iEntity, Float: {-100.0, -100.0, -100.0}, Float: {100.0, 100.0, 100.0})
  214. entity_set_int(iEntity, EV_INT_renderfx, kRenderFxGlowShell)
  215. entity_set_int(iEntity, EV_INT_rendermode, kRenderTransAlpha)
  216. entity_set_float(iEntity, EV_FL_renderamt, 50.0)
  217.  
  218.  
  219. if(is_valid_ent(iEntity))
  220. {
  221. new Float:vColor[3]
  222.  
  223. for(new i; i < 3; i++)
  224. vColor[i] = random_float(0.0, 255.0)
  225.  
  226. entity_set_vector(iEntity, EV_VEC_rendercolor, vColor)
  227. }
  228.  
  229.  
  230. #if defined CAMPO_TASK
  231. set_task(15.0, "DeleteEntity", iEntity)
  232. #endif
  233.  
  234. static attacker
  235. attacker = pev(id, pev_owner)
  236.  
  237. g_bomb[attacker] = false
  238.  
  239. return PLUGIN_CONTINUE;
  240. }
  241.  
  242. public zp_user_infected_post(infected, infector)
  243. {
  244. if (g_bomb[infected])
  245. {
  246. g_bomb[infected] = false
  247. }
  248. }
  249.  
  250. public entity_touch(touched, toucher)
  251. {
  252. if(zp_get_user_zombie(toucher) || zp_get_user_nemesis(toucher))
  253. {
  254. new Float:pos_ptr[3], Float:pos_ptd[3], Float:push_power = get_pcvar_float(cvar_push)
  255.  
  256. pev(touched, pev_origin, pos_ptr)
  257. pev(toucher, pev_origin, pos_ptd)
  258.  
  259. for(new i = 0; i < 2; i++)
  260. {
  261. pos_ptd[i] -= pos_ptr[i]
  262. pos_ptd[i] *= push_power
  263. }
  264. set_pev(toucher, pev_velocity, pos_ptd)
  265. set_pev(toucher, pev_impulse, pos_ptd)
  266. }
  267. }
  268.  
  269. public remove_ent()
  270. {
  271. remove_entity_name(entclas)
  272. }
  273.  
  274. public DeleteEntity( entity )
  275. if( is_valid_ent( entity ) )
  276. remove_entity( entity );
  277.  
  278. stock Color(const id, const input[], any:...)
  279. {
  280. static msg[191]
  281. vformat(msg, 190, input, 3)
  282.  
  283. replace_all(msg, 190, "!g", "^4")
  284. replace_all(msg, 190, "!y", "^1")
  285. replace_all(msg, 190, "!t", "^3")
  286.  
  287. message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
  288. write_byte(id)
  289. write_string(msg)
  290. message_end()
  291. }
  292.