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
	
	if(addspeed <= 0) then
		return
	end
	
	local accelspeed = accel * wishspeed * FrameTime()
	
	if(accelspeed > addspeed) then
		accelspeed = addspeed
	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.