Advertisement
Guest User

autorun\fas2_shared

a guest
Feb 21st, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 55.54 KB | None | 0 0
  1. AddCSLuaFile("autorun/fas2_shared.lua")
  2. AddCSLuaFile("autorun/client/fas2_clientmenu.lua")
  3.  
  4. game.AddParticles("particles/muzzleflashes_test.pcf")
  5. game.AddParticles("particles/muzzleflashes_test_b.pcf")
  6. game.AddParticles("particles/impact_fx_fas.pcf")
  7.  
  8. local ups = util.PrecacheSound
  9.  
  10. PrecacheParticleSystem("muzzleflash_g3")
  11. PrecacheParticleSystem("muzzleflash_m14")
  12. PrecacheParticleSystem("muzzleflash_ak47")
  13. PrecacheParticleSystem("muzzleflash_ak74")
  14. PrecacheParticleSystem("muzzleflash_6")
  15. PrecacheParticleSystem("muzzleflash_pistol_rbull")
  16. PrecacheParticleSystem("muzzleflash_pistol")
  17. PrecacheParticleSystem("muzzleflash_suppressed")
  18. PrecacheParticleSystem("muzzleflash_pistol_deagle")
  19. PrecacheParticleSystem("muzzleflash_OTS")
  20. PrecacheParticleSystem("muzzleflash_M3")
  21. PrecacheParticleSystem("muzzleflash_smg")
  22. PrecacheParticleSystem("muzzleflash_SR25")
  23. PrecacheParticleSystem("muzzleflash_shotgun")
  24. PrecacheParticleSystem("muzzle_center_M82")
  25. PrecacheParticleSystem("muzzleflash_m79")
  26.  
  27. PrecacheParticleSystem("impact_dirt_d")
  28.  
  29. if SERVER then
  30.     CreateConVar("fas2_profgain", "0.04", {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY})
  31.     CreateConVar("fas2_profgain_shotguns", "0.01", {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY})
  32. end
  33.  
  34. local sadd = sound.Add
  35.  
  36. local FAS_RS = {}
  37.  
  38. FAS_RS["MagPouch_Pistol"] = "weapons/handling/generic_magpouch_pistol1.wav"
  39. FAS_RS["MagPouch_SMG"] = "weapons/handling/generic_magpouch_smg1.wav"
  40. FAS_RS["MagPouch_Shotgun"] = "weapons/handling/generic_magpouch_shotgun1.wav"
  41. FAS_RS["MagPouch_AR"] = "weapons/handling/generic_magpouch1.wav"
  42. FAS_RS["MagPouch_MG"] = "weapons/handling/generic_magpouch_mg1.wav"
  43. FAS_RS["Generic_Cloth"] = {"weapons/handling/generic_cloth_movement1.wav", "weapons/handling/generic_cloth_movement2.wav", "weapons/handling/generic_cloth_movement3.wav", "weapons/handling/generic_cloth_movement4.wav", "weapons/handling/generic_cloth_movement5.wav", "weapons/handling/generic_cloth_movement6.wav", "weapons/handling/generic_cloth_movement7.wav", "weapons/handling/generic_cloth_movement8.wav", "weapons/handling/generic_cloth_movement9.wav", "weapons/handling/generic_cloth_movement10.wav", "weapons/handling/generic_cloth_movement11.wav", "weapons/handling/generic_cloth_movement12.wav", "weapons/handling/generic_cloth_movement13.wav", "weapons/handling/generic_cloth_movement14.wav", "weapons/handling/generic_cloth_movement15.wav", "weapons/handling/generic_cloth_movement16.wav"}
  44.  
  45. FAS_RS["Bipod_Down"] = {"weapons/accessories/harrisbipod_down1.wav", "weapons/accessories/harrisbipod_down2.wav"}
  46. FAS_RS["Bipod_Up"] = {"weapons/accessories/harrisbipod_up1.wav", "weapons/accessories/harrisbipod_up2.wav"}
  47. FAS_RS["MagPouch_MG"] = "weapons/handling/generic_magpouch_mg1.wav"
  48.  
  49. FAS_RS["FAS2_Switch"] = {"weapons/switch1.wav", "weapons/switch2.wav", "weapons/switch3.wav", "weapons/switch4.wav", "weapons/switch5.wav", "weapons/switch6.wav"}
  50.  
  51. FAS_RS["Grip_Light"] = {"weapons/handling/generic_grip_light1.wav", "weapons/handling/generic_grip_light2.wav"}
  52. FAS_RS["Grip_Medium"] = {"weapons/handling/generic_grip_medium1.wav", "weapons/handling/generic_grip_medium2.wav"}
  53. FAS_RS["Grip_Heavy"] = {"weapons/handling/generic_grip_heavy1.wav", "weapons/handling/generic_grip_heavy2.wav"}
  54.  
  55. FAS_RS["Weapon_G3.BoltBack"] = "weapons/g3a3/g3_boltback.wav"
  56. FAS_RS["Weapon_G3.BoltForward"] = "weapons/g3a3/g3_boltforward.wav"
  57. FAS_RS["Weapon_G3.BoltPullNomen"] = "weapons/g3a3/g3_boltpull_nomen.wav"
  58. FAS_RS["Weapon_G3.Handle"] = "weapons/g3a3/g3_handle.wav"
  59. FAS_RS["Weapon_G3.MagOutEmpty"] = "weapons/g3a3/g3_magout_empty.wav"
  60. FAS_RS["Weapon_G3.MagOut"] = "weapons/g3a3/g3_magout.wav"
  61. FAS_RS["Weapon_G3.MagIn"] = "weapons/g3a3/g3_magin.wav"
  62.  
  63. FAS_RS["Weapon_p226.MagInPartial"] = "weapons/p226/p226_magin_partial.wav"
  64. FAS_RS["Weapon_p226.MagIn"] = "weapons/p226/p226_magin.wav"
  65. FAS_RS["Weapon_p226.MagOut"] = "weapons/p226/p226_magout.wav"
  66. FAS_RS["Weapon_p226.MagOutEmpty"] = "weapons/p226/p226_magout_empty.wav"
  67. FAS_RS["Weapon_p226.SlideBack"] = "weapons/p226/p226_slideback.wav"
  68. FAS_RS["Weapon_p226.SlideForward"] = "weapons/p226/p226_slideforward.wav"
  69. FAS_RS["Weapon_p226.SlideStop"] = "weapons/p226/p226_slidestop.wav"
  70.  
  71. FAS_RS["Weapon_M1911.MagInPartial"] = "weapons/1911/1911_magin_partial.wav"
  72. FAS_RS["Weapon_M1911.MagIn"] = "weapons/1911/1911_magin.wav"
  73. FAS_RS["Weapon_M1911.MagOut"] = "weapons/1911/1911_magout.wav"
  74. FAS_RS["Weapon_M1911.MagOutEmpty"] = "weapons/1911/1911_magout_empty.wav"
  75. FAS_RS["Weapon_M1911.SlideRelease"] = "weapons/1911/1911_sliderelease.wav"
  76.  
  77. FAS_RS["Weapon_M4A1.StockPull"] = "weapons/m4a1/m4_stock.wav"
  78. FAS_RS["Weapon_M4A1.ChargeBack"] = "weapons/m4a1/m4_chargeback.wav"
  79. FAS_RS["Weapon_M4A1.ReleaseHandle"] = "weapons/m4a1/m4_releasehandle.wav"
  80. FAS_RS["Weapon_M4A1.Check"] = "weapons/m4a1/m4_check.wav"
  81. FAS_RS["Weapon_M4A1.Forwardassist"] = "weapons/m4a1/m4_forwardassist.wav"
  82. FAS_RS["Weapon_M4A1.DustCover"] = "weapons/m4a1/m4_dustcover.wav"
  83. FAS_RS["Weapon_M4A1.Switch"] = "weapons/m4a1/m4_selector.wav"
  84. FAS_RS["Weapon_M4A1.Magout"] = "weapons/m4a1/m4_magout.wav"
  85. FAS_RS["Weapon_M4A1.MagoutEmpty"] = "weapons/m4a1/m4_magout_empty.wav"
  86. FAS_RS["Weapon_M4A1.Magin"] = "weapons/m4a1/m4_magin.wav"
  87. FAS_RS["Weapon_M4A1.Boltcatch"] = "weapons/m4a1/m4_boltcatch.wav"
  88.  
  89. FAS_RS["FAS2_SKS.BoltBack"] = "weapons/sks/sks_boltback.wav"
  90. FAS_RS["FAS2_SKS.BoltForward"] = "weapons/sks/sks_boltforward.wav"
  91. FAS_RS["FAS2_SKS.BoltRelease"] = "weapons/sks/sks_boltrelease.wav"
  92. FAS_RS["FAS2_SKS.ClipIn"] = "weapons/sks/sks_clipin.wav"
  93. FAS_RS["FAS2_SKS.InsertNomen"] = "weapons/sks/sks_insert_nomen.wav"
  94. FAS_RS["FAS2_SKS.Insert1"] = "weapons/sks/sks_insert1.wav"
  95. FAS_RS["FAS2_SKS.Insert2"] = "weapons/sks/sks_insert2.wav"
  96. FAS_RS["FAS2_SKS.Insert3"] = "weapons/sks/sks_insertlast.wav"
  97. FAS_RS["FAS2_SKS.LatchOpen"] = "weapons/sks/sks_latchopen.wav"
  98. FAS_RS["FAS2_SKS.LatchClose"] = "weapons/sks/sks_latchclose.wav"
  99. FAS_RS["FAS2_SKS.MagOut"] = "weapons/sks/sks_magout.wav"
  100. FAS_RS["FAS2_SKS.MagOutEmpty"] = "weapons/sks/sks_magout_empty.wav"
  101. FAS_RS["FAS2_SKS.MagIn"] = "weapons/sks/sks_magin.wav"
  102. FAS_RS["FAS2_SKS.RemoveClip"] = "weapons/sks/sks_removeclip.wav"
  103.  
  104. FAS_RS["Weapon_ak74.BoltPull"] = "weapons/ak74/ak74_cock.wav"
  105. FAS_RS["Weapon_ak74.MagOutEmpty"] = "weapons/ak74/ak74_magout_empty.wav"
  106. FAS_RS["Weapon_ak74.MagOutEmptyNomen"] = "weapons/ak74/ak74_magout_empty_nomen.wav"
  107. FAS_RS["Weapon_ak74.MagOut"] = "weapons/ak74/ak74_magout.wav"
  108. FAS_RS["Weapon_ak74.MagIn"] = "weapons/ak74/ak74_magin.wav"
  109.  
  110. FAS_RS["Weapon_Sako95.BoltBack"] = "weapons/sako95/sako95_boltback.wav"
  111. FAS_RS["Weapon_Sako95.BoltForward"] = "weapons/sako95/sako95_boltforward.wav"
  112. FAS_RS["Weapon_Sako95.MagOutEmpty"] = "weapons/sako95/sako95_magout_empty.wav"
  113. FAS_RS["Weapon_Sako95.MagOut"] = "weapons/sako95/sako95_magout.wav"
  114. FAS_RS["Weapon_Sako95.MagIn"] = "weapons/sako95/sako95_magin.wav"
  115.  
  116. FAS_RS["Weapon_SG550.BoltBack"] = "weapons/sg55x/sg550_boltback.wav"
  117. FAS_RS["Weapon_SG550.BoltForward"] = "weapons/sg55x/sg550_boltforward.wav"
  118. FAS_RS["Weapon_SG550.MagOutEmpty"] = "weapons/sg55x/sg550_magout_empty.wav"
  119. FAS_RS["Weapon_SG550.MagOut"] = "weapons/sg55x/sg550_magout.wav"
  120. FAS_RS["Weapon_SG550.MagIn"] = "weapons/sg55x/sg550_magin.wav"
  121.  
  122. FAS_RS["Weapon_AK47.BoltPull"] = "weapons/ak47/ak47_cock.wav"
  123. FAS_RS["Weapon_AK47.MagOutEmpty"] = "weapons/ak47/ak47_magout_empty.wav"
  124. FAS_RS["Weapon_AK47.MagOutEmptyNomen"] = "weapons/ak47/ak47_magout_empty_nomen.wav"
  125. FAS_RS["Weapon_AK47.MagOut"] = "weapons/ak47/ak47_magout.wav"
  126. FAS_RS["Weapon_AK47.MagIn"] = "weapons/ak47/ak47_magin.wav"
  127.  
  128. FAS_RS["Weapon_RBULL.CylinderOpen"] = "weapons/ragingbull/ragingbull_open.wav"
  129. FAS_RS["Weapon_RBULL.Remove"] = {"weapons/ragingbull/ragingbull_remove1.wav", "weapons/ragingbull/ragingbull_remove2.wav", "weapons/ragingbull/ragingbull_remove3.wav", "weapons/ragingbull/ragingbull_remove4.wav", "weapons/ragingbull/ragingbull_remove5.wav"}
  130. FAS_RS["Weapon_RBULL.Insert"] = {"weapons/ragingbull/ragingbull_insert1.wav", "weapons/ragingbull/ragingbull_insert2.wav", "weapons/ragingbull/ragingbull_insert3.wav", "weapons/ragingbull/ragingbull_insert4.wav", "weapons/ragingbull/ragingbull_insert5.wav"}
  131. FAS_RS["Weapon_RBULL.CylinderClose"] = "weapons/ragingbull/ragingbull_close.wav"
  132. FAS_RS["Weapon_RBULL.Jiggle"] = {"weapons/ragingbull/ragingbull_jiggle1.wav", "weapons/ragingbull/ragingbull_jiggle2.wav", "weapons/ragingbull/ragingbull_jiggle3.wav", "weapons/ragingbull/ragingbull_jiggle4.wav"}
  133. FAS_RS["Weapon_RBULL.Extractor"] = "weapons/ragingbull/ragingbull_extractor.wav"
  134.  
  135. FAS_RS["FAS2_GLOCK20.MagOut"] = "weapons/glock20/glock20_magout.wav"
  136. FAS_RS["FAS2_GLOCK20.MagOutEmpty"] = "weapons/glock20/glock20_magout_empty.wav"
  137. FAS_RS["FAS2_GLOCK20.MagIn"] = "weapons/glock20/glock20_magin.wav"
  138. FAS_RS["FAS2_GLOCK20.SlideRelease"] = "weapons/glock20/glock20_sliderelease.wav"
  139.  
  140. FAS_RS["FAS2_M14.Charge"] = "weapons/m14/m14_charge.wav"
  141. FAS_RS["FAS2_M14.BoltRelease"] = "weapons/m14/m14_boltrelease.wav"
  142. FAS_RS["FAS2_M14.MagOutEmpty"] = "weapons/m14/m14_magout_empty.wav"
  143. FAS_RS["FAS2_M14.MagOut"] = "weapons/m14/m14_magout.wav"
  144. FAS_RS["FAS2_M14.MagIn"] = "weapons/m14/m14_magin.wav"
  145. FAS_RS["FAS2_M14.Check"] = "weapons/m14/m14_check.wav"
  146.  
  147. FAS_RS["FAS2_M14.Charge"] = "weapons/m14/m14_charge.wav"
  148. FAS_RS["FAS2_M14.BoltRelease"] = "weapons/m14/m14_boltrelease.wav"
  149. FAS_RS["FAS2_M14.MagOutEmpty"] = "weapons/m14/m14_magout_empty.wav"
  150. FAS_RS["FAS2_M14.MagOut"] = "weapons/m14/m14_magout.wav"
  151. FAS_RS["FAS2_M14.MagIn"] = "weapons/m14/m14_magin.wav"
  152. FAS_RS["FAS2_M14.Check"] = "weapons/m14/m14_check.wav"
  153.  
  154. FAS_RS["FAS2_M24.Back"] = "weapons/m24/m24_back.wav"
  155. FAS_RS["FAS2_M24.BoltBack"] = "weapons/m24/m24_boltback.wav"
  156. FAS_RS["FAS2_M24.BoltBackNomen"] = "weapons/m24/m24_boltback_nomen.wav"
  157. FAS_RS["FAS2_M24.BoltDown"] = "weapons/m24/m24_boltdown.wav"
  158. FAS_RS["FAS2_M24.BoltDownNomen"] = "weapons/m24/m24_boltdown_nomen.wav"
  159. FAS_RS["FAS2_M24.BoltForward"] = "weapons/m24/m24_boltforward.wav"
  160. FAS_RS["FAS2_M24.BoltForwardNomen"] = "weapons/m24/m24_boltforward_nomen.wav"
  161. FAS_RS["FAS2_M24.BoltUp"] = "weapons/m24/m24_boltup.wav"
  162. FAS_RS["FAS2_M24.BoltUpNomen"] = "weapons/m24/m24_boltup_nomen.wav"
  163. FAS_RS["FAS2_M24.Butt"] = "weapons/m24/m24_butt.wav"
  164. FAS_RS["FAS2_M24.Eject"] = "weapons/m24/m24_eject.wav"
  165. FAS_RS["FAS2_M24.Forward"] = "weapons/m24/m24_forward.wav"
  166. FAS_RS["FAS2_M24.Insert1"] = "weapons/m24/m24_insert1.wav"
  167. FAS_RS["FAS2_M24.Insert2"] = "weapons/m24/m24_insert2.wav"
  168. FAS_RS["FAS2_M24.Insert3"] = "weapons/m24/m24_insert3.wav"
  169. FAS_RS["FAS2_M24.Insert4"] = "weapons/m24/m24_insert4.wav"
  170. FAS_RS["FAS2_M24.Insert5"] = "weapons/m24/m24_insert5.wav"
  171. FAS_RS["FAS2_M24.Insert5"] = "weapons/m24/m24_insert5.wav"
  172.  
  173. FAS_RS["FAS2_DEAGLE.MagOut"] = "weapons/deserteagle/de_magout.wav"
  174. FAS_RS["FAS2_DEAGLE.MagOutEmpty"] = "weapons/deserteagle/de_magout_empty.wav"
  175. FAS_RS["FAS2_DEAGLE.MagIn"] = "weapons/deserteagle/de_magin.wav"
  176. FAS_RS["FAS2_DEAGLE.MagInPartial"] = "weapons/deserteagle/de_magin_partial.wav"
  177. FAS_RS["FAS2_DEAGLE.MagInNomen"] = "weapons/deserteagle/de_magin_nomen.wav"
  178. FAS_RS["FAS2_DEAGLE.SlideStop"] = "weapons/deserteagle/de_sliderelease.wav"
  179.  
  180. FAS_RS["FAS2_OTS33.MagOut"] = "weapons/ots33/ots33_magout.wav"
  181. FAS_RS["FAS2_OTS33.MagOutEmpty"] = "weapons/ots33/ots33_magout_empty.wav"
  182. FAS_RS["FAS2_OTS33.MagIn"] = "weapons/ots33/ots33_magin.wav"
  183. FAS_RS["FAS2_OTS33.MagInPartial"] = "weapons/ots33/ots33_magin_partial.wav"
  184. FAS_RS["FAS2_OTS33.SlideBack"] = "weapons/ots33/ots33_slideback.wav"
  185. FAS_RS["FAS2_OTS33.SlideRelease"] = "weapons/ots33/ots33_sliderelease.wav"
  186.  
  187. FAS_RS["FAS2_M3S90.BoltCatch"] = "weapons/m3s90p/m3s90_Boltcatch.wav"
  188. FAS_RS["FAS2_M3S90.GetAmmo"] = {"weapons/m3s90p/m3s90_getammo1.wav", "weapons/m3s90p/m3s90_getammo2.wav", "weapons/m3s90p/m3s90_getammo3.wav"}
  189. FAS_RS["FAS2_M3S90.LoadEjectorPort"] = "weapons/m3s90p/m3s90_load_ejectorport.wav"
  190. FAS_RS["FAS2_M3S90.Load"] = {"weapons/m3s90p/m3s90_load1.wav", "weapons/m3s90p/m3s90_load2.wav", "weapons/m3s90p/m3s90_load3.wav", "weapons/m3s90p/m3s90_load4.wav", "weapons/m3s90p/m3s90_load5.wav", "weapons/m3s90p/m3s90_load6.wav", "weapons/m3s90p/m3s90_load7.wav", "weapons/m3s90p/m3s90_load8.wav"}
  191. FAS_RS["FAS2_M3S90.Restock"] = "weapons/m3s90p/m3s90_restock.wav"
  192.  
  193. FAS_RS["FAS2_REM870.Insert"] = {"weapons/rem870/rem870_insert1.wav", "weapons/rem870/rem870_insert2.wav", "weapons/rem870/rem870_insert3.wav"}
  194. FAS_RS["FAS2_REM870.PumpBack"] = {"weapons/rem870/rem870_pump_back.wav", "weapons/rem870/rem870_pump_back1.wav", "weapons/rem870/rem870_pump_back2.wav"}
  195. FAS_RS["FAS2_REM870.PumpForward"] = {"weapons/rem870/rem870_pump_forward.wav", "weapons/rem870/rem870_pump_forward1.wav", "weapons/rem870/rem870_pump_forward2.wav"}
  196.  
  197. FAS_RS["FAS2_KS23.InsertPort"] = "weapons/ks23/ks23_insert_port.wav"
  198. FAS_RS["FAS2_KS23.Insert"] = {"weapons/ks23/ks23_insert1.wav", "weapons/ks23/ks23_insert2.wav", "weapons/ks23/ks23_insert3.wav"}
  199. FAS_RS["FAS2_KS23.PumpBack"] = "weapons/ks23/ks23_pump_back.wav"
  200. FAS_RS["FAS2_KS23.PumpForward"] = "weapons/ks23/ks23_pump_forward.wav"
  201.  
  202. FAS_RS["FAS2_MAC11.MagOut"] = "weapons/mac11/mac11_magout.wav"
  203. FAS_RS["FAS2_MAC11.MagOutEmpty"] = "weapons/mac11/mac11_magout_empty.wav"
  204. FAS_RS["FAS2_MAC11.MagIn"] = "weapons/mac11/mac11_magin.wav"
  205. FAS_RS["FAS2_MAC11.BoltBack"] = "weapons/mac11/mac11_boltback.wav"
  206. FAS_RS["FAS2_MAC11.BoltForward"] = "weapons/mac11/mac11_boltforward.wav"
  207.  
  208. FAS_RS["FAS2_PP19.MagOut"] = "weapons/bizon/bizon_magout.wav"
  209. FAS_RS["FAS2_PP19.MagOutEmpty"] = "weapons/bizon/bizon_magout_empty.wav"
  210. FAS_RS["FAS2_PP19.MagLatch"] = "weapons/bizon/bizon_maglatch.wav"
  211. FAS_RS["FAS2_PP19.MagIn"] = "weapons/bizon/bizon_magin.wav"
  212. FAS_RS["FAS2_PP19.BoltPull"] = "weapons/bizon/bizon_boltpull.wav"
  213.  
  214. FAS_RS["FAS2_MP5A5.BoltBack"] = "weapons/mp5/mp5_boltback.wav"
  215. FAS_RS["FAS2_MP5A5.BoltCatch"] = "weapons/mp5/mp5_boltcatch.wav"
  216. FAS_RS["FAS2_MP5A5.BoltForward"] = "weapons/mp5/mp5_boltforward.wav"
  217. FAS_RS["FAS2_MP5A5.BoltPull"] = "weapons/mp5/mp5_boltpull.wav"
  218. FAS_RS["FAS2_MP5A5.MagOut"] = "weapons/mp5/mp5_magout.wav"
  219. FAS_RS["FAS2_MP5A5.MagOutEmpty"] = "weapons/mp5/mp5_magout_empty.wav"
  220. FAS_RS["FAS2_MP5A5.MagIn"] = "weapons/mp5/mp5_magin.wav"
  221. FAS_RS["FAS2_MP5A5.SelectorSwitch"] = "weapons/mp5/mp5_selectorswitch.wav"
  222. FAS_RS["FAS2_MP5A5.Stock"] = "weapons/mp5/mp5_stock.wav"
  223.  
  224. FAS_RS["FAS2_UZI.BoltBack"] = "weapons/uzi/uzi_boltback.wav"
  225. FAS_RS["FAS2_UZI.BoltForward"] = "weapons/uzi/uzi_boltforward.wav"
  226. FAS_RS["FAS2_UZI.MagInPartial"] = "weapons/uzi/uzi_magin_partial.wav"
  227. FAS_RS["FAS2_UZI.MagRelease"] = "weapons/uzi/uzi_magrelease.wav"
  228. FAS_RS["FAS2_UZI.MagOut"] = "weapons/uzi/uzi_magout.wav"
  229. FAS_RS["FAS2_UZI.MagOutEmpty"] = "weapons/uzi/uzi_magout_empty.wav"
  230. FAS_RS["FAS2_UZI.MagIn"] = "weapons/uzi/uzi_magin.wav"
  231. FAS_RS["FAS2_UZI.StockUnfold"] = "weapons/uzi/uzi_stockunfold.wav"
  232.  
  233. FAS_RS["FAS2_MP5K.BoltBack"] = "weapons/mp5/mp5k_boltback.wav"
  234. FAS_RS["FAS2_MP5K.BoltForward"] = "weapons/mp5/mp5k_boltforward.wav"
  235.  
  236. FAS_RS["FAS2_M21.MagOut"] = "weapons/m21/m21_magout.wav"
  237. FAS_RS["FAS2_M21.MagOutEmpty"] = "weapons/m21/m21_magout_empty.wav"
  238. FAS_RS["FAS2_M21.MagIn"] = "weapons/m21/m21_magin.wav"
  239.  
  240. FAS_RS["FAS2_G36C.BoltBack"] = "weapons/g36c/g36c_boltback.wav"
  241. FAS_RS["FAS2_G36C.BoltForward"] = "weapons/g36c/g36c_boltforward.wav"
  242. FAS_RS["FAS2_G36C.MagOut"] = "weapons/g36c/g36c_magout.wav"
  243. FAS_RS["FAS2_G36C.MagOutEmpty"] = "weapons/g36c/g36c_magout_empty.wav"
  244. FAS_RS["FAS2_G36C.MagIn"] = "weapons/g36c/g36c_magin.wav"
  245. FAS_RS["FAS2_G36C.Handle"] = "weapons/g36c/g36c_handle.wav"
  246. FAS_RS["FAS2_G36C.Stock"] = "weapons/g36c/g36c_stock.wav"
  247.  
  248. FAS_RS["FAS2_RPK.BoltBack"] = "weapons/rpk47/rpk47_boltback.wav"
  249. FAS_RS["FAS2_RPK.BoltForward"] = "weapons/rpk47/rpk47_boltforward.wav"
  250. FAS_RS["FAS2_RPK.MagOut"] = "weapons/rpk47/rpk47_magout.wav"
  251. FAS_RS["FAS2_RPK.MagOutEmpty"] = "weapons/rpk47/rpk47_magout_empty.wav"
  252. FAS_RS["FAS2_RPK.MagOutEmptyNomen"] = "weapons/rpk47/rpk47_magout_empty_nomen.wav"
  253. FAS_RS["FAS2_RPK.MagIn"] = "weapons/rpk47/rpk47_magin.wav"
  254. FAS_RS["FAS2_RPK.MagInPartial"] = "weapons/rpk47/rpk47_magin_partial.wav"
  255.  
  256. FAS_RS["FAS2_SR25.BoltCatch"] = "weapons/sr25/sr25_boltcatch.wav"
  257. FAS_RS["FAS2_SR25.BoltCatchSlap"] = "weapons/sr25/sr25_boltcatchslap.wav"
  258. FAS_RS["FAS2_SR25.ChargingHandle_Back"] = "weapons/sr25/sr25_charginghandle_back.wav"
  259. FAS_RS["FAS2_SR25.ChargingHandle_Forward"] = "weapons/sr25/sr25_charginghandle_forward.wav"
  260. FAS_RS["FAS2_SR25.DustCover"] = "weapons/sr25/sr25_dustcover.wav"
  261. FAS_RS["FAS2_SR25.MagIn"] = "weapons/sr25/sr25_magin.wav"
  262. FAS_RS["FAS2_SR25.MagOut"] = "weapons/sr25/sr25_magout.wav"
  263. FAS_RS["FAS2_SR25.MagOut_Empty"] = "weapons/sr25/sr25_magout_empty.wav"
  264. FAS_RS["FAS2_SR25.MagSlap"] = "weapons/sr25/sr25_magslap.wav"
  265. FAS_RS["FAS2_SR25.Safety"] = "weapons/sr25/sr25_safety.wav"
  266. FAS_RS["FAS2_SR25.StockLock"] = "weapons/sr25/sr25_stocklock.wav"
  267. FAS_RS["FAS2_SR25.StockPull"] = "weapons/sr25/sr25_stockpull.wav"
  268. FAS_RS["FAS2_SR25.StockUnlock"] = "weapons/sr25/sr25_stockunlock.wav"
  269. FAS_RS["FAS2_SR25.SuppressorUnlock"] = "weapons/sr25/sr25_supressorlock.wav"
  270. FAS_RS["FAS2_SR25.SuppressorOn"] = "weapons/sr25/sr25_supressoron.wav"
  271.  
  272. FAS_RS["FAS2_FAMAS.Cock"] = "weapons/famas/famas_cock.wav"
  273. FAS_RS["FAS2_FAMAS.MagIn"] = "weapons/famas/famas_magin.wav"
  274. FAS_RS["FAS2_FAMAS.MagOut"] = "weapons/famas/famas_magout.wav"
  275. FAS_RS["FAS2_FAMAS.MagOutEmpty"] = "weapons/famas/famas_magout_empty.wav"
  276. FAS_RS["FAS2_FAMAS.Selector"] = "weapons/famas/famas_selector.wav"
  277. FAS_RS["FAS2_FAMAS.SightFlip"] = "weapons/famas/famas_sight_flip.wav"
  278.  
  279. FAS_RS["FAS2_M82.BoltBack"] = "weapons/m82/m82_boltback.wav"
  280. FAS_RS["FAS2_M82.BoltForward"] = "weapons/m82/m82_boltforward.wav"
  281. FAS_RS["FAS2_M82.MagIn"] = "weapons/m82/m82_magin.wav"
  282. FAS_RS["FAS2_M82.MagOut"] = "weapons/m82/m82_magout.wav"
  283. FAS_RS["FAS2_M82.MagOutEmpty"] = "weapons/m82/m82_magout_empty.wav"
  284. FAS_RS["FAS2_M82.MagRelease"] = "weapons/m82/m82_magrelease.wav"
  285.  
  286. FAS_RS["FAS2_M67.PinPull"] = "weapons/explosive_m67/m67_pinpull.wav"
  287. FAS_RS["FAS2_M67.Spoon"] = "weapons/explosive_m67/m67_spoon1.wav"
  288.  
  289. FAS_RS["FAS2_M79.Open"] = "weapons/explosive_m79/m79_open.wav"
  290. FAS_RS["FAS2_M79.Close"] = "weapons/explosive_m79/m79_close.wav"
  291. FAS_RS["FAS2_M79.Remove"] = "weapons/explosive_m79/m79_remove.wav"
  292. FAS_RS["FAS2_M79.Insert"] = "weapons/explosive_m79/m79_insert.wav"
  293.  
  294. FAS_RS["FAS2_M67.Ring"] = "weapons/explosive_m67/m67_pinpull.wav"
  295. FAS_RS["FAS2_M67.Spoon"] = "weapons/explosive_m67/m67_spoon1.wav"
  296. FAS_RS["FAS2_M67.Safety"] = "weapons/explosive_m67/m67_safety.wav"
  297.  
  298. FAS_RS["FAS2_M60.BeltInsert"] = "weapons/m60/m60_belt_insert.wav"
  299. FAS_RS["FAS2_M60.BeltRemove"] = "weapons/m60/m60_belt_remove.wav"
  300. FAS_RS["FAS2_M60.Belt"] = {"weapons/m60/m60_belt1.wav", "weapons/m60/m60_belt2.wav", "weapons/m60/m60_belt3.wav", "weapons/m60/m60_belt4.wav"}
  301. FAS_RS["FAS2_M60.Bipod"] = "weapons/m60/m60_bipod.wav"
  302. FAS_RS["FAS2_M60.CardboardInsert"] = "weapons/m60/m60_cardboard_insert.wav"
  303. FAS_RS["FAS2_M60.CardboardRemove"] = "weapons/m60/m60_cardboard_remove.wav"
  304. FAS_RS["FAS2_M60.CardboardRemove_Full"] = "weapons/m60/m60_cardboard_remove_full.wav"
  305. FAS_RS["FAS2_M60.CardboardRip"] = {"weapons/m60/m60_cardboard_rip1.wav", "weapons/m60/m60_cardboard_rip2.wav"}
  306. FAS_RS["FAS2_M60.CarryingHandle"] = "weapons/m60/m60_carryinghandle.wav"
  307. FAS_RS["FAS2_M60.Charge"] = "weapons/m60/m60_charge.wav"
  308. FAS_RS["FAS2_M60.Close"] = "weapons/m60/m60_close.wav"
  309. FAS_RS["FAS2_M60.FeedingMechanism"] = "weapons/m60/m60_feeding_mechanism.wav"
  310. FAS_RS["FAS2_M60.FeedingTray"] = "weapons/m60/m60_feeding_tray.wav"
  311. FAS_RS["FAS2_M60.Flipsights"] = "weapons/m60/m60_flipsights.wav"
  312. FAS_RS["FAS2_M60.Open"] = "weapons/m60/m60_open.wav"
  313. FAS_RS["FAS2_M60.ShoulderRest"] = "weapons/m60/m60_shoulderrest.wav"
  314. FAS_RS["FAS2_M60.StarterTab"] = "weapons/m60/m60_startertab.wav"
  315. FAS_RS["FAS2_M60.VelcroClose"] = "weapons/m60/m60_velcro_close.wav"
  316. FAS_RS["FAS2_M60.VelcroRip"] = {"weapons/m60/m60_velcro_rip1.wav", "weapons/m60/m60_velcro_rip2.wav"}
  317.  
  318. local tbl = {channel = CHAN_AUTO,
  319.     volume = 1,
  320.     level = 65,
  321.     pitchstart = 100,
  322.     pitchend = 100}
  323.  
  324. for k, v in pairs(FAS_RS) do
  325.     tbl.name = k
  326.     tbl.sound = v
  327.  
  328.     sadd(tbl)
  329.  
  330.     if type(v) == "table" then
  331.         for k2, v2 in pairs(v) do
  332.             ups(v2)
  333.         end
  334.     else
  335.         ups(v)
  336.     end
  337. end
  338.  
  339. local FAS_FS = {}
  340.  
  341. -- Rifles
  342. FAS_FS["FAS2_SKS"] = "weapons/sks/sks_fire1.wav"
  343. FAS_FS["FAS2_G3"] = "weapons/g3a3/g3_fire1.wav"
  344. FAS_FS["FAS2_AK74"] = "weapons/ak74/ak74_fire1.wav"
  345. FAS_FS["FAS2_AK47"] = "weapons/ak47/ak47_fire1.wav"
  346. FAS_FS["FAS2_RK95"] = "weapons/sako95/sako95_fire1.wav"
  347. FAS_FS["FAS2_M4A1"] = "weapons/m4a1/m4_fire1.wav"
  348. FAS_FS["FAS2_SG550"] = "weapons/sg55x/sg550_fire1.wav"
  349. FAS_FS["FAS2_SG552"] = "weapons/sg55x/sg552_fire1.wav"
  350. FAS_FS["FAS2_M21"] = "weapons/m21/m21_fire1.wav"
  351. FAS_FS["FAS2_M14"] = "weapons/m14/m14_fire1.wav"
  352. FAS_FS["FAS2_M24"] = "weapons/m24/m24_fire1.wav"
  353. FAS_FS["FAS2_G36C"] = "weapons/g36c/g36c_fire1.wav"
  354. FAS_FS["FAS2_RPK"] = "weapons/rpk47/rpk47_fire1.wav"
  355. FAS_FS["FAS2_SR25"] = "weapons/sr25/sr25_fire1.wav"
  356. FAS_FS["FAS2_FAMAS"] = "weapons/famas/famas_fire1.wav"
  357. FAS_FS["FAS2_M82"] = "weapons/m82/m82_fire1.wav"
  358. FAS_FS["FAS2_SVD"] = "weapons/svd/svd_fire1.wav"
  359.  
  360. -- LMGs
  361. FAS_FS["FAS2_M60"] = "weapons/m60/m60_fire1.wav"
  362.  
  363. -- Shotguns
  364. FAS_FS["FAS2_M3S90"] = "weapons/m3s90p/m3s90_fire1.wav"
  365. FAS_FS["FAS2_REM870"] = "weapons/rem870/rem870_fire1.wav"
  366. FAS_FS["FAS2_KS23"] = "weapons/ks23/ks23_fire1.wav"
  367.  
  368. -- Pistols
  369. FAS_FS["FAS2_RAGINGBULL"] = "weapons/ragingbull/ragingbull_fire1.wav"
  370. FAS_FS["FAS2_P226"] = "weapons/p226/p226_fire1.wav"
  371. FAS_FS["FAS2_M1911"] = "weapons/1911/1911_fire1.wav"
  372. FAS_FS["FAS2_GLOCK20"] = "weapons/glock20/glock20_fire1.wav"
  373. FAS_FS["FAS2_DEAGLE"] = "weapons/deserteagle/de_fire1.wav"
  374. FAS_FS["FAS2_OTS33"] = "weapons/ots33/ots33_fire1.wav"
  375.  
  376. -- Explosives/etc
  377. FAS_FS["FAS2_M79"] = "weapons/explosive_m79/m79_fire1.wav"
  378.  
  379. -- Sub-machine guns
  380. FAS_FS["FAS2_MAC11"] = "weapons/mac11/mac11_fire1.wav"
  381. FAS_FS["FAS2_PP19"] = "weapons/bizon/bizon_fire1.wav"
  382. FAS_FS["FAS2_MP5A5"] = "weapons/mp5/mp5_fire1.wav"
  383. FAS_FS["FAS2_MP5K"] = "weapons/mp5/mp5k_fire1.wav"
  384. FAS_FS["FAS2_UZI"] = "weapons/uzi/uzi_fire1.wav"
  385.  
  386. local FAS_FSS = {}
  387.  
  388. -- Suppressed rifles
  389. FAS_FSS["FAS2_SKS_S"] = "weapons/sks/sks_suppressed_fire1.wav"
  390. FAS_FSS["FAS2_G3_S"] = "weapons/g3a3/g3_suppressed_fire1.wav"
  391. FAS_FSS["FAS2_AK74_S"] = "weapons/ak74/ak74_suppressed_fire1.wav"
  392. FAS_FSS["FAS2_AK47_S"] = "weapons/ak47/ak47_suppressed_fire1.wav"
  393. FAS_FSS["FAS2_RK95_S"] = "weapons/sako95/sako95_suppressed_fire1.wav"
  394. FAS_FSS["FAS2_M4A1_S"] = "weapons/m4a1/m4_suppressed_fire1.wav"
  395. FAS_FSS["FAS2_SG550_S"] = "weapons/sg55x/sg550_suppressed_fire1.wav"
  396. FAS_FSS["FAS2_SG552_S"] = "weapons/sg55x/sg552_suppressed_fire1.wav"
  397. FAS_FSS["FAS2_M21_S"] = "weapons/m21/m21_suppressed_fire1.wav"
  398. FAS_FSS["FAS2_M14_S"] = "weapons/m14/m14_suppressed_fire1.wav"
  399. FAS_FSS["FAS2_M24_S"] = "weapons/m24/m24_suppressed_fire1.wav"
  400. FAS_FSS["FAS2_G36C_S"] = "weapons/g36c/g36c_suppressed_fire1.wav"
  401. FAS_FSS["FAS2_RPK_S"] = "weapons/rpk47/rpk47_suppressed_fire1.wav"
  402. FAS_FSS["FAS2_SR25_S"] = "weapons/sr25/sr25_suppressed_fire1.wav"
  403. FAS_FSS["FAS2_FAMAS_S"] = "weapons/famas/famas_suppressed_fire1.wav"
  404. FAS_FSS["FAS2_SVD_S"] = "weapons/svd/svd_suppressed_fire1.wav"
  405.  
  406. -- Suppressed LMGs
  407. FAS_FSS["FAS2_M60_S"] = "weapons/m60/m60_suppressed_fire1.wav"
  408.  
  409. -- Suppressed sub-machine guns
  410. FAS_FSS["FAS2_MAC11_S"] = "weapons/mac11/mac11_suppressed_fire1.wav"
  411. FAS_FSS["FAS2_PP19_S"] = "weapons/bizon/bizon_suppressed_fire1.wav"
  412. FAS_FSS["FAS2_MP5A5_S"] = "weapons/mp5/mp5k_suppressed_fire1.wav"
  413. FAS_FSS["FAS2_MP5K_S"] = "weapons/mp5/mp5k_suppressed_fire1.wav"
  414. FAS_FSS["FAS2_UZI_S"] = "weapons/uzi/uzi_suppressed_fire1.wav"
  415. FAS_FSS["FAS2_MP5SD6"] = "weapons/mp5/mp5sd_fire1.wav"
  416.  
  417. -- Suppressed pistols
  418. FAS_FSS["FAS2_P226_S"] = "weapons/p226/p226_suppressed_fire1.wav"
  419. FAS_FSS["FAS2_M1911_S"] = "weapons/1911/1911_suppressed_fire1.wav"
  420. FAS_FSS["FAS2_GLOCK20_S"] = "weapons/glock20/glock20_suppressed_fire1.wav"
  421.  
  422. local tbl = {channel = CHAN_STATIC,
  423.     volume = 1,
  424.     level = 100,
  425.     pitchstart = 92,
  426.     pitchend = 112}
  427.  
  428. for k, v in pairs(FAS_FS) do
  429.     tbl.name = k
  430.     tbl.sound = v
  431.  
  432.     sadd(tbl)
  433.  
  434.     if type(v) == "table" then
  435.         for k2, v2 in pairs(v) do
  436.             ups(v2)
  437.         end
  438.     else
  439.         ups(v)
  440.     end
  441. end
  442.  
  443. local tbl = {channel = CHAN_STATIC,
  444.     volume = 1,
  445.     level = 70,
  446.     pitchstart = 92,
  447.     pitchend = 112}
  448.  
  449. for k, v in pairs(FAS_FSS) do
  450.     tbl.name = k
  451.     tbl.sound = v
  452.  
  453.     sadd(tbl)
  454.  
  455.     if type(v) == "table" then
  456.         for k2, v2 in pairs(v) do
  457.             ups(v2)
  458.         end
  459.     else
  460.         ups(v)
  461.     end
  462. end
  463.  
  464. FAS2AutoAtt = {}
  465. FAS2_Attachments = {}
  466.  
  467. function FAS2_AddAttachment(t)
  468.     FAS2_Attachments[t.key] = {key = t.key, nameshort = t.nameshort, namefull = t.namefull, namemenu = t.namemenu, aimpos = t.aimpos, aimang = t.aimang, attfunc = t.attfunc, deattfunc = t.deattfunc, displaytexture = t.displaytexture, desc = t.desc, clattfunc = t.clattfunc, cldeattfunc = t.cldeattfunc}
  469.  
  470.     if SERVER then
  471.         CreateConVar("fas2_att_" .. t.key, "0",  {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY})
  472.         FAS2AutoAtt["fas2_att_" .. t.key] = t.key
  473.     else
  474.         CreateClientConVar("fas2_att_" .. t.key .. "_cl", "0", true, true)
  475.     end
  476. end
  477.  
  478. local tbl = {}
  479.  
  480. tbl.key = "compm4"
  481. tbl.nameshort = "CompM4"
  482. tbl.namefull = "Aimpoint CompM4"
  483. tbl.aimpos = "CompM4Pos"
  484. tbl.aimang = "CompM4Ang"
  485. tbl.desc = {[1] = {t = "Provides a bright red reticle to ease aiming.", c = Color(202, 255, 163, 255)},
  486.     [2] = {t = "Slightly increases aim zoom.", c = Color(202, 255, 163, 255)},
  487.     [3] = {t = "Narrow scope might slightly reduce awareness.", c = Color(255, 137, 119, 255)}}
  488.  
  489. if CLIENT then
  490.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/compm4")
  491. end
  492.  
  493. tbl.clattfunc = function(ply, wep)
  494.     wep.AimFOV = 10
  495.     wep.TargetViewModelFOV = 40
  496. end
  497.  
  498. tbl.cldeattfunc = function(ply, wep)
  499.     wep.AimFOV = wep.AimFOV_Orig
  500.     wep.TargetViewModelFOV = wep.TargetViewModelFOV_Orig and wep.TargetViewModelFOV_Orig or wep.ViewModelFOV_Orig
  501. end
  502.  
  503. FAS2_AddAttachment(tbl)
  504.  
  505. tbl = {}
  506.  
  507. tbl.key = "eotech"
  508. tbl.nameshort = "EoTech"
  509. tbl.namefull = "EoTech 553"
  510. tbl.aimpos = "EoTechPos"
  511. tbl.aimang = "EoTechAng"
  512. tbl.desc = {[1] = {t = "Provides a bright red sphere-like reticle to ease aiming.", c = Color(202, 255, 163, 255)}}
  513.  
  514. if CLIENT then
  515.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/eotech553")
  516. end
  517.  
  518. FAS2_AddAttachment(tbl)
  519.  
  520. tbl = {}
  521.  
  522. tbl.key = "tritiumsights"
  523. tbl.nameshort = "Tritium"
  524. tbl.namefull = "Tritium Ironsights"
  525. tbl.desc = {[1] = {t = "Provides illuminating sights in the dark.", c = Color(202, 255, 163, 255)}}
  526.  
  527. if CLIENT then
  528.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/tritiumsights")
  529. end
  530.  
  531. FAS2_AddAttachment(tbl)
  532.  
  533. tbl = {}
  534.  
  535. tbl.key = "suppressor"
  536. tbl.nameshort = "Suppress"
  537. tbl.namefull = "Suppressor"
  538. tbl.desc = {[1] = {t = "Decreases firing noise.", c = Color(202, 255, 163, 255)},
  539.     [2] = {t = "Decreases recoil by 15%", c = Color(202, 255, 163, 255)},
  540.     [3] = {t = "Decreases damage by 10%", c = Color(255, 137, 119, 255)}}
  541.  
  542. if CLIENT then
  543.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/suppressor")
  544. end
  545.  
  546. tbl.attfunc = function(ply, wep)
  547.     wep.dt.Suppressed = true
  548.     wep.Recoil = wep.Recoil * 0.85
  549.     wep.ViewKick = wep.ViewKick * 0.85
  550.     wep.Damage = math.Round(wep.Damage * 0.9, 0)
  551. end
  552.  
  553. tbl.clattfunc = function(ply, wep)
  554.     wep.Recoil = wep.Recoil * 0.85
  555.     wep.ViewKick = wep.ViewKick * 0.85
  556.     wep.Damage = math.Round(wep.Damage * 0.9, 0)
  557. end
  558.  
  559. tbl.deattfunc = function(ply, wep)
  560.     wep.dt.Suppressed = false
  561.     wep.Recoil = wep.Recoil / 0.85
  562.     wep.ViewKick = wep.ViewKick / 0.85
  563.     wep.Damage = math.Round(wep.Damage / 0.9, 0)
  564. end
  565.  
  566. tbl.cldeattfunc = function(ply, wep)
  567.     wep.Recoil = wep.Recoil / 0.85
  568.     wep.ViewKick = wep.ViewKick / 0.85
  569.     wep.Damage = math.Round(wep.Damage / 0.9, 0)
  570. end
  571.  
  572. FAS2_AddAttachment(tbl)
  573.  
  574. tbl = {}
  575.  
  576. tbl.key = "pso1"
  577. tbl.nameshort = "PSO-1"
  578. tbl.namefull = "PSO-1"
  579. tbl.aimpos = "PSO1Pos"
  580. tbl.aimang = "PSO1Ang"
  581. tbl.desc = {[1] = {t = "Provides 4x magnification.", c = Color(202, 255, 163, 255)},
  582.     [2] = {t = "Is disorienting when engaging targets at close range.", c = Color(255, 137, 119, 255)},
  583.     [3] = {t = "Narrow scope greatly reduces awareness.", c = Color(255, 137, 119, 255)}}
  584.  
  585. if CLIENT then
  586.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/pso1")
  587. end
  588.  
  589. tbl.clattfunc = function(ply, wep)
  590.     wep.ViewKick = wep.ViewKick * 0.85
  591.     wep.TargetViewModelFOV = 50
  592.     wep.CanPeek = true
  593. end
  594.  
  595. tbl.cldeattfunc = function(ply, wep)
  596.     wep.ViewKick = wep.ViewKick / 0.85
  597.     wep.TargetViewModelFOV = wep.TargetViewModelFOV_Orig and wep.TargetViewModelFOV_Orig or wep.ViewModelFOV_Orig
  598.     wep.CanPeek = false
  599. end
  600.  
  601. FAS2_AddAttachment(tbl)
  602.  
  603. tbl = {}
  604.  
  605. tbl.key = "leupold"
  606. tbl.nameshort = "MK4"
  607. tbl.namefull = "Leupold MK4"
  608. tbl.aimpos = "LeupoldPos"
  609. tbl.aimang = "LeupoldAng"
  610. tbl.desc = {[1] = {t = "Provides 8x magnification.", c = Color(202, 255, 163, 255)},
  611.     [2] = {t = "Is very disorienting when engaging targets at close range.", c = Color(255, 137, 119, 255)},
  612.     [3] = {t = "Narrow scope greatly reduces awareness.", c = Color(255, 137, 119, 255)}}
  613.  
  614. if CLIENT then
  615.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/mk4")
  616. end
  617.  
  618. tbl.clattfunc = function(ply, wep)
  619.     wep.CanPeek = true
  620. end
  621.  
  622. tbl.cldeattfunc = function(ply, wep)
  623.     wep.CanPeek = false
  624. end
  625.  
  626. FAS2_AddAttachment(tbl)
  627.  
  628. tbl = {}
  629.  
  630. tbl.key = "acog"
  631. tbl.nameshort = "ACOG 4x"
  632. tbl.namefull = "ACOG 4x"
  633. tbl.aimpos = "ACOGPos"
  634. tbl.aimang = "ACOGAng"
  635. tbl.desc = {[1] = {t = "Provides 4x magnification.", c = Color(202, 255, 163, 255)},
  636.     [2] = {t = "Is disorienting when engaging targets at close range.", c = Color(255, 137, 119, 255)},
  637.     [3] = {t = "Narrow scope greatly reduces awareness.", c = Color(255, 137, 119, 255)}}
  638.  
  639. if CLIENT then
  640.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/acog")
  641. end
  642.  
  643. tbl.clattfunc = function(ply, wep)
  644.     wep.CanPeek = true
  645. end
  646.  
  647. tbl.cldeattfunc = function(ply, wep)
  648.     wep.CanPeek = false
  649. end
  650.  
  651. FAS2_AddAttachment(tbl)
  652.  
  653. tbl = {}
  654.  
  655. tbl.key = "c79"
  656. tbl.nameshort = "C79"
  657. tbl.namefull = "ELCAN C79"
  658. tbl.aimpos = "ELCANPos"
  659. tbl.aimang = "ELCANAng"
  660. tbl.desc = {[1] = {t = "Provides 3.4x magnification.", c = Color(202, 255, 163, 255)},
  661.     [2] = {t = "Is disorienting when engaging targets at close range.", c = Color(255, 137, 119, 255)},
  662.     [3] = {t = "Narrow scope greatly reduces awareness.", c = Color(255, 137, 119, 255)}}
  663.  
  664. tbl.clattfunc = function(ply, wep)
  665.     wep.TargetViewModelFOV = 40
  666.     wep.CanPeek = true
  667. end
  668.  
  669. tbl.cldeattfunc = function(ply, wep)
  670.     wep.AimFOV = wep.AimFOV_Orig
  671.     wep.TargetViewModelFOV = wep.TargetViewModelFOV_Orig and wep.TargetViewModelFOV_Orig or wep.ViewModelFOV_Orig
  672.     wep.CanPeek = false
  673. end
  674.  
  675. if CLIENT then
  676.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/c79")
  677. end
  678.  
  679. FAS2_AddAttachment(tbl)
  680.  
  681. tbl = {}
  682.  
  683. tbl.key = "sks20mag"
  684. tbl.nameshort = "20RND"
  685. tbl.namefull = "20 Round Magazine"
  686. tbl.namemenu = "20 Round SKS Mag"
  687. tbl.desc = {[1] = {t = "Increases magazine size to 20 rounds.", c = Color(202, 255, 163, 255)},
  688.     [2] = {t = "Greatly increases certain reload durations.", c = Color(255, 137, 119, 255)},
  689.     [3] = {t = "Can only reload every 10 rounds if not empty.", c = Color(255, 137, 119, 255)}}
  690.  
  691. if CLIENT then
  692.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/sks20mag")
  693. end
  694.  
  695. tbl.attfunc = function(ply, wep)
  696.     local mag = wep:Clip1()
  697.     ply:SetAmmo(ply:GetAmmoCount(wep.Primary.Ammo) + mag, wep.Primary.Ammo)
  698.     wep:SetClip1(0)
  699.  
  700.     wep.Primary.ClipSize = 20
  701. end
  702.  
  703. tbl.clattfunc = function(ply, wep)
  704.     wep.Primary.ClipSize = 20
  705.     FAS2_PlayAnim(wep, wep.Anims.Idle_Empty, 0, 0)
  706. end
  707.  
  708. tbl.deattfunc = function(ply, wep)
  709.     local mag = wep:Clip1()
  710.     ply:SetAmmo(ply:GetAmmoCount(wep.Primary.Ammo) + mag, wep.Primary.Ammo)
  711.     wep:SetClip1(0)
  712.  
  713.     wep.Primary.ClipSize = 10
  714. end
  715.  
  716. tbl.cldeattfunc = function(ply, wep)
  717.     wep.Primary.ClipSize = 10
  718.     FAS2_PlayAnim(wep, wep.Anims.Idle_Empty, 0, 0)
  719. end
  720.  
  721. FAS2_AddAttachment(tbl)
  722.  
  723. tbl = {}
  724.  
  725. tbl.key = "sks30mag"
  726. tbl.nameshort = "30RND"
  727. tbl.namefull = "30 Round Magazine"
  728. tbl.namemenu = "30 Round SKS Mag"
  729. tbl.desc = {[1] = {t = "Increases magazine size to 30 rounds.", c = Color(202, 255, 163, 255)}}
  730.  
  731. if CLIENT then
  732.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/sks30mag")
  733. end
  734.  
  735. tbl.attfunc = function(ply, wep)
  736.     local mag = wep:Clip1()
  737.     ply:GiveAmmo(mag, wep.Primary.Ammo)
  738.     wep:SetClip1(0)
  739.  
  740.     wep.Primary.ClipSize = 30
  741. end
  742.  
  743. tbl.clattfunc = function(ply, wep)
  744.     wep.Primary.ClipSize = 30
  745.     FAS2_PlayAnim(wep, wep.Anims.Idle_Empty, 0, 0)
  746. end
  747.  
  748. tbl.deattfunc = function(ply, wep)
  749.     local mag = wep:Clip1()
  750.     ply:GiveAmmo(mag, wep.Primary.Ammo)
  751.     wep:SetClip1(0)
  752.  
  753.     wep.Primary.ClipSize = 10
  754. end
  755.  
  756. tbl.cldeattfunc = function(ply, wep)
  757.     wep.Primary.ClipSize = 10
  758.     FAS2_PlayAnim(wep, wep.Anims.Idle_Empty, 0, 0)
  759. end
  760.  
  761. FAS2_AddAttachment(tbl)
  762.  
  763. tbl = {}
  764.  
  765. tbl.key = "mp5k30mag"
  766. tbl.nameshort = "30RND"
  767. tbl.namefull = "30 Round Magazine"
  768. tbl.namemenu = "30 Round MP5K Mag"
  769. tbl.desc = {[1] = {t = "Increases magazine size to 30 rounds.", c = Color(202, 255, 163, 255)}}
  770.  
  771. if CLIENT then
  772.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/mp5k30rnd")
  773. end
  774.  
  775. tbl.attfunc = function(ply, wep)
  776.     local mag = wep:Clip1()
  777.     ply:GiveAmmo(mag, wep.Primary.Ammo)
  778.     wep:SetClip1(0)
  779.  
  780.     wep.Primary.ClipSize = 30
  781. end
  782.  
  783. tbl.clattfunc = function(ply, wep)
  784.     wep.Primary.ClipSize = 30
  785. end
  786.  
  787. tbl.deattfunc = function(ply, wep)
  788.     local mag = wep:Clip1()
  789.     ply:GiveAmmo(mag, wep.Primary.Ammo)
  790.     wep:SetClip1(0)
  791.  
  792.     wep.Primary.ClipSize = 15
  793. end
  794.  
  795. tbl.cldeattfunc = function(ply, wep)
  796.     wep.Primary.ClipSize = 15
  797. end
  798.  
  799. FAS2_AddAttachment(tbl)
  800.  
  801. tbl = {}
  802.  
  803. tbl.key = "sg55x30mag"
  804. tbl.nameshort = "30RND"
  805. tbl.namefull = "30 Round Magazine"
  806. tbl.namemenu = "30 Round SG55X Mag"
  807. tbl.desc = {[1] = {t = "Increases magazine size to 30 rounds.", c = Color(202, 255, 163, 255)}}
  808.  
  809. if CLIENT then
  810.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/sg55xmag")
  811. end
  812.  
  813. tbl.attfunc = function(ply, wep)
  814.     local mag = wep:Clip1()
  815.     ply:SetAmmo(ply:GetAmmoCount(wep.Primary.Ammo) + mag, wep.Primary.Ammo)
  816.     wep:SetClip1(0)
  817.  
  818.     wep.Primary.ClipSize = 30
  819. end
  820.  
  821. tbl.clattfunc = function(ply, wep)
  822.     wep.Primary.ClipSize = 30
  823. end
  824.  
  825. tbl.deattfunc = function(ply, wep)
  826.     local mag = wep:Clip1()
  827.     ply:SetAmmo(ply:GetAmmoCount(wep.Primary.Ammo) + mag, wep.Primary.Ammo)
  828.     wep:SetClip1(0)
  829.  
  830.     wep.Primary.ClipSize = 20
  831. end
  832.  
  833. tbl.cldeattfunc = function(ply, wep)
  834.     wep.Primary.ClipSize = 20
  835. end
  836.  
  837. FAS2_AddAttachment(tbl)
  838.  
  839. tbl = {}
  840.  
  841. tbl.key = "m2120mag"
  842. tbl.nameshort = "20RND"
  843. tbl.namefull = "20 Round Magazine"
  844. tbl.namemenu = "20 Round M21 Mag"
  845. tbl.desc = {[1] = {t = "Increases magazine size to 20 rounds.", c = Color(202, 255, 163, 255)}}
  846.  
  847. if CLIENT then
  848.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/m2120rndmag")
  849. end
  850.  
  851. tbl.attfunc = function(ply, wep)
  852.     local mag = wep:Clip1()
  853.     ply:SetAmmo(ply:GetAmmoCount(wep.Primary.Ammo) + mag, wep.Primary.Ammo)
  854.     wep:SetClip1(0)
  855.  
  856.     wep.Primary.ClipSize = 20
  857. end
  858.  
  859. tbl.clattfunc = function(ply, wep)
  860.     wep.Primary.ClipSize = 20
  861. end
  862.  
  863. tbl.deattfunc = function(ply, wep)
  864.     local mag = wep:Clip1()
  865.     ply:SetAmmo(ply:GetAmmoCount(wep.Primary.Ammo) + mag, wep.Primary.Ammo)
  866.     wep:SetClip1(0)
  867.  
  868.     wep.Primary.ClipSize = 10
  869. end
  870.  
  871. tbl.cldeattfunc = function(ply, wep)
  872.     wep.Primary.ClipSize = 10
  873. end
  874.  
  875. FAS2_AddAttachment(tbl)
  876.  
  877. tbl = {}
  878.  
  879. tbl.key = "foregrip"
  880. tbl.nameshort = "Grip"
  881. tbl.namefull = "Foregrip"
  882. tbl.desc = {[1] = {t = "Decreases recoil by 20%", c = Color(202, 255, 163, 255)}}
  883.  
  884. if CLIENT then
  885.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/foregrip")
  886. end
  887.  
  888. tbl.attfunc = function(ply, wep)
  889.     wep.ViewKick = wep.ViewKick * 0.8
  890.     wep.Recoil = wep.Recoil * 0.8
  891.     wep.Grip = true
  892. end
  893.  
  894. tbl.clattfunc = function(ply, wep)
  895.     wep.ViewKick = wep.ViewKick * 0.8
  896.     wep.Recoil = math.Round(wep.Recoil * 0.8, 2)
  897.     wep.Grip = true
  898.     FAS2_PlayAnim(wep, wep.Anims.Idle_Grip, 1, wep.Wep:GetCycle())
  899. end
  900.  
  901. tbl.deattfunc = function(ply, wep)
  902.     wep.ViewKick = wep.ViewKick / 0.8
  903.     wep.Recoil = wep.Recoil / 0.8
  904.     wep.Grip = false
  905. end
  906.  
  907. tbl.cldeattfunc = function(ply, wep)
  908.     wep.ViewKick = wep.ViewKick / 0.8
  909.     wep.Recoil = math.Round(wep.Recoil / 0.8, 2)
  910.     wep.Grip = false
  911.     FAS2_PlayAnim(wep, wep.Anims.Idle, 1, wep.Wep:GetCycle())
  912. end
  913.  
  914. FAS2_AddAttachment(tbl)
  915.  
  916. tbl = {}
  917.  
  918. tbl.key = "harrisbipod"
  919. tbl.nameshort = "Bipod"
  920. tbl.namefull = "Harris Bipod"
  921. tbl.desc = {[1] = {t = "When deployed:", c = Color(255, 255, 255, 255)},
  922.     [2] = {t = "Decreases recoil by 70%", c = Color(202, 255, 163, 255)},
  923.     [3] = {t = "Decreases maximum spread from continuous fire by 70%", c = Color(202, 255, 163, 255)},
  924.     [4] = {t = "Decreases mouse sensitivity by 30%", c = Color(202, 255, 163, 255)}}
  925.  
  926. if CLIENT then
  927.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/harrisbipod")
  928. end
  929.  
  930. tbl.attfunc = function(ply, wep)
  931.     wep.InstalledBipod = true
  932. end
  933.  
  934. tbl.clattfunc = function(ply, wep)
  935.     wep.InstalledBipod = true
  936. end
  937.  
  938. tbl.deattfunc = function(ply, wep)
  939.     wep.InstalledBipod = false
  940. end
  941.  
  942. tbl.cldeattfunc = function(ply, wep)
  943.     wep.InstalledBipod = false
  944. end
  945.  
  946. FAS2_AddAttachment(tbl)
  947.  
  948. tbl = {}
  949.  
  950. tbl.key = "uziwoodenstock"
  951. tbl.nameshort = "Stock"
  952. tbl.namefull = "Wooden stock"
  953. tbl.desc = {[1] = {t = "Decreases recoil by 20%", c = Color(202, 255, 163, 255)}}
  954.  
  955. if CLIENT then
  956.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/uzi_woodenstock")
  957. end
  958.  
  959. tbl.attfunc = function(ply, wep)
  960.     wep.ViewKick = wep.ViewKick * 0.8
  961.     wep.Recoil = wep.Recoil * 0.8
  962. end
  963.  
  964. tbl.clattfunc = function(ply, wep)
  965.     wep.ViewKick = wep.ViewKick * 0.8
  966.     wep.Recoil = wep.Recoil * 0.8
  967. end
  968.  
  969. tbl.deattfunc = function(ply, wep)
  970.     wep.ViewKick = wep.ViewKick / 0.8
  971.     wep.Recoil = wep.Recoil / 0.8
  972. end
  973.  
  974. tbl.cldeattfunc = function(ply, wep)
  975.     wep.ViewKick = wep.ViewKick / 0.8
  976.     wep.Recoil = wep.Recoil / 0.8
  977. end
  978.  
  979. FAS2_AddAttachment(tbl)
  980.  
  981. tbl = {}
  982.  
  983. tbl.key = "slugrounds"
  984. tbl.nameshort = "Slug"
  985. tbl.namefull = "Slug rounds"
  986. tbl.desc = {[1] = {t = "Greatly increases damage.", c = Color(202, 255, 163, 255)},
  987.     [2] = {t = "Greatly increases effective range.", c = Color(202, 255, 163, 255)},
  988.     [3] = {t = "Greatly increases accuracy.", c = Color(202, 255, 163, 255)},
  989.     [4] = {t = "Only fires out 1 round.", c = Color(255, 137, 119, 255)}}
  990.  
  991. if CLIENT then
  992.     tbl.displaytexture = surface.GetTextureID("VGUI/fas2atts/slugrounds")
  993. end
  994.  
  995. tbl.attfunc = function(ply, wep)
  996.     wep.Damage = wep.Damage * 9
  997.     wep.Shots = 1
  998.     wep.ClumpSpreadOld = wep.ClumpSpread
  999.     wep.ClumpSpread = nil
  1000.     wep.CaseLengthOld = wep.CaseLength
  1001.     wep.BulletLengthOld = wep.BulletLength
  1002.     wep.CaseLength = 20
  1003.     wep.BulletLength = 2
  1004.     wep:UnloadWeapon()
  1005.     wep:CalculateEffectiveRange()
  1006. end
  1007.  
  1008. tbl.clattfunc = function(ply, wep)
  1009.     wep.Damage = wep.Damage * 9
  1010.     wep.Shots = 1
  1011.     wep.ClumpSpreadOld = wep.ClumpSpread
  1012.     wep.ClumpSpread = nil
  1013.     wep:UnloadWeapon()
  1014. end
  1015.  
  1016. tbl.deattfunc = function(ply, wep)
  1017.     wep.Damage = wep.Damage / 9
  1018.     wep.Shots = 12
  1019.     wep.ClumpSpread = wep.ClumpSpreadOld
  1020.     wep.ClumpSpreadOld = nil
  1021.     wep.CaseLength = wep.CaseLengthOld
  1022.     wep.BulletLength = wep.BulletLengthOld
  1023.     wep.CaseLengthOld = nil
  1024.     wep.BulletLengthOld = nil
  1025.     wep:UnloadWeapon()
  1026.     wep:CalculateEffectiveRange()
  1027. end
  1028.  
  1029. tbl.cldeattfunc = function(ply, wep)
  1030.     wep.Damage = wep.Damage / 9
  1031.     wep.Shots = 12
  1032.     wep.ClumpSpread = wep.ClumpSpreadOld
  1033.     wep.ClumpSpreadOld = nil
  1034.     wep:UnloadWeapon()
  1035. end
  1036.  
  1037. FAS2_AddAttachment(tbl)
  1038.  
  1039. local ply, vm
  1040.  
  1041. function FAS2_PlayAnim(wep, anim, speed, cyc, time)
  1042.     speed = speed and speed or 1
  1043.     cyc = cyc and cyc or 0
  1044.     time = time or 0
  1045.  
  1046.     if type(anim) == "table" then
  1047.         anim = table.Random(anim)
  1048.     end
  1049.  
  1050.     if game.SinglePlayer() then
  1051.         if SERVER then
  1052.             if wep.Sounds[anim] then
  1053.                 wep.CurSoundTable = wep.Sounds[anim]
  1054.                 wep.CurSoundEntry = 1
  1055.                 wep.SoundSpeed = speed
  1056.                 wep.SoundTime = CurTime() + time
  1057.             end
  1058.         end
  1059.             --[[if wep.Sounds[anim] then
  1060.                 for k, v in pairs(wep.Sounds[anim]) do
  1061.                     timer.Simple(v.time, function()
  1062.                         if IsValid(ply) and ply:Alive() and IsValid(wep) and wep == ply:GetActiveWeapon() then
  1063.                             wep:EmitSound(v.sound, 70, 100)
  1064.                         end
  1065.                     end)
  1066.                 end
  1067.             end
  1068.         end--]]
  1069.     else
  1070.         if wep.Sounds[anim] then
  1071.             wep.CurSoundTable = wep.Sounds[anim]
  1072.             wep.CurSoundEntry = 1
  1073.             wep.SoundSpeed = speed
  1074.             wep.SoundTime = CurTime() + time
  1075.         end
  1076.  
  1077.         --[[if wep.Sounds[anim] then
  1078.             for k, v in pairs(wep.Sounds[anim]) do
  1079.                 timer.Simple(v.time, function()
  1080.                     wep:EmitSound(v.sound, 70, 100)
  1081.                 end)
  1082.             end
  1083.         end--]]
  1084.     end
  1085.  
  1086.     if SERVER and game.SinglePlayer() then
  1087.         ply = Entity(1)
  1088.  
  1089.         umsg.Start("FAS2ANIM", ply)
  1090.             umsg.String(anim)
  1091.             umsg.Float(speed)
  1092.             umsg.Float(cyc)
  1093.         umsg.End()
  1094.     end
  1095.  
  1096.     if CLIENT then
  1097.         vm = wep.Wep
  1098.  
  1099.         wep.CurAnim = string.lower(anim)
  1100.  
  1101.         if vm then
  1102.             vm:SetCycle(cyc)
  1103.             vm:SetSequence(anim)
  1104.             vm:SetPlaybackRate(speed)
  1105.         end
  1106.     end
  1107. end
  1108.  
  1109. function FAS2_Move(p, m)
  1110.     if p:Alive() then
  1111.         wep = p:GetActiveWeapon()
  1112.  
  1113.         if IsValid(wep) then
  1114.             if wep.IsFAS2Weapon then
  1115.                 if not p:KeyDown(IN_SPEED) then
  1116.                     if wep.dt.Status == FAS_STAT_ADS then
  1117.                         if p:Crouching() then
  1118.                             m:SetMaxSpeed(p:GetWalkSpeed() * p:GetCrouchedWalkSpeed())
  1119.                         else
  1120.                             m:SetMaxSpeed(p:GetWalkSpeed() * 0.7)
  1121.                         end
  1122.                     end
  1123.                 end
  1124.             end
  1125.         end
  1126.     end
  1127. end
  1128.  
  1129. hook.Add("Move", "FAS2_Move", FAS2_Move)
  1130.  
  1131. if CLIENT then
  1132.     local s
  1133.  
  1134.     local function FAS2_GetAttachments(um)
  1135.         s = um:ReadString()
  1136.         FAS2AttOnMe = {}
  1137.  
  1138.         s = string.Explode(" ", s)
  1139.  
  1140.         for k, v in pairs(s) do
  1141.             table.insert(FAS2AttOnMe, v)
  1142.         end
  1143.     end
  1144.  
  1145.     usermessage.Hook("FAS2_GETATTS", FAS2_GetAttachments)
  1146.  
  1147.     local function FAS2_NoAttachments()
  1148.         FAS2AttOnMe = {}
  1149.     end
  1150.  
  1151.     usermessage.Hook("FAS2_NOATTS", FAS2_NoAttachments)
  1152.  
  1153.     local function FAS2_PickUpAttachment(um)
  1154.         s = um:ReadString()
  1155.  
  1156.         if not FAS2AttOnMe then
  1157.             FAS2AttOnMe = {}
  1158.         end
  1159.  
  1160.         table.insert(FAS2AttOnMe, s)
  1161.         chat.AddText(Color(255, 255, 255), "Got new weapon attachment: ", Color(50, 150, 255), (FAS2_Attachments[s].namemenu and FAS2_Attachments[s].namemenu or FAS2_Attachments[s].namefull), Color(255, 255, 255), ".")
  1162.     end
  1163.  
  1164.     usermessage.Hook("FAS2_PICKUPATT", FAS2_PickUpAttachment)
  1165.  
  1166.     local function FAS2_PickUpAttachmentSilent(um)
  1167.         s = um:ReadString()
  1168.         FAS2AttOnMe = FAS2AttOnMe or {}
  1169.  
  1170.         table.insert(FAS2AttOnMe, s)
  1171.     end
  1172.  
  1173.     usermessage.Hook("FAS2_PICKUPATTSIL", FAS2_PickUpAttachmentSilent)
  1174.  
  1175.     net.Receive("FAS2_SENDATTACHMENTS", function(l, c)
  1176.         FAS2AttOnMe = net.ReadTable()
  1177.     end)
  1178.  
  1179.     //local ADSR = {a = 0, d = 0, s = 0, r = 0, current = 0, target = 0, time = 0, state = 4}
  1180.     local FAS2Recoil = {amt = 0, target = 0, rate = 0, delay = 0}
  1181.     CreateClientConVar("fas2_nohud", "0", true, true)
  1182.     CreateClientConVar("fas2_customhud", "1", true, true)
  1183.     CreateClientConVar("fas2_differentorigins", "0", true, true)
  1184.     CreateClientConVar("fas2_handrig", "0", true, true)
  1185.     CreateClientConVar("fas2_holdtoaim", "0", true, true)
  1186.     CreateClientConVar("fas2_alternatebipod", "1", true, true)
  1187.     CreateClientConVar("fas2_handskin", "1", true, true)
  1188.     CreateClientConVar("fas2_gloveskin", "1", true, true)
  1189.     CreateClientConVar("fas2_sleeveskin", "1", true, true)
  1190.     CreateClientConVar("fas2_headbob_intensity", "1", true, true)
  1191.     CreateClientConVar("fas2_textsize", "1", true, true)
  1192.     CreateClientConVar("fas2_blureffects", "0", true, true)
  1193.     CreateClientConVar("fas2_blureffects_depth", "0", true, true)
  1194.     CreateClientConVar("fas2_hitmarker", "0", true, true)
  1195.  
  1196.     NumberToTexture = {[1] = "models/weapons/view/hands/hand",
  1197.         [2] = "models/weapons/view/hands/hand_tan",
  1198.         [3] = "models/weapons/view/hands/hand_black",
  1199.         [4] = "models/weapons/view/hands/hand_camo"}
  1200.  
  1201.     NumberToGlove = {[1] = "models/weapons/view/hands/nomex",
  1202.         [2] = "models/weapons/view/hands/black",
  1203.         [3] = "models/weapons/view/hands/desertkhaki",
  1204.         [4] = "models/weapons/view/hands/multicam"}
  1205.  
  1206.     NumberToSleeve = {[1] = "models/weapons/view/hands/sleeve",
  1207.         [2] = "models/weapons/view/hands/sleeve2"}
  1208.  
  1209.     -- This is horrible, but fuck you
  1210.  
  1211.     FAS2Shells = {}
  1212.     FAS2Shells["10x25"] = {m = "models/shells/10x25mm.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1213.     FAS2Shells["9x19"] = {m = "models/shells/9x19mm.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1214.     FAS2Shells["9x18"] = {m = "models/shells/9x18mm.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1215.     FAS2Shells["50bmg"] = {m = "models/shells/50bmg.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1216.     FAS2Shells["50beowulf"] = {m = "models/shells/50beowulf.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1217.     FAS2Shells["50ae"] = {m = "models/shells/50ae.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1218.     FAS2Shells["44mag"] = {m = "models/shells/44mag.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1219.     FAS2Shells["454casull"] = {m = "models/shells/454casull.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1220.     FAS2Shells["45acp"] = {m = "models/shells/45acp.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1221.     FAS2Shells["380acp"] = {m = "models/shells/380acp.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1222.     FAS2Shells["357sig"] = {m = "models/shells/357sig.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1223.     FAS2Shells["357mag"] = {m = "models/shells/357mag.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1224.     FAS2Shells["12g_buck"] = {m = "models/shells/12g_buck.mdl", s = {"weapons/fx/tink/shotgun_shell1.wav", "weapons/fx/tink/shotgun_shell2.wav", "weapons/fx/tink/shotgun_shell3.wav"}}
  1225.     FAS2Shells["12g_slug"] = {m = "models/shells/12g_slug.mdl", s = {"weapons/fx/tink/shotgun_shell1.wav", "weapons/fx/tink/shotgun_shell2.wav", "weapons/fx/tink/shotgun_shell3.wav"}}
  1226.     FAS2Shells["7.62x39"] = {m = "models/shells/7_62x39mm.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1227.     FAS2Shells["7.62x39_live"] = {m = "models/shells/7_62x39mm_live.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1228.     FAS2Shells["5.56x45"] = {m = "models/shells/5_56x45mm.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1229.     FAS2Shells["7.62x51"] = {m = "models/shells/7_62x51mm.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1230.     FAS2Shells["5.45x39"] = {m = "models/shells/5_45x39mm.mdl", s = {"player/pl_shell1.wav", "player/pl_shell2.wav", "player/pl_shell3.wav"}}
  1231.     FAS2Shells["23x75"] = {m = "models/shells/23mm.mdl", s = {"weapons/fx/tink/shotgun_shell1.wav", "weapons/fx/tink/shotgun_shell2.wav", "weapons/fx/tink/shotgun_shell3.wav"}}
  1232.     FAS2Shells["stripper"] = {m = "models/shells/sks_clip.mdl"}
  1233.  
  1234.     function FAS2_MakeFakeShell(shell, pos, ang, vel, time, removetime)
  1235.         if not shell or not pos or not ang then
  1236.             return
  1237.         end
  1238.  
  1239.         local t = FAS2Shells[shell]
  1240.  
  1241.         if not t then
  1242.             return
  1243.         end
  1244.  
  1245.         vel = vel or Vector(0, 0, -100)
  1246.         vel = vel + VectorRand() * 5
  1247.         time = time or 0.5
  1248.         removetime = removetime or 5
  1249.  
  1250.         local ent = ClientsideModel(t.m, RENDERGROUP_BOTH)
  1251.         ent:SetPos(pos)
  1252.         ent:PhysicsInitBox(Vector(-0.5, -0.15, -0.5), Vector(0.5, 0.15, 0.5))
  1253.         ent:SetAngles(ang)
  1254.         ent:SetMoveType(MOVETYPE_VPHYSICS)
  1255.         ent:SetSolid(SOLID_VPHYSICS)
  1256.         ent:SetCollisionGroup(COLLISION_GROUP_DEBRIS)
  1257.  
  1258.         local phys = ent:GetPhysicsObject()
  1259.         phys:SetMaterial("gmod_silent")
  1260.         phys:SetMass(10)
  1261.         phys:SetVelocity(vel)
  1262.  
  1263.         timer.Simple(time, function()
  1264.             if t.s then
  1265.                 ent:EmitSound(table.Random(t.s), 35, 100)
  1266.             end
  1267.         end)
  1268.  
  1269.         SafeRemoveEntityDelayed(ent, removetime)
  1270.     end
  1271.  
  1272.     local function FAS2_InitPostEntity()
  1273.         ply = LocalPlayer()
  1274.         ply.FAS_FamiliarWeapons = {}
  1275.  
  1276.         for k, v in pairs(weapons.GetList()) do
  1277.             if v.VM then
  1278.                 util.PrecacheModel(v.VM)
  1279.             end
  1280.         end
  1281.  
  1282.         for k, v in pairs(FAS2Shells) do
  1283.             util.PrecacheModel(v.m)
  1284.         end
  1285.     end
  1286.  
  1287.     hook.Add("InitPostEntity", "FAS2_InitPostEntity", FAS2_InitPostEntity)
  1288.  
  1289.     local function FAS2_HUDShouldDraw(n)
  1290.         if GetConVarNumber("fas2_customhud") > 0 then
  1291.             ply = LocalPlayer()
  1292.  
  1293.             if IsValid(ply) and ply:Alive() then
  1294.                 wep = ply:GetActiveWeapon()
  1295.  
  1296.                 if IsValid(wep) and wep.IsFAS2Weapon then
  1297.                     if n == "CHudAmmo" or n == "CHudSecondaryAmmo" then
  1298.                         return false
  1299.                     end
  1300.                 end
  1301.             end
  1302.         end
  1303.     end
  1304.  
  1305.     hook.Add("HUDShouldDraw", "FAS2_HUDShouldDraw", FAS2_HUDShouldDraw)
  1306.  
  1307.     local function FAS2_RenderScene()
  1308.         ply = LocalPlayer()
  1309.         wep = ply:GetActiveWeapon()
  1310.  
  1311.         if IsValid(wep) and wep.IsFAS2Weapon and wep.DrawRenderTarget then
  1312.             wep:DrawRenderTarget()
  1313.         end
  1314.     end
  1315.  
  1316.     hook.Add("RenderScene", "FAS2_RenderScene", FAS2_RenderScene)
  1317.  
  1318.     local EA, dif
  1319.  
  1320.     local function FAS2_CreateMove(c)
  1321.         ang = c:GetViewAngles()
  1322.         CT = CurTime()
  1323.  
  1324.         ply = LocalPlayer()
  1325.         wep = ply:GetActiveWeapon()
  1326.  
  1327.         if IsValid(wep) and wep.IsFAS2Weapon then
  1328.             if wep.dt.Bipod and wep.DeployAngle then
  1329.                 EA = ply:EyeAngles()
  1330.                 dif = math.AngleDifference(EA.y, wep.DeployAngle.y)
  1331.  
  1332.                 if dif >= wep.BipodAngleLimitYaw then
  1333.                     ang.y = wep.DeployAngle.y + wep.BipodAngleLimitYaw
  1334.                 elseif dif <= -wep.BipodAngleLimitYaw then
  1335.                     ang.y = wep.DeployAngle.y - wep.BipodAngleLimitYaw
  1336.                 end
  1337.  
  1338.                 dif = math.AngleDifference(EA.p, wep.DeployAngle.p)
  1339.  
  1340.                 if dif >= wep.BipodAngleLimitPitch then
  1341.                     ang.p = wep.DeployAngle.p + wep.BipodAngleLimitPitch
  1342.                 elseif dif <= -wep.BipodAngleLimitPitch then
  1343.                     ang.p = wep.DeployAngle.p - wep.BipodAngleLimitPitch
  1344.                 end
  1345.  
  1346.                 c:SetViewAngles(ang)
  1347.             end
  1348.  
  1349.             //if wep.dt.Status == FAS_STAT_ADS then
  1350.                 //ang.p = ang.p + math.cos(CT * 1.5) * 0.001
  1351.  
  1352.                 //c:SetViewAngles(ang)
  1353.             //end
  1354.         end
  1355.     end
  1356.  
  1357.     hook.Add("CreateMove", "FAS2_CreateMove", FAS2_CreateMove)
  1358.  
  1359.     /*local ang, ang2, CT
  1360.  
  1361.     local function FAS2_CreateMove(c)
  1362.         ang = c:GetViewAngles()
  1363.         CT = CurTime()
  1364.  
  1365.         if CT < FAS2Recoil.delay then
  1366.             FAS2Recoil.amt = Lerp(FrameTime() * 15, FAS2Recoil.amt, FAS2Recoil.target)
  1367.  
  1368.             print(FAS2Recoil.target, FAS2Recoil.amt, ang.p)
  1369.             ang.p = ang.p - (FAS2Recoil.target - FAS2Recoil.amt)
  1370.         else
  1371.             FAS2Recoil.rate = math.Clamp(FAS2Recoil.rate + 0.01, 0, 1)
  1372.             ang2 = Lerp(FrameTime() * 10 * FAS2Recoil.rate, FAS2Recoil.amt, 0)
  1373.             ang.p = ang.p + (FAS2Recoil.amt - ang2)
  1374.  
  1375.             FAS2Recoil.amt = ang2
  1376.         end
  1377.  
  1378.         c:SetViewAngles(ang)
  1379.  
  1380.         if CT > ADSR.time and ADSR.state < 5 then
  1381.             ADSR.time = CT + 0.15
  1382.             ADSR.state = ADSR.state + 1
  1383.         end
  1384.  
  1385.         if ADSR.state == 1 then -- A
  1386.             ang2 = Lerp(FrameTime() / ADSR.a, ADSR.current, ADSR.target)
  1387.  
  1388.             ang.p = ang.p + (ADSR.current - ang2)
  1389.             c:SetViewAngles(ang)
  1390.  
  1391.             ADSR.current = ang2
  1392.         elseif ADSR.state == 2 then -- D
  1393.             ang2 = Lerp(FrameTime() / ADSR.d, ADSR.current, ADSR.target * 0.5)
  1394.  
  1395.             ang.p = ang.p + (ADSR.current - ang2)
  1396.             c:SetViewAngles(ang)
  1397.  
  1398.             ADSR.current = ang2
  1399.         elseif ADSR.state == 4 then -- R (S = sustain, so no need to code it)
  1400.             ang2 = Lerp(FrameTime() / ADSR.r, ADSR.current, 0)
  1401.  
  1402.             ang.p = ang.p + (ADSR.current - ang2)
  1403.             c:SetViewAngles(ang)
  1404.  
  1405.             ADSR.current = ang2
  1406.         end
  1407.     end
  1408.  
  1409.     hook.Add("CreateMove", "FAS2_CreateMove", FAS2_CreateMove)
  1410.  
  1411.     function FAS2_StartRecoil(target, rate, delay)
  1412.         FAS2Recoil.target = target
  1413.         FAS2Recoil.amt = 0
  1414.         FAS2Recoil.rate = rate
  1415.         FAS2Recoil.delay = CurTime() + delay
  1416.     end*/
  1417.  
  1418.     //function FAS2_StartADSR(a, d, s, r, amt, target)
  1419.     //  ply = LocalPlayer()
  1420.         //ADSR = {a = a, d = d, s = s, r = r, current = amt, target = target + target, time = CurTime() + 0.1, state = 1}
  1421.     //end
  1422.  
  1423.     local cvar
  1424.     local HandMat = Material("models/weapons/view/hands/hand")
  1425.     local HandMat2 = Material("models/weapons/v_models/hands/hand")
  1426.     local GloveMat, GloveMat2 = Material("models/weapons/view/hands/nomex"), Material("models/weapons/v_models/hands/nomex")
  1427.     local SleeveMat, SleeveMat2 = Material("models/weapons/view/hands/sleeve"), Material("models/weapons/v_models/hands/sleeve")
  1428.  
  1429.     local function FAS2_ApplyRigNow(ply, com, args)
  1430.         cvar = GetConVarNumber("fas2_handrig")
  1431.  
  1432.         for k, v in pairs(LocalPlayer():GetWeapons()) do
  1433.             if v.IsFAS2Weapon and IsValid(v.Wep) then
  1434.                 v.Wep:SetBodygroup(1, cvar)
  1435.  
  1436.                 if IsValid(v.Nade) then
  1437.                     v.Nade:SetBodygroup(1, cvar)
  1438.                 end
  1439.             end
  1440.         end
  1441.  
  1442.         local t = NumberToTexture[GetConVarNumber("fas2_handskin")]
  1443.  
  1444.         HandMat:SetTexture("$basetexture", t and t or "models/weapons/view/hands/hand")
  1445.         HandMat2:SetTexture("$basetexture", t and t or "models/weapons/view/hands/hand")
  1446.  
  1447.         local t = NumberToSleeve[GetConVarNumber("fas2_sleeveskin")]
  1448.  
  1449.         SleeveMat:SetTexture("$basetexture", t and t or "models/weapons/view/hands/sleeve")
  1450.         SleeveMat2:SetTexture("$basetexture", t and t or "models/weapons/view/hands/sleeve")
  1451.  
  1452.         local t = NumberToGlove[GetConVarNumber("fas2_gloveskin")]
  1453.  
  1454.         GloveMat:SetTexture("$basetexture", t and t or "models/weapons/view/hands/nomex")
  1455.         GloveMat2:SetTexture("$basetexture", t and t or "models/weapons/view/hands/nomex")
  1456.     end
  1457.  
  1458.     concommand.Add("fas2_handrig_applynow", FAS2_ApplyRigNow)
  1459.  
  1460.     local PLY = debug.getregistry().Player
  1461.     local found
  1462.  
  1463.     function PLY:HasWeapon(s)
  1464.         found = false
  1465.  
  1466.         for k, v in pairs(self:GetWeapons()) do
  1467.             if v:GetClass() == s then
  1468.                 found = true
  1469.                 break
  1470.             end
  1471.         end
  1472.  
  1473.         return found
  1474.     end
  1475.  
  1476.     function FAS2_DrawGrenade()
  1477.         ply = LocalPlayer()
  1478.         wep = ply:GetActiveWeapon()
  1479.  
  1480.         if IsValid(wep) and wep.IsFAS2Weapon then
  1481.             wep.Nade:SetCycle(0)
  1482.             wep.Nade:SetPlaybackRate(1)
  1483.             wep.Nade:SetSequence("deploy")
  1484.             wep.Nade.LifeTime = CurTime() + 5
  1485.         end
  1486.     end
  1487.  
  1488.     function FAS2_PullGrenadePin()
  1489.         ply = LocalPlayer()
  1490.         wep = ply:GetActiveWeapon()
  1491.  
  1492.         if IsValid(wep) and wep.IsFAS2Weapon then
  1493.             wep.Nade:SetCycle(0)
  1494.             wep.Nade:SetPlaybackRate(1)
  1495.             wep.Nade:SetSequence("cook")
  1496.             wep.Nade.LifeTime = CurTime() + 5
  1497.  
  1498.             wep:AddEvent(0.2, function()
  1499.                 wep:EmitSound("FAS2_M67.PinPull", 100, 100)
  1500.             end)
  1501.  
  1502.             wep:AddEvent(0.3, function()
  1503.                 wep:EmitSound("FAS2_M67.Spoon", 100, 100)
  1504.             end)
  1505.         end
  1506.     end
  1507.  
  1508.     function FAS2_ThrowGrenade()
  1509.         ply = LocalPlayer()
  1510.         wep = ply:GetActiveWeapon()
  1511.  
  1512.         wep:EmitSound("weapons/handling/generic_cloth_fast" .. math.random(1, 2) .. ".wav", 100, math.random(95, 105))
  1513.  
  1514.         if IsValid(wep) and wep.IsFAS2Weapon then
  1515.             wep.Nade:SetCycle(0)
  1516.             wep.Nade:SetPlaybackRate(1)
  1517.             wep.Nade:SetSequence("throw")
  1518.             wep.Nade.LifeTime = CurTime() + 0.5
  1519.         end
  1520.     end
  1521.  
  1522.     --[[local function FAS2_PlayerTraceAttack(pl, dmginfo, dir, trace)
  1523.         if GetConVarNumber("fas2_hitmarker") > 0 then
  1524.             ply = LocalPlayer()
  1525.  
  1526.             if dmginfo:GetAttacker() == ply then
  1527.                 wep = ply:GetActiveWeapon()
  1528.  
  1529.                 if wep.IsFAS2Weapon then
  1530.                     if wep.HitMarkerAlpha != 255 then
  1531.                         wep.HitMarkerTime = CurTime() + 0.2
  1532.                         wep.HitMarkerAlpha = 255
  1533.                     end
  1534.                 end
  1535.             end
  1536.         end
  1537.     end
  1538.  
  1539.     hook.Add("PlayerTraceAttack", "FAS2_PlayerTraceAttack", FAS2_PlayerTraceAttack)]]--
  1540. end
  1541.  
  1542. function AddAmmoType(name, text)
  1543.     game.AddAmmoType({name = name,
  1544.     dmgtype = DMG_BULLET})
  1545.  
  1546.     if CLIENT then
  1547.         language.Add(name .. "_ammo", text)
  1548.     end
  1549. end
  1550.  
  1551. AddAmmoType("9x19MM", "9x19MM Ammo")
  1552. AddAmmoType("9x18MM", "9x18MM Ammo")
  1553. AddAmmoType("10x25MM", "10x25MM Ammo")
  1554. AddAmmoType("7.62x51MM", "7.62x51MM Ammo")
  1555. AddAmmoType("7.62x54MMR", "7.62x54MMR Ammo")
  1556. AddAmmoType("5.56x45MM", "5.56x45MM Ammo")
  1557. AddAmmoType("5.45x39MM", "5.45x39MM Ammo")
  1558. AddAmmoType("7.62x39MM", "7.62x39MM Ammo")
  1559. AddAmmoType(".357 SIG", ".357 SIG Ammo")
  1560. AddAmmoType(".380 ACP", ".380 ACP Ammo")
  1561. AddAmmoType(".45 ACP", ".45 ACP Ammo")
  1562. AddAmmoType(".44 Magnum", ".44 Magnum Ammo")
  1563. AddAmmoType(".454 Casull", ".454 Casull Ammo")
  1564. AddAmmoType(".50 AE", ".50 AE Ammo")
  1565. AddAmmoType(".50 BMG", ".50 BMG Ammo")
  1566. AddAmmoType("12 Gauge", "12 Gauge Ammo")
  1567. AddAmmoType("23x75MMR", "23x75MMR Ammo")
  1568.  
  1569. AddAmmoType("40MM HE", "40MM HE Ammo")
  1570. AddAmmoType("40MM Smoke", "40MM Smoke Ammo")
  1571. AddAmmoType("M67 Grenades", "M67 Grenades")
  1572. AddAmmoType("Ammoboxes", "Ammoboxes")
  1573.  
  1574. AddAmmoType("Bandages", "Bandages")
  1575. AddAmmoType("Quikclots", "Quikclots")
  1576. AddAmmoType("Hemostats", "Hemostats")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement