# Air strafe

So basically on the server the air strafe is messed up. On deathrun when you ‘circle jump’ to fool the death it just doesn’t work. You jump, turn, but when you turn you don’t go forward to where you started, you just stop.

Anyone know how to fix this?

sv_airaccelerate 1000
And before one of you smartasses tell me there’s no difference above 150/300/750 AA, you need to learn to strafe.

sv_airaccelerate 150 is all you need. Seriously, anything above that is just unnecessary. Besides, the higher the air acceleration, the easier it is, so I think you are the one who needs to learn how to strafe.

EDIT:

Here is some code from the STBase gamemode. Credits to Azuisleet for this section.

``````

---------------------------------------

---------------------------------------
-- Azuisleet -> sv_airaccelerate

function GM:AirAccelerate(Move, current, wishdir, wishspeed, accel)
local wishspd = wishspeed

wishspd = math.Clamp(wishspd, 0, 30)

local addspeed = wishspd - current

return
end

local accelspeed = accel * wishspeed * FrameTime()

end

Move:SetVelocity(Move:GetVelocity() + (wishdir * accelspeed))
end

---------------------------------------

function GM:Move(ply, Move)
if(SERVER) then
self:AFKCommand(ply)
end

local aim = Move:GetMoveAngles()
local forward, right = aim:Forward(), aim:Right()
local fmove = Move:GetForwardSpeed()
local smove = Move:GetSideSpeed()

forward.z, right.z = 0,0
forward:Normalize()
right:Normalize()

local wishvel = forward * fmove + right * smove
wishvel.z = 0

local wishspeed = wishvel:Length()

if(wishspeed > Move:GetMaxSpeed()) then
wishvel = wishvel * (Move:GetMaxSpeed()/wishspeed)
wishspeed = Move:GetMaxSpeed()
end

local wishdir = wishvel:GetNormal()
local current = Move:GetVelocity():Dot(wishdir)

if(ply:IsOnGround()) then
if(self.svAccelerate != 0) then
self:Accelerate(Move, current, wishdir, wishspeed, self.svAccelerate)
end
-- if(self.SlowJumpLanding) then
-- if(ply.WasInAir) then
-- if(ply.WasInAir >= CurTime()) then
-- Move:SetVelocity(Move:GetVelocity() * 0.5)
-- else
-- ply.WasInAir = nil
-- end
-- end
-- end
else
if(self.svAirAccelerate != 0) then
self:AirAccelerate(Move, current, wishdir, wishspeed, self.svAirAccelerate)
end
-- if(self.SlowJumpLanding) then
-- ply.WasInAir = CurTime() + 0.6
-- end
end

if(self.OnMove) then
self:OnMove(ply, Move)
end
end

``````

The point with 1000 AA is that you have complete control while in the air, which is great for deathrun.