Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void c_movement::run(c_cs_player* local, c_user_cmd* cmd)
- {
- bhop(local, cmd);
- autostrafe(local, cmd);
- }
- template<class T, class U>
- inline T clamp_value(T in, U low, U high)
- {
- if (in <= low)
- return low;
- else if (in >= high)
- return high;
- else
- return in;
- }
- void c_movement::autostrafe(c_cs_player* local, c_user_cmd* cmd)
- {
- const auto move_type = local->get_move_type();
- const auto flags = local->get_flags();
- //if (!config.misc.mis_autostrafe)
- // return;
- if (move_type != c_cs_player::movetype_ladder && move_type != c_cs_player::movetype_noclip && !(flags & c_cs_player::in_water))
- if (!GetAsyncKeyState(VK_SPACE) || local->get_velocity().length2d() < 0.5)
- return;
- if (!(local->get_flags() & c_base_player::flags::on_ground))
- {
- static float cl_sidespeed = cvar()->find_var("cl_sidespeed")->get_float();
- if (fabsf(cmd->mousedx > 2))
- {
- cmd->sidemove = (cmd->mousedx < 0.f) ? -cl_sidespeed : cl_sidespeed;
- return;
- }
- {
- if (GetAsyncKeyState('S'))
- {
- cmd->viewangles.y -= 180;
- }
- else if (GetAsyncKeyState('D'))
- {
- cmd->viewangles.y -= 90;
- }
- else if (GetAsyncKeyState('A'))
- {
- cmd->viewangles.y += 90;
- }
- }
- if (!local->get_velocity().length2d() > 0.5 || local->get_velocity().length2d() == NAN || local->get_velocity().length2d() == INFINITE)
- {
- cmd->forwardmove = 400;
- return;
- }
- cmd->forwardmove = clamp_value(5850.f / local->get_velocity().length2d(), -400, 400);
- if ((cmd->forwardmove < -400 || cmd->forwardmove > 400))
- cmd->forwardmove = 0;
- const auto vel = local->get_velocity();
- const float y_vel = rad2deg(atan2(vel.y, vel.x));
- const float diff_ang = math::normalize_yaw(cmd->viewangles.y - y_vel);
- cmd->sidemove = (diff_ang > 0.0) ? -cl_sidespeed : cl_sidespeed;
- cmd->viewangles.y = math::normalize_yaw(cmd->viewangles.y - diff_ang);
- }
- }
- void c_movement::bhop(c_cs_player* local, c_user_cmd* cmd)
- {
- if (local->get_move_type() == c_cs_player::movetype_ladder || local->get_move_type() == c_cs_player::movetype_noclip)
- return;
- if (local->get_velocity().length() > 0)
- {
- if (cmd->buttons & c_user_cmd::jump)
- {
- if (!(local->get_flags() & c_cs_player::on_ground))
- cmd->buttons &= ~c_user_cmd::jump;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement