local attachment = false
function CI_GetViewModelPosition (self, pos, ang)
local IRONSIGHT_TIME = 0.25
--print ("Start Ang: "..tostring(ang).."\n")
if self.Weapon:GetNetworkedBool ("Ironsights") then
ang = LocalPlayer():GetViewModel():GetAngles()
--[[local vm = self.Owner:GetViewModel()
print ("vm: "..tostring(vm))
local brl = vm:GetAttachment (1)
PrintTable (brl)]]
local aAng = attachment.Ang
if not self.aDefPitch then
self.aDefPitch = aAng.r - ang.p
self.aDefYaw = aAng.y - ang.y
else
local diff = (aAng.r - wpnang.p) - self.aDefPitch
ang.p = ang.p - diff
--how about yaw now?
--print (aAng.y.." - "..wpnang.y)
end
else
self.aDefPitch = nil
end
--ang.y = ang.y + 10
--print ("End Ang: "..tostring(ang).."\n")
--garry's ironsight code
if ( !self.IronSightsPos ) then return pos, ang end
local bIron = self.Weapon:GetNetworkedBool( "Ironsights" )
if ( bIron != self.bLastIron ) then
self.bLastIron = bIron
self.fIronTime = CurTime()
if ( bIron ) then
self.SwayScale = 0.3
self.BobScale = 0.1
else
self.SwayScale = 1.0
self.BobScale = 1.0
end
end
local fIronTime = self.fIronTime or 0
if ( !bIron && fIronTime < CurTime() - IRONSIGHT_TIME ) then
return pos, ang
end
local Mul = 1.0
if ( fIronTime > CurTime() - IRONSIGHT_TIME ) then
Mul = math.Clamp( (CurTime() - fIronTime) / IRONSIGHT_TIME, 0, 1 )
if (!bIron) then Mul = 1 - Mul end
end
local Offset = self.IronSightsPos
if ( self.IronSightsAng ) then
ang = ang * 1
ang:RotateAroundAxis( ang:Right(), self.IronSightsAng.x * Mul )
ang:RotateAroundAxis( ang:Up(), self.IronSightsAng.y * Mul )
ang:RotateAroundAxis( ang:Forward(), self.IronSightsAng.z * Mul )
end
local Right = ang:Right()
local Up = ang:Up()
local Forward = ang:Forward()
pos = pos + Offset.x * Right * Mul
pos = pos + Offset.y * Forward * Mul
pos = pos + Offset.z * Up * Mul
return pos, ang
end
local function CI_GetAttachmentThink ()
attachment = LocalPlayer():GetViewModel():GetAttachment (1)
wpnang = LocalPlayer():GetViewModel():GetAngles()
--PrintTable (attachment)
draw.SimpleText (tostring(attachment.Pos).."/"..tostring(attachment.Ang), "ScoreboardText", ScrW() / 2 - 70, ScrH() - 120, Color(0,0,0,255),1,1)
draw.SimpleText (LocalPlayer():GetViewModel():GetAngles().y.."/"..LocalPlayer():EyeAngles().y, "ScoreboardText", ScrW() / 2 - 70, ScrH() - 90, Color(0,0,0,255),1,1)
if LocalPlayer():GetActiveWeapon() and LocalPlayer():GetActiveWeapon() != NULL and LocalPlayer():GetActiveWeapon():GetTable().aDefYaw then
draw.SimpleText (LocalPlayer():GetActiveWeapon():GetTable().aDefYaw, "ScoreboardText", ScrW() / 2 - 70, ScrH() - 60, Color(0,0,0,255),1,1)
end
draw.SimpleText (wpnang.y..", "..attachment.Ang.y, "ScoreboardText", ScrW() / 2 - 70, ScrH() - 30, Color(0,0,0,255),1,1)
end
hook.Add ("HUDPaint", "CI_GAT", CI_GetAttachmentThink)
local function CI_Initialize ()
for _,wpn in pairs (weapons.GetList()) do
if wpn.IronSightsPos then
print ("has ironsights: "..wpn.Classname)
wpn.GetViewModelPosition = CI_GetViewModelPosition
end
end
end
hook.Add ("Initialize", "CI_Init", CI_Initialize)