Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SpiritWalk by RabidToaster
- // Original concept by RabidToaster + Devenger
- local SW = {}
- SW.Enabled = false
- SW.ViewOrigin = Vector( 0, 0, 0 )
- SW.ViewAngle = Angle( 0, 0, 0 )
- SW.Velocity = Vector( 0, 0, 0 )
- function SW.CalcView( ply, origin, angles, fov )
- if ( !SW.Enabled ) then return end
- if ( SW.SetView ) then
- SW.ViewOrigin = origin
- SW.ViewAngle = angles
- SW.SetView = false
- end
- return { origin = SW.ViewOrigin, angles = SW.ViewAngle }
- end
- hook.Add( "CalcView", "SpiritWalk", SW.CalcView )
- function SW.CreateMove( cmd )
- if ( !SW.Enabled ) then return end
- // Add and reduce the old velocity.
- local time = FrameTime()
- SW.ViewOrigin = SW.ViewOrigin + ( SW.Velocity * time )
- SW.Velocity = SW.Velocity * 0.95
- // Rotate the view when the mouse is moved.
- local sensitivity = 0.022
- SW.ViewAngle.p = math.Clamp( SW.ViewAngle.p + ( cmd:GetMouseY() * sensitivity ), -89, 89 )
- SW.ViewAngle.y = SW.ViewAngle.y + ( cmd:GetMouseX() * -1 * sensitivity )
- // What direction we're going to move in.
- local add = Vector( 0, 0, 0 )
- local ang = SW.ViewAngle
- if ( cmd:KeyDown( IN_FORWARD ) ) then add = add + ang:Forward() end
- if ( cmd:KeyDown( IN_BACK ) ) then add = add - ang:Forward() end
- if ( cmd:KeyDown( IN_MOVERIGHT ) ) then add = add + ang:Right() end
- if ( cmd:KeyDown( IN_MOVELEFT ) ) then add = add - ang:Right() end
- if ( cmd:KeyDown( IN_JUMP ) ) then add = add + ang:Up() end
- if ( cmd:KeyDown( IN_DUCK ) ) then add = add - ang:Up() end
- // Speed.
- add = add:GetNormal() * time * 500
- if ( cmd:KeyDown( IN_SPEED ) ) then add = add * 2 end
- SW.Velocity = SW.Velocity + add
- // This stops us looking around crazily while spiritwalking.
- if ( SW.LockView == true ) then
- SW.LockView = cmd:GetViewAngles()
- end
- if ( SW.LockView ) then
- cmd:SetViewAngles( SW.LockView )
- end
- // This stops us moving while spiritwalking.
- cmd:SetForwardMove( 0 )
- cmd:SetSideMove( 0 )
- cmd:SetUpMove( 0 )
- end
- hook.Add( "CreateMove", "SpiritWalk", SW.CreateMove )
- function SW.Toggle()
- SW.Enabled = !SW.Enabled
- SW.LockView = SW.Enabled
- SW.SetView = true
- local status = { [ true ] = "ON", [ false ] = "OFF" }
- print( "SpiritWalk " .. status[ SW.Enabled ] )
- end
- concommand.Add( "sw_toggle", SW.Toggle )
- concommand.Add( "sw_pos", function() print( SW.ViewOrigin ) end )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement