Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.48 KB | None | 0 0
  1. --original mod by leeroy newman
  2.  
  3. if !ConVarExists("reloadviewanimsmooth") then
  4. CreateClientConVar("reloadviewanimsmooth", 0.4, true, true)
  5. end
  6.  
  7. if !ConVarExists("reloadviewanimpitchdiv") then
  8. CreateClientConVar("reloadviewanimpitchdiv", 10, true, true)
  9. end
  10.  
  11. if !ConVarExists("reloadviewanimyawdiv") then
  12. CreateClientConVar("reloadviewanimyawdiv", 25, true, true)
  13. end
  14.  
  15. if !ConVarExists("reloadviewanimrolldiv") then
  16. CreateClientConVar("reloadviewanimrolldiv", 25, true, true)
  17. end
  18.  
  19. if !ConVarExists("reloadviewanimdiv") then
  20. CreateClientConVar("reloadviewanimdiv", 10, true, true)
  21. end
  22.  
  23. if !ConVarExists("reloadviewanimroll") then
  24. CreateClientConVar("reloadviewanimroll", 1, true, true)
  25. end
  26.  
  27. if !ConVarExists("reloadviewanimyaw") then
  28. CreateClientConVar("reloadviewanimyaw", 1, true, true)
  29. end
  30.  
  31. if !ConVarExists("reloadviewanimpitch") then
  32. CreateClientConVar("reloadviewanimpitch", 1, true, true)
  33. end
  34.  
  35. if !ConVarExists("reloadviewanim") then
  36. CreateClientConVar("reloadviewanim", 1, true, true)
  37. end
  38.  
  39. ReloadViewAnim = {}
  40. ReloadViewAnim.LastAng = Angle(0,0,0)
  41. ReloadViewAnim.Angles = Angle(0,0,0)
  42. ReloadViewAnim.LastAnim = "deploy"
  43. ReloadViewAnim.AnimTime = 0
  44. ReloadViewAnim.NextReload = CurTime()
  45.  
  46. if CLIENT then
  47.  
  48. function ReloadViewAnimCalcView(ply, origin, angles, fov)
  49. if GetConVarNumber("reloadviewanim") <= 0 then return end
  50. local self = ply:GetActiveWeapon()
  51. local vm = ply:GetViewModel()
  52. local view = GAMEMODE:CalcView( ply, origin, angles, fov )
  53. if vm == nil or view == nil then return end
  54. if ReloadViewAnim.NextReload >= CurTime() then
  55. local SelectedAttachement = vm:LookupAttachment("muzzle")
  56. if SelectedAttachement == 0 then
  57. SelectedAttachement = vm:LookupAttachment("1")
  58. end
  59. local CurrentAttachment = vm:GetAttachment(SelectedAttachement)
  60. if SelectedAttachement == nil or CurrentAttachment == nil then return end
  61. local AttPos, AttAng = CurrentAttachment.Pos, CurrentAttachment.Ang + ply:GetAimVector()
  62. if AttPos == nil or AttAng == nil then return end
  63.  
  64. if self:GetNWBool("DoReloadViewAnim") then
  65.  
  66. local Diffp = ReloadViewAnim.Angles.p - (view.angles.p + AttAng.p)
  67. local Diffy = ReloadViewAnim.Angles.y - (view.angles.y + AttAng.y)
  68. local Diffr = ReloadViewAnim.Angles.r - (view.angles.y + AttAng.r)
  69.  
  70. if ( math.abs(view.angles.y - ReloadViewAnim.Angles.y) > 180 ) then
  71. if ( (view.angles.y - ReloadViewAnim.Angles.y) < 0 ) then
  72. view.angles.y = view.angles.y + 360
  73. else
  74. view.angles.y = view.angles.y - 360
  75. end
  76. end
  77.  
  78. ReloadViewAnim.LastAng = ReloadViewAnim.Angles
  79. if GetConVarNumber("reloadviewanimpitch") >= 1 then
  80. ReloadViewAnim.Angles.p = math.Approach(ReloadViewAnim.LastAng.p, (view.angles.p + AttAng.p) / GetConVarNumber("reloadviewanimpitchdiv"), FrameTime() * (Diffp * GetConVarNumber("reloadviewanimsmooth")))
  81. end
  82. if GetConVarNumber("reloadviewanimyaw") >= 1 then
  83. ReloadViewAnim.Angles.y = math.Approach(ReloadViewAnim.LastAng.y, (view.angles.y + AttAng.y) / GetConVarNumber("reloadviewanimyawdiv"), FrameTime() * (Diffy * GetConVarNumber("reloadviewanimsmooth")))
  84. end
  85. if GetConVarNumber("reloadviewanimroll") >= 1 then
  86. ReloadViewAnim.Angles.r = math.Approach(ReloadViewAnim.LastAng.r, (view.angles.r + AttAng.r) / GetConVarNumber("reloadviewanimrolldiv"), FrameTime() * (Diffr * GetConVarNumber("reloadviewanimsmooth")))
  87. end
  88.  
  89. end
  90.  
  91. elseif ReloadViewAnim.NextReload < CurTime() and self:GetNWBool("DoReloadViewAnim") == false and ReloadViewAnim.Angles.p != 0 or ReloadViewAnim.Angles.y != 0 or ReloadViewAnim.Angles.r != 0 then
  92.  
  93. local Diffp = ReloadViewAnim.Angles.p - 0
  94. local Diffy = ReloadViewAnim.Angles.y - 0
  95. local Diffr = ReloadViewAnim.Angles.r - 0
  96.  
  97. ReloadViewAnim.LastAng = ReloadViewAnim.Angles
  98. ReloadViewAnim.Angles.p = math.Approach(ReloadViewAnim.LastAng.p, 0, FrameTime() * (Diffp * 10))
  99. ReloadViewAnim.Angles.y = math.Approach(ReloadViewAnim.LastAng.y, 0, FrameTime() * (Diffy * 10))
  100. ReloadViewAnim.Angles.r = math.Approach(ReloadViewAnim.LastAng.r, 0, FrameTime() * (Diffr * 10))
  101.  
  102. end
  103.  
  104. view.angles.p = ReloadViewAnim.Angles.p + view.angles.p
  105. view.angles.y = ReloadViewAnim.Angles.y + view.angles.y
  106. view.angles.r = ReloadViewAnim.Angles.r + view.angles.r
  107.  
  108. end
  109. hook.Add("CalcView", "ReloadViewAnimCalcView", ReloadViewAnimCalcView)
  110.  
  111. function ReloadViewAnimKeyPress(ply, key)
  112. local weapon = ply:GetActiveWeapon()
  113. local vm = ply:GetViewModel()
  114. if !ply:Alive() or ReloadViewAnim.NextReload > CurTime() or weapon.Primary == nil then return end
  115. if ( weapon:Clip1() < weapon.Primary.ClipSize ) and ply:GetAmmoCount(weapon.Primary.Ammo) > 0 and weapon:GetNWBool("DoReloadViewAnim") == false then
  116. if ( key == IN_RELOAD ) or ( key == IN_ATTACK ) and vm:GetSequence() == vm:LookupSequence("reload") then
  117. weapon:SetNWBool("DoReloadViewAnim", true)
  118. timer.Simple( 0.1, function()
  119. local duration = weapon:SequenceDuration() - 0.25
  120. ReloadViewAnim.NextReload = CurTime() + duration - 0.25
  121. timer.Simple(duration, function()
  122. weapon:SetNWBool("DoReloadViewAnim", false)
  123. end, weapon)
  124. end, ply)
  125. end
  126. end
  127. end
  128. hook.Add("KeyPress","ReloadViewAnimKeyPress",ReloadViewAnimKeyPress)
  129. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement