HLFX.Ru Forum Страницы (2): [1] 2 »
Показать все 16 сообщений этой темы на одной странице

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


Отправлено Vetal 28-03-2007 в 00:10:

Half-Life handleanimevents

Я наверное чего то не до понимаю, но мой новоиспеченый монстр ни у кого не может отнять health. Ничего понять не могу.


Вот описание:

void CW :: HandleAnimEvent( MonsterEvent_t *pEvent )
{

switch( pEvent->event )
{

case WA:
{
// do stuff for this event.
CBaseEntity *pHurt = CheckTraceHullAttack(25, gSkillData.skwdmgbite, DMG_SLASH );

if ( pHurt ) //Это условие выполняется
{

if ( pHurt->pev->flags & (FL_MONSTER|FL_CLIENT) ) А это уже нет
{

pHurt->pev->punchangle.x = 5;
pHurt->pev->velocity = pHurt->pev->velocity + gpGlobals->v_forward * -100;
EMIT_SOUND(ENT(pev), CHAN_BODY, "barney/standback.wav", 1, ATTN_NORM);
}

}
if (RANDOM_LONG(0,1))
EMIT_SOUND(ENT(pev), CHAN_BODY, "zombie/claw_miss1.wav", 1, ATTN_NORM);
}
break;

default:
CBaseMonster::HandleAnimEvent( pEvent );
break;
}
}




В QC прописано:

$sequence "attack1" "attack1" fps 10 ACT_MELEE_ATTACK1 1 { event 1 8 }



Отправлено Wargon 28-03-2007 в 01:01:

По-моему в случае с

code:
pHurt->pev->flags & (FL_MONSTER|FL_CLIENT)

нужно юзать v.flags.


Отправлено XaeroX 28-03-2007 в 01:05:

Vetal раз не выполняется второе условие, посмотри, какой класснейм у pHurt:
ALERT(at_console,"pHurt: %s\n", STRING(pHurt->pev->classname));
И первый параметр у CheckTraceHullAttack попробуй увеличить.

Добавлено сегодня в 08:05:

Wargon это зачем? pHurt это не edict, а CBaseEntity*.

__________________

xaerox on Vivino


Отправлено Vetal 28-03-2007 в 01:52:

Не, меня второе условие вообще не волнует на самом деле. У меня проблема в том, что монстр не отнимает жизни у других монстров(у player соответственно тоже).

А на счет CheckTraceHullAttack уже все что можно было попеременял... результат 0.

А еще что больше удивляет, то что это обрезок из HandleAnimEvent зомби. Как там может что то не работать.


Отправлено XaeroX 28-03-2007 в 02:44:

Замени gSkillData.skwdmgbite на какое-нибудь число, например 20. Возможно, у тебя эта переменная не инициализирована правильно.

__________________

xaerox on Vivino


Отправлено Vetal 28-03-2007 в 02:49:

Не поверишь. Менял. Даже DMG_SLASH на разные DMG менял. И flDist какие только не ставил. Нифига.


Отправлено XaeroX 28-03-2007 в 03:55:

Vetal либо у тебя не вызывается сам евент этот (поставь алерт в нем), либо дамаж = 0. Чудес не бывает.

__________________

xaerox on Vivino


Отправлено Дядя Миша 28-03-2007 в 08:43:

Vetal а что это за имя для кейса WA ???
эвенты не держат имена, только цифры.


Отправлено XaeroX 28-03-2007 в 09:15:

Дядя Миша ну дефайн у него такой, видимо... что тут удивительного...

__________________

xaerox on Vivino


Отправлено Vetal 28-03-2007 в 12:35:

там перед этим кодом стоит

#define WA 0x01 (просто еденица тоже стояла).

может не то что то? Хотя отсебячины никакой все по аналогам других монстров.

и сам эвент вызывается или как тогда звуки издаются?

А если gSkillData.skwdmgbite заменить на 20 например, то как дамаж будет нулевым.

Ладно. Надо весь код снести и по новой накатать. Может не накосячу.

Хотя нет. Еще помучаю.

И я хз как эти ALERTы вставлять.


Так?

C++ Source Code:
1
if ( pHurt->pev->flags & (FL_MONSTER|FL_CLIENT) ) // А это уже нет
2
{
3
#if _DEBUG
4
  ALERT(at_console,"pHurt: %s\n", STRING(pHurt->pev->classname));
5
#endif
6
 
7
  pHurt->pev->punchangle.x = 5;
8
  pHurt->pev->velocity = pHurt->pev->velocity + gpGlobals->v_forward * -100;
9
  EMIT_SOUND(ENT(pev), CHAN_BODY, "barney/standback.wav", 1, ATTN_NORM);
10
}


Отправлено XaeroX 28-03-2007 в 12:45:

Цитата:
Vetal писал:
И я хз как эти ALERTы вставлять.
Так?

Ага. Ставишь во все разветвления кода и смотришь, что выполняется, а что - нет.

__________________

xaerox on Vivino


Отправлено Дядя Миша 28-03-2007 в 12:49:

Vetal а ты UTIL_MakeVectors();
делал?
а то глобальные вектора юзаешь, а кто AngleVectors делать будет?


Отправлено XaeroX 28-03-2007 в 13:00:

Дядя Миша, да, они делаются в CheckTraceHullAttack.

__________________

xaerox on Vivino


Отправлено Дядя Миша 28-03-2007 в 17:15:

XaeroX ну тогда это твоя вотчина.
Ты у нас специалист по ДНК.


Отправлено Vetal 02-02-2008 в 14:49:

Ответ на этот вопрос:
В Spawn для монстра было написано
UTIL_SetSize( pev, Vector( -1, -1, 0 ), Vector( 1, 1, 1 ) );
Поменять ее хотябы на
UTIL_SetSize( pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX );
и все заработало.


Временная зона GMT. Текущее время 13:03. Страницы (2): [1] 2 »
Показать все 16 сообщений этой темы на одной странице

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