HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Смертоносный TargetName
ОН почти готов
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Half
Частый гость

Дата регистрации: Jun 2013
Проживает: г. Новосибирск
Сообщений: 86
Возраст: 30

Рейтинг



Цитата:
Дядя Миша писал:
Кейсы вообще убери. Пусть только дохнет по активации

Кейсы с комментами убраны, однако ничего не изменилось:
C++ Source Code:
1
void CTestMonster::CommandUse( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
2
{
3
  pev->takedamage = DAMAGE_NO;
4
  SetThink( DieThink );
5
  m_iGoalAnim = PLANT_ANIM_Death;
6
}
7
 
8
void CTestMonster :: DieThink( void )
9
{
10
  pev->nextthink = gpGlobals-> time + 0.1;
11
 
12
  if (m_fSequenceFinished)
13
  {
14
    if (pev->sequence == m_iGoalAnim)
15
    {
16
      switch( m_iGoalAnim )
17
      {
18
      case PLANT_ANIM_Death:
19
          UTIL_Remove( this );
20
        return;
21
      }
22
    }
23
 
24
    pev->sequence = FindTransition( pev->sequence, m_iGoalAnim, &m_iDir );
25
 
26
    if (m_iDir > 0)
27
    {
28
      pev->frame = 0;
29
    }
30
    else
31
    {
32
      pev->frame = 255;
33
    }
34
    ResetSequenceInfo( );
35
 
36
    switch( pev->sequence )
37
    {
38
    case PLANT_ANIM_Death:
39
        pev->framerate = RANDOM_FLOAT( m_iDir - 0.2, m_iDir + 0.2 );
40
      break;
41
    default:
42
        pev->framerate = 1.0;
43
      break;
44
    }
45
    EMIT_SOUND_DYN( ENT(pev), CHAN_WEAPON, "ambience/flies.wav", 1, ATTN_NORM, 0, 100 );
46
  }
47
}

Цитата:
Luxury писал:
сделать точечную энтити, которая убивает монстра по имени? А эту энтити вызывать кнопкой

Я этого монстра и кнопками и мульти_менеджерами грохаю.

__________________
Пруха длится всего 5 минут.

Сообщить модератору | IP: Записан
Сообщение: 123335

Старое сообщение 25-07-2013 13:44
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33064
Нанёс повреждений: 392 ед.

Рейтинг



А что может измениться, если ты копируешь случайные куски кода, не понимая что они делают?
Ты и 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'

Сообщить модератору | IP: Записан
Сообщение: 123339

Старое сообщение 25-07-2013 14:06
-
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2090

Рейтинг



Как-то так. Топорно, можно улучшить, но принцип ясен

C++ Source Code:
1
//=====================================================
2
// trigger_killmonster: kill the target monster
3
//=====================================================
4
class CTriggerKillmonster : public CBaseEntity
5
{
6
  DECLARE_CLASS( CTriggerKillmonster, CBaseDelay );
7
public:
8
  void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
9
};
10
 
11
LINK_ENTITY_TO_CLASS( trigger_killmonster, CTriggerKillmonster );
12
 
13
void CTriggerKillmonster::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
14
{
15
  if (!pev->target)
16
    return;
17
 
18
  CBaseMonster * pMonster;
19
 
20
  if (pActivator->IsPlayer()) {
21
    pMonster = (CBaseMonster*)UTIL_FindEntityByTargetname(NULL, STRING(pev->target));
22
 
23
    if (pMonster) pMonster->Killed(pActivator->pev, GIB_NORMAL);
24
  }
25
 
26
  pev->target = NULL;
27
}


FGD:

C++ Source Code:
1
@PointClass base(Targetname) = trigger_killmonster : "Trigger Kill Monster"
2
[
3
target(target_destination) : "Monster for kill!"
4
]

__________________
-Brain is dead-

Сообщить модератору | IP: Записан
Сообщение: 123360

Старое сообщение 25-07-2013 17:01
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33064
Нанёс повреждений: 392 ед.

Рейтинг



Мне эта тема всё больше начинает напоминать программу "поезд"

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | IP: Записан
Сообщение: 123365

Старое сообщение 25-07-2013 17:17
-
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2090

Рейтинг



Дядя Миша ну я ж говорю, не идеальный вариант. У тентакля и контролера 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:
1
/*
2
============
3
MonsterUse
4
============
5
*/
6
void CTentacle::MonsterUse( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ){
7
  CTentacle::CommandUse( pActivator, pCaller, useType, value);
8
}


Она как бы играет роль заглушки в данном случае.

И теперь исправленный и дополненный вариант моего триггера:

C++ Source Code:
1
//=====================================================
2
// trigger_killmonster: kill the target monster
3
//=====================================================
4
class CTriggerKillmonster : public CBaseEntity
5
{
6
  DECLARE_CLASS( CTriggerKillmonster, CBaseEntity );
7
public:
8
  void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
9
};
10
 
11
LINK_ENTITY_TO_CLASS( trigger_killmonster, CTriggerKillmonster );
12
 
13
void CTriggerKillmonster::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
14
{
15
  if ( !pev->target )
16
    return;
17
 
18
  if ( pActivator->IsPlayer() )
19
  {
20
    CBaseMonster * pMonster = (CBaseMonster*)UTIL_FindEntityByTargetname( NULL, STRING( pev->target ) );
21
 
22
    if ( pMonster )
23
    {
24
 
25
      if ( FClassnameIs( pMonster, "monster_tentacle" ) )
26
      {
27
        pMonster->MonsterUse( pActivator, pCaller, USE_OFF, 0);
28
 
29
        return;
30
      }
31
      else
32
        pMonster->Killed( pActivator->pev, GIB_NORMAL );
33
    }
34
  }
35
 
36
  pev->target = NULL;
37
}


Вроде ничего не забыл. Триггер работает, хентакля при нажатии на кнопку дохнет. Может далеко не идеальный вариант, но я прошу, если кто-то знает как лучше, отпишитесь, пожалуйста

Добавлено 25-07-2013 в 23:46:

Кстати, монстров для расправы можно указывать через trigger_changetarget. Таким образом можно повторно использовать один и тот же триггер, например в сочетании с monstermaker. Допустим, в игре вроде BaseDefence, где можно в конце каждого раунда рождать монстра, убиваемого через определенные действия игроков, в результате которых и будет активирован trigger_killmonster

__________________
-Brain is dead-

Отредактировано KiQ 25-07-2013 в 20:00

Сообщить модератору | IP: Записан
Сообщение: 123367

Старое сообщение 25-07-2013 19:46
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 21:09. Новая тема    Ответить
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Смертоносный TargetName
ОН почти готов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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