Показать сообщение отдельно
Старый 03.01.2007, 21:12   #1581
Roomper

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

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

Раз никто не хочет подробно описывать, как реализованы циклы в Готике 2, хоть помогите решить небольшую проблемку. Короче, написал я функцию состояния:
Cпойлер(щелкните, чтобы прочесть):
Код:
var int PlayerCanTalkDragon;func void ZS_HealthReload(){      };func int ZS_HealthReload_loop(){      if(hero.attribute[ATR_HITPOINTS] < 80)       {            Npc_ChangeAttribute(hero,ATR_HITPOINTS,hero.attribute[ATR_HITPOINTS_MAX]);      };            if(Npc_GetStateTime(hero) > 60)      {            PlayerCanTalkDragon = TRUE;            return LOOP_END;      };                  return LOOP_CONTINUE;};func void ZS_HealthReload_End(){};

Но задуманное мной событие почему-то не выполняется. Пробовал вызывать этот цикл с помощью операторов:
AI_StartState(hero, ZS_HealthReload,0,"");
hero.start_aistate = ZS_HealthReload;

Вся та же трабла. В чем я ошибся, поправьте пожалуйста.
P. S. А цикл хоть я правильно написал? По идее все должно работать, как надо: восстановление здоровья будет выполняться до тех пор, пока не истечет 60 сек (функция-цикл, возвратив значения Loop_End, прекратит выполнение операторов в теле этой функции и перейдет к выполнению func void ZS_HealthReload_End()). А пока не пройдет 60 сек, функция будет «возвращаться» к началу (за это отвечает return LOOP_CONTINUE). Правильно ли я все понял?
Ответить с цитированием