From 89d0110da2e65405fcbdac0e24f4fcc5cdce4c1c Mon Sep 17 00:00:00 2001 From: navewindre Date: Sat, 1 Sep 2018 17:54:45 +0200 Subject: uh --- internal_rewrite/interface.cpp | 1 + internal_rewrite/update_clientside_animation.cpp | 15 ++++++++++++--- internal_rewrite/util.cpp | 20 +++++++++++++------- internal_rewrite/util.hpp | 2 +- 4 files changed, 27 insertions(+), 11 deletions(-) (limited to 'internal_rewrite') diff --git a/internal_rewrite/interface.cpp b/internal_rewrite/interface.cpp index baf4f8a..1d1be5b 100644 --- a/internal_rewrite/interface.cpp +++ b/internal_rewrite/interface.cpp @@ -22,6 +22,7 @@ bool factory::create_interfaces( c_csgo* instance, header_t* header ) { header->vguimatsurface = ( uintptr_t )GetModuleHandleA( "vguimatsurface.dll" ); header->shaderapidx9 = ( uintptr_t )GetModuleHandleA( "shaderapidx9.dll" ); header->vstdlib = ( uintptr_t )GetModuleHandleA( "vstdlib.dll" ); + header->steam_api = ( uintptr_t )GetModuleHandleA( "steam_api.dll" ); #endif instance->create( &instance->m_chl, xors( "VClient" ) ); diff --git a/internal_rewrite/update_clientside_animation.cpp b/internal_rewrite/update_clientside_animation.cpp index e05d6c2..009250b 100644 --- a/internal_rewrite/update_clientside_animation.cpp +++ b/internal_rewrite/update_clientside_animation.cpp @@ -43,11 +43,20 @@ void __fastcall hooks::update_clientside_animation( void* ecx_, void* edx_ ) { vec3_t real_angle = g_ctx.m_thirdperson_angle; - float min_pitch = 10.0f; + float pitch; if( g_ctx.m_local->get_animstate( )->m_bInHitGroundAnimation && ( g_ctx.m_local->m_fFlags( ) & FL_ONGROUND ) ) { - if( real_angle.x > min_pitch ) { - real_angle.x = -min_pitch; + bool dist = g_settings.rage.enabled( ) && g_settings.rage.selection_type( ) == 1; + int target = util::get_closest_player( dist ); + + if( target != -1 ) { + auto t = g_csgo.m_entlist( )->GetClientEntity( target ); + + pitch = math::vector_angles( ent->m_vecOrigin( ), t->m_vecOrigin( ) ).x; } + else + pitch = -10.f; + + real_angle.x = pitch; } g_csgo.m_prediction( )->SetViewAngles( real_angle ); diff --git a/internal_rewrite/util.cpp b/internal_rewrite/util.cpp index ee815c5..9bc315f 100644 --- a/internal_rewrite/util.cpp +++ b/internal_rewrite/util.cpp @@ -24,8 +24,8 @@ bool util::is_low_fps( ) { return g_csgo.m_globals->m_frametime > g_csgo.m_globals->m_interval_per_tick; } -int util::get_closest_player( ) { - float cur_fov{ 360.f }; +int util::get_closest_player( bool dist ) { + float cur_fov = FLT_MAX; int ret{ -1 }; vec3_t viewangles{ }; vec3_t local_pos{ }; @@ -47,13 +47,19 @@ int util::get_closest_player( ) { continue; } - auto ang = math::vector_angles( local_pos, ent->get_hitbox_pos( 0 ) ); - ang.clamp( ); + float distance = 0.f; + if( dist ) { + distance = g_ctx.m_local->m_vecOrigin( ).dist_to( ent->m_vecOrigin( ) ); + } + else { + auto ang = math::vector_angles( local_pos, ent->get_hitbox_pos( 0 ) ); + ang.clamp( ); + distance = ( viewangles - ang ).clamp( ).length2d( ); + } - float fov = ( viewangles - ang ).clamp( ).length2d( ); - if( fov < cur_fov ) { + if( distance < cur_fov ) { ret = i; - cur_fov = fov; + cur_fov = distance; } } diff --git a/internal_rewrite/util.hpp b/internal_rewrite/util.hpp index c97f8c6..34b5f93 100644 --- a/internal_rewrite/util.hpp +++ b/internal_rewrite/util.hpp @@ -102,7 +102,7 @@ extern void calculate_spread_runtime( ); extern float get_total_latency( ); extern float get_lerptime( ); -extern int get_closest_player( ); +extern int get_closest_player( bool distance = false ); extern vec2_t screen_transform( vec3_t world ); extern const char* definition_index_to_name( int index ); extern void disable_pvs( ); -- cgit v1.2.3