shadowndacorner

stuff

Oct 28th, 2013
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.27 KB | None | 0 0
  1. function GM:CalcView(ply, pos, angles, fov, znear, zfar)
  2.     if self.IsDrawingTP then
  3.         local view = {}
  4.         view.ActualPos=pos
  5.         view.ActualAng=angles
  6.         local oply=ply
  7.         opos=opos or origin
  8.         oang=oang or angles
  9.         ofov=fov
  10.         view.fov=70
  11.         local orpos=pos
  12.        
  13.         if !LocalPlayer():Alive() then
  14.             oply=ply:GetRagdollEntity()
  15.         end
  16.        
  17.         if IsValid(oply) then
  18.             local eyes = oply:GetAttachment(oply:LookupAttachment("eyes"))
  19.             local pos=orpos
  20.             if eyes.Pos then
  21.                 pos=eyes.Pos
  22.             end
  23.             if !ply:Alive() then
  24.                 angles=eyes.Ang
  25.             end
  26.             //local ang=eyes.Ang
  27.             //angles=LerpAngle(0.9, ang, angles)
  28.             view.origin         = pos
  29.             view.angles         = angles
  30.         else
  31.             view.angles         = angles
  32.             view.origin         = origin
  33.         end
  34.         view.origin=view.origin or pos
  35.         local dif=(view.origin-orpos):Angle():Forward()*7
  36.         local endpos=view.origin+dif
  37.        
  38.         local tr=util.TraceLine({start=orpos, endpos=endpos, filter=LocalPlayer()})
  39.        
  40.         if tr.Hit then
  41.             //print('hit')
  42.             view.Clip=view.origin-(tr.HitPos-dif)
  43.             view.origin=tr.HitPos-dif
  44.         end
  45.        
  46.         local ov=self.CurView
  47.         self.CurView=view
  48.         self.CurView.OldView=ov
  49.        
  50.         return view
  51.     end
  52. end
  53.  
  54. function GM:PreDrawViewModel(vm, cl, weap)
  55.     local vm=LocalPlayer():GetViewModel()
  56.     local cl=LocalPlayer()
  57.     local weap=LocalPlayer():GetActiveWeapon()
  58.     if IsValid(weap) then
  59.         if !IsValid(self.ClientModel) then
  60.             self.ClientModel=ClientsideModel(vm:GetModel())
  61.             self.ClientModel.RenderOverride=function(ent)
  62.                 //cam.IgnoreZ(true)
  63.                 ent:DrawModel()
  64.                 //cam.IgnoreZ(false)
  65.             end
  66.             //self.ClientModel:AddEffects(bit.bor(EF_NOSHADOW))
  67.         end
  68.         if self.ClientModel:GetModel()!=vm:GetModel() then
  69.             self.ClientModel:SetModel(vm:GetModel())
  70.         end
  71.         self.ClientModel:SetPos(vm:GetPos())
  72.         self.ClientModel:SetAngles(vm:GetAngles())
  73.         self.ClientModel:SetSequence(vm:GetSequence())
  74.         self.ClientModel:SetCycle(vm:GetCycle())
  75.     else
  76.         if IsValid(self.ClientModel) then
  77.             self.ClientModel:Remove()
  78.         end
  79.     end
  80.     return false
  81. end
  82.  
  83. GM.ViewModelWallOffset=0
  84. GM.CrouchOffset=0
  85. //GM.ViewModelOffset={}
  86. function GM:CalcViewModelView(wp, vm, oep, oea, ep, ea)
  87.     if !self.CurView or !self.CurView.ActualAng or !self.CurView.origin then return end
  88.     local offset=self.CurView.ActualPos-self.CurView.origin
  89.     if LocalPlayer():KeyDown(IN_DUCK) or LocalPlayer():Crouching() then
  90.         self.CrouchOffset=math.Clamp(self.CrouchOffset+FrameTime()*15, 0, 18)
  91.     else
  92.         self.CrouchOffset=math.Clamp(self.CrouchOffset-FrameTime()*15, 0, 18)
  93.     end
  94.     //local tr=util.TraceLine(vm)
  95.     if self.CurView.Clip then
  96.         offset=offset-self.CurView.Clip
  97.     end
  98.     offset=offset+Vector(0, 0, self.CrouchOffset)
  99.     local angoffset=self.CurView.ActualAng-self.CurView.angles
  100.     vm:SetPos(LerpVector(0.4, vm:GetPos(), vm:GetPos()+offset))
  101.     vm:SetAngles(LerpAngle(0.4, vm:GetAngles(), vm:GetAngles()+angoffset))
  102.     /*local pos=LocalPlayer():EyePos()+LocalPlayer():EyeAngles():Forward()*45-LocalPlayer():EyeAngles():Up()*9.5+LocalPlayer():EyeAngles():Right()*5
  103.     local pos2=LocalPlayer():EyePos()-LocalPlayer():EyeAngles():Up()*9.5+LocalPlayer():EyeAngles():Right()*5*/
  104.     if vm:LookupBone("ValveBiped.Bip01_R_UpperArm") then
  105.         local pos, ang=vm:GetBonePosition(vm:LookupBone("ValveBiped.Bip01_R_UpperArm"))
  106.         pos=pos+ang:Up()*5
  107.         pos=pos+ang:Right()*5
  108.         local pos2=pos+ang:Forward()*45
  109.         if pos and pos2 then
  110.             local tr=util.TraceLine({start=pos, endpos=pos2, filter={LocalPlayer()}})
  111.             local ot=tr
  112.             local dif=pos2-tr.HitPos
  113.             /*
  114.             if !tr.Hit then
  115.                 local pos1=pos+ang:Right()*5
  116.                 pos2=pos1+ang:Forward()*45
  117.                 dif=pos2-pos1
  118.                 tr=util.TraceLine({start=pos, endpos=pos2, filter={LocalPlayer()}})
  119.                 /*if !tr.Hit then
  120.                     local pos1=pos-ang:Right()*5
  121.                     pos2=pos1+ang:Forward()*45
  122.                     dif=pos2-pos1
  123.                     tr=util.TraceLine({start=pos, endpos=pos2, filter={LocalPlayer()}})
  124.                     //print('go')
  125.                 end
  126.             end*/
  127.             //print(dif)
  128.             if tr.Hit then
  129.                 vm:SetPos(vm:GetPos()-(pos2-tr.HitPos))
  130.             else
  131.                 vm:SetPos(vm:GetPos()-dif)
  132.             end
  133.         end
  134.     else
  135.         local dif=math.Clamp(45-LocalPlayer():GetEyeTrace().HitPos:Distance(vm:GetPos()), 0, 18)
  136.         self.HasViewOffset=(dif)!=0
  137.         self.ViewModelWallOffset=Lerp(FrameTime()*5, self.ViewModelWallOffset, dif)
  138.         vm:SetPos(vm:GetPos()-vm:GetAngles():Forward()*self.ViewModelWallOffset)
  139.     end
  140.     GAMEMODE.Offset=offset
  141.     return true
  142. end
Advertisement
Add Comment
Please, Sign In to add comment