hello yall.
here is my standalone quick stop for css, that u can implement in ur hak.
call this before prediction in createmove.
here is my standalone quick stop for css, that u can implement in ur hak.
call this before prediction in createmove.
C-like:
quick_stop = function(self, cmd, local_player, engine_angles)
if ctx.local_player:in_air() or local_player:move_type() == sdk.MOVETYPE.NOCLIP then
return
end;
local move_mask = bit.bor(sdk.IN.FORWARD, sdk.IN.BACK, sdk.IN.MOVELEFT, sdk.IN.MOVERIGHT, sdk.IN.JUMP);
if bit.band(cmd.buttons, move_mask) ~= 0 then
return
end;
local speed = ctx.local_player.velocity:length_2d();
if speed < 0.1 then
return
end;
local friction = cvar.find_var("sv_friction"):get_float();
local accelerate = cvar.find_var("sv_accelerate"):get_float();
local stopspeed = cvar.find_var("sv_stopspeed"):get_float();
local maxspeed = math.min(cvar.find_var("sv_maxspeed"):get_float(), 250);
local dt = globalvars.get_interval_per_tick();
local control = speed < stopspeed and stopspeed or speed;
local remaining = speed - control * friction * dt;
local duck_mult = 0.34;
if remaining <= 0 then
return
end;
local scale = remaining / speed;
local wish_dir = vector2.new(-(ctx.local_player.velocity.x * scale) / remaining, -(ctx.local_player.velocity.y * scale) / remaining);
local ducking = bit.band(ctx.local_player.flags, sdk.FL.DUCKING) ~= 0 or bit.band(cmd.buttons, sdk.IN.DUCK) ~= 0;
local max_wish = ducking and maxspeed * duck_mult or maxspeed;
local wishspeed = math.min(remaining / (accelerate * dt), max_wish);
local cmd_speed = ducking and wishspeed / duck_mult or wishspeed;
if cmd_speed > maxspeed then cmd_speed = maxspeed end;
local rad_angle = engine_angles.y * 0.0174532925199433; -- p / 180
local cos_angle, sin_angle = math.cos(rad_angle), math.sin(rad_angle);
cmd.forwardmove = (wish_dir.x * cos_angle + wish_dir.y * sin_angle) * cmd_speed;
cmd.sidemove = (wish_dir.x * sin_angle - wish_dir.y * cos_angle) * cmd_speed;
end
Last edited: