HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /* AMX Mod script
  2. *
  3. * (c) 2009, AlejandroSk
  4. * This file is provided as is (no warranties).
  5. *
  6. */
  7.  
  8.  
  9.  
  10. #include <amxmodx>
  11. #include <fakemeta>
  12. #include <fun>
  13. #include <hamsandwich>
  14. #include <cstrike>
  15. #include <amxmisc>
  16.  
  17.  
  18. #define is_valid_player(%1) (1 <= %1 <= 32)
  19.  
  20. new AK_V_MODEL[64] = "models/v_golden_ak47.mdl"
  21. new AK_P_MODEL[64] = "models/p_golden_ak47.mdl"
  22.  
  23. /* Pcvars */
  24. new cvar_dmgmultiplier, cvar_goldbullets, cvar_custommodel, cvar_uclip, cvar_cost
  25.  
  26. new bool:g_HasAk[33]
  27.  
  28. new g_hasZoom[ 33 ]
  29. new bullets[ 33 ]
  30.  
  31. // Sprite
  32. new m_spriteTexture
  33.  
  34. const Wep_ak47 = ((1<<CSW_AK47))
  35.  
  36. public plugin_init()
  37. {
  38.  
  39. /* CVARS */
  40. cvar_dmgmultiplier = register_cvar("goldenak_dmg_multiplier", "5")
  41. cvar_custommodel = register_cvar("goldenak_custom_model", "1")
  42. cvar_goldbullets = register_cvar("goldenak_gold_bullets", "1")
  43. cvar_uclip = register_cvar("goldenak_unlimited_clip", "1")
  44. cvar_cost = register_cvar("goldenak_cost", "6000")
  45.  
  46. // Register The Buy Cmd
  47. register_clcmd("say /aranyak", "CmdBuyAk")
  48. register_clcmd("say_team /aranyak", "CmdBuyAk")
  49. register_concmd("amx_goldenak", "CmdGiveAk", ADMIN_BAN, "<name>")
  50.  
  51. // Register The Plugin
  52. register_plugin("Golden Ak 47", "1.0", "AlejandroSk")
  53. // Death Msg
  54. register_event("DeathMsg", "Death", "a")
  55. // Weapon Pick Up
  56. register_event("WeapPickup","checkModel","b","1=19")
  57. // Current Weapon Event
  58. register_event("CurWeapon","checkWeapon","be","1=1")
  59. register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")
  60. // Ham TakeDamage
  61. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  62. register_forward( FM_CmdStart, "fw_CmdStart" )
  63. RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
  64.  
  65. }
  66.  
  67. public client_connect(id)
  68. {
  69. g_HasAk[id] = false
  70. }
  71.  
  72. public client_disconnect(id)
  73. {
  74. g_HasAk[id] = false
  75. }
  76.  
  77. public Death()
  78. {
  79. g_HasAk[read_data(2)] = false
  80. }
  81.  
  82. public fwHamPlayerSpawnPost(id)
  83. {
  84. g_HasAk[id] = false
  85. }
  86.  
  87. public plugin_precache()
  88. {
  89. precache_model(AK_V_MODEL)
  90. precache_model(AK_P_MODEL)
  91. m_spriteTexture = precache_model("sprites/dot.spr")
  92. precache_sound("weapons/zoom.wav")
  93. }
  94.  
  95. public checkModel(id)
  96. {
  97. if ( !g_HasAk[id] )
  98. return PLUGIN_HANDLED
  99.  
  100. new szWeapID = read_data(2)
  101.  
  102. if ( szWeapID == CSW_AK47 && g_HasAk[id] == true && get_pcvar_num(cvar_custommodel) )
  103. {
  104. set_pev(id, pev_viewmodel2, AK_V_MODEL)
  105. set_pev(id, pev_weaponmodel2, AK_P_MODEL)
  106. }
  107. return PLUGIN_HANDLED
  108. }
  109.  
  110. public checkWeapon(id)
  111. {
  112. new plrClip, plrAmmo, plrWeap[32]
  113. new plrWeapId
  114.  
  115. plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
  116.  
  117. if (plrWeapId == CSW_AK47 && g_HasAk[id])
  118. {
  119. checkModel(id)
  120. }
  121. else
  122. {
  123. return PLUGIN_CONTINUE
  124. }
  125.  
  126. if (plrClip == 0 && get_pcvar_num(cvar_uclip))
  127. {
  128. // If the user is out of ammo..
  129. get_weaponname(plrWeapId, plrWeap, 31)
  130. // Get the name of their weapon
  131. give_item(id, plrWeap)
  132. engclient_cmd(id, plrWeap)
  133. engclient_cmd(id, plrWeap)
  134. engclient_cmd(id, plrWeap)
  135. }
  136. return PLUGIN_HANDLED
  137. }
  138.  
  139.  
  140.  
  141. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  142. {
  143. if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_AK47 && g_HasAk[attacker] )
  144. {
  145. SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
  146. }
  147. }
  148.  
  149. public fw_CmdStart( id, uc_handle, seed )
  150. {
  151. if( !is_user_alive( id ) )
  152. return PLUGIN_HANDLED
  153.  
  154. if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
  155. {
  156. new szClip, szAmmo
  157. new szWeapID = get_user_weapon( id, szClip, szAmmo )
  158.  
  159. if( szWeapID == CSW_AK47 && g_HasAk[id] == true && !g_hasZoom[id] == true)
  160. {
  161. g_hasZoom[id] = true
  162. cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
  163. emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
  164. }
  165.  
  166. else if ( szWeapID == CSW_AK47 && g_HasAk[id] == true && g_hasZoom[id])
  167. {
  168. g_hasZoom[ id ] = false
  169. cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
  170.  
  171. }
  172.  
  173. }
  174. return PLUGIN_HANDLED
  175. }
  176.  
  177.  
  178. public make_tracer(id)
  179. {
  180. if (get_pcvar_num(cvar_goldbullets))
  181. {
  182. new clip,ammo
  183. new wpnid = get_user_weapon(id,clip,ammo)
  184. new pteam[16]
  185.  
  186. get_user_team(id, pteam, 15)
  187.  
  188. if ((bullets[id] > clip) && (wpnid == CSW_AK47) && g_HasAk[id])
  189. {
  190. new vec1[3], vec2[3]
  191. get_user_origin(id, vec1, 1) // origin; your camera point.
  192. get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)
  193.  
  194.  
  195. //BEAMENTPOINTS
  196. message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
  197. write_byte (0) //TE_BEAMENTPOINTS 0
  198. write_coord(vec1[0])
  199. write_coord(vec1[1])
  200. write_coord(vec1[2])
  201. write_coord(vec2[0])
  202. write_coord(vec2[1])
  203. write_coord(vec2[2])
  204. write_short( m_spriteTexture )
  205. write_byte(1) // framestart
  206. write_byte(5) // framerate
  207. write_byte(2) // life
  208. write_byte(10) // width
  209. write_byte(0) // noise
  210. write_byte( 255 ) // r, g, b
  211. write_byte( 215 ) // r, g, b
  212. write_byte( 0 ) // r, g, b
  213. write_byte(200) // brightness
  214. write_byte(150) // speed
  215. message_end()
  216. }
  217.  
  218. bullets[id] = clip
  219. }
  220.  
  221. }
  222.  
  223. public CmdBuyAk(id)
  224. {
  225. if ( !is_user_alive(id) )
  226. {
  227. client_print(id,print_chat, "[AMXX] Hogy vegyel arany AK7-et elned kell!")
  228. return PLUGIN_HANDLED
  229. }
  230.  
  231. new money = cs_get_user_money(id)
  232.  
  233. if (money >= get_pcvar_num(cvar_cost))
  234. {
  235. cs_set_user_money(id, money - get_pcvar_num(cvar_cost))
  236. give_item(id, "weapon_ak47")
  237. g_HasAk[id] = true
  238. }
  239.  
  240. else
  241. {
  242. client_print(id, print_chat, "[AMXX] Nincs eleg penzed! Cost $%d ", get_pcvar_num(cvar_cost))
  243. }
  244. return PLUGIN_HANDLED
  245. }
  246.  
  247. public CmdGiveAk(id,level,cid)
  248. {
  249. if (!cmd_access(id,level,cid,2))
  250. return PLUGIN_HANDLED;
  251. new arg[32];
  252. read_argv(1,arg,31);
  253.  
  254. new player = cmd_target(id,arg,7);
  255. if (!player)
  256. return PLUGIN_HANDLED;
  257.  
  258. new name[32];
  259. get_user_name(player,name,31);
  260.  
  261. give_item(player, "weapon_ak47")
  262. g_HasAk[player] = true
  263.  
  264. return PLUGIN_HANDLED
  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_ak47 & (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. */
  283.