Вопрос Fakelag prediction

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
17 Апр 2020
Сообщения
237
Реакции
24
Есть ли у кого пример реализации/реализация предикта фейклагов под лв?
 
extrapolation, + lw already has one but its not the best from what i have seen
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
он?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так sv_maxusrprocess (16 по дефу, 17 просто отклоняет сенды в итоге деф 16 да и предикт не видно особо сильно) + sv_unlag по дефу не даст такой бектрек. Очень странный видос
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так sv_maxusrprocess (16 по дефу, 17 просто отклоняет сенды в итоге деф 16 да и предикт не видно особо сильно) + sv_unlag по дефу не даст такой бектрек. Очень странный видос
так ты даже на 16 не отправишь пакет дружище сервер просто отклонит команду
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
имитировать фальшивые команды игрока, а затем выполнять интерполяцию фальшивых команд, сохранять их, а затем проверять, смотрит ли направление игрока куда делись фальшивые команды
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Есть ли у кого пример реализации/реализация предикта фейклагов под лв?
экстраполяция называется,
Код:
Expand Collapse Copy
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;
}
юзать
Код:
Expand Collapse Copy
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();
 
Назад
Сверху Снизу