Advertisement
Guest User

Untitled

a guest
Nov 16th, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. void aimbot::extrapolate(C_BaseEntity* player, Vector& origin, Vector& velocity, int& flags, bool on_ground)
  2. {
  3. static const auto sv_gravity = g_pCvar->FindVar("sv_gravity");
  4. static const auto sv_jump_impulse = g_pCvar->FindVar("sv_jump_impulse");
  5.  
  6. if (!(flags & FL_ONGROUND))
  7. velocity.z -= TICKS_TO_TIME(sv_gravity->GetFloat());
  8. else if (player->GetFlags() & FL_ONGROUND && !on_ground)
  9. velocity.z = sv_jump_impulse->GetFloat();
  10.  
  11. const auto src = origin;
  12. auto end = src + velocity * g_pGlobalVars->intervalPerTick;
  13.  
  14. Ray_t r;
  15. r.Init(src, end, player->GetMins(), player->GetMaxs());
  16.  
  17. trace_t t{};
  18. CTraceFilter filter;
  19. filter.pSkip1 = player;
  20.  
  21. g_pTrace->TraceRay(r, mask_playersolid, &filter, &t);
  22.  
  23. if (t.flFraction != 1.f)
  24. {
  25. for (auto i = 0; i < 2; i++)
  26. {
  27. velocity -= t.plane.normal * velocity.Dot(t.plane.normal);
  28.  
  29. const auto dot = velocity.Dot(t.plane.normal);
  30. if (dot < 0.f)
  31. velocity -= Vector(dot * t.plane.normal.x,
  32. dot * t.plane.normal.y, dot * t.plane.normal.z);
  33.  
  34. end = t.end + velocity * TICKS_TO_TIME(1.f - t.flFraction);
  35.  
  36. r.Init(t.end, end, player->GetMins(), player->GetMaxs());
  37. g_pTrace->TraceRay(r, mask_playersolid, &filter, &t);
  38.  
  39. if (t.flFraction == 1.f)
  40. break;
  41. }
  42. }
  43.  
  44. origin = end = t.end;
  45. end.z -= 2.f;
  46.  
  47. r.Init(origin, end, player->GetMins(), player->GetMaxs());
  48. g_pTrace->TraceRay(r, mask_playersolid, &filter, &t);
  49.  
  50. flags &= ~FL_ONGROUND;
  51.  
  52. if (t.DidHit() && t.plane.normal.z > .7f)
  53. flags |= FL_ONGROUND;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement