HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Смертоносный TargetName (https://hlfx.ru/forum/showthread.php?threadid=4023)
Отправлено Half 25-07-2013 в 13:44:
Цитата:
Дядя Миша писал:
Кейсы вообще убери. Пусть только дохнет по активации
Кейсы с комментами убраны, однако ничего не изменилось:
C++ Source Code:
1 | void CTestMonster::CommandUse( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ) |
3 | pev->takedamage = DAMAGE_NO; |
5 | m_iGoalAnim = PLANT_ANIM_Death; |
8 | void CTestMonster :: DieThink( void ) |
10 | pev->nextthink = gpGlobals-> time + 0.1; |
12 | if (m_fSequenceFinished) |
14 | if (pev->sequence == m_iGoalAnim) |
18 | case PLANT_ANIM_Death: |
24 | pev->sequence = FindTransition( pev->sequence, m_iGoalAnim, &m_iDir ); |
36 | switch( pev->sequence ) |
38 | case PLANT_ANIM_Death: |
39 | pev->framerate = RANDOM_FLOAT( m_iDir - 0.2, m_iDir + 0.2 ); |
45 | EMIT_SOUND_DYN( ENT(pev), CHAN_WEAPON, "ambience/flies.wav", 1, ATTN_NORM, 0, 100 ); |
Цитата:
Luxury писал:
сделать точечную энтити, которая убивает монстра по имени? А эту энтити вызывать кнопкой
Я этого монстра и кнопками и мульти_менеджерами грохаю.__________________
Пруха длится всего 5 минут.
Отправлено Дядя Миша 25-07-2013 в 14:06:
А что может измениться, если ты копируешь случайные куски кода, не понимая что они делают?
Ты и env_spritetrain по такому же принципу делал - год копировал разные куски кода в надежде, что заработает. Не заработало. Выводов ты так и не сделал, учиться ничему не стал. Следовательно тебе просто нравится убивать время таким образом.
Не буду мешать 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено KiQ 25-07-2013 в 17:01:
Как-то так. Топорно, можно улучшить, но принцип ясен
C++ Source Code:
1 | //===================================================== |
2 | // trigger_killmonster: kill the target monster |
3 | //===================================================== |
4 | class CTriggerKillmonster : public CBaseEntity |
6 | DECLARE_CLASS( CTriggerKillmonster, CBaseDelay ); |
8 | void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ); |
11 | LINK_ENTITY_TO_CLASS( trigger_killmonster, CTriggerKillmonster ); |
13 | void CTriggerKillmonster::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ) |
18 | CBaseMonster * pMonster; |
20 | if (pActivator->IsPlayer()) { |
21 | pMonster = (CBaseMonster*)UTIL_FindEntityByTargetname(NULL, STRING(pev->target)); |
23 | if (pMonster) pMonster->Killed(pActivator->pev, GIB_NORMAL); |
FGD:
C++ Source Code:
1 | @PointClass base(Targetname) = trigger_killmonster : "Trigger Kill Monster" |
3 | target(target_destination) : "Monster for kill!" |
__________________
-Brain is dead-
Отправлено Дядя Миша 25-07-2013 в 17:17:
Мне эта тема всё больше начинает напоминать программу "поезд" 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено KiQ 25-07-2013 в 19:46:
Дядя Миша ну я ж говорю, не идеальный вариант. У тентакля и контролера Killed вообще ничего не дает
Добавлено 25-07-2013 в 21:26:
Хотя мой вариант хотя бы работает с обычными монстрами
Добавлено 25-07-2013 в 22:41:
Ан нет, только с тентаклем такая фигня со смертью
Добавлено 25-07-2013 в 22:46:
Вобщем через мой вариант (а именно этого, вроде хочет ТС) просто и чисто организовать смерть хентакля не выйдет, хотя в целом это возможно.
Добавлено 25-07-2013 в 23:20:
В общем, исправление для хентакля. Во-первых, нужно в CTentacle добавить функцию
C++ Source Code:
void MonsterUse( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ); |
это делается в файле tentacle.cpp в декларации класса по аналогии с CommandUse, ничего сложного.
Потом просто вставляем над функцией CommandUse нашу:
C++ Source Code:
6 | void CTentacle::MonsterUse( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ){ |
7 | CTentacle::CommandUse( pActivator, pCaller, useType, value); |
Она как бы играет роль заглушки в данном случае.
И теперь исправленный и дополненный вариант моего триггера:
C++ Source Code:
1 | //===================================================== |
2 | // trigger_killmonster: kill the target monster |
3 | //===================================================== |
4 | class CTriggerKillmonster : public CBaseEntity |
6 | DECLARE_CLASS( CTriggerKillmonster, CBaseEntity ); |
8 | void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ); |
11 | LINK_ENTITY_TO_CLASS( trigger_killmonster, CTriggerKillmonster ); |
13 | void CTriggerKillmonster::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ) |
18 | if ( pActivator->IsPlayer() ) |
20 | CBaseMonster * pMonster = (CBaseMonster*)UTIL_FindEntityByTargetname( NULL, STRING( pev->target ) ); |
25 | if ( FClassnameIs( pMonster, "monster_tentacle" ) ) |
27 | pMonster->MonsterUse( pActivator, pCaller, USE_OFF, 0); |
32 | pMonster->Killed( pActivator->pev, GIB_NORMAL ); |
Вроде ничего не забыл. Триггер работает, хентакля при нажатии на кнопку дохнет. Может далеко не идеальный вариант, но я прошу, если кто-то знает как лучше, отпишитесь, пожалуйста
Добавлено 25-07-2013 в 23:46:
Кстати, монстров для расправы можно указывать через trigger_changetarget. Таким образом можно повторно использовать один и тот же триггер, например в сочетании с monstermaker. Допустим, в игре вроде BaseDefence, где можно в конце каждого раунда рождать монстра, убиваемого через определенные действия игроков, в результате которых и будет активирован trigger_killmonster__________________
-Brain is dead-