thomasfn

Alien Swarm Gmod Camera

Aug 28th, 2011
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.20 KB | None | 0 0
  1.  
  2. if (CLIENT) then
  3.  
  4.     local view = {}
  5.     local vec = Vector( 0, -32, 256 )
  6.     local dist = 64
  7.     local function CalcView( ply, origin, angles, fov )
  8.         view.origin = ply:GetPos() + vec
  9.         view.angles = (vec * -1):Angle()
  10.         view.fov = fov
  11.         return view
  12.     end
  13.     hook.Add( "CalcView", "AS_Cam", CalcView )
  14.    
  15.     local function ShouldDrawLocalPlayer()
  16.         return true
  17.     end
  18.     hook.Add( "ShouldDrawLocalPlayer", "AS_DrawLocal", ShouldDrawLocalPlayer )
  19.    
  20.     local mX = ScrW() / 2
  21.     local mY = ScrH() / 2
  22.     local trace = {}
  23.     local function InputMouseApply( cmd, x, y, angle )
  24.         local w, h = ScrW(), ScrH()
  25.         mX = mX + (x / 5)
  26.         mY = mY + (y / 5)
  27.         if (mX > w) then mX = w end
  28.         if (mY > h) then mY = h end
  29.         if (mX < 0) then mX = 0 end
  30.         if (mY < 0) then mY = 0 end
  31.        
  32.         --print( x, y )
  33.         trace.start = view.origin
  34.         trace.endpos = trace.start + (gui.ScreenToVector( mX, mY ) * 1024)
  35.         local tr = util.TraceLine( trace )
  36.         local ang = (tr.HitPos - LocalPlayer():GetShootPos()):Angle()
  37.         cmd:SetViewAngles( ang )
  38.         --debugoverlay.Line(tr.StartPos, tr.HitPos, 10, Color(255, 0, 0))
  39.         debugoverlay.Cross(tr.HitPos, 20, 10, Color(0, 0, 255))
  40.         return true
  41.     end
  42.     hook.Add( "InputMouseApply", "AS_Mouse", InputMouseApply )
  43.  
  44. end
  45.  
  46. local unitForward = Vector( 0, 1, 0 )
  47. local unitRight = Vector( 1, 0, 0 )
  48. local speed = 270
  49. local acc = 2000
  50. local friction = 5
  51. local function SetupMove( ply, data )
  52.     local t = CurTime()
  53.     ply.lastFrame = ply.lastFrame or t
  54.     ply.moveVel = ply.moveVel or Vector( 0, 0, 0 )
  55.     local forward = 0
  56.     local right = 0
  57.     if (ply:KeyDown( IN_FORWARD )) then forward = 1 end
  58.     if (ply:KeyDown( IN_BACK )) then forward = -1 end
  59.     if (ply:KeyDown( IN_MOVERIGHT )) then right = 1 end
  60.     if (ply:KeyDown( IN_MOVELEFT )) then right = -1 end
  61.     local accel = ((unitForward * forward) + (unitRight * right)):Normalize() * acc
  62.     local delta = t - ply.lastFrame
  63.     ply.lastFrame = t
  64.     ply.moveVel = (ply.moveVel + (accel * delta)) * math.Clamp( 1 - (friction * delta), 0, 1 )
  65.     local len = ply.moveVel:Length()
  66.     if (len > speed) then ply.moveVel = ply.moveVel:Normalize() * speed end
  67.     local z = data:GetVelocity().z
  68.     ply.moveVel.z = z
  69.     data:SetVelocity( ply.moveVel )
  70. end
  71. hook.Add( "SetupMove", "AS_SetupMove", SetupMove )
Advertisement
Add Comment
Please, Sign In to add comment