Показать сообщение отдельно
Старый 03.05.2007, 20:34   #1636
B_Wolf

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

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);
, т.к. неизвестно как он будет работать с трупом :)
Ответить с цитированием