From 620f39df29fed446ab007e03c7b071f635379f1f Mon Sep 17 00:00:00 2001 From: navewindre Date: Sun, 9 Sep 2018 13:52:54 +0200 Subject: a --- internal_rewrite/ragebot.cpp | 100 +++++++++++++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 33 deletions(-) (limited to 'internal_rewrite/ragebot.cpp') diff --git a/internal_rewrite/ragebot.cpp b/internal_rewrite/ragebot.cpp index a5d2762..54b74d9 100644 --- a/internal_rewrite/ragebot.cpp +++ b/internal_rewrite/ragebot.cpp @@ -74,21 +74,37 @@ namespace features vec3_t c_ragebot::multipoint( c_base_player* ent, int hitbox, float* out_dmg ) { 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: - return g_settings.rage.multipoint >= 1; case HITBOX_BODY: + return setting.stomach; + //case HITBOX_CHEST: case HITBOX_UPPER_CHEST: case HITBOX_THORAX: - if( util::is_low_fps( ) && g_settings.rage.preserve_fps ) - return false; - return g_settings.rage.multipoint >= 2; - case HITBOX_LEFT_THIGH: + return setting.chest; case HITBOX_RIGHT_THIGH: - if( util::is_low_fps( ) && g_settings.rage.preserve_fps ) + 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; - return g_settings.rage.multipoint >= 3 && !moving; + + if( g_settings.rage.preserve_fps && util::is_low_fps( ) ) + return false; + + return setting.calves; default: return false; } @@ -142,37 +158,55 @@ namespace features static int point_index[ 65 ][ HITBOX_MAX ]; - std::array< vec3_t, 8 > points = { - vec3_t{ min.x, min.y, min.z }, - vec3_t{ min.x, max.y, min.z }, - vec3_t{ max.x, max.y, min.z }, - vec3_t{ max.x, min.y, min.z }, - vec3_t{ max.x, max.y, max.z }, - vec3_t{ min.x, max.y, max.z }, - vec3_t{ min.x, min.y, max.z }, - vec3_t{ max.x, min.y, max.z } - }; - - vec3_t lt{ }, - rt{ }, - lb{ }, - rb{ }; - - vec3_t lt_ang{ FLT_MAX, FLT_MAX, 0.f }, - rt_ang{ FLT_MAX, -FLT_MAX, 0.f }, - lb_ang{ -FLT_MAX, FLT_MAX, 0.f }, - rb_ang{ -FLT_MAX, -FLT_MAX, 0.f }; - - vec3_t transformed_center = math::vector_transform( vec3_t( min + max ) * 0.5f, bone_matrix[ box->bone ] ); - vec3_t center_ang = math::vector_angles( g_ctx.m_local->get_eye_pos( ), transformed_center ); + std::vector< vec3_t > points; + + 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 } ); + } float min_dmg = get_min_dmg( ent ); - auto& point_idx = point_index[ ent->ce( )->GetIndex( ) ][ hitbox ]; - int count = std::max< int >( ( int )( g_csgo.m_globals->m_frametime / TICK_INTERVAL( ) ), 1 ); + float percentage = g_settings.rage.multipoint_scale( ) * 0.01f; + int mul = ( int )( g_csgo.m_globals->m_frametime / TICK_INTERVAL( ) ); + + int count = math::min< int >( math::max< int >( mul * points.size( ) * percentage, + points.size( ) * percentage, + 1 ), points.size( ) ); - for( int i{ }; i < std::min( count, 9 ); ++i ) { + for( int i{ }; i < count; ++i ) { point_idx %= points.size( ); vec3_t point = points[ point_idx ]; -- cgit v1.2.3