Вопрос [supremacy] autopeek

Пользователь
Статус
Оффлайн
Регистрация
8 Дек 2018
Сообщения
528
Реакции[?]
119
Поинты[?]
31K
как сделать его нормально работающим? я помню спастил его с одного сурса - отображение есть, при кнопке работает, но выдает лютые приколы по типу если ты выстрелил тебя начинает телепортировать и в итоге ты просто на месте стоишь и никуда не идешь, как это пофиксить в мясе?
 
шатап книга
Забаненный
Статус
Оффлайн
Регистрация
7 Мар 2020
Сообщения
485
Реакции[?]
119
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а код где? экстрасенсы?
 
Пользователь
Статус
Оффлайн
Регистрация
8 Дек 2018
Сообщения
528
Реакции[?]
119
Поинты[?]
31K
а код где? экстрасенсы?
да, я хотел вообще спросить как это реализовать, а код будет через пару сек
Код:
void Movement::FixMove(CUserCmd* cmd, const ang_t& wish_angles) {

    if (hasShot) {
        g_notify.add(tfm::format(XOR("movefix!\n")));
        return;
    }

    vec3_t  move, dir;
    float   delta, len;
    ang_t   move_angle;

    // roll nospread fix.
    if (!(g_cl.m_flags & FL_ONGROUND) && cmd->m_view_angles.z != 0.f)
        cmd->m_side_move = 0.f;

    // convert movement to vector.
    move = { cmd->m_forward_move, cmd->m_side_move, 0.f };

    // get move length and ensure we're using a unit vector ( vector with length of 1 ).
    len = move.normalize();
    if (!len)
        return;

    // convert move to an angle.
    math::VectorAngles(move, move_angle);

    // calculate yaw delta.
    delta = (cmd->m_view_angles.y - wish_angles.y);

    // accumulate yaw delta.
    move_angle.y += delta;

    // calculate our new move direction.
    // dir = move_angle_forward * move_length
    math::AngleVectors(move_angle, &dir);

    // scale to og movement.
    dir *= len;

    // strip old flags.
    g_cl.m_cmd->m_buttons &= ~(IN_FORWARD | IN_BACK | IN_MOVELEFT | IN_MOVERIGHT);

    // fix ladder and noclip.
    if (g_cl.m_local->m_MoveType() == MOVETYPE_LADDER) {
        // invert directon for up and down.
        if (cmd->m_view_angles.x >= 45.f && wish_angles.x < 45.f && std::abs(delta) <= 65.f)
            dir.x = -dir.x;

        // write to movement.
        cmd->m_forward_move = dir.x;
        cmd->m_side_move = dir.y;

        // set new button flags.
        if (cmd->m_forward_move > 200.f)
            cmd->m_buttons |= IN_FORWARD;

        else if (cmd->m_forward_move < -200.f)
            cmd->m_buttons |= IN_BACK;

        if (cmd->m_side_move > 200.f)
            cmd->m_buttons |= IN_MOVERIGHT;

        else if (cmd->m_side_move < -200.f)
            cmd->m_buttons |= IN_MOVELEFT;
    }

    // we are moving normally.
    else {
        // we must do this for pitch angles that are out of bounds.
        if (cmd->m_view_angles.x < -90.f || cmd->m_view_angles.x > 90.f)
            dir.x = -dir.x;

        // set move.
        cmd->m_forward_move = dir.x;
        cmd->m_side_move = dir.y;

        // set new button flags.
        if (cmd->m_forward_move > 0.f)
            cmd->m_buttons |= IN_FORWARD;

        else if (cmd->m_forward_move < 0.f)
            cmd->m_buttons |= IN_BACK;

        if (cmd->m_side_move > 0.f)
            cmd->m_buttons |= IN_MOVERIGHT;

        else if (cmd->m_side_move < 0.f)
            cmd->m_buttons |= IN_MOVELEFT;
    }
}

void Movement::AutoPeek() {
    auto localPlayer = g_csgo.m_entlist->GetClientEntity< Player* >(g_csgo.m_engine->GetLocalPlayer());
    if (!localPlayer || localPlayer->dormant() || !localPlayer->alive()) return;
    if (g_input.GetKeyState(g_menu.main.movement.autopeek.get())) {
        if (quickpeekstartpos == vec3_t{ 0, 0, 0 }) {
            quickpeekstartpos = g_cl.m_local->GetAbsOrigin();

            g_notify.add(tfm::format(XOR("quickpeekstartpos!\n")));
        }
        else {
            if (g_cl.m_old_shot && !hasShot) {
                hasShot = true;
                g_notify.add(tfm::format(XOR("hasShot = true!\n")));
            }
            if (hasShot) {
                if (quickpeekstartpos == g_cl.m_local->GetAbsOrigin()) {
                    hasShot = false;
                }
                else {
                    gotoStart();
                    g_notify.add(tfm::format(XOR("started gotoStart\n")));
                }
            }
        }
    }
    else {
        hasShot = false;
        quickpeekstartpos = vec3_t{ 0, 0, 0 };

    }
}

void Movement::gotoStart() {
    auto localPlayer = g_csgo.m_entlist->GetClientEntity< Player* >(g_csgo.m_engine->GetLocalPlayer());
    if (!localPlayer || localPlayer->dormant() || !localPlayer->alive()) return;
    float yaw = g_cl.m_cmd->m_view_angles.y;
    vec3_t VecForward = g_cl.m_local->GetAbsOrigin() - quickpeekstartpos;
    vec3_t translatedVelocity = vec3_t{
        (float)(VecForward[0] * cos(yaw / 180 * (float)M_PI) + VecForward[1] * sin(yaw / 180 * (float)M_PI)),
        (float)(VecForward[1] * cos(yaw / 180 * (float)M_PI) - VecForward[0] * sin(yaw / 180 * (float)M_PI)),
        VecForward[2]
    };
    g_cl.m_cmd->m_forward_move = -translatedVelocity[0] * 20.f;
    g_cl.m_cmd->m_side_move = translatedVelocity[1] * 20.f;
    if (-translatedVelocity[0] * translatedVelocity[1] == 0)
        g_notify.add(tfm::format(XOR("0")));

}
 
Keep Ev0lving, Stay Fatal
Эксперт
Статус
Оффлайн
Регистрация
6 Фев 2018
Сообщения
1,547
Реакции[?]
584
Поинты[?]
100K
как сделать его нормально работающим? я помню спастил его с одного сурса - отображение есть, при кнопке работает, но выдает лютые приколы по типу если ты выстрелил тебя начинает телепортировать и в итоге ты просто на месте стоишь и никуда не идешь, как это пофиксить в мясе?
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Сверху Снизу