Вопрос Multidirectional Autostrafer otcv3

skeet uid: 10001
Начинающий
Статус
Оффлайн
Регистрация
15 Мар 2021
Сообщения
145
Реакции[?]
17
Поинты[?]
0
Как вантапу сделать автострефер, как в таких читах, как пандора, скит, неверлуз, фатал или супремаси? что бы при изменении направления движения скорость не падала. Если нет, то с каким читом можно юзать вантап, в котором будет данный автострейфер? Спасибо
Upd: В типе автострейфера вантапа "rage" как раз и реализованы идеальные стрейфы. А в directional какая-то фигня...
Updd: В рейдж автострейфере тоже не идельные стрейфы. Просто сёркл стрейфер нормальный
Upddd: Я раньше пытался засунуть код австострейфера супермаси в осирис. Почти получилось, но он был хуже вантапа из-за какого-то "math", который не хотел воспринимать осирис. Я не силён в программировании. Вообще. Просто искал сходство частей кода автострейфвера супремаси в коде всего осириса и так мог кое-как портировать.
Updddd: Выбрал осирис, т.к. это чит, который может работать одновременно с вантапом. Автосрефер у осириса это капец... Там 5 строк что-ли. В супремаси 50 (образно)
 
Последнее редактирование:
EBLAN
Пользователь
Статус
Оффлайн
Регистрация
7 Фев 2021
Сообщения
465
Реакции[?]
146
Поинты[?]
2K
Это не даёт гарантию на то что автострейф будет например как в фаталити или пандоре но лучше чем просто directional на 100 ставить.

JavaScript:
UI.AddSliderInt( "Turn speed", 1, 2 );

function fix()
{
    var CustomSpeed = UI.GetValue( "Misc", "JAVASCRIPT", "Script items", "Turn speed" );
    var VelocityProp = Entity.GetProp(Entity.GetLocalPlayer(), 'CBasePlayer', 'm_vecVelocity[0]');
    Velocity = Math.sqrt(VelocityProp[0] * VelocityProp[0] + VelocityProp[1] * VelocityProp[1]),
    parseFloat(Velocity);
    Velocity2 = Velocity/1.5;
    VelocityCus = Velocity2/CustomSpeed;
    UI.SetValue( "Misc", "GENERAL", "Movement", "Turn speed", VelocityCus );
}


Cheat.RegisterCallback('CreateMove', 'fix');
Настройки фейклагов:
Limit : 14
Jitter : 25
Trigger limit: 14
Jitter move - ON
imgonline-com-ua-2to1-jZoYMdG9RUgkw.pnggAy5uvd.png
 

Вложения

Клоун по жизни
Забаненный
Статус
Оффлайн
Регистрация
15 Мар 2021
Сообщения
58
Реакции[?]
13
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
JavaScript:
UI.AddSliderInt( "Turn speed", 1, 2 );

function fix()
{
    var CustomSpeed = UI.GetValue( "Misc", "JAVASCRIPT", "Script items", "Turn speed" );
    var VelocityProp = Entity.GetProp(Entity.GetLocalPlayer(), 'CBasePlayer', 'm_vecVelocity[0]');
    Velocity = Math.sqrt(VelocityProp[0] * VelocityProp[0] + VelocityProp[1] * VelocityProp[1]),
    parseFloat(Velocity);
    Velocity2 = Velocity/1.5;
    VelocityCus = Velocity2/CustomSpeed;
    UI.SetValue( "Misc", "GENERAL", "Movement", "Turn speed", VelocityCus );
}


Cheat.RegisterCallback('CreateMove', 'fix');
Настройки фейклагов:
Limit : 14
Jitter : 25
Trigger limit: 14
Jitter move - ON
Посмотреть вложение 139606Посмотреть вложение 139607
Нормально разве помогает?
 
skeet uid: 10001
Начинающий
Статус
Оффлайн
Регистрация
15 Мар 2021
Сообщения
145
Реакции[?]
17
Поинты[?]
0
Это не даёт гарантию на то что автострейф будет например как в фаталити или пандоре но лучше чем просто directional на 100 ставить.

JavaScript:
UI.AddSliderInt( "Turn speed", 1, 2 );

function fix()
{
    var CustomSpeed = UI.GetValue( "Misc", "JAVASCRIPT", "Script items", "Turn speed" );
    var VelocityProp = Entity.GetProp(Entity.GetLocalPlayer(), 'CBasePlayer', 'm_vecVelocity[0]');
    Velocity = Math.sqrt(VelocityProp[0] * VelocityProp[0] + VelocityProp[1] * VelocityProp[1]),
    parseFloat(Velocity);
    Velocity2 = Velocity/1.5;
    VelocityCus = Velocity2/CustomSpeed;
    UI.SetValue( "Misc", "GENERAL", "Movement", "Turn speed", VelocityCus );
}


Cheat.RegisterCallback('CreateMove', 'fix');
Настройки фейклагов:
Limit : 14
Jitter : 25
Trigger limit: 14
Jitter move - ON
Посмотреть вложение 139606Посмотреть вложение 139607
А возможно как-нибудь из этого сделать это?
C++:
void c_movement::strafe( c_usercmd *cmd ) {
    if ( !elements->mov_autostrafe ) {
        return;
    }

    // Define rough directions
    enum directions {
        FORWARDS = 0,
        BACKWARDS = 180,
        LEFT = 90,
        RIGHT = -90
    };

    // Reset direction when player is not strafing
    is_bhopping = cmd->buttons & IN_JUMP;
    if ( !is_bhopping && csgo->user( )->flags( ) & FL_ONGROUND ) {
        calculated_direction = directions::FORWARDS;
        in_transition = false;
        return;
    }

    // Get true view angles
    vec_3 base{ };
    csgo->engine( )->get_angles( base );

    // Calculate the rough direction closest to the player's true direction
    auto get_rough_direction = [ & ]( float true_direction ) -> float {
        // Make array with our four rough directions
        std::array< float, 4 > minimum = { directions::FORWARDS, directions::BACKWARDS, directions::LEFT, directions::RIGHT };
        float best_angle, best_delta = 181.f;

        // Loop through our rough directions and find which one is closest to our true direction
        for ( size_t i = 0; i < minimum.size( ); ++i ) {
            float rough_direction = base.y + minimum.at( i );
            float delta = fabsf( math->normalize_yaw( true_direction - rough_direction ) );

            // Only the smallest delta wins out
            if ( delta < best_delta ) {
                best_angle = rough_direction;
                best_delta = delta;
            }
        }

        return best_angle;
    };

    // Get true direction based on player velocity
    true_direction = csgo->user( )->velocity( ).angle( ).y;

    // Detect wish direction based on movement keypresses
    if ( cmd->buttons & IN_FORWARD ) {
        wish_direction = base.y + directions::FORWARDS;
    }
    else if ( cmd->buttons & IN_BACK ) {
        wish_direction = base.y + directions::BACKWARDS;
    }
    else if ( cmd->buttons & IN_MOVELEFT ) {
        wish_direction = base.y + directions::LEFT;
    }
    else if ( cmd->buttons & IN_MOVERIGHT ) {
        wish_direction = base.y + directions::RIGHT;
    }
    else {
        // Reset to forward when not pressing a movement key, then fix anti-aim strafing by setting IN_FORWARD
        cmd->buttons |= IN_FORWARD;
        wish_direction = base.y + directions::FORWARDS;
    }

    // Calculate the ideal strafe rotation based on player speed (c) navewindre
    float speed_rotation = min( math->rad_2_deg( std::asinf( 30.f / csgo->user( )->velocity( ).length_2d( ) ) ) * 0.5f, 45.f );
    if ( in_transition ) {
        // Calculate the step by using our ideal strafe rotation
        float ideal_step = speed_rotation + calculated_direction;
        step = fabsf( math->normalize_yaw( calculated_direction - ideal_step ) );

        // Check when the calculated direction arrives close to the wish direction
        if ( fabsf( math->normalize_yaw( wish_direction - calculated_direction ) ) > step ) {
            float add = math->normalize_yaw( calculated_direction + step );
            float sub = math->normalize_yaw( calculated_direction - step );

            // Step in direction that gets us closer to our wish direction
            if ( fabsf( math->normalize_yaw( wish_direction - add ) ) >= fabsf( math->normalize_yaw( wish_direction - sub ) ) ) {
                calculated_direction -= step;
            }
            else {
                calculated_direction += step;
            }
        }
        else {
            in_transition = false;
        }
    }
    else {
        // Get rough direction and setup calculated direction only when not transitioning
        rough_direction = get_rough_direction( true_direction );
        calculated_direction = rough_direction;

        // When we have a difference between our current (rough) direction and our wish direction, then transition
        if ( rough_direction != wish_direction ) {
            in_transition = true;
        }
    }

    // Set movement up to be rotated
    cmd->move.x = 0.f;
    cmd->move.y = cmd->cmd_number % 2 ? 450.f : -450.f;

    // Calculate ideal rotation based on our newly calculated direction
    float direction = ( cmd->cmd_number % 2 ? speed_rotation : -speed_rotation ) + calculated_direction;

    // Rotate our direction based on our new, defininite direction
    float rotation = math->deg_2_rad( base.y - direction );

    float cos_rot = cos( rotation );
    float sin_rot = sin( rotation );

    float forwardmove = ( cos_rot * cmd->move.x ) - ( sin_rot * cmd->move.y );
    float sidemove = ( sin_rot * cmd->move.x ) + ( cos_rot * cmd->move.y );

    // Apply newly rotated movement
    cmd->move.x = forwardmove;
    cmd->move.y = sidemove;
}
 
Последнее редактирование:
EBLAN
Пользователь
Статус
Оффлайн
Регистрация
7 Фев 2021
Сообщения
465
Реакции[?]
146
Поинты[?]
2K
А возможно как-нибудь из этого сделать это?
C++:
void c_movement::strafe( c_usercmd *cmd ) {
    if ( !elements->mov_autostrafe ) {
        return;
    }

    // Define rough directions
    enum directions {
        FORWARDS = 0,
        BACKWARDS = 180,
        LEFT = 90,
        RIGHT = -90
    };

    // Reset direction when player is not strafing
    is_bhopping = cmd->buttons & IN_JUMP;
    if ( !is_bhopping && csgo->user( )->flags( ) & FL_ONGROUND ) {
        calculated_direction = directions::FORWARDS;
        in_transition = false;
        return;
    }

    // Get true view angles
    vec_3 base{ };
    csgo->engine( )->get_angles( base );

    // Calculate the rough direction closest to the player's true direction
    auto get_rough_direction = [ & ]( float true_direction ) -> float {
        // Make array with our four rough directions
        std::array< float, 4 > minimum = { directions::FORWARDS, directions::BACKWARDS, directions::LEFT, directions::RIGHT };
        float best_angle, best_delta = 181.f;

        // Loop through our rough directions and find which one is closest to our true direction
        for ( size_t i = 0; i < minimum.size( ); ++i ) {
            float rough_direction = base.y + minimum.at( i );
            float delta = fabsf( math->normalize_yaw( true_direction - rough_direction ) );

            // Only the smallest delta wins out
            if ( delta < best_delta ) {
                best_angle = rough_direction;
                best_delta = delta;
            }
        }

        return best_angle;
    };

    // Get true direction based on player velocity
    true_direction = csgo->user( )->velocity( ).angle( ).y;

    // Detect wish direction based on movement keypresses
    if ( cmd->buttons & IN_FORWARD ) {
        wish_direction = base.y + directions::FORWARDS;
    }
    else if ( cmd->buttons & IN_BACK ) {
        wish_direction = base.y + directions::BACKWARDS;
    }
    else if ( cmd->buttons & IN_MOVELEFT ) {
        wish_direction = base.y + directions::LEFT;
    }
    else if ( cmd->buttons & IN_MOVERIGHT ) {
        wish_direction = base.y + directions::RIGHT;
    }
    else {
        // Reset to forward when not pressing a movement key, then fix anti-aim strafing by setting IN_FORWARD
        cmd->buttons |= IN_FORWARD;
        wish_direction = base.y + directions::FORWARDS;
    }

    // Calculate the ideal strafe rotation based on player speed (c) navewindre
    float speed_rotation = min( math->rad_2_deg( std::asinf( 30.f / csgo->user( )->velocity( ).length_2d( ) ) ) * 0.5f, 45.f );
    if ( in_transition ) {
        // Calculate the step by using our ideal strafe rotation
        float ideal_step = speed_rotation + calculated_direction;
        step = fabsf( math->normalize_yaw( calculated_direction - ideal_step ) );

        // Check when the calculated direction arrives close to the wish direction
        if ( fabsf( math->normalize_yaw( wish_direction - calculated_direction ) ) > step ) {
            float add = math->normalize_yaw( calculated_direction + step );
            float sub = math->normalize_yaw( calculated_direction - step );

            // Step in direction that gets us closer to our wish direction
            if ( fabsf( math->normalize_yaw( wish_direction - add ) ) >= fabsf( math->normalize_yaw( wish_direction - sub ) ) ) {
                calculated_direction -= step;
            }
            else {
                calculated_direction += step;
            }
        }
        else {
            in_transition = false;
        }
    }
    else {
        // Get rough direction and setup calculated direction only when not transitioning
        rough_direction = get_rough_direction( true_direction );
        calculated_direction = rough_direction;

        // When we have a difference between our current (rough) direction and our wish direction, then transition
        if ( rough_direction != wish_direction ) {
            in_transition = true;
        }
    }

    // Set movement up to be rotated
    cmd->move.x = 0.f;
    cmd->move.y = cmd->cmd_number % 2 ? 450.f : -450.f;

    // Calculate ideal rotation based on our newly calculated direction
    float direction = ( cmd->cmd_number % 2 ? speed_rotation : -speed_rotation ) + calculated_direction;

    // Rotate our direction based on our new, defininite direction
    float rotation = math->deg_2_rad( base.y - direction );

    float cos_rot = cos( rotation );
    float sin_rot = sin( rotation );

    float forwardmove = ( cos_rot * cmd->move.x ) - ( sin_rot * cmd->move.y );
    float sidemove = ( sin_rot * cmd->move.x ) + ( cos_rot * cmd->move.y );

    // Apply newly rotated movement
    cmd->move.x = forwardmove;
    cmd->move.y = sidemove;
}
сори чел я не кодер. я обычный юзер кряка
 
Сверху Снизу