После этой строки :Trigger(OBJECT_CAPTURE_TRIGGER, "gorodSvyat", nil )
Работает?
Не работает
Впервые здесь? Я Роха — провести быструю экскурсию?
После этой строки :Trigger(OBJECT_CAPTURE_TRIGGER, "gorodSvyat", nil )
Работает?
Не работает
А консоль ошибку какую выдает?
Никакую, всё чисто. Но методом проб и ошибок я узнал, что косячная функция - 3. Не так написал там триггер. Вроде всё окей.
function Turma ()
while (1) do
if b == 0 and w == 0 then
MessageBox("/Maps/SingleMissions/rework (4)/turmaLOCK.txt");
end
if b == 1 and w == 1 and var == 1 then
MessageBox("/Maps/SingleMissions/rework (4)/turmaUNLOCK.txt");
SetObjectiveState("suppDruid", OBJECTIVE_COMPLETE);
RemoveObject("druid");
RemoveObject("elf1");
RemoveObject("elf2");
RemoveObject("elf3");
RemoveObject("elf4");
RemoveObject("elf5");
RemoveObject("elf6");
RemoveObject("elf7");
RemoveObject("elf8");
MessageBox("/Maps/SingleMissions/rework (4)/unicorn.txt");
OpenCircleFog(198, 64, 0, 2, PLAYER_1)
MoveCamera(198, 64, 0, 30, 1.3, 1, 1, 1, 1);
sleep(5)
PlayObjectAnimation("unicorn", "happy", ONESHOT_STILL);
sleep(15)
RemoveObject("unicorn");
end
if b == 1 and w == 1 and a == 1 then
MessageBox("/Maps/SingleMissions/rework (4)/turmaDEAD.txt")
end
Trigger(OBJECT_TOUCH_TRIGGER, "turma");
break
end
end;
Trigger(OBJECT_TOUCH_TRIGGER, "turma", "Turma" );
function QochComplete ()
while (1) do
sleep(2);
if (Exists('white') == nil) then
SetObjectiveState("Qo-ch", OBJECTIVE_COMPLETED);
w = 1
break
end
end
end
startThread(QochComplete)
function QobComplete ()
while (1) do
sleep (2)
if (Exists('black') == nil) then
SetObjectiveState("Qo-b", OBJECTIVE_COMPLETED);
b = 1
break
end
end
end
startThread(QobComplete)
function Turma ()
while (1) do
if b == 0 and w == 0 then
MessageBox("/Maps/SingleMissions/rework (4)/turmaLOCK.txt");
end
if b == 1 and w == 1 and var == 1 then
MessageBox("/Maps/SingleMissions/rework (4)/turmaUNLOCK.txt");
SetObjectiveState("suppDruid", OBJECTIVE_COMPLETE);
RemoveObject("druid");
RemoveObject("elf1");
RemoveObject("elf2");
RemoveObject("elf3");
RemoveObject("elf4");
RemoveObject("elf5");
RemoveObject("elf6");
RemoveObject("elf7");
RemoveObject("elf8");
MessageBox("/Maps/SingleMissions/rework (4)/unicorn.txt");
OpenCircleFog(198, 64, 0, 2, PLAYER_1)
MoveCamera(198, 64, 0, 30, 1.3, 1, 1, 1, 1);
sleep(5)
PlayObjectAnimation("unicorn", "happy", ONESHOT_STILL);
sleep(15)
RemoveObject("unicorn");
end
if b == 1 and w == 1 and a == 1 then
MessageBox("/Maps/SingleMissions/rework (4)/turmaDEAD.txt")
end
Trigger(OBJECT_TOUCH_TRIGGER, "turma");
break
end
end;
Trigger(OBJECT_TOUCH_TRIGGER, "turma", "Turma" );
Вопрос про многоусловонсть. Есть обьект "Turma". Нужно, чтобы при касании всплывало опред. сообщение, зависящее от условий приведённых в скрипте. У меня проблема такова, что при первом касании всё окей (первое условие, когда b and w == 0), а когда b == 1, w == 1, var == 1 выдаёт ошибку. Когда b == 1, w == 1, a == 1 тоже.
Вот ошибка
Условия, которые выставляют коэфф:function QochComplete ()
while (1) do
sleep(2);
if (Exists('white') == nil) then
SetObjectiveState("Qo-ch", OBJECTIVE_COMPLETED);
w = 1
break
end
end
end
startThread(QochComplete)
function QobComplete ()
while (1) do
sleep (2)
if (Exists('black') == nil) then
SetObjectiveState("Qo-b", OBJECTIVE_COMPLETED);
b = 1
break
end
end
end
startThread(QobComplete)
GetHeroName - функция, вызвавшая ошибку - боевого скрипта, поэтому стоит искать ошибку в боевом скрипте.
Насчет самого скрипта: не ясно, зачем цикл, триггер написан неверно - нет имени функции или nil.

Хм. Он у какого игрока в резерве находится? Вообще игра может тупить из-за числа зарезервированных героев у одного игрока.
if GetDate(DAY) == DayErlingAttack and ErlingAttack == 1 then
DeployReserveHero(Erling,RegionToPoint("Erling_deploy"))
sleep(5)
local x, y = 15, 9
if CanMoveHero(Erling,x,y,0) then
MoveHero(Erling, x, y,0)
elseif CanMoveHero(Erling,121,22) then
MoveHero(Erling, 121, 22,0)
end
startThread(ErlingUpgrade)
end
end
во первых, стоит выключить AI у героя. во вторых, лучше сделать отдельную функцию, которая будет проверять, что наступил ход нужного игрока и запускать перемещение героя, т.к. триггер нового дня не совсем для этого подходит
functionErlingMove()
local x, y = 15, 9
if CanMoveHero(Erling,x,y,0) then
MoveHero(Erling, x, y,0)
end
end
function ErlingMove()
while 1 do
if(GetCurrentPlayer() == 'номер игрока, которому принадлежит Эрлинг') then
if CanMoveHero(Erling, 15 , 9, 0) then
MoveHero(Erling, 15, 9, 0)
elseif CanMoveHero(Erling, 121, 22, 0) then
MoveHero(Erling, 121, 22,0)
end
end
sleep(2)
end
end
мешает пройти = нужная клетка недоступна? тогда логично, что не двигается, нет?
попробуй что-то типа этого:function ErlingMove()
while 1 do
if(GetCurrentPlayer() == 'номер игрока, которому принадлежит Эрлинг') then
if CanMoveHero(Erling, 15 , 9, 0) then
MoveHero(Erling, 15, 9, 0)
elseif CanMoveHero(Erling, 121, 22, 0) then
MoveHero(Erling, 121, 22,0)
end
end
sleep(2)
end
end