Aynekko писал: И только после сейврестора уже показывает нужные числа.
Ну естественно. Вазелин для новой карты создаётся для тех энтить, что на ней расположены. А для рестора - для всех энтить, сохранённых в сейв. Туда вообще лезть не следует, не читать не писать. Единственное исключение - ворлдспаун.
Aynekko писал: Я постоянно меняю curstate на клиенте, а в baseline хранится оригинальное число, которое я использую, как отправную точку.
Как вариант можно использовать для хранения исходных значений пользовательскую структурку. А вообще для чего тебе это? Удобней управлять значениями на сервере, потому что в классе энтити можно завести 100500 переменных для хранения исходных значений.
Aynekko писал: Я так понял он каждый раз с сервера приходит все равно
В мультике он далеко не каждый кадр приходит с сервера. Да и вообще, потом не удивляйся, если начнётся что-то странное. Автор XDM тоже занимался подобными вещами, в результате его мод работал всё хуже и хуже.
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:
1
externint iWpnId;
2
3
void DLLEXPORT HUD_Frame( double time )
4
{
5
ServersThink( time );
6
if (iWpnId == WEAPON_TIHAR || iWpnId == WEAPON_GAUSS)
при этом curstate.controller[0] имеет заданное ему значение и не поднимается плавно до него
Добавлено 12-10-2022 в 15:20:
Я починил баг! Один товарищ написал мне следующее:
Цитата:
Cкорее всего причина в том что код интерполяции пытается использовать данные контроллера за прошлый кадр, но поскольку движок это дело обновляет, то для вьюмодельки это число пустое, потому-что это энтитя на клиенте.
Я изучил код связанный с костями и увидел что там идёт расчет с curstate.controller и latched.prevcontroller, который у меня всегда был равен 0, потому стрелка и прыгала до 0
hgrunt_2020 писал: curstate.controller и latched.prevcontroller
Поэтому надо было сразу глядеть StudioSetupBones, а следом StudioCalcBoneAdj. Там как раз эта интерполяция делается. Понятно, что для вьюмодельки нету latched.prevcontroller, у неё нет никакой информации из предыдущего кадра. Поэтому нельзя сделать интерполяцию между анимациями. Да и не нужно, стрёмно будет выглядеть, надо по-хитрому высчитывать тайминги. Ну нафиг такой геморрой.