HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Беда с назначением анимации в методе Setactivity (https://hlfx.ru/forum/showthread.php?threadid=5902)
Отправлено Shadow762 24-10-2022 в 07:18:
Беда с назначением IDLE анимации в методе Setactivity
Собственно, экспериментировал с барниками и грантами, добавил кастомные анимации (барникам - со спас12/сп5, грантам - пистолетные)
в методе
void <class>::SetActivity(Activity NewActivity)
у того же хгранта назначаются определенные анимки на некоторые ACTы, к примеру
C++ Source Code:
2 | if (FBitSet(pev->weapons, HGRUNT_9MMAR)) |
6 | iSequence = LookupSequence("standing_mp5"); |
10 | iSequence = LookupSequence("crouching_mp5"); |
В игре оно работает...
но при case ACT_IDLE условие полностью игнорируется и все анимации в модели с параметром ACT_IDLE (в QC файле) проигрываются в приоритетном порядке.
Частично вылечил это путем удаления данного параметра из QC файла. Однако в ряде случаев возникает рандомная идл анимация. Но хотелось бы обойтись без подобного колхоза, устранив проблему чисто кодингом.
Если кто знает, подскажите пожалуйста, как исправить это?__________________
Fight for Peace, Fight for Love
Отправлено Ku2zoff 24-10-2022 в 10:56:
Цитата:
Shadow762 писал:
при case ACT_IDLE условие полностью игнорируется и все анимации в модели с параметром ACT_IDLE (в QC файле) проигрываются в приоритетном порядке.
Хе-хе. Вот ещё кто-то на это наткнулся. Вот тебе пример, как назначать кастомные idle анимации:
C++ Source Code:
1 | void CBarney::MonsterThink(void) |
3 | pev->nextthink = gpGlobals->time + 0.1; |
7 | float flInterval = StudioFrameAdvance(); |
9 | if (m_MonsterState != MONSTERSTATE_SCRIPT && m_MonsterState != MONSTERSTATE_DEAD && m_Activity == ACT_IDLE && m_fSequenceFinished) |
15 | if (pev->weapons) iSequence = LookupActivity(ACT_IDLE_ANGRY); |
16 | else iSequence = LookupActivity(m_Activity); |
20 | if (pev->weapons) iSequence = LookupActivityHeaviest(ACT_IDLE_ANGRY); |
21 | else iSequence = LookupActivityHeaviest(m_Activity); |
24 | if (iSequence != ACTIVITY_NOT_AVAILABLE) |
26 | pev->sequence = iSequence; |
31 | DispatchAnimEvents(flInterval); |
33 | if (!MovementIsComplete()) |
38 | if (!TaskIsRunning() && !TaskIsComplete()) |
39 | ALERT(at_error, "Schedule stalled!!\n"); |
Отправлено Shadow762 24-10-2022 в 11:18:
Цитата:
Ku2zoff писал:
Хе-хе. Вот ещё кто-то на это наткнулся
Стоп, то есть это редкий случай??
Ничоси)
Ku2zoff, спасибо, проверю ближе к вечеру 
__________________
Fight for Peace, Fight for Love
Отправлено Ku2zoff 24-10-2022 в 11:54:
Цитата:
Shadow762 писал:
Стоп, то есть это редкий случай??
Idle анимации вызываются не только в SetActivity, но и в MonsterThink. Так что случай неочевидный, скажем так.
Отправлено Shadow762 24-10-2022 в 12:10:
Ku2zoff, нетривиально, однако
Но еще раз спасибо!
решилось сразу несколько проблем 
__________________
Fight for Peace, Fight for Love
Отправлено Shadow762 26-10-2022 в 00:16:
Ku2zoff В общем проверил все детальльно, идлы порой глючат
назначенные работают в большинстве случаев, но хгранты иногда с пистолетного идла переключаются на автоматный
И наоборот тоже.
__________________
Fight for Peace, Fight for Love