~ X ~ писал: Чего я не могу понять - это нахрена заведено столько углов (enity->angles, curstate.angles и т.п.), и откуда, куда и как существуют?
Ну видишь, ты базовых вещей не понимаешь, самого элементарного, но при этом постоянно хаешь. Как можно хаять то, чего не понимаешь?
Цитата:
~ X ~ писал: От наличия оружия в руке зависит выполнение различного рекурсивного мерзокода халвы.
Ну и какой же код там рекурсивен?
Цитата:
~ X ~ писал: Вопрос: каким ВСЁ-ТАКИ должен быть питч если смотришь вниз - 90 или -90!?
Вьюанглес от первого лица инвертировано по отношению к моделям игрока (но не к своей модели). Т.е. у тебя должна быть проверка на себя самого от третьего лица и проверка на остальных игроков. У локального и нелокальных разный питч. Возможно что из-за предиктинга, возможно что из-за восстановления вьюанглес на клиенте (то самое умножение на -3).
Там смысл в чём, вьюанглес приходит на сервер и делится на три, чтобы модель игрока наклонялась не слишком сильно, как бы ослабляет размах.
Но на мой взгляд модель игрока наклонять это ваще бред какой-то и не нужно, достаточно вьюанглес передавать в блендинги.
pev->v_angle.x = pev->angles.x * -3.0f;
но это только для локального игрока, для нелокальных инверсия уже не нужна. Впрочем это еще зависит от того, где ловишь, на клиенте или на сервере.
Цитата:
~ X ~ писал: ДМ сам говорил, что там всё по-другому и пофикшено
Stupid Quake Bug невозможно профиксить до конца по определению, его корни начинаются уже при создании карты в редакторе. Можно его зарубить при загрузке уровня на сервер, что я собствено и сделал, т.к. он мешал нормальной работе парент-системы. Щас не мешает. А прям ваще-совсем его не победить. Это и формат моделей менять, между прочим надо, они же там все повернутые на 90 градусов и так скомпиленые. Вон в хл2 модельки уже не повернутые. Но и там я уверен, он кое-где еще пооставался.
Цитата:
XaeroX писал: Ну инвертируй питч там, где требуется, в чём проблема?
Вот, руководствуясь в точности этим советом Кармак сотоварищи баг когда-то и посадили Любая инверсия питча загоняет проблему всё глубже и глубже, как осиновый банан в афедрон вероотступника.
Цитата:
~ X ~ писал: почему-то оказалось, что углы на коиенте надо умножать не на 3, а на 9
Ничего там не оказалось, ты посадил еще один баг в свой любимый XDM, поздравляю. Уж помнится мы с Ксероксом когда-то в пьяном угаре доходили до того, что умножали на шесть (ШЕСТЬ, КАРЛ), но уж чтобы умножать на ДЕВЯТЬ, нам такое даже и близко в гологу не приходило.
Добавлено 06-01-2017 в 23:25:
Цитата:
XaeroX писал: У меня, напомню, свой двиг есть, без всяких детских болезней
Модели повернуты на 90 градусов?
Цитата:
~ X ~ писал: Прочитал бы его менее известную биографию, не связанную с компами что-ли.
Там про бананы?
Цитата:
XaeroX писал: В новый год - только с адекватными форумчанами, я считаю.
И чтобы Крым был наш!
Добавлено 06-01-2017 в 23:30:
PS, может быть я не слишком понятно выразился, почему SQB невозможно полностью вычистить - он даже в cl_inputangles имеется, а матрицу поворота мира по Кармаку уже не переделаешь. Не думаю, что и Ксерокс её переделывал. Так что это всего лишь приятная иллюзия, что бага прям ваще-ваще нет. Какие-то остатки всегда будут присутствовать.
Чтобы его не было, надо вот прям с нуля движок писать и чтобы там обои были нескучные и аппаратная поддержка бананов.
XaeroX писал: В новый год - только с адекватными форумчанами, я считаю
Тогда надо сразу полфорума в баню вписывать.
Цитата:
Дядя Миша писал: Ну и какой же код там рекурсивен?
"Ну видишь, ты базовых вещей не понимаешь, самого элементарного..."
Цитата:
Дядя Миша писал: Но на мой взгляд модель игрока наклонять это ваще бред какой-то и не нужно, достаточно вьюанглес передавать в блендинги.
Я бы не сказал, что бред, учитывая, что у половины анимаций блендингов нет. Кроме того, полёты с поворотами выглядят очень занятно.
Цитата:
Дядя Миша писал:
Ничего там не оказалось, ты посадил еще один баг в свой любимый XDM, поздравляю.
Нет, там другое. Там дважды умножалось на 3. Три в квадрате, Карл.
Я уже догадываюсь, что проблема не решается методом "умножил до движка, поделил после".
Я уже определил в треде про 3038, что проблемки начинаются ещё при движении КУРСОРА МЫШКИ. Или джойстика.
Короче, надо отслеживать углы ВЕЗДЕ. На сервере, в PlayerPreThink() надо pev->angles перед всем домножать на 3, чтобы углы считались нормально и не ехали.
Далее, на клиенте при приходе углов почему-то снова умножать на 3.
Но вот засада, что мразедвижок делит angles на 3 ПЕРЕД вызовом AddClientEntities(), и поправить это без кахов нельзя т.к. эта говнофункция в хл не вызывается для первого лица.
Далее - КреатеЕнтитис() - там я правлю фонарик. И тут - СНОВА меняются углы! НАХРЕНА ИХ СТОЛЬКО РАЗ МЕНЯТЬ?! ОДИН раз посчитал - и живи весь кадр - НЕЕЕЕЕТ! - надо всё засрать!
Затем - СтудиоМоделУгнетатор() - УГЛЫ СНОВА В ЖОПЕ, но тут всё поправимо.
Но знаете, что хуже всего?
Хуже всего эвенты с их углами.
Думаете, всё?
НЕЕЕЕЕЕТ - отвечает программер!
Почему не работает "привязка" РС, ПС, ТЕ и прочего говна к аттачментам? А потому что каким-то чудом в m_pLocalPlayer = GetAnonByIndex(); ВСЕ attachments[] == origin. Вот так. Наносекунду назад, в ШтудиоМодельЖопере() они посчитались - но зачем хранить, когда можно затереть?(ц)Вальве - а тут они уже тёртые на тёрке. Огей, сохраняем в вазелине.вузер1/2/3/10101. Что дальше? Дальше уже за компом просижено около 30 часов. Вальве и Кармаку пожелаю сами знаете чего.
~ X ~ писал: Почему не работает "привязка" РС, ПС, ТЕ и прочего говна к аттачментам? А потому что каким-то чудом в m_pLocalPlayer = GetAnonByIndex(); ВСЕ attachments[] == origin.
Всё там прекрасно работает и никто эти оригины не затирает.
Ghoul [BB] писал: Остальные тут просто так, для мебели тусуются...
"Это стойкое чувство, что ты прав..."
Код в клиенте - это где студиомоделрендерер затирает свои внутренние переменные класса, чтобы, вызывая отрисовку из отрисовки, не звтёрлась модель игрока. У меня кода сейчас нет. Помню только, что там меня убило наповал нечто типа:
cl_entity_t backup = *drawing_entity;
DrawSomeShit();// drawing_entity здесь пропускают через миксеры(тм)
*drawing_entity = backup;
Цитата:
Дядя Миша писал: Всё там прекрасно работает и никто эти оригины не затирает.
нажми F9 в HUD_TempEntsUpdate() (или как оно там) и погляди, чему равны аттачменты у игрока. Лучше даже сделай так: поставь pEfxAPI->MuzzleFlush(attachment, someshit); в этйо функции для игроков. Я не знаю, как оно в ксаше, но в Калве к этому моменту все аттачменты равны ориджину. Халва не последняя, если что.
Проблема в том, что углы в client_entity::curstate::angles портятся от функции к функции. Если я их поправил в самом начале (ProcessPlayerData() или как оно там), это не значит, что в StudioAnalRenderer() они будут такими же. Что наводит на размышления:
если углы с сервера приходили в формате 30г (т.е. 90/3), а я испрвил до 90г, а в следующем месте они снова 30г, то значит, в оригинале они здесь былы 10г!!! (30/3=10)
Дремучее мракобесие этот SQB.
[i]Добавлено 08-01-2017 в 12:00:
Вот ещё что вспомнил: с огнемётом мне насолила ещё одна рпоблема: помимио attachments[] обнуляется curstate.velocity == 000, в результате чего снарядам не добавляется скорость игрока.
Вспоминается песенка от Буллсквида с ХЛру:
- Ой, что это?
- ЖОООПААААА
~ X ~ писал: Помню только, что там меня убило наповал нечто типа:
cl_entity_t backup = *drawing_entity;
DrawSomeShit();// drawing_entity здесь пропускают через миксеры(тм)
*drawing_entity = backup;
Вот как реагировать на такое? Это опять какой-то тонкий юмор, который я не понял? Или в этом коде есть действительно что-то невероятно смешное?
~ X ~ писал: меня убило наповал нечто типа:
cl_entity_t backup = *drawing_entity;
DrawSomeShit();// drawing_entity здесь пропускают через миксеры(тм)
*drawing_entity = backup;
Это отрисовка випон-модели, которая не имеет своей энтити. От нее вообще только имя модели известно и больше ничего.
Цитата:
~ X ~ писал: client_entity::curstate::angles портятся от функции к функции. Если я их поправил в самом начале (ProcessPlayerData() или как оно там), это не значит, что в StudioAnalRenderer() они будут такими же. Что наводит на размышления:
Не трогай curstate.angles
Цитата:
~ X ~ писал: помимио attachments[] обнуляется curstate.velocity == 000
velocity не передаётся в халфе на клиент.
И я повторяю вопрос - где ты в клиенте увидел рекурсивный код, который выполняется в зависимости от наличия оружия в руке.