Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --original mod by leeroy newman
- if !ConVarExists("reloadviewanimsmooth") then
- CreateClientConVar("reloadviewanimsmooth", 0.4, true, true)
- end
- if !ConVarExists("reloadviewanimpitchdiv") then
- CreateClientConVar("reloadviewanimpitchdiv", 10, true, true)
- end
- if !ConVarExists("reloadviewanimyawdiv") then
- CreateClientConVar("reloadviewanimyawdiv", 25, true, true)
- end
- if !ConVarExists("reloadviewanimrolldiv") then
- CreateClientConVar("reloadviewanimrolldiv", 25, true, true)
- end
- if !ConVarExists("reloadviewanimdiv") then
- CreateClientConVar("reloadviewanimdiv", 10, true, true)
- end
- if !ConVarExists("reloadviewanimroll") then
- CreateClientConVar("reloadviewanimroll", 1, true, true)
- end
- if !ConVarExists("reloadviewanimyaw") then
- CreateClientConVar("reloadviewanimyaw", 1, true, true)
- end
- if !ConVarExists("reloadviewanimpitch") then
- CreateClientConVar("reloadviewanimpitch", 1, true, true)
- end
- if !ConVarExists("reloadviewanim") then
- CreateClientConVar("reloadviewanim", 1, true, true)
- end
- ReloadViewAnim = {}
- ReloadViewAnim.LastAng = Angle(0,0,0)
- ReloadViewAnim.Angles = Angle(0,0,0)
- ReloadViewAnim.LastAnim = "deploy"
- ReloadViewAnim.AnimTime = 0
- ReloadViewAnim.NextReload = CurTime()
- if CLIENT then
- function ReloadViewAnimCalcView(ply, origin, angles, fov)
- if GetConVarNumber("reloadviewanim") <= 0 then return end
- local self = ply:GetActiveWeapon()
- local vm = ply:GetViewModel()
- local view = GAMEMODE:CalcView( ply, origin, angles, fov )
- if vm == nil or view == nil then return end
- if ReloadViewAnim.NextReload >= CurTime() then
- local SelectedAttachement = vm:LookupAttachment("muzzle")
- if SelectedAttachement == 0 then
- SelectedAttachement = vm:LookupAttachment("1")
- end
- local CurrentAttachment = vm:GetAttachment(SelectedAttachement)
- if SelectedAttachement == nil or CurrentAttachment == nil then return end
- local AttPos, AttAng = CurrentAttachment.Pos, CurrentAttachment.Ang + ply:GetAimVector()
- if AttPos == nil or AttAng == nil then return end
- if self:GetNWBool("DoReloadViewAnim") then
- local Diffp = ReloadViewAnim.Angles.p - (view.angles.p + AttAng.p)
- local Diffy = ReloadViewAnim.Angles.y - (view.angles.y + AttAng.y)
- local Diffr = ReloadViewAnim.Angles.r - (view.angles.y + AttAng.r)
- if ( math.abs(view.angles.y - ReloadViewAnim.Angles.y) > 180 ) then
- if ( (view.angles.y - ReloadViewAnim.Angles.y) < 0 ) then
- view.angles.y = view.angles.y + 360
- else
- view.angles.y = view.angles.y - 360
- end
- end
- ReloadViewAnim.LastAng = ReloadViewAnim.Angles
- if GetConVarNumber("reloadviewanimpitch") >= 1 then
- ReloadViewAnim.Angles.p = math.Approach(ReloadViewAnim.LastAng.p, (view.angles.p + AttAng.p) / GetConVarNumber("reloadviewanimpitchdiv"), FrameTime() * (Diffp * GetConVarNumber("reloadviewanimsmooth")))
- end
- if GetConVarNumber("reloadviewanimyaw") >= 1 then
- ReloadViewAnim.Angles.y = math.Approach(ReloadViewAnim.LastAng.y, (view.angles.y + AttAng.y) / GetConVarNumber("reloadviewanimyawdiv"), FrameTime() * (Diffy * GetConVarNumber("reloadviewanimsmooth")))
- end
- if GetConVarNumber("reloadviewanimroll") >= 1 then
- ReloadViewAnim.Angles.r = math.Approach(ReloadViewAnim.LastAng.r, (view.angles.r + AttAng.r) / GetConVarNumber("reloadviewanimrolldiv"), FrameTime() * (Diffr * GetConVarNumber("reloadviewanimsmooth")))
- end
- end
- 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
- local Diffp = ReloadViewAnim.Angles.p - 0
- local Diffy = ReloadViewAnim.Angles.y - 0
- local Diffr = ReloadViewAnim.Angles.r - 0
- ReloadViewAnim.LastAng = ReloadViewAnim.Angles
- ReloadViewAnim.Angles.p = math.Approach(ReloadViewAnim.LastAng.p, 0, FrameTime() * (Diffp * 10))
- ReloadViewAnim.Angles.y = math.Approach(ReloadViewAnim.LastAng.y, 0, FrameTime() * (Diffy * 10))
- ReloadViewAnim.Angles.r = math.Approach(ReloadViewAnim.LastAng.r, 0, FrameTime() * (Diffr * 10))
- end
- view.angles.p = ReloadViewAnim.Angles.p + view.angles.p
- view.angles.y = ReloadViewAnim.Angles.y + view.angles.y
- view.angles.r = ReloadViewAnim.Angles.r + view.angles.r
- end
- hook.Add("CalcView", "ReloadViewAnimCalcView", ReloadViewAnimCalcView)
- function ReloadViewAnimKeyPress(ply, key)
- local weapon = ply:GetActiveWeapon()
- local vm = ply:GetViewModel()
- if !ply:Alive() or ReloadViewAnim.NextReload > CurTime() or weapon.Primary == nil then return end
- if ( weapon:Clip1() < weapon.Primary.ClipSize ) and ply:GetAmmoCount(weapon.Primary.Ammo) > 0 and weapon:GetNWBool("DoReloadViewAnim") == false then
- if ( key == IN_RELOAD ) or ( key == IN_ATTACK ) and vm:GetSequence() == vm:LookupSequence("reload") then
- weapon:SetNWBool("DoReloadViewAnim", true)
- timer.Simple( 0.1, function()
- local duration = weapon:SequenceDuration() - 0.25
- ReloadViewAnim.NextReload = CurTime() + duration - 0.25
- timer.Simple(duration, function()
- weapon:SetNWBool("DoReloadViewAnim", false)
- end, weapon)
- end, ply)
- end
- end
- end
- hook.Add("KeyPress","ReloadViewAnimKeyPress",ReloadViewAnimKeyPress)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement