Исходник Extrapolation from skeet reversed

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
1 Ноя 2024
Сообщения
42
Реакции
32
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
void LagCompensation::PlayerMove( LagRecord* record ) {
    vec3_t                start, end, normal;
    CGameTrace            trace;
    CTraceFilterWorldOnly filter;

    // define trace start.
    start = record->m_pred_origin;

    // move trace end one tick into the future using predicted velocity.
    end = start + ( record->m_pred_velocity * g_csgo.m_globals->m_interval );

    // trace.
    g_csgo.m_engine_trace->TraceRay( Ray( start, end, record->m_mins, record->m_maxs ), CONTENTS_SOLID, &filter, &trace );

    // we hit shit
    // we need to fix hit.
    if ( trace.m_fraction != 1.f ) {
        // fix sliding on planes.
        for ( int i{}; i < 2; ++i ) {
            if ( record->m_pred_velocity.length( ) == 0.f )
                break;

            record->m_pred_velocity -= trace.m_plane.m_normal * record->m_pred_velocity.dot( trace.m_plane.m_normal );

            float adjust = record->m_pred_velocity.dot( trace.m_plane.m_normal );
            if ( adjust < 0.f )
                record->m_pred_velocity -= ( trace.m_plane.m_normal * adjust );

            start = trace.m_endpos;
            end = start + ( record->m_pred_velocity * ( g_csgo.m_globals->m_interval * ( 1.f - trace.m_fraction ) ) );

            g_csgo.m_engine_trace->TraceRay( Ray( start, end, record->m_mins, record->m_maxs ), CONTENTS_SOLID, &filter, &trace );
            if ( trace.m_fraction == 1.f )
                break;
        }
    }

    // set new final origin.
    start = end = record->m_pred_origin = trace.m_endpos;

    // move endpos 2 units down.
    // this way we can check if we are in/on the ground.
    end.z -= 2.f;

    // trace.
    g_csgo.m_engine_trace->TraceRay( Ray( start, end, record->m_mins, record->m_maxs ), CONTENTS_SOLID, &filter, &trace );

    // strip onground flag.
    if ( trace.m_fraction == 1.f && trace.m_plane.m_normal.z < 0.7f )
        record->m_pred_flags &= ~FL_ONGROUND;

    // add back onground flag if we are onground.
    else
        record->m_pred_flags |= FL_ONGROUND;

    /*
    if ( ( LOBYTE( v216.m[ 0 ][ 1 ] ) & 1 ) != 0 && ( v308 & 1 ) == 0 )
    {
        if ( v327 )
            *( v327 + 289 ) = 1;
        v144 = *( ( anim_layers ^ *anim_layers_xor ) + player );
        v144[ 4 ].m_cycle = 0.0;
        v144[ 4 ].m_weight = 0.0;
        if ( v282 && ( v308 & 6 ) == 6 )
            v311 = v311 + 9.0;
    }
    */

    // s/o estk ^_^
    if ( record->m_pred_flags & FL_ONGROUND )
        record->m_layers[ 4 ].m_cycle = record->m_layers[ 4 ].m_weight = 0.f;
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
does the if statement that's commented out have anything to do with the player ducking? how its written seems that way but haven't tried to look into reversing atm to try checking
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу