2alexxmmt:
Не работает скрипт if(!Npc_CanSeeNpc(self,other)). Возможно ли исправить?
|
Вы в этом уверены? :)
2alexxmmt:
// НПС умирает :) еще бы, со спины... AI_StartState(self,ZS_Dead,0,""); Wld_PlayEffect("FX_EARTHQUAKE",self,self,0,0,0,FAL SE);
|
Настораживает эта вырезка. Это каким таким образом НПЦ должен помереть? :)
Перевод в состояние AI_StartState(self,ZS_Dead,0,""); не причиняет реальной смерти - это состояние по идее должно наступать ПОСЛЕ смерти :)
А вот чтобы реально грохнуть НПЦ, вернее применить функцию B_KillNpc(self); ну или просто обнулить его жизненную энергию.
Да и к тому же смущает сама реализация идеи: Функция состояния ZS_ по идее должна наступать ПОСЛЕ совершенного действия вызванного восприятим.
ИМХО подобная идея должна быть реализована через функцию восприятия повреждения B_AssessDamage
например вставить куда-нить блок в функцию...
func void B_AssessDamage()
{
// если НПС не видит агрессора
if(!Npc_CanSeeNpc(self,other))
{
// НПС умирает :) еще бы, со спины...
Npc_ChangeAttribute(self,ATR_HITPOINTS,-self.attribute[ATR_HITPOINTS_MAX]);
Wld_PlayEffect("FX_EARTHQUAKE",other,other,0,0,0,F ALSE);
};
};
не уверен, но помоему эффект землетрясения лучше повесить на АГРЕССОРА Wld_PlayEffect("FX_EARTHQUAKE",other,other,0,0,0,F ALSE);
, т.к. неизвестно как он будет работать с трупом :)