Раз никто не хочет подробно описывать, как реализованы циклы в Готике 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). Правильно ли я все понял?