HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- XashXT (https://hlfx.ru/forum/forumdisplay.php?forumid=30)
-- XashXT/3D [Вопросы и ответы] (https://hlfx.ru/forum/showthread.php?threadid=3689)
Отправлено Aynekko 06-08-2021 в 16:07:
Цитата:
SNMetamorph писал:
в дельте для aiment не хватало битов
Ага. А я искал… 
C++ Source Code:
DEFINE_DELTA( aiment, DT_INTEGER, 11, 1.0 ), |
Теперь хочу разобраться с этим. Тут человек спрашивал, но т.к. мне тоже нужно, я тоже занялся.
Цитата:
Next Day писал:
Всем привет делая свой мод /игру на Xash xt 0.8 я заметил что в мультиплеере есть глюк гейт секвенций при параметре gl_render 1, в версиях Xash xt 0.6 такова нет там все в порядке
Вот видео пример сервер
https://youtu.be/OM6dJF07Qfk
А вот клиент
https://youtu.be/jGzBBH2Wzvk
Цитата:
Дядя Миша писал:
в EstimateGaitFrame надо смотреть чему равен m_pCurrentEntity->curstate.fuser1;
он должен меняться, когда игрок бегает. И в сингле и в мульте.
Вот для начала проверь это.
Проверил. Он всегда 0.
Добавлено 06-08-2021 в 19:07:
Так. У меня был закомментирован StudioGaitFrameAdvance в PostThink игрока. Какой-то движ у меня уже был насчет этого, видимо. Сейчас значение меняется.
Внешне вроде все хорошо, только в мультиплеере нет. Клиент начинает тоже ногами двигать, когда сервер ходит. В общем, то же самое что и на видео у товарища.__________________
Мой мод на Xash
Отправлено Ku2zoff 06-08-2021 в 16:24:
Aynekko смотри индекс m_pCurrentEntity. Наверное, клиенту почему-то прилетает индекс игрока-сервера.
Отправлено Дядя Миша 06-08-2021 в 17:32:
Ну хорошо, что вы и без меня уже потихоньку во всём разбираетесь. 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Aynekko 06-08-2021 в 18:13:
В общем вот такой спам в консоль. Выставил в StudioEstimateGaitFrame
C++ Source Code:
gEngfuncs.Con_Printf("number %i, fuser1 %f\n", m_pCurrentEntity->curstate.number, m_pCurrentEntity->curstate.fuser1); |
Когда один игрок не видит другого в кадре, я вижу свой номер. Сервер 1, клиент 2. Когда второй игрок в кадре - тут как на скриншоте: пишутся оба.
А еще, когда клиент прыгает, fuser1 обнуляется, а у сервера нет.
Ну и еще баг. Когда идешь боком и стреляешь, игрока дергает в ту сторону, в которую идешь. Может особенность thirdperson.__________________
Мой мод на Xash
Отправлено Ku2zoff 07-08-2021 в 05:18:
Цитата:
Aynekko писал:
пишутся оба
Так и должно быть. Индексы приходят верные. Надо смотреть студиомоделрендерер, отличия кода расширенного рендерера и обычного. Я бы закомментил и поотключал все расширения, и включал обратно по одному, т.к. не имею понятия, где искать причину проблемы. Сорцы ксашмода (клиентской части) я почти не смотрел, поэтому ничего подсказать больше не могу.
Отправлено Aynekko 07-08-2021 в 10:49:
Я сравнивал старый ксашмод с новым, в старом по большей части все как в хлсдк и там нормально работает (правда мультиплеер не смотрел). В новом там старый код перемешался с новым, что-то там про развесовку и прочее. Я в этом совсем ничего не смыслю, ну буду методом тыка разбираться, впрочем как и всегда 
Добавлено 07-08-2021 в 12:23:
Закомментирование этого кода в StudioSetUpTransform действительно привело к тому, что теперь никто не двигает ногами, но и друг на друга клиент-сервер больше не влияют. Значит действительно надо на сервер переносить. Вопрос как?
C++ Source Code:
1 | // calc blend (FXIME: move to the server) |
2 | // StudioPlayerBlend( pseqdesc, iBlend, angles[PITCH] ); |
3 | // m_pCurrentEntity->curstate.blending[0] = iBlend; |
4 | // m_pCurrentEntity->latched.prevblending[0] = iBlend; |
5 | // m_pPlayerInfo->gaitsequence = m_iGaitSequence; |
Добавлено 07-08-2021 в 13:49:
Вроде все починилось, лол. Правда все равно игрока чуть дергает при поворотах. Поменял одну строчку всего лишь.
C++ Source Code:
m_pPlayerInfo->gaitsequence = m_pCurrentEntity->curstate.gaitsequence;// m_iGaitSequence; |
__________________
Мой мод на Xash
Отправлено Дядя Миша 07-08-2021 в 10:56:
Сравнивайте с параноей в спорных моментах.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Aynekko 07-08-2021 в 12:29:
C++ Source Code:
if( m_pCurrentEntity->curstate.renderfx != kRenderFxDeadPlayer ) |
m_iGaitSequence = IEngineStudio.GetPlayerState(m_nPlayerIndex)->gaitsequence; |
m_nPlayerIndex всегда равен нулю для обоих игроков, почему-то. Не могу понять, откуда он вообще берется.
Добавлено 07-08-2021 в 15:29:
m_pPlayerInfo->userid тоже 0 для обоих игроков 
__________________
Мой мод на Xash
Отправлено Aynekko 07-08-2021 в 17:33:
Цитата:
Aynekko писал:
m_nPlayerIndex всегда равен нулю для обоих игроков
В общем задал вот так, тестил клиент и сервер, более менее все окей. Но не понимаю, почему же m_nPlayerIndex не достается.
Добавил тут первую строчку:
C++ Source Code:
m_nPlayerIndex = m_pCurrentEntity->curstate.number - 1; |
m_pPlayerInfo = IEngineStudio.PlayerInfo(m_nPlayerIndex); |
__________________
Мой мод на Xash
Отправлено Aynekko 08-08-2021 в 11:19:
Цитата:
Ku2zoff писал:
Next Day емнип, то в ксашмоде гейтфрейм считается на сервере, а после шлётся на клиент. Вот где-то уже на клиенте гейтфрейм и гейтсеквенция берутся из клиентдаты, а не из плейерстейта. Я бы попробовал отрезать новый механизм, и считать гейт по-старинке, лишь на клиенте.
Вот кстати да, я копался-копался и действительно, если отключить гейт на сервере, то renderer 0 работает без багов. Зачем его вообще на сервер перенесли?__________________
Мой мод на Xash
Отправлено Дядя Миша 08-08-2021 в 11:56:
Цитата:
Aynekko писал:
Зачем его вообще на сервер перенесли?
Чтобы игрок, стоя на поворотной платформе не взбрыкивал ногами, когда она делает повороты, ну и не только для этого.
На клиенте он был по единственной причине - экономия траффика.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Aynekko 08-08-2021 в 14:51:
Почему такое происходит? Я только примерно понял где копать. Дальше не пойму. Тут сначала рендерер 1, потом 0.
https://www.youtube.com/watch?v=XDULytVRbY8
__________________
Мой мод на Xash
Отправлено Дядя Миша 08-08-2021 в 15:19:
Серверный гейт и так был недоделан, а вы его теперь окончательно доломали.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 08-08-2021 в 15:32:
Цитата:
Дядя Миша писал:
Серверный гейт и так был недоделан, а вы его теперь окончательно доломали.
Потому что по-хорошему, его надо делать сначала для монстров, а потом, как побочку, для игроков. Для последних это не критично. Норот почти 23 года играет в мультиплеер халфы, и до сих пор не в курсе, что никакого серверного гейта нет, и серверные хитбоксы ног не двигаются дальше нулевого кадра. Разве что в каэсочке, но это совсем другая история. И там нет синхронизации, насколько я могу судить по сорцам ReGameDLL.
Отправлено Aynekko 08-08-2021 в 17:48:
Цитата:
Дядя Миша писал:
Серверный гейт и так был недоделан, а вы его теперь окончательно доломали.
Ну вообще-то я не ломал ничего, все так и было. Точнее было еще хуже. А после того, как я добавил индекс игрока, сервер и клиент больше друг на друга не влияют. То, что на видео так и было до этого. Я понятия не имею как это фиксить. Вернуть клиентское не вариант, там вообще все переделано настолько, что проще доделать сервер видимо. Проще кому - другой вопрос. Я, увы, не смог разобраться.__________________
Мой мод на Xash