Гайд Десинк без GetMaxDesyncDelta

[flowers for ur soul]
Пользователь
Статус
Оффлайн
Регистрация
22 Июн 2019
Сообщения
61
Реакции[?]
92
Поинты[?]
0
Всем привет, сегодня я покажу как сделать легит десинк без MaxRotation, ведь нам попросту ненужно максимально возможное значение десинка. Для начала глянем на код SetupVelocity -
Пожалуйста, авторизуйтесь для просмотра ссылки.

Мы можем найти в коде следующее:
C++:
float flMaxYawModifier = flYawModifier * m_flMaxYaw;
float flMinYawModifier = flYawModifier * m_flMinYaw;

if (eye_feet_delta <= flMaxYawModifier)
{
    if (flMinYawModifier > eye_feet_delta)
        m_flGoalFeetYaw = fabs(flMinYawModifier) + m_flEyeYaw;
}
else
{
    m_flGoalFeetYaw = m_flEyeYaw - fabs(flMaxYawModifier);
}
Тут мы видим, что с самого начала мы уже имеем максимальную дельту, а также то, что если мы передадим любое неверное значение ( например MaxRotation + 1 ), то наша дельта в любом случае будет максимальная.

Итак, зная, что сам десинк мы делаем, когда bSendPacket = true, а также, что при bSendPacket = true, сервер обрабатываем сразу два отправленных cmd ( CUserCmd ), то можно сделать вывод, что десинк мы выставляем только когда сервер обрабатывает 2 команды ( то есть, когда cmd->CommandNumber делится на 2 )
C++:
if ( cmd->CommandNumber % 2 == 1 )
{
    // desync ...
    bSendPacket = false;
}

if ( g_ClientState->ChockedCommands >= 14 ) // 14 - предел чокнутых пакетов
{
    // устанавливаем здесь наш реал
    bSendPacket = true;
}
Теперь добавляем десинк, снова смотрим на SetupVelocity, а именно на ApproachAngle:
C++:
if (m_flSpeed > 0.1f || fabs(m_flAbsVelocityZ) > 100.0f)
{
    m_flGoalFeetYaw = ApproachAngle(
        m_flEyeYaw,
        m_flGoalFeetYaw,
        ((m_flGroundFraction * 20.0f) + 30.0f)
        * m_flLastClientSideAnimationUpdateTimeDelta);
}
else
{
    m_flGoalFeetYaw = ApproachAngle(
        pBaseEntity->GetLowerBodyYaw(),
        m_flGoalFeetYaw,
        m_flLastClientSideAnimationUpdateTimeDelta * 100.0f);
}
Думаю вы уже поняли, какое значение мы будем брать, чтобы наш десинк стал работать, зададим это значение переменной float DesyncVal.
И теперь нам остается просто присвоить это значение нашему cmd->ViewAngles. Если вы хотите изменять направление десинка, то просто домножьте DesyncVal на переменную, отображающую вашу сторону.
Вот и все, всем спасибо, не используйте maxRotation.

Данная тема - гайд, вы должны сами понять, что нужно делать, а не получить уже готовую инфу, так что думайте головой, чтобы правильно все сделать. Подсказка, что нужно доработать: если ваш десинк с лбу брикером, то условие cmd->CommandNumber % 2 надо будет заменить, также количество максимально чокнутых тиков должно зависеть от вашей задержки ( NetChannelInfo ), не стоит забывать и про фикс и нормализацию углов, дабы не получить антрастед / правильно сделать десинк, ну и конечно же для десинка без лбу брикера нужно сделать минимальные движения ( cmd->SideMove ), чтобы иметь больший рассинхрон модели

Credits: violanes
 
Забаненный
Статус
Оффлайн
Регистрация
9 Янв 2019
Сообщения
701
Реакции[?]
295
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
автор ты дурак я нечево не понял.... :NotLikeThis:
 
Начинающий
Статус
Оффлайн
Регистрация
26 Апр 2019
Сообщения
102
Реакции[?]
18
Поинты[?]
0
Да чо там сложного в десинке этом ска?
Код:
if(!should_send_packet)
   usercmd->viewangle.yaw += 120.f;
break_lower_body(usercmd->viewangle.yaw, eye_yaw - 60.f)
вот тебе и balance desync (тригерит 979)
лбу брикер нужен только когда speed < 0.1f (смотрите setup_velocity)
По поводу лбу брикера:
lower body yaw обновляется каждые 1.1 секунды, если стоишь. Если вы остановились после движения, обновление произойдёт через .2 секунды. Используйте логику и десинк это самое простое что можно сделать.
удачного дня
 
Забаненный
Статус
Оффлайн
Регистрация
9 Янв 2019
Сообщения
701
Реакции[?]
295
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
вот тебе и balance desync (тригерит 979)
лбу брикер нужен только когда speed < 0.1f (смотрите setup_velocity)
По поводу лбу брикера:
lower body yaw обновляется каждые 1.1 секунды, если стоишь. Если вы остановились после движения, обновление произойдёт через .2 секунды. Используйте логику и десинк это самое простое что можно сделать.
удачного дня
да нах спунфидеть-то я вот не понимаю??
 
Начинающий
Статус
Оффлайн
Регистрация
24 Июн 2019
Сообщения
53
Реакции[?]
3
Поинты[?]
0
А это не пойдет ?
Код:
if (G::SendPacket)
cmd->viewangles.yaw += 120;
else
cmd->viewangles.yaw += 180;
 
Забаненный
Статус
Оффлайн
Регистрация
9 Янв 2019
Сообщения
701
Реакции[?]
295
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
24 Июн 2019
Сообщения
53
Реакции[?]
3
Поинты[?]
0
Эксперт
Статус
Оффлайн
Регистрация
8 Авг 2018
Сообщения
2,218
Реакции[?]
631
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
26 Апр 2019
Сообщения
102
Реакции[?]
18
Поинты[?]
0
да нах спунфидеть-то я вот не понимаю??
Да потому что на югейме одни пастыры, ты лучше на юц такие гайдики пости) тут просто помойная яма с школьников аля 12 лет хвх боев
 
дед
Забаненный
Статус
Оффлайн
Регистрация
22 Июл 2016
Сообщения
325
Реакции[?]
126
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу