Вопрос Адекватный pitch resolver

Забаненный
Статус
Оффлайн
Регистрация
31 Мар 2018
Сообщения
118
Реакции[?]
28
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нужен нормальный пич ресольвер.
База - не важна, главное чтобы было правильно реализовано. :CoolStoryBob:
Если можно, то с подробностями как и что работает.:whyRly:
 
Dreammmless.
Эксперт
Статус
Оффлайн
Регистрация
19 Мар 2019
Сообщения
2,957
Реакции[?]
962
Поинты[?]
1K
эээм
C++:
/* ок, я пересмотрел код и понял, что он не будет корректно работать */

if (Miss == 1) {
pEnt->GetEyeAngles().x = -90; // pitch up
}
if (Miss == 2) {
pEnt->GetEyeAngles().x = 90; // pitch down
}
/* однако этот код можно сделать и с помощью оператора switch */

switch (Miss)
                    {
                    case 0:
                    pEnt->GetEyeAngles().x = -90.0;
                        break;
                    case 1:
                    pEnt->GetEyeAngles().x = 90.0;
                        break;  
                    default:
                        return;
                    }
/* если честно, не видел ни разу кода pitch resolver так что корректно сказать не могу
а теперь, если я не прав, прошу объяснить почему :) */
Не знаю как ты собрался детектить мисс по питчу..
Если блять не через трейсыыы...
ну лан
 
Последнее редактирование:
Нефор
Забаненный
Статус
Оффлайн
Регистрация
9 Ноя 2018
Сообщения
1,042
Реакции[?]
663
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
11 Июн 2020
Сообщения
73
Реакции[?]
13
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нефор
Забаненный
Статус
Оффлайн
Регистрация
9 Ноя 2018
Сообщения
1,042
Реакции[?]
663
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
pEnt->GetEyeAngles().x == 0.0 ? -90 : 90; //еще можешь 0 брутить если ты радикальный
эээм
C++:
pEnt->GetEyeAngles().x == 0.0 ? -90 : 90; //еще можешь 0 брутить если ты радикальный
//еще (я конечно не кодер,но) можешь попытаться там использовать animstate->m_flPitch или чёто такое
//не грустите парни я не кодер я не шарю сорян
как же мне вас жаль...
 
cpuid inc.
Забаненный
Статус
Оффлайн
Регистрация
6 Авг 2019
Сообщения
1,071
Реакции[?]
760
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
main public enemy
Эксперт
Статус
Оффлайн
Регистрация
30 Ноя 2019
Сообщения
1,531
Реакции[?]
647
Поинты[?]
0
В современных реалиях очень очень редко вижу чуваков с ап питчем или еще чем
По дефолту все они "down"
Собственно в 99 % случаев с этим ты будешь попадать практически в 100%
C++:
if (pitch_resolver)
    player->m_angEyeAngles = 89.f;
// lol its usseles...
Ну как бы практически все углы всегда синхронизированны просто сервер их не правильно анимирует...
Собственно питч по факту ресольвить не стоит..
Но бывают всякие умники используещие старые фичи такие как флик питча (это трэшшш лол) по типу :
C++:
if (breaklowerbody)
cmd->vieangles.y = -89.f;
Даже против таких "умных созданий" тебе не придется ничего делать
 
main public enemy
Эксперт
Статус
Оффлайн
Регистрация
30 Ноя 2019
Сообщения
1,531
Реакции[?]
647
Поинты[?]
0
эээм
C++:
/* ок, я пересмотрел код и понял, что он не будет корректно работать
в таком случае нам нужно понимать что мы мисснули именно по питчу и только после такого мисса менять питч */

if (Miss_Po_Pitch == 1) {
pEnt->GetEyeAngles().x = -90; // pitch up
}
if (Miss_Po_Pitch == 2) {
pEnt->GetEyeAngles().x = 90; // pitch down
}
/* однако этот код можно сделать и с помощью оператора switch */

switch (Miss_Po_Pitch)
                    {
                    case 0:
                    pEnt->GetEyeAngles().x = -90.0;
                        break;
                    case 1:
                    pEnt->GetEyeAngles().x = 90.0;
                        break;  
                    default:
                        return;
                    }
/* если честно, не видел ни разу кода pitch resolver так что корректно сказать не могу
а теперь, если я не прав, прошу объяснить почему :) */
Не знаю как ты собрался детектить мисс по питчу..
Если блять не через трейсыыы...
 
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
Каво. Чего. Что за бред выше все запостили?

Для чего тебе фикс питча. Для ноусприда или для ммхвх? У тебя на клиенте всегда правильный питч, просто сервер ещё и clamp делает, отсюда и рассихрон некоторых "магических" значений. -540, -1620 как пример.

После выстрела енеми клиент получает инфобек от сервера, 1 секунду питч синхронизирован на 100% и не имеет значения какой угол.

Сомневаюсь что ты шаришь в этой теме, но фикс этого не сложный и легко выполним. Но так как я не хочу думать за тебя и решать твои вопросы, советую тебе просто сделать так:


if (player->eyeangles().x > 90)
player->eyeangles().x = -89;
if (player->eyeangles().x < -90)
player->eyeangles().x = 89;


Таким образом ты фиксишь все антрастед питчи к примеру тот же -540
но в тоже время, надо понимать, что даже -541 или -539 абсолютно адекватно синхронизированы. И есть юзать такой вот ресольвер как я скинул выше - есть вероятность заресольвить то, что в этом не нуждается.

Для мм хвх этого ресольвера более чем достаточно, сам тестил, все работает как часы.

Для ноусприда без брутфорс питча не обойтись, там надо брутить три позиции : 89, 0, -89

А для идеального фикса под ноусприд нужно сделать такой же кламп как делает сервер, либо же вывести рабочую формулу которая будет возвращать все углы которые нуждаются в фиксе ( так как эти питчи возникают каждый -540 через раз аля -540, ((-1080 не будет ворк)), -1620...

Всё, это всё что тебе нужно знать дабы сделать свой ресольвер для питчей
 
Участник
Статус
Оффлайн
Регистрация
27 Фев 2019
Сообщения
1,105
Реакции[?]
388
Поинты[?]
45K
Делай, как валве ёбана ))

C++:
pEnt->get_eye_angles().x = std::clamp(pEnt->get_eye_angles().x, -90.f, 90.f);
 
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
Делай, как валве ёбана ))

C++:
pEnt->get_eye_angles().x = std::clamp(pEnt->get_eye_angles().x, -90.f, 90.f);
Хорошая попытка конечно, но не совсем так. Да и диапазон там не 90 а 89 насколько я знаю.

допустим у человека -540. Если ты просто сделаешь clamp на этот угол то ты получишь -89. -89 это питч направленный ровно в небо. А 89 это вниз.

Сервер обрабатывает это и -540 который должен был бы быть питчем направленным в верх, что и есть на клиенте, что и есть правильно - все равно рассинхронит.

Но так как мы играем по правилам сервера, и наш по логике правильный питч, по факту - не правильный. Valve, они такие.

Поэтому что б твой суперпупер ресольвер работал, тебе сначала нужно сделать нормалайз питча. А только после этого сделать clamp. Нормалайз должен быть при этом как на сервере. И клэмп тоже как на сервере. (я хз отличаются ли клиент и серверные математические методы, но все же)
 
Участник
Статус
Оффлайн
Регистрация
27 Фев 2019
Сообщения
1,105
Реакции[?]
388
Поинты[?]
45K
Хорошая попытка конечно, но не совсем так. Да и диапазон там не 90 а 89 насколько я знаю.

допустим у человека -540. Если ты просто сделаешь clamp на этот угол то ты получишь -89. -89 это питч направленный ровно в небо. А 89 это вниз.

Сервер обрабатывает это и -540 который должен был бы быть питчем направленным в верх, что и есть на клиенте, что и есть правильно - все равно рассинхронит.

Но так как мы играем по правилам сервера, и наш по логике правильный питч, по факту - не правильный. Valve, они такие.

Поэтому что б твой суперпупер ресольвер работал, тебе сначала нужно сделать нормалайз питча. А только после этого сделать clamp. Нормалайз должен быть при этом как на сервере. И клэмп тоже как на сервере. (я хз отличаются ли клиент и серверные математические методы, но все же)
Я же сказал, как валве) Да и нахуя сейчас этот ваш питч-резольвер, если нужен в основном только яв ?
 
Похожие темы
Сверху Снизу