HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*
  2. [ZP] Extra Cucc: Arany M249
  3. Team: Humans
  4.  
  5. Leiras:Ujra extra cucc emberek szamara.
  6. Mennyibe keru? : 500
  7.  
  8. Kepessegek:
  9. - Nagyobb sebzes
  10. - Zoom :)
  11. - Golyo csikok
  12. - Orok loszer
  13.  
  14. Koszonet ezeknek a szemelyeknek:
  15.  
  16. KaOs
  17. AlejandroSk
  18. MiXxX-eD
  19. VirTuaL^
  20.  
  21. Cvar-ok:
  22.  
  23.  
  24. - zp_golden_m249_dmg_multiplier <5> - Hanyszoros sebzes legyen
  25. - zp_golden_m249_gold_bullets <1|0> - Arany golyo effekt
  26. - zp_golden_m249_custom_model <1|0> - Golden M249 Modell
  27. - zp_golden_m249_unlimited_clip <1|0> - Orok loszer
  28.  
  29. */
  30.  
  31.  
  32.  
  33. #include <amxmodx>
  34. #include <fakemeta>
  35. #include <fun>
  36. #include <hamsandwich>
  37. #include <cstrike>
  38. #include <zombieplague>
  39.  
  40. #define is_valid_player(%1) (1 <= %1 <= 32)
  41.  
  42. new AK_V_MODEL[64] = "models/zombie_plague/v_golden_M249.mdl"
  43. new AK_P_MODEL[64] = "models/zombie_plague/p_golden_M249.mdl"
  44.  
  45. /* Pcvars */
  46. new cvar_dmgmultiplier, cvar_goldbullets, cvar_custommodel, cvar_uclip
  47.  
  48. // Item ID
  49. new g_itemid
  50.  
  51. new bool:g_HasAk[33]
  52.  
  53. new g_hasZoom[ 33 ]
  54. new bullets[ 33 ]
  55.  
  56. // Sprite
  57. new m_spriteTexture
  58.  
  59. const Wep_M249 = ((1<<CSW_M249))
  60.  
  61. public plugin_init()
  62. {
  63.  
  64. /* CVARS */
  65. cvar_dmgmultiplier = register_cvar("zp_golden_m249_dmg_multiplier", "5")
  66. cvar_custommodel = register_cvar("zp_golden_m249_custom_model", "1")
  67. cvar_goldbullets = register_cvar("zp_golden_m249_gold_bullets", "1")
  68. cvar_uclip = register_cvar("zp_golden_m249_unlimited_clip", "1")
  69.  
  70. // Register The Plugin
  71. register_plugin("[ZP] Extra: Golden M249", "1.0", "AlejandroSk")
  72. // Register Zombie Plague extra item
  73. g_itemid = zp_register_extra_item("Golden M249", 500, ZP_TEAM_HUMAN)
  74. // Death Msg
  75. register_event("DeathMsg", "Death", "a")
  76. // Weapon Pick Up
  77. register_event("WeapPickup","checkModel","b","1=19")
  78. // Current Weapon Event
  79. register_event("CurWeapon","checkWeapon","be","1=1")
  80. register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")
  81. // Ham TakeDamage
  82. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  83. register_forward( FM_CmdStart, "fw_CmdStart" )
  84. RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
  85.  
  86. }
  87.  
  88. public client_connect(id)
  89. {
  90. g_HasAk[id] = false
  91. }
  92.  
  93. public client_disconnect(id)
  94. {
  95. g_HasAk[id] = false
  96. }
  97.  
  98. public Death()
  99. {
  100. g_HasAk[read_data(2)] = false
  101. }
  102.  
  103. public fwHamPlayerSpawnPost(id)
  104. {
  105. g_HasAk[id] = false
  106. }
  107.  
  108. public plugin_precache()
  109. {
  110. precache_model(AK_V_MODEL)
  111. precache_model(AK_P_MODEL)
  112. m_spriteTexture = precache_model("sprites/dot.spr")
  113. precache_sound("weapons/zoom.wav")
  114. }
  115.  
  116. public zp_user_infected_post(id)
  117. {
  118. if (zp_get_user_zombie(id))
  119. {
  120. g_HasAk[id] = false
  121. }
  122. }
  123.  
  124. public checkModel(id)
  125. {
  126. if ( zp_get_user_zombie(id) )
  127. return PLUGIN_HANDLED
  128.  
  129. new szWeapID = read_data(2)
  130.  
  131. if ( szWeapID == CSW_M249 && g_HasAk[id] == true && get_pcvar_num(cvar_custommodel) )
  132. {
  133. set_pev(id, pev_viewmodel2, AK_V_MODEL)
  134. set_pev(id, pev_weaponmodel2, AK_P_MODEL)
  135. }
  136. return PLUGIN_HANDLED
  137. }
  138.  
  139. public checkWeapon(id)
  140. {
  141. new plrClip, plrAmmo, plrWeap[32]
  142. new plrWeapId
  143.  
  144. plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
  145.  
  146. if (plrWeapId == CSW_M249 && g_HasAk[id])
  147. {
  148. checkModel(id)
  149. }
  150. else
  151. {
  152. return PLUGIN_CONTINUE
  153. }
  154.  
  155. if (plrClip == 0 && get_pcvar_num(cvar_uclip))
  156. {
  157. // If the user is out of ammo..
  158. get_weaponname(plrWeapId, plrWeap, 31)
  159. // Get the name of their weapon
  160. give_item(id, plrWeap)
  161. engclient_cmd(id, plrWeap)
  162. engclient_cmd(id, plrWeap)
  163. engclient_cmd(id, plrWeap)
  164. }
  165. return PLUGIN_HANDLED
  166. }
  167.  
  168.  
  169.  
  170. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  171. {
  172. if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_M249 && g_HasAk[attacker] )
  173. {
  174. SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
  175. }
  176. }
  177.  
  178. public fw_CmdStart( id, uc_handle, seed )
  179. {
  180. if( !is_user_alive( id ) )
  181. return PLUGIN_HANDLED
  182.  
  183. if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
  184. {
  185. new szClip, szAmmo
  186. new szWeapID = get_user_weapon( id, szClip, szAmmo )
  187.  
  188. if( szWeapID == CSW_M249 && g_HasAk[id] == true && !g_hasZoom[id] == true)
  189. {
  190. g_hasZoom[id] = true
  191. cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
  192. emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
  193. }
  194.  
  195. else if ( szWeapID == CSW_M249 && g_HasAk[id] == true && g_hasZoom[id])
  196. {
  197. g_hasZoom[ id ] = false
  198. cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
  199.  
  200. }
  201.  
  202. }
  203. return PLUGIN_HANDLED
  204. }
  205.  
  206.  
  207. public make_tracer(id)
  208. {
  209. if (get_pcvar_num(cvar_goldbullets))
  210. {
  211. new clip,ammo
  212. new wpnid = get_user_weapon(id,clip,ammo)
  213. new pteam[16]
  214.  
  215. get_user_team(id, pteam, 15)
  216.  
  217. if ((bullets[id] > clip) && (wpnid == CSW_M249) && g_HasAk[id])
  218. {
  219. new vec1[3], vec2[3]
  220. get_user_origin(id, vec1, 1) // origin; your camera point.
  221. get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)
  222.  
  223.  
  224. //BEAMENTPOINTS
  225. message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
  226. write_byte (0) //TE_BEAMENTPOINTS 0
  227. write_coord(vec1[0])
  228. write_coord(vec1[1])
  229. write_coord(vec1[2])
  230. write_coord(vec2[0])
  231. write_coord(vec2[1])
  232. write_coord(vec2[2])
  233. write_short( m_spriteTexture )
  234. write_byte(1) // framestart
  235. write_byte(5) // framerate
  236. write_byte(2) // life
  237. write_byte(10) // width
  238. write_byte(0) // noise
  239. write_byte( 255 ) // r, g, b
  240. write_byte( 215 ) // r, g, b
  241. write_byte( 0 ) // r, g, b
  242. write_byte(200) // brightness
  243. write_byte(150) // speed
  244. message_end()
  245. }
  246.  
  247. bullets[id] = clip
  248. }
  249.  
  250. }
  251.  
  252. public zp_extra_item_selected(player, itemid)
  253. {
  254. if ( itemid == g_itemid )
  255. {
  256. if ( user_has_weapon(player, CSW_M249) )
  257. {
  258. drop_prim(player)
  259. }
  260.  
  261. give_item(player, "weapon_m249")
  262. client_print(player, print_chat, "[ZP] Te vettel M249-et")
  263. g_HasAk[player] = true;
  264. }
  265. }
  266.  
  267. stock drop_prim(id)
  268. {
  269. new weapons[32], num
  270. get_user_weapons(id, weapons, num)
  271. for (new i = 0; i < num; i++) {
  272. if (Wep_M249 & (1<<weapons[i]))
  273. {
  274. static wname[32]
  275. get_weaponname(weapons[i], wname, sizeof wname - 1)
  276. engclient_cmd(id, "drop", wname)
  277. }
  278. }
  279. }
  280. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  281. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1034\\ f0\\ fs16 \n\\ par }
  282. */