From 620f39df29fed446ab007e03c7b071f635379f1f Mon Sep 17 00:00:00 2001 From: navewindre Date: Sun, 9 Sep 2018 13:52:54 +0200 Subject: a --- internal_rewrite/visual_player.cpp | 128 +++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) (limited to 'internal_rewrite/visual_player.cpp') diff --git a/internal_rewrite/visual_player.cpp b/internal_rewrite/visual_player.cpp index 1594c88..2e94530 100644 --- a/internal_rewrite/visual_player.cpp +++ b/internal_rewrite/visual_player.cpp @@ -594,7 +594,135 @@ namespace features } } + #ifdef _DEBUG + static con_var< bool > dbg_multipoint{ &data::holder_, fnv( "dbg_multipoint" ), false }; + if( dbg_multipoint( ) ) { + auto should_multipoint = [ ]( int hitbox, bool moving ) -> bool { + auto& setting = g_settings.rage.multipoint; + + switch( hitbox ) { + case HITBOX_HEAD: + return setting.head; + case HITBOX_PELVIS: + case HITBOX_BODY: + return setting.stomach; + //case HITBOX_CHEST: + case HITBOX_UPPER_CHEST: + case HITBOX_THORAX: + return setting.chest; + case HITBOX_RIGHT_THIGH: + case HITBOX_LEFT_THIGH: + if( moving && g_settings.rage.ignore_limbs_moving ) + return false; + + if( g_settings.rage.preserve_fps && util::is_low_fps( ) ) + return false; + + return setting.thighs; + + case HITBOX_LEFT_CALF: + case HITBOX_RIGHT_CALF: + if( moving && g_settings.rage.ignore_limbs_moving ) + return false; + + if( g_settings.rage.preserve_fps && util::is_low_fps( ) ) + return false; + + return setting.calves; + default: + return false; + } + }; + + bool moving = ent->m_vecVelocity( ).length2d( ) > 0.1f && !ent->is_fakewalking( ); + + matrix3x4 bone_matrix[ 128 ]; + ent->ce( )->SetupBones( bone_matrix, 128, BONE_USED_BY_HITBOX, 0.f ); + + for( int hitbox = 0; hitbox < HITBOX_MAX; ++hitbox ) { + if( should_multipoint( hitbox, moving ) ) { + const auto model = ent->ce( )->GetModel( ); + if( !model ) continue; + + auto hdr = g_csgo.m_model_info( )->GetStudiomodel( model ); + if( !hdr ) continue; + + auto set = hdr->pHitboxSet( ent->m_nHitboxSet( ) ); + if( !set ) continue; + + //literally 20000 iq, the best multipoint + //im an actual fucking retard jesus christ + auto box = set->pHitbox( hitbox ); + if( !box ) continue; + + vec3_t center = ( box->bbmax + box->bbmin ) * 0.5f; + + float dist = box->m_flRadius; + + if( box->m_flRadius == -1.f ) + dist = center.dist_to( box->bbmin ) * 0.85f; + vec3_t min_dir = math::angle_vectors( math::vector_angles( center, box->bbmin ) ); + vec3_t min = center + min_dir * dist * g_settings.rage.active->m_hitbox_scale * 1.1f; + + if( box->m_flRadius == -1.f ) + dist = center.dist_to( box->bbmax ) * 0.85f; + vec3_t max_dir = math::angle_vectors( math::vector_angles( center, box->bbmax ) ); + vec3_t max = center + max_dir * dist * g_settings.rage.active->m_hitbox_scale * 1.1f; + + std::vector< vec3_t > points; + + points.push_back( center ); + + if( g_settings.rage.multipoint_enable( ) == 1 || + hitbox == HITBOX_LEFT_CALF || hitbox == HITBOX_RIGHT_CALF || + hitbox == HITBOX_LEFT_THIGH || hitbox == HITBOX_RIGHT_THIGH ) { + points.push_back( vec3_t{ min.x, min.y, center.z } ); + points.push_back( vec3_t{ max.x, min.y, center.z } ); + points.push_back( vec3_t{ min.x, max.y, center.z } ); + points.push_back( vec3_t{ max.x, max.y, center.z } ); + } + else if( g_settings.rage.multipoint_enable( ) == 2 ) { + points.push_back( vec3_t{ max.x, max.y, max.z } ); + points.push_back( vec3_t{ min.x, max.y, max.z } ); + points.push_back( vec3_t{ max.x, min.y, max.z } ); + points.push_back( vec3_t{ min.x, min.y, max.z } ); + + points.push_back( vec3_t{ max.x, max.y, min.z } ); + points.push_back( vec3_t{ min.x, max.y, min.z } ); + points.push_back( vec3_t{ max.x, min.y, min.z } ); + points.push_back( vec3_t{ min.x, min.y, min.z } ); + } + else if( g_settings.rage.multipoint_enable( ) == 3 ) { + points.push_back( vec3_t{ min.x, min.y, center.z } ); + points.push_back( vec3_t{ max.x, min.y, center.z } ); + points.push_back( vec3_t{ min.x, max.y, center.z } ); + points.push_back( vec3_t{ max.x, max.y, center.z } ); + + points.push_back( vec3_t{ max.x, max.y, max.z } ); + points.push_back( vec3_t{ min.x, max.y, max.z } ); + points.push_back( vec3_t{ max.x, min.y, max.z } ); + points.push_back( vec3_t{ min.x, min.y, max.z } ); + + points.push_back( vec3_t{ max.x, max.y, min.z } ); + points.push_back( vec3_t{ min.x, max.y, min.z } ); + points.push_back( vec3_t{ max.x, min.y, min.z } ); + points.push_back( vec3_t{ min.x, min.y, min.z } ); + } + + for( size_t i1 = 0; i1 < points.size( ); i1++ ) { + auto& it = points.at( i1 ); + + auto trans = math::vector_transform( it, bone_matrix[ box->bone ] ); + auto w2s_box = util::screen_transform( trans ); + + draw_circle( ( int )w2s_box.x, ( int )w2s_box.y, 3, esp_blue( ), 16 ); + } + } + } + } + + static con_var< bool > dbg_bt{ &data::holder_, fnv( "dbg_bt" ), false }; if( dbg_bt( ) && i == g_cheat.m_ragebot.get_shot_target( ) ) { auto hdr = g_csgo.m_model_info( )->GetStudiomodel( ent->ce( )->GetModel( ) ); -- cgit v1.2.3