summaryrefslogtreecommitdiff
path: root/internal_rewrite
diff options
context:
space:
mode:
Diffstat (limited to 'internal_rewrite')
-rw-r--r--internal_rewrite/interface.cpp1
-rw-r--r--internal_rewrite/update_clientside_animation.cpp15
-rw-r--r--internal_rewrite/util.cpp20
-rw-r--r--internal_rewrite/util.hpp2
4 files changed, 27 insertions, 11 deletions
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( );