HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)
Отправлено Дядя Миша 03-10-2022 в 13:54:
Цитата:
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 03-10-2022 в 14:30:
Цитата:
Ku2zoff писал:
Aynekko а зачем ты на клиенте берёшь свойства из вазелина? Надо брать из курстейта.
Я постоянно меняю curstate на клиенте, а в baseline хранится оригинальное число, которое я использую, как отправную точку. Впрочем, выход я уже нашел.__________________
Мой мод на Xash
Отправлено Ku2zoff 03-10-2022 в 14:37:
Цитата:
Aynekko писал:
Я постоянно меняю curstate на клиенте, а в baseline хранится оригинальное число, которое я использую, как отправную точку.
Как вариант можно использовать для хранения исходных значений пользовательскую структурку. А вообще для чего тебе это? Удобней управлять значениями на сервере, потому что в классе энтити можно завести 100500 переменных для хранения исходных значений.
Отправлено Aynekko 03-10-2022 в 15:21:
Цитата:
Ku2zoff писал:
вообще для чего тебе это?
Плавное исчезание энтити на расстоянии для оптимизации, ну и чтоб красиво было. На сервере - значит попрощаться с плавностью в мультиплеере__________________
Мой мод на Xash
Отправлено Дядя Миша 03-10-2022 в 15:51:
Цитата:
Aynekko писал:
Я постоянно меняю curstate на клиенте
curstate - только для чтения. Менять его нельзя ни в коем случае.
Впрочем все три стейта - baseline, curstate, prevstate нельзя менять.
Цитата:
Aynekko писал:
а в baseline хранится оригинальное число, которое я использую, как отправную точку
Это никакая не отправная точка. Удивительно, что оно у тебя вообще работает.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Aynekko 03-10-2022 в 16:18:
Цитата:
Дядя Миша писал:
curstate - только для чтения. Менять его нельзя ни в коем случае.
Почему нельзя? Я так понял он каждый раз с сервера приходит все равно. Я его прям на входе ловлю и пишу туда свое. Все работает 
Добавлено 03-10-2022 в 19:18:
Цитата:
Дядя Миша писал:
Это никакая не отправная точка.
Я же говорю, я ее просто так использую. Ну, главное работает.__________________
Мой мод на Xash
Отправлено Дядя Миша 03-10-2022 в 16:28:
Цитата:
Aynekko писал:
Я так понял он каждый раз с сервера приходит все равно
В мультике он далеко не каждый кадр приходит с сервера. Да и вообще, потом не удивляйся, если начнётся что-то странное. Автор XDM тоже занимался подобными вещами, в результате его мод работал всё хуже и хуже.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Aynekko 03-10-2022 в 16:33:
Ну я тестирую, экспериментирую. Конечно в случае чего переделаю. Я тестил на пинге 100 (фейковом), никаких проблем не обнаружил пока что.
__________________
Мой мод на Xash
Отправлено Ku2zoff 07-10-2022 в 13:35:
Цитата:
Aynekko писал:
На сервере - значит попрощаться с плавностью в мультиплеере
Должно быть решение на уровне рендерера, не затрагивающее энтварсы.
Добавлено 07-10-2022 в 20:35:
Есть идея. Пометь энтить каким-нибудь флагом, и запрети для таких энтить передачу pev->renderamt по сети:
C++ Source Code:
1 | state->rendermode = ent->v.rendermode; |
2 | if (!FBitSet(ent->v.flags, FL_MYFLAG)) state->renderamt = ent->v.renderamt; |
3 | state->renderfx = ent->v.renderfx; |
4 | state->rendercolor.r = ent->v.rendercolor.x; |
5 | state->rendercolor.g = ent->v.rendercolor.y; |
6 | state->rendercolor.b = ent->v.rendercolor.z; |
Так, на всякий случай. А оригинальное значение renderamt замени на кастомный keyvalue и передавай свободным энтварсом, например iuser1.
Отправлено Aynekko 08-10-2022 в 12:10:
Цитата:
Дядя Миша писал:
curstate - только для чтения. Менять его нельзя ни в коем случае.
Тем временем в CL_FxBlend():
C++ Source Code:
4 | if( e->curstate.renderamt > 3 ) |
5 | e->curstate.renderamt -= 4; |
6 | else e->curstate.renderamt = 0; |
8 | blend = e->curstate.renderamt; |
Цитата:
Ku2zoff писал:
передавай свободным энтварсом, например iuser1.
Это ксашмод, тут все уже занято, увы. Ну, можно конечно найти, если порыться, но я стараюсь идти по этому пути, когда уже совсем нет вариантов.__________________
Мой мод на Xash
Отправлено Дядя Миша 08-10-2022 в 13:44:
Цитата:
Aynekko писал:
Тем временем в CL_FxBlend():
Хак от Вальвы. Еще и не timebased.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено hgrunt_2020 12-10-2022 в 12:52:
Вернёмся к моему старому вопросу!
Цитата:
Ku2zoff писал:
значит, между анимациями контроллер сбрасывается в дефолтное положение. ent->curstate.controller[0] нужно задавать значение не в функции выстрела, а каждый кадр. Или в HUD_Frame, или в StudioDrawModel/StudioSetupBones.
Ну посылать переменную я способен, а работать с HUD_Frame/StudioDrawModel/StudioSetupBones не умею. Что, как, зачем, и почему?
Добавлено 12-10-2022 в 13:53:
так, я смог это сделать но ничего не дало, как сбрасывалось так и сбрасывается
Добавлено 12-10-2022 в 13:54:
C++ Source Code:
3 | void DLLEXPORT HUD_Frame( double time ) |
6 | if (iWpnId == WEAPON_TIHAR || iWpnId == WEAPON_GAUSS) |
8 | gEngfuncs.GetViewModel()->curstate.controller[0] = gHUD.m_iBone1; |
10 | GetClientVoiceMgr()->Frame(time); |
Добавлено 12-10-2022 в 14:46:
при этом curstate.controller[0] имеет заданное ему значение и не поднимается плавно до него
Добавлено 12-10-2022 в 15:20:
Я починил баг! Один товарищ написал мне следующее:
Цитата:
Cкорее всего причина в том что код интерполяции пытается использовать данные контроллера за прошлый кадр, но поскольку движок это дело обновляет, то для вьюмодельки это число пустое, потому-что это энтитя на клиенте.
Я изучил код связанный с костями и увидел что там идёт расчет с curstate.controller и latched.prevcontroller, который у меня всегда был равен 0, потому стрелка и прыгала до 0
Добавлено 12-10-2022 в 15:52:
https://youtu.be/Lri8ifPxxSc вот результат__________________
И главное, Артём, помни: не ешь желтый снег!
Отправлено Ku2zoff 12-10-2022 в 15:04:
Цитата:
hgrunt_2020 писал:
curstate.controller и latched.prevcontroller
Поэтому надо было сразу глядеть StudioSetupBones, а следом StudioCalcBoneAdj. Там как раз эта интерполяция делается. Понятно, что для вьюмодельки нету latched.prevcontroller, у неё нет никакой информации из предыдущего кадра. Поэтому нельзя сделать интерполяцию между анимациями. Да и не нужно, стрёмно будет выглядеть, надо по-хитрому высчитывать тайминги. Ну нафиг такой геморрой.
Отправлено Дядя Миша 12-10-2022 в 18:29:
На вьюмодельках, я вообще не припоминаю, чтобы контроллеры костей использовались.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено hgrunt_2020 12-10-2022 в 22:28:
Дядя Миша ну я первый кто их использует)
__________________
И главное, Артём, помни: не ешь желтый снег!