diff options
Diffstat (limited to 'cheat/internal_rewrite/ragebot_resolver.cpp')
| -rw-r--r-- | cheat/internal_rewrite/ragebot_resolver.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/cheat/internal_rewrite/ragebot_resolver.cpp b/cheat/internal_rewrite/ragebot_resolver.cpp index 78a6718..e562dd6 100644 --- a/cheat/internal_rewrite/ragebot_resolver.cpp +++ b/cheat/internal_rewrite/ragebot_resolver.cpp @@ -49,15 +49,25 @@ namespace features if( !( ent->m_fFlags( ) & FL_ONGROUND ) || ( ent->get_anim_velocity( ).length2d( ) > 0.1f && !ent->is_fakewalking( ) ) )
return -1;
+ if( g_ctx.m_past_origins.empty( ) )
+ return -1; // sanity check
+
int ret_dir = -1;
float cur_damage = 0.f;
vec3_t enemy_pos = ent->m_vecOrigin( );
enemy_pos.z = ent->get_hitbox_pos( 0 ).z;
+ auto nci = g_csgo.m_engine( )->GetNetChannelInfo( );
+ float out_latency = nci->GetLatency( 0 );
+ auto enemy_ping = ent->get_ping( ) * 0.001f;
+
+ auto delay_ticks = std::clamp< int >( TIME_TO_TICKS( enemy_ping + out_latency ), 0, g_ctx.m_past_origins.size( ) - 1 );
+ vec3_t delayed_pos = g_ctx.m_past_origins.at( delay_ticks );
+
vec3_t local_pos = g_ctx.m_local->get_eye_pos( );
local_pos -= g_ctx.m_local->m_vecOrigin( );
- local_pos += g_ctx.m_last_origin;
+ local_pos += delayed_pos;
vec3_t aim_angle = math::vector_angles(
enemy_pos,
|
