Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (SERVER) then AddCSLuaFile( "alienswarmcamera.lua" ) end
- if (CLIENT) then
- local mX = ScrW() / 2
- local mY = ScrH() / 2
- local view = {}
- local vec = Vector( 0, -64, 256 )
- local dist = 64
- local function CalcView( ply, origin, angles, fov )
- view.origin = ply:GetPos() + vec
- if (view.AimPosition) then
- local aim = view.AimPosition
- aim.z = view.origin.z
- view.origin = Lerp( 0.25, view.origin, view.AimPosition )
- end
- view.angles = (vec * -1):Angle()
- view.fov = fov
- return view
- end
- hook.Add( "CalcView", "AS_Cam", CalcView )
- local function ShouldDrawLocalPlayer()
- return true
- end
- hook.Add( "ShouldDrawLocalPlayer", "AS_DrawLocal", ShouldDrawLocalPlayer )
- local trace = {}
- local colBlue = Color( 0, 0, 255 )
- local function InputMouseApply( cmd, x, y, angle )
- local w, h = ScrW(), ScrH()
- mX = mX + (x / 5)
- mY = mY + (y / 5)
- if (mX > w) then mX = w end
- if (mY > h) then mY = h end
- if (mX < 0) then mX = 0 end
- if (mY < 0) then mY = 0 end
- --print( x, y )
- trace.start = view.origin
- trace.endpos = trace.start + (gui.ScreenToVector( mX, mY ) * 1024)
- local tr = util.TraceLine( trace )
- local ang = (tr.HitPos - LocalPlayer():GetShootPos()):Angle()
- cmd:SetViewAngles( ang )
- --debugoverlay.Line(tr.StartPos, tr.HitPos, 10, Color(255, 0, 0))
- view.AimPosition = tr.HitPos
- debugoverlay.Cross( tr.HitPos, 15, 0.05, colBlue )
- return true
- end
- hook.Add( "InputMouseApply", "AS_Mouse", InputMouseApply )
- local function HUDPaint()
- if (view.AimPosition) then
- local w, h = ScrW(), ScrH()
- local ang = math.atan2( mY - (h / 2), mX - (w / 2) )
- surface.SetDrawColor( color_white )
- surface.DrawLine( mX, mY, mX + (10 * -math.cos(ang)), mY + (10 * -math.sin(ang)) )
- surface.DrawLine( mX, mY, mX + (10 * -math.sin(ang)), mY + (10 * math.cos(ang)) )
- surface.DrawLine( mX, mY, mX + (10 * math.sin(ang)), mY + (10 * -math.cos(ang)) )
- end
- end
- hook.Add( "HUDPaint", "AS_Paint", HUDPaint )
- local function HUDShouldDraw( name )
- if (name == "CHudCrosshair") then return false end
- end
- hook.Add( "HUDShouldDraw", "AS_Hud", HUDShouldDraw )
- end
- local unitForward = Vector( 0, 1, 0 )
- local unitRight = Vector( 1, 0, 0 )
- local speed = 270
- local acc = 2000
- local friction = 5
- local function SetupMove( ply, data )
- local t = CurTime()
- ply.lastFrame = ply.lastFrame or t
- ply.moveVel = ply.moveVel or Vector( 0, 0, 0 )
- local forward = 0
- local right = 0
- if (ply:KeyDown( IN_FORWARD )) then forward = 1 end
- if (ply:KeyDown( IN_BACK )) then forward = -1 end
- if (ply:KeyDown( IN_MOVERIGHT )) then right = 1 end
- if (ply:KeyDown( IN_MOVELEFT )) then right = -1 end
- local accel = ((unitForward * forward) + (unitRight * right)):Normalize() * acc
- local delta = t - ply.lastFrame
- ply.lastFrame = t
- ply.moveVel = (ply.moveVel + (accel * delta)) * math.Clamp( 1 - (friction * delta), 0, 1 )
- local len = ply.moveVel:Length()
- if (len > speed) then ply.moveVel = ply.moveVel:Normalize() * speed end
- local z = data:GetVelocity().z
- ply.moveVel.z = z
- data:SetVelocity( ply.moveVel )
- end
- hook.Add( "Move", "AS_SetupMove", SetupMove )
- if (SERVER) then
- local function PlayerConnect( ply )
- ply:SetMaxSpeed( 0 )
- ply:SetWalkSpeed( 0 )
- ply:SetRunSpeed( 0 )
- end
- hook.Add( "PlayerConnect", "AS_PlayerC", PlayerConnect )
- end
Advertisement
Add Comment
Please, Sign In to add comment