Исходник Corrected ResolveStand for 2018 hvh

Участник
Статус
Оффлайн
Регистрация
6 Апр 2021
Сообщения
338
Реакции[?]
207
Поинты[?]
113K
C++:
void Resolver::ResolveStand( AimPlayer* data, LagRecord* record ) {
    // get predicted away angle for the player.
    float away = GetAwayAngle( record );

    // pointer for easy access.
    LagRecord* move = &data->m_walk_record;
    if( move->m_sim_time > 0.f ) {
        vec3_t delta = move->m_origin - record->m_origin;

        // check if moving record is close.
        if( delta.length( ) <= 128.f ) {
            // indicate that we are using the moving lby.
            data->m_moved = true;
        }
    }

    float diff = math::NormalizedAngle( record->m_body - move->m_body );
    float delta = record->m_anim_time - move->m_anim_time;

    // Check if delta is within a valid range
    if ( delta >= 0.22f && delta <= 0.3f ) {
        // Check if record's animation time is greater than or equal to the body update time
        if ( record->m_anim_time >= data->m_body_update ) {
            // Check if body index is less than or equal to 3
            if ( data->m_body_index <= 3 ) {
                record->m_eye_angles.y = record->m_body;
                data->m_body_update = record->m_anim_time + 1.1f;
                record->m_mode = Modes::RESOLVE_BODY;
            }
            else {
                record->m_mode = Modes::RESOLVE_STAND1;
                C_AnimationLayer* curr = &record->m_layers[ 3 ];
                int act = data->m_player->GetSequenceActivity( curr->m_sequence );

                record->m_eye_angles.y = move->m_body;

                // Check if stand index is divisible by 3 with no remainder
                if ( !( data->m_stand_index % 3 ) ) {
                    record->m_eye_angles.y += g_csgo.RandomFloat( -35.f, 35.f );
                }

                // Check if stand index is greater than 6 and act is not equal to 980
                if ( data->m_stand_index > 6 && act != 980 ) {
                    record->m_eye_angles.y = move->m_body + 180.f;
                }
                else if ( data->m_stand_index > 4 && act != 980 ) {
                    record->m_eye_angles.y = away + 180.f;
                }
            }
        }
        else {
            record->m_eye_angles.y = move->m_body;
            record->m_mode = Modes::RESOLVE_STOPPED_MOVING;
        }
    }

    // stand2 -> no known last move.
    record->m_mode = Modes::RESOLVE_STAND2;

    // Calculate the `m_eye_angles.y` value based on the `data->m_stand_index2 % 6` value
    switch ( data->m_stand_index2 % 6 ) {
    case 0:
        record->m_eye_angles.y = away + 180.f; // The angle 180 degrees away from `away`
        break;

    case 1:
        record->m_eye_angles.y = record->m_body; // The current body angle
        break;

    case 2:
        record->m_eye_angles.y = record->m_body + 180.f; // The current body angle plus 180 degrees
        break;

    case 3:
        record->m_eye_angles.y = record->m_body + 110.f; // The current body angle plus 110 degrees
        break;

    case 4:
        record->m_eye_angles.y = record->m_body - 110.f; // The current body angle minus 110 degrees
        break;

    case 5:
        record->m_eye_angles.y = away; // The `away` angle
        break;

    default:
        break;
    }

}
 
Сверху Снизу