Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты для начинающих
Показать сообщение отдельно
#224
Старый 19.07.2019, 05:41
  #224
^
32MeTpa
 
Аватар для 32MeTpa
📖
Регистрация: 06.08.2011
Сообщения: 178
Выставка наград
Регистрация: 06.08.2011
Сообщения: 178
Выставка наград
По умолчанию
Re: Скрипты для начинающих

Как вариант, в функции Barracks_build_ok можно написать:
	function Barracks_build_ok()
MessageBox("/Maps/SingleMissions/Time of Troubles1/Barracks_building1.txt");
SetObjectiveState("zadanie1", OBJECTIVE_ACTIVE,1);
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "QuestSword", nil)
startThread( _Barracks_build_mob_monitor);
end
И сама функция _Barracks_build_mob_monitor:
	function  _Barracks_build_mob_monitor ()
         while 1 do
             sleep(2);
             if not Exists("Neutral") then
                Trigger(REGION_ENTER_AND_STOP_TRIGGER, "QuestSword", "Barracks_build_2");
                break
             end;
         end;
end;

Она в отдельном потоке проверяет, существует ли отряд 'Neutal' (Exists("Neutral")). Если в какой-то момент его победили, то триггер на регион меняется на "Barracks_build_2" - функция с диалогом №2.
Выполнение квеста зависит от того, какой у него тип (kind) стоит. Если OBJECTIVE_KIND_MANUAL, то его можно завершить строчкой:
	SetObjectiveState('zadanie1', OBJECTIVE_COMPLETED);
Поставить его надо под условие if not Exists("Neutral") then до триггера.
Если не OBJECTIVE_KIND_MANUAL, а настроенный на уничтожение отряда, то должен сам засчитаться.
С разблокировкой зданий не сталкивался, но тут скорее всего поможет SetTownBuildingLimitLevel.
32MeTpa вне форума
Ответить с цитированием