Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. #include "../../../dependencies/common_includes.hpp"
  2. #include "movement.hpp"
  3.  
  4. c_movement movement;
  5.  
  6. auto flags_backup = 0;
  7.  
  8. void c_movement::bunnyhop(c_usercmd* user_cmd) noexcept {
  9. if (!config_system.item.bunny_hop || !config_system.item.misc_enabled)
  10. return;
  11.  
  12. auto local_player = reinterpret_cast<player_t*>(interfaces::entity_list->get_client_entity(interfaces::engine->get_local_player()));
  13. const int hitchance = config_system.item.bunny_hop_hitchance;
  14. const int restrict_limit = 12;
  15. const int hop_limit = config_system.item.bunny_hop_maximum_value;
  16. const int min_hop = config_system.item.bunny_hop_minimum_value;
  17. static int hops_restricted = 0;
  18. static int hops_hit = 0;
  19.  
  20. if (!local_player)
  21. return;
  22.  
  23. if (local_player->move_type() == movetype_ladder || local_player->move_type() == movetype_noclip)
  24. return;
  25.  
  26. if (user_cmd->buttons & in_jump && !(local_player->flags() & fl_onground)) {
  27. user_cmd->buttons &= ~in_jump;
  28. hops_restricted = 0;
  29. }
  30.  
  31. else if ((rand() % 100 > hitchance && hops_restricted < restrict_limit) || (hop_limit > 0 && hops_hit > hop_limit && min_hop > 0 && hops_hit > min_hop)) {
  32. user_cmd->buttons &= ~in_jump;
  33. hops_restricted++;
  34. hops_hit = 0;
  35. }
  36. else {
  37. hops_hit++;
  38. }
  39. }
  40.  
  41. void c_movement::edge_jump_pre_prediction(c_usercmd* user_cmd) noexcept {
  42. auto local_player = reinterpret_cast<player_t*>(interfaces::entity_list->get_client_entity(interfaces::engine->get_local_player()));
  43.  
  44. if (!config_system.item.edge_jump)
  45. return;
  46.  
  47. if (!GetAsyncKeyState(config_system.item.edge_jump_key))
  48. return;
  49.  
  50. if (!local_player)
  51. return;
  52.  
  53. if (local_player->move_type() == movetype_ladder || local_player->move_type() == movetype_noclip)
  54. return;
  55.  
  56. flags_backup = local_player->flags();
  57. }
  58.  
  59. void c_movement::edge_jump_post_prediction(c_usercmd* user_cmd) noexcept {
  60. auto local_player = reinterpret_cast<player_t*>(interfaces::entity_list->get_client_entity(interfaces::engine->get_local_player()));
  61.  
  62. if (!config_system.item.edge_jump)
  63. return;
  64.  
  65. if (!GetAsyncKeyState(config_system.item.edge_jump_key))
  66. return;
  67.  
  68. if (!local_player)
  69. return;
  70.  
  71. if (local_player->move_type() == movetype_ladder || local_player->move_type() == movetype_noclip)
  72. return;
  73.  
  74. if (flags_backup & fl_onground && !(local_player->flags() & fl_onground))
  75. user_cmd->buttons |= in_jump;
  76.  
  77. if (!(local_player->flags() & fl_onground) && config_system.item.edge_jump_duck_in_air)
  78. user_cmd->buttons |= in_duck;
  79. }
  80.  
  81. void c_movement::strafe(c_usercmd* user_cmd)noexcept {
  82. if (!config_system.item.strafer)
  83. return;
  84.  
  85. auto local_player = reinterpret_cast<player_t*>(interfaces::entity_list->get_client_entity(interfaces::engine->get_local_player()));
  86. if (!local_player || !local_player->is_alive())
  87. return;
  88.  
  89. if (local_player->flags() & fl_onground && !(user_cmd->buttons & in_jump))
  90. return;
  91.  
  92. if (local_player->move_type() & (movetype_ladder | movetype_noclip))
  93. return;
  94.  
  95. vec3_t viewangles;
  96. interfaces::engine->get_view_angles_alternative(viewangles);
  97.  
  98. static bool side_switch = false;
  99. side_switch = !side_switch;
  100.  
  101. user_cmd->forwardmove = 0.f;
  102. user_cmd->sidemove = side_switch ? 450.f : -450.f;
  103.  
  104. float velocity_yaw = local_player->velocity().y;
  105.  
  106. float rotation = std::clamp< float >(rad_to_deg(std::atan2(15.f, local_player->velocity().Length2D())), 0.f, 90.f);
  107.  
  108. float abs_yaw = std::fabs(math.normalize_angle(velocity_yaw - viewangles.y));
  109.  
  110. float ideal_yaw_rotation = (side_switch ? rotation : -rotation) + (abs_yaw < 5.f ? velocity_yaw : viewangles.y);
  111.  
  112. float cos_rot = std::cos(deg_to_rad(viewangles.y - ideal_yaw_rotation));
  113. float sin_rot = std::sin(deg_to_rad(viewangles.y - ideal_yaw_rotation));
  114.  
  115. user_cmd->forwardmove = (cos_rot * user_cmd->forwardmove) - (sin_rot * user_cmd->sidemove);
  116. user_cmd->sidemove = (sin_rot * user_cmd->forwardmove) + (cos_rot * user_cmd->sidemove);
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement