Login to ZARP
|
local ticksOnGround, onGround, inAir = {}, {}, {}
hook.Add ("Move", "CrouchBugFix", function( ply, data )
if not IsFirstTimePredicted() then return end
if ply:IsOnGround() then
if ticksOnGround[ ply ] then
if ticksOnGround[ ply ] > 12 then
if not onGround[ ply ] then
ply:SetDuckSpeed(0.4)
ply:SetUnDuckSpeed(0.2)
onGround[ ply ] = true
end
else
ticksOnGround[ ply ] = ticksOnGround[ ply ] + 1
if ticksOnGround[ ply ] == 1 then
inAir[ ply ] = nil
elseif ticksOnGround[ ply ] > 1 and data:KeyDown( IN_JUMP ) then
local vel = data:GetVelocity()
vel.z = ply:GetJumpPower()
ply:SetDuckSpeed( 0 )
ply:SetUnDuckSpeed( 0 )
ticksOnGround[ ply ] = 0
data:SetVelocity( vel )
end
end
else
ticksOnGround[ ply ] = 0
end
elseif not inAir[ ply ] then
ticksOnGround[ ply ] = 0
onGround[ ply ] = nil
inAir[ ply ] = true
ply:SetDuckSpeed( 0 )
ply:SetUnDuckSpeed( 0 )
end
end )
hook.Add ("PlayerDisconnect", "RemoveCrouchBugFix", function( ply )
ticksOnGround[ ply ] = nil
onGround[ ply ] = nil
inAir[ ply ] = nil
end )