Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#2953
Старый 09.11.2019, 17:27
  #2953
^
OrnsteinDragonslayer
 
Аватар для OrnsteinDragonslayer
📖
Регистрация: 10.01.2016
Сообщения: 172
Регистрация: 10.01.2016
Сообщения: 172
По умолчанию
Re: Скрипты

MentWhile забыли, у вас однократная проверка там.

А настройки квеста q5 правильные? Может, он сам инициирует проигрыш.
Ну и хорошо бы сделать так, чтобы в функции lostDragon выходить из цикла, когда dragon==0, чтобы не было постоянных бессмысленных проверок.

Во истину, теперь когда город ЛЭ захвачен - и кв проваливается и игра проиграна.
Но другую проблему я так и не решил. Задание q5 в редакторе корректное, кайнд_мануал в условиях, не думаю, что корень проблемы там.
А как мне остановить цикл этот?
Так де немного подредактировал эту фунцкию в надежде на исправление, однако провал. На всякий случай скину еще раз, чтобы не искать.
	
SetRegionBlocked ('CheckAstrid', true)

function lostDragon() ---- Проверка потери дракона
	while 1 do
		sleep ( 10 );
		if GetHeroCreatures("Ohtarig", 83) == 0 and dragon == 1 and
       SetRegionBlocked('CheckAstrid', false) then
			    SetObjectiveState("q5", OBJECTIVE_FAILED, 1);
			    sleep ( 10 );
			    Loose();
			break
		end;
	end;
end;
startThread (lostDragon)

И, собственно момент, когда дракон должен пропасть из армии, квест по его сохранению провалится, но игра должна продолжиться.

	function PokaAstrida()
         SetRegionBlocked ('CheckAstrid', false, 1)
         dragon = 0
         RemoveHeroCreatures('Ohtarig', 83, 1)
         StartDialogScene("/Maps/SingleMissions/ChoiseOTW1/Test/DialogScene.xdb#xpointer(/DialogScene)")
         sleep(5)
         StartCombat('Ohtarig', nil, 1, 41, 1, nil, nil, nil, nil)
         sleep(5)
         MessageBox("/Maps/SingleMissions/ChoiseOTW1/MagiPoka.txt");
         sleep(5)
         SetObjectiveState("q5", OBJECTIVE_FAILED);
         Trigger(REGION_ENTER_AND_STOP_TRIGGER , "Corrupted", nil);
         sleep(5)
         RemoveObject('lich1')
         RemoveObject('lich2')
         RemoveObject('lich3')
end

Trigger(REGION_ENTER_AND_STOP_TRIGGER , "Corrupted", 'PokaAstrida');

Здесь всё работает до того момента, когда ты выходишь из боя. Далее, как я полагаю, идёт проверка наличия юнита - его нет - проиграл.
OrnsteinDragonslayer вне форума
Ответить с цитированием