diff options
| author | navewindre <boneyaard@gmail.com> | 2018-09-01 17:54:45 +0200 |
|---|---|---|
| committer | navewindre <boneyaard@gmail.com> | 2018-09-01 17:54:45 +0200 |
| commit | 89d0110da2e65405fcbdac0e24f4fcc5cdce4c1c (patch) | |
| tree | fc33ee66cfc1b104c355391386abfccf1e5b94ea | |
| parent | aeef9e6d8241b4f7451a26f5af9645c1a6e5c4d9 (diff) | |
uh
| -rw-r--r-- | internal_rewrite/interface.cpp | 1 | ||||
| -rw-r--r-- | internal_rewrite/update_clientside_animation.cpp | 15 | ||||
| -rw-r--r-- | internal_rewrite/util.cpp | 20 | ||||
| -rw-r--r-- | internal_rewrite/util.hpp | 2 |
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( );
|
