Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

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

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
31 Мар 2018
Сообщения
118
Реакции
28
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нужен нормальный пич ресольвер.
База - не важна, главное чтобы было правильно реализовано. :CoolStoryBob:
Если можно, то с подробностями как и что работает.:whyRly:
 
эээм
C++:
Expand Collapse Copy
/* ок, я пересмотрел код и понял, что он не будет корректно работать */

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 так что корректно сказать не могу
а теперь, если я не прав, прошу объяснить почему :) */

Не знаю как ты собрался детектить мисс по питчу..
Если блять не через трейсыыы...
ну лан
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
pEnt->GetEyeAngles().x == 0.0 ? -90 : 90; //еще можешь 0 брутить если ты радикальный
эээм
C++:
Expand Collapse Copy
pEnt->GetEyeAngles().x == 0.0 ? -90 : 90; //еще можешь 0 брутить если ты радикальный
//еще (я конечно не кодер,но) можешь попытаться там использовать animstate->m_flPitch или чёто такое
//не грустите парни я не кодер я не шарю сорян
как же мне вас жаль...
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ТС'у:
1592049143367.png

как же мне вас жаль...
ида прафесионал хуйни не скажет, ауф.
 
В современных реалиях очень очень редко вижу чуваков с ап питчем или еще чем
По дефолту все они "down"
Собственно в 99 % случаев с этим ты будешь попадать практически в 100%
C++:
Expand Collapse Copy
if (pitch_resolver)
    player->m_angEyeAngles = 89.f;
// lol its usseles...
Ну как бы практически все углы всегда синхронизированны просто сервер их не правильно анимирует...
Собственно питч по факту ресольвить не стоит..
Но бывают всякие умники используещие старые фичи такие как флик питча (это трэшшш лол) по типу :
C++:
Expand Collapse Copy
if (breaklowerbody)
cmd->vieangles.y = -89.f;
Даже против таких "умных созданий" тебе не придется ничего делать
 
эээм
C++:
Expand Collapse Copy
/* ок, я пересмотрел код и понял, что он не будет корректно работать
в таком случае нам нужно понимать что мы мисснули именно по питчу и только после такого мисса менять питч */

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 так что корректно сказать не могу
а теперь, если я не прав, прошу объяснить почему :) */
Не знаю как ты собрался детектить мисс по питчу..
Если блять не через трейсыыы...
 
Каво. Чего. Что за бред выше все запостили?

Для чего тебе фикс питча. Для ноусприда или для ммхвх? У тебя на клиенте всегда правильный питч, просто сервер ещё и 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...

Всё, это всё что тебе нужно знать дабы сделать свой ресольвер для питчей
 
Делай, как валве ёбана ))

C++:
Expand Collapse Copy
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. Нормалайз должен быть при этом как на сервере. И клэмп тоже как на сервере. (я хз отличаются ли клиент и серверные математические методы, но все же)
 
Хорошая попытка конечно, но не совсем так. Да и диапазон там не 90 а 89 насколько я знаю.

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

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

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

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