Вопрос Fakelag prediction

ima sippin lean
Забаненный
Статус
Оффлайн
Регистрация
6 Май 2020
Сообщения
495
Реакции[?]
380
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
он?
 
Уникальное звание
Пользователь
Статус
Оффлайн
Регистрация
8 Авг 2019
Сообщения
679
Реакции[?]
132
Поинты[?]
6K
Так sv_maxusrprocess (16 по дефу, 17 просто отклоняет сенды в итоге деф 16 да и предикт не видно особо сильно) + sv_unlag по дефу не даст такой бектрек. Очень странный видос
 
Забаненный
Статус
Оффлайн
Регистрация
6 Июн 2021
Сообщения
14
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так sv_maxusrprocess (16 по дефу, 17 просто отклоняет сенды в итоге деф 16 да и предикт не видно особо сильно) + sv_unlag по дефу не даст такой бектрек. Очень странный видос
так ты даже на 16 не отправишь пакет дружище сервер просто отклонит команду
 
Уникальное звание
Пользователь
Статус
Оффлайн
Регистрация
8 Авг 2019
Сообщения
679
Реакции[?]
132
Поинты[?]
6K
Пользователь
Статус
Оффлайн
Регистрация
3 Июл 2019
Сообщения
137
Реакции[?]
77
Поинты[?]
2K
имитировать фальшивые команды игрока, а затем выполнять интерполяцию фальшивых команд, сохранять их, а затем проверять, смотрит ли направление игрока куда делись фальшивые команды
 
Забаненный
Статус
Оффлайн
Регистрация
6 Июн 2021
Сообщения
14
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,967
Реакции[?]
958
Поинты[?]
19K
Есть ли у кого пример реализации/реализация предикта фейклагов под лв?
экстраполяция называется,
Код:
void lagcompinsation::extrapolate(C_BasePlayer* player, Vector& origin, Vector& velocity, int& flags, bool on_ground)
{
    static const auto sv_gravity = Source::m_pCvar->FindVar(_("sv_gravity"));
    static const auto sv_jump_impulse = Source::m_pCvar->FindVar(_("sv_jump_impulse"));

    if (!(flags & FL_ONGROUND))
        velocity.z -= TICKS_TO_TIME(sv_gravity->GetFloat());
    else if (player->m_fFlags() & FL_ONGROUND && !on_ground)
        velocity.z = sv_jump_impulse->GetFloat();

    const auto src = origin;
    auto end = src + velocity * Source::m_pGlobalVars->interval_per_tick;

    Ray_t r;
    r.Init(src, end, player->OBBMins(), player->OBBMaxs());

    trace_t t;
    CTraceFilter filter;
    filter.pSkip = player;

    Source::m_pEngineTrace->TraceRay(r, MASK_PLAYERSOLID, &filter, &t);

    if (t.fraction != 1.f)
    {
        for (auto i = 0; i < 2; i++)
        {
            velocity -= t.plane.normal * velocity.Dot(t.plane.normal);

            const auto dot = velocity.Dot(t.plane.normal);
            if (dot < 0.f)
                velocity -= Vector(dot * t.plane.normal.x,
                    dot * t.plane.normal.y, dot * t.plane.normal.z);

            end = t.endpos + velocity * TICKS_TO_TIME(1.f - t.fraction);

            r.Init(t.endpos, end, player->OBBMins(), player->OBBMaxs());
            Source::m_pEngineTrace->TraceRay(r, MASK_PLAYERSOLID, &filter, &t);

            if (t.fraction == 1.f)
                break;
        }
    }

    origin = end = t.endpos;
    end.z -= 2.f;

    r.Init(origin, end, player->OBBMins(), player->OBBMaxs());
    Source::m_pEngineTrace->TraceRay(r, MASK_PLAYERSOLID, &filter, &t);

    flags &= FL_ONGROUND;

    if (t.DidHit() && t.plane.normal.z > .7f)
        flags |= FL_ONGROUND;
}
юзать
Код:
old_origin = prev_record->Origin;
old_flags = prev_record->flags;
extrapolate(player, old_origin, player->m_vecVelocity(), player->m_fFlags(), old_flags & FL_ONGROUND);
old_flags = player->m_fFlags();
 
Сверху Снизу