HLFX.Ru Forum
Показать все 10 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- CBaseAnimating (https://hlfx.ru/forum/showthread.php?threadid=5290)


Отправлено domded 27-06-2019 в 08:50:

CBaseAnimating

Собственно сабж. Как заморозить анимацию в текущем состоянии кадра и интерполяции? Если выставить pev->framerate = 0.0, то оно замораживается в первом кадре анимации.


Отправлено Дядя Миша 27-06-2019 в 09:42:

Есть функция StopAnimation. Она как раз таки и выставляет pev->framerate = 0.0; Других способов не предусмотрено. А ты через эвент анимационный выставляй. Я так делал в римейке Кваки для зомбаков. Там же анимация падения-вставания - это одна анимация. И вот он упал и через какое-то время должен подняться. И я по эвенту - стопмашина. А потом ждём некоторое время и подымаем его.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено domded 30-06-2019 в 09:34:

Понял! А как на сервере получить позицию аттачмента? На клиенте есть IEngineStudio.StudioGetAttachment, а на сервере?


Отправлено XaeroX 30-06-2019 в 09:43:

domded
У CBaseAnimating есть функция GetAttachment().

__________________

xaerox on Vivino


Отправлено domded 01-07-2019 в 12:59:

Мне кажется, что это немого не то. Что-то оно не учитывает пройденный путь.
При запуске анимации я делаю следующее

C++ Source Code:
1
...
2
pev->sequence = iMySequence;
3
ResetSequenceInfo();
4
GetAttachment( 0, prevPos, prevAng );
5
SetThink( AnimThinkEnd );
6
SetNextThink( flSeqLen ); // длина анимации
7
...
8
void CMyAnimate::AnimThinkEnd( void )
9
{
10
  Vector nowPos, nowAng;
11
  GetAttachment( 0, nowPos, nowAng );
12
}


Когда вызывается AnimThinkEnd(), в nowPos получаются те же самые координаты, которые были в prevPos, хотя визуально анимация стоит на последнем кадре и аттачменты, соответственно, тоже. В чём здесь проблема?


Отправлено Дядя Миша 01-07-2019 в 13:22:

Цитата:
domded писал:
хотя визуально анимация стоит на последнем кадре

наверное уже сбросилась на нулевой кадр на сервере.

Добавлено 01-07-2019 в 16:22:

Проверь чему в этот момент равен pev->frame

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено domded 01-07-2019 в 13:33:

Да, так оно и есть. Если поставить think на полную длину анимации, pev->frame в конце равен нулю, хотя визуально анимация остаётся в последнем кадре . А как отловить момент, когда на сервере pev->frame = 255.0, чтобы корректно получить новую позицию аттачмента именно во время 255.0?


Отправлено Дядя Миша 01-07-2019 в 14:23:

Ну например в ResetSequenceInfo и там проверку на pev->frame >= 256.0f

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено domded 05-07-2019 в 19:40:

Получилось! Так же задам следующий вопрос тут, дабы не плодить темы:
Как передвинуть эту CBaseAnimating? У монстряков понятно, есть таски. А с CBaseAnimating как?
Пробую сделать

C++ Source Code:
UTIL_MoveToOrigin( ENT( pev ),  GetAbsOrigin() + Vector( 0.0, 0.0, 1.0 ), 36.0f, MOVE_STRAFE )

Что хочу: Переместить ентитю по оси z на 36 юнитов вверх плавно, чтобы она не дёргалась, как при телепорте.
При спауне ставлю movetype_noclip, но ни в какую не хочет двигаться. Пробовал и пев->велосити выставлять, но опять же результата нет.


Отправлено Дядя Миша 06-07-2019 в 08:14:

ноклип и велосити обычно достаточно. Ищи где ошибся, может где-то велосити в 0 сбрасывается.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 19:04.
Показать все 10 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024