Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. void c_movement::run(c_cs_player* local, c_user_cmd* cmd)
  2. {
  3. bhop(local, cmd);
  4. autostrafe(local, cmd);
  5. }
  6.  
  7. template<class T, class U>
  8. inline T clamp_value(T in, U low, U high)
  9. {
  10. if (in <= low)
  11. return low;
  12. else if (in >= high)
  13. return high;
  14. else
  15. return in;
  16. }
  17.  
  18.  
  19. void c_movement::autostrafe(c_cs_player* local, c_user_cmd* cmd)
  20. {
  21. const auto move_type = local->get_move_type();
  22. const auto flags = local->get_flags();
  23.  
  24. //if (!config.misc.mis_autostrafe)
  25. // return;
  26.  
  27. if (move_type != c_cs_player::movetype_ladder && move_type != c_cs_player::movetype_noclip && !(flags & c_cs_player::in_water))
  28.  
  29. if (!GetAsyncKeyState(VK_SPACE) || local->get_velocity().length2d() < 0.5)
  30. return;
  31.  
  32. if (!(local->get_flags() & c_base_player::flags::on_ground))
  33. {
  34. static float cl_sidespeed = cvar()->find_var("cl_sidespeed")->get_float();
  35. if (fabsf(cmd->mousedx > 2))
  36. {
  37. cmd->sidemove = (cmd->mousedx < 0.f) ? -cl_sidespeed : cl_sidespeed;
  38. return;
  39. }
  40. {
  41. if (GetAsyncKeyState('S'))
  42. {
  43. cmd->viewangles.y -= 180;
  44. }
  45. else if (GetAsyncKeyState('D'))
  46. {
  47. cmd->viewangles.y -= 90;
  48. }
  49. else if (GetAsyncKeyState('A'))
  50. {
  51. cmd->viewangles.y += 90;
  52. }
  53. }
  54. if (!local->get_velocity().length2d() > 0.5 || local->get_velocity().length2d() == NAN || local->get_velocity().length2d() == INFINITE)
  55. {
  56. cmd->forwardmove = 400;
  57. return;
  58. }
  59.  
  60. cmd->forwardmove = clamp_value(5850.f / local->get_velocity().length2d(), -400, 400);
  61. if ((cmd->forwardmove < -400 || cmd->forwardmove > 400))
  62. cmd->forwardmove = 0;
  63.  
  64. const auto vel = local->get_velocity();
  65. const float y_vel = rad2deg(atan2(vel.y, vel.x));
  66. const float diff_ang = math::normalize_yaw(cmd->viewangles.y - y_vel);
  67.  
  68. cmd->sidemove = (diff_ang > 0.0) ? -cl_sidespeed : cl_sidespeed;
  69. cmd->viewangles.y = math::normalize_yaw(cmd->viewangles.y - diff_ang);
  70. }
  71. }
  72.  
  73. void c_movement::bhop(c_cs_player* local, c_user_cmd* cmd)
  74. {
  75. if (local->get_move_type() == c_cs_player::movetype_ladder || local->get_move_type() == c_cs_player::movetype_noclip)
  76. return;
  77.  
  78. if (local->get_velocity().length() > 0)
  79. {
  80. if (cmd->buttons & c_user_cmd::jump)
  81. {
  82. if (!(local->get_flags() & c_cs_player::on_ground))
  83. cmd->buttons &= ~c_user_cmd::jump;
  84.  
  85. }
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement