Сообщения от Скрипты
еще раз, герой преграждает единственно возможный путь к нужной клетке?
тогда все работает согласно механике, CanHeroMove считает героя непроходимым препятствием. можно добавить проверку на такую ситуацию и если она возникает, двигать Эрлинга в местоположение вашего героя, например
точнее, как то так
if(CanMoveHero(Erling, 15, 9, 0)) then
MoveHero(Erling, 15, 9, 0)
else
MoveHeroRealTime(Erling, 15, 9, 0)
end
попробуй заменить MoveHero на MoveHeroRealTime, и проверку CanHeroMove убрать
точнее, как то такif(CanMoveHero(Erling, 15, 9, 0)) then
MoveHero(Erling, 15, 9, 0)
else
MoveHeroRealTime(Erling, 15, 9, 0)
end
Не, не подойдет. У меня задание на оборону замка, поэтому MoveHeroRealTime не подойдет. 15,9 это точка входа в замок, возможно это поможет.
Можно делать кучу MoveHero по одному шагу, с проверкой успешности. Координаты шагов -- в массив.
y={9,9,10,10}
for i=1 to n
if IsHeroAlive("Erling") then
MoveHero("Erling",x,y,0)
end
end
Так, условно говоря. На самом деле тут вижу тут пару слабых мест в коде (например, в случае сражения и победы в нём Эрлинг скорее всего не продолжит движение, так как пока бой шёл скрипт уже успел отработать), но логика в целом такая.
x={15,16,17,18}
y={9,9,10,10}
for i=1 to n
if IsHeroAlive("Erling") then
MoveHero("Erling",x,y,0)
end
end
Так, условно говоря. На самом деле тут вижу тут пару слабых мест в коде (например, в случае сражения и победы в нём Эрлинг скорее всего не продолжит движение, так как пока бой шёл скрипт уже успел отработать), но логика в целом такая.
Консоль выдает ошибку(см. скриншот). Вот код:
x={15,16,17,18}
y={9,9,10,10}
for i=1,n do
if IsHeroAlive(Erling) then
MoveHero(Erling,x,y,0)
end
end
x={15,16,17,18}
y={9,9,10,10}
n=4
for i=1,n do
if IsHeroAlive(Erling) then
MoveHero(Erling,x,y,0)
end
end
В n надо передавать размер массива координат.
ну если только в этой точке проблема, то можно просто в нее двигать, если нужная недоступна
Так что ответ -- нет, если функция до конца по какой-то причине не отработает, то всё.