Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Исходник Legendware shift system

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
12 Дек 2023
Сообщения
27
Реакции
23
when draining the source, the shift itself was cut out
Код:
Expand Collapse Copy
void Exploits::teleport(int ticks, crypt_ptr <CUserCmd> cmd)
{
    if (!ctx->weapon_data())
        return;

    auto teleporting = false;

    auto forwardmove = ctx->original_forwardmove;
    auto sidemove = ctx->original_sidemove;

    if (ctx->weapon_config != WEAPON_CONFIG_INVALID && engine_prediction->flags & FL_ONGROUND && ctx->local()->m_fFlags() & FL_ONGROUND)
    {
        if (config->rage.weapon[ctx->weapon_config].extended_teleport && ctx->local()->m_vecVelocity().Length2D() > 5.0f)
        {
            if (abs(forwardmove) > 5.0f)
            {
                teleporting = true;
                forwardmove = copysign(convars_manager->convars[CONVAR_CL_FORWARDSPEED]->GetFloat(), forwardmove);
            }
            else
                forwardmove = 0.0f;

            if (abs(sidemove) > 5.0f)
            {
                teleporting = true;
                sidemove = copysign(convars_manager->convars[CONVAR_CL_SIDESPEED]->GetFloat(), sidemove);
            }
            else
                sidemove = 0.0f;
        }
        else
        {
            forwardmove = 0.0f;
            sidemove = 0.0f;
        }
    }

    auto additional_stop_ticks = 0;

    if (teleporting && in_attack)
    {
        auto backup_tickbase = ctx->tickbase;
        auto backup_next_attack = ctx->local()->m_flNextAttack();
        auto backup_next_primary_attack = ctx->weapon()->m_flNextPrimaryAttack();

        ctx->local()->m_flNextAttack() = TICKS_TO_TIME(ctx->tickbase) + ctx->weapon_data()->cycle_time;
        ctx->weapon()->m_flNextPrimaryAttack() = TICKS_TO_TIME(ctx->tickbase) + ctx->weapon_data()->cycle_time; //-V656

        auto next_tickbase = ctx->tickbase + ticks;

        for (auto tickbase = next_tickbase; tickbase < next_tickbase + 14; ++tickbase)
        {
            ctx->tickbase = tickbase;

            if (ctx->local()->can_shoot())
                break;

            ++additional_stop_ticks;
        }

        ctx->tickbase = backup_tickbase;
        ctx->local()->m_flNextAttack() = backup_next_attack;
        ctx->weapon()->m_flNextPrimaryAttack() = backup_next_primary_attack;
    }

    auto backup_tickbase = ctx->local()->m_nTickBase();
    auto backup_curtime = globals->curtime;

    movehelper->set_host(ctx->local().get());
    globals->curtime = TICKS_TO_TIME(ctx->local()->m_nTickBase());

    ctx->local()->post_think();
    ++ctx->local()->m_nTickBase();

    movehelper->set_host(nullptr);

    auto commands_to_add = 0;
    auto next_command_number = cmd->command_number + 1;

    CUserCmd next_cmd;
    memcpy(&next_cmd, cmd.get(), sizeof(CUserCmd));

    next_cmd.command_number = next_command_number;
    next_cmd.buttons &= ~IN_ATTACK;
    next_cmd.buttons &= ~IN_ATTACK2;
    next_cmd.forwardmove = forwardmove;
    next_cmd.sidemove = sidemove;

    do
    {

        auto sequence_number = commands_to_add + next_cmd.command_number;

        auto command = crypt_ptr <CUserCmd> (input->GetUserCmd(sequence_number));
        auto verified_command = crypt_ptr <CVerifiedUserCmd> (input->GetVerifiedUserCmd(sequence_number));

        auto view_angles = movement_system->wish_angle;


        memcpy(command.get(), &next_cmd, sizeof(CUserCmd));

        command->command_number = sequence_number;
        command->predicted = true;
        command->buttons |= engine_prediction->buttons & IN_JUMP;
        command->viewangles = view_angles;
        if (ctx->local()->m_fFlags() & FL_ONGROUND && !(command->buttons & IN_JUMP))
        {
            if (ctx->automatic_peek && !ctx->automatic_peek_position.IsZero() && movement_system->holding_automatic_peek)
            {
                auto delta = ctx->automatic_peek_position - ctx->local()->m_vecOrigin();

                if (delta.Length() >= 10.0f)
                {
                    view_angles.y = math::calculate_angle(ctx->local()->m_vecOrigin(), ctx->automatic_peek_position).y;

                    command->forwardmove = convars_manager->convars[CONVAR_CL_FORWARDSPEED]->GetFloat();
                    command->sidemove = 0.0f;
                }
            }
            else if (teleporting && in_attack)
            {
                RestoreData restore_data;
                engine_prediction->store_restore_data(restore_data);

                CUserCmd predict_command;
                memcpy(&predict_command, command.get(), sizeof(CUserCmd)); //-V598

                auto ticks_to_stop = 0;

                for (ticks_to_stop = 0; ticks_to_stop < 14; ++ticks_to_stop)
                {
                    if (ctx->local()->m_vecVelocity().Length2D() + 1.0f < ctx->max_speed * 0.34f)
                        break;

                    Vector angle;
                    math::vector_angles(ctx->local()->m_vecVelocity() * -1.0f, angle);

                    angle.y = math::normalize_yaw(view_angles.y - angle.y);

                    Vector direction;
                    math::angle_vectors(angle, &direction, nullptr, nullptr);

                    auto stop = direction * ctx->local()->m_vecVelocity().Length2D(); //-V688

                    predict_command.forwardmove = stop.x;
                    predict_command.sidemove = stop.y;

                    engine_prediction->start(&predict_command);
                }

                if (ticks_to_stop)
                {
                    engine_prediction->apply_restore_data(restore_data);

                    if (commands_to_add >= ticks - ticks_to_stop - 1 + additional_stop_ticks)
                    {
                        Vector angle;
                        math::vector_angles(ctx->local()->m_vecVelocity() * -1.0f, angle);

                        angle.y = math::normalize_yaw(view_angles.y - angle.y);

                        Vector direction;
                        math::angle_vectors(angle, &direction, nullptr, nullptr);

                        auto stop = direction * ctx->local()->m_vecVelocity().Length2D(); //-V688

                        command->forwardmove = stop.x;
                        command->sidemove = stop.y;
                    }
                }
            }
        }
        else if (!(ctx->local()->m_fFlags() & FL_ONGROUND) && command->buttons & IN_JUMP)
            command->buttons &= ~IN_JUMP;

   
        anti_aim->force_disable_desync = true;
        anti_aim->run(command);
        anti_aim->force_disable_desync = false;
        movement_system->fix_movement(command, view_angles, abs(command->viewangles.z) > 0.0f);
        movehelper->set_host(ctx->local().get());
        prediction->RunCommand(ctx->local().get(), command.get(), movehelper.get());
        movehelper->set_host(nullptr);


        --ctx->local()->m_nTickBase();
        local_animations->run(command, false);
        ++ctx->local()->m_nTickBase();

        movement_system->edge_jump(command);
        command->predicted = false;

        memcpy(&verified_command->m_cmd, command.get(), sizeof(CUserCmd));
        verified_command->m_crc = command->GetChecksum();

        ++clientstate->m_nChokedCommands;

        if (clientstate->m_NetChannel)
        {
            ++clientstate->m_NetChannel->m_nChokedPackets;
            ++clientstate->m_NetChannel->m_nOutSequenceNr;
        }

        ++commands_to_add;
    }
    while (commands_to_add != ticks);

    if (!previous_tickbase_shift)
        tickbase_adjust = commands_to_add;

    ctx->local()->m_nTickBase() = backup_tickbase;
    globals->curtime = backup_curtime;

    prediction->m_bPreviousAckHadErrors = true;
    prediction->m_nCommandsPredicted = 0;

    *ctx->send_packet.get() = true;
}

void Exploits::shift_tickbase(crypt_ptr <CUserCmd> cmd)
{
    if (!tickbase_shift)
        return;

    if (!*ctx->send_packet.get())
        return;

    auto command_number = cmd->command_number;
    auto ticks = tickbase_shift;

    do
    {
        auto command = crypt_ptr <CUserCmd> (input->GetUserCmd(++command_number));

        if (command.get() != cmd.get())
            memcpy(command.get(), cmd.get(), sizeof(CUserCmd));

        command->command_number = command_number;
        command->tickcount = 0x7F7FFFFF;

        command->predicted = true;
        command->buttons |= cmd->buttons & (IN_BULLRUSH | IN_SPEED | IN_DUCK);

        auto verified_cmd = crypt_ptr <CVerifiedUserCmd> (input->GetVerifiedUserCmd(command_number));

        memcpy(&verified_cmd->m_cmd, command.get(), sizeof(CUserCmd));
        verified_cmd->m_crc = command->GetChecksum();

        ++clientstate->m_nChokedCommands;
        --ticks;
    }
    while (ticks);
}
 
Код:
Expand Collapse Copy
            if (ctx->automatic_peek && !ctx->automatic_peek_position.IsZero() && movement_system->holding_automatic_peek)
            {
                auto delta = ctx->automatic_peek_position - ctx->local()->m_vecOrigin();

                if (delta.Length() >= 10.0f)
                {
                    view_angles.y = math::calculate_angle(ctx->local()->m_vecOrigin(), ctx->automatic_peek_position).y;

                    command->forwardmove = convars_manager->convars[CONVAR_CL_FORWARDSPEED]->GetFloat();
                    command->sidemove = 0.0f;
:4Head:
 
Код:
Expand Collapse Copy
            if (ctx->automatic_peek && !ctx->automatic_peek_position.IsZero() && movement_system->holding_automatic_peek)
            {
                auto delta = ctx->automatic_peek_position - ctx->local()->m_vecOrigin();

                if (delta.Length() >= 10.0f)
                {
                    view_angles.y = math::calculate_angle(ctx->local()->m_vecOrigin(), ctx->automatic_peek_position).y;

                    command->forwardmove = convars_manager->convars[CONVAR_CL_FORWARDSPEED]->GetFloat();
                    command->sidemove = 0.0f;
:4Head:
thread safe bro dont worry?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
            if (ctx->automatic_peek && !ctx->automatic_peek_position.IsZero() && movement_system->holding_automatic_peek)
            {
                auto delta = ctx->automatic_peek_position - ctx->local()->m_vecOrigin();

                if (delta.Length() >= 10.0f)
                {
                    view_angles.y = math::calculate_angle(ctx->local()->m_vecOrigin(), ctx->automatic_peek_position).y;

                    command->forwardmove = convars_manager->convars[CONVAR_CL_FORWARDSPEED]->GetFloat();
                    command->sidemove = 0.0f;
:4Head:
как же похуй
 
Назад
Сверху Снизу