Герои Меча и Магии 5 - Картостроительство (Редактор карт)В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.
еще раз, герой преграждает единственно возможный путь к нужной клетке? тогда все работает согласно механике, CanHeroMove считает героя непроходимым препятствием. можно добавить проверку на такую ситуацию и если она возникает, двигать Эрлинга в местоположение вашего героя, например
Gerterеще раз, герой преграждает единственно возможный путь к нужной клетке?
Да, но в других сценариях также написано просто MoveHero(…), и герой идет туда, даже если ему преграждает путь другой герой с бешеной армией.
Gerterтогда все работает согласно механике, CanHeroMove считает героя непроходимым препятствием. можно добавить проверку на такую ситуацию и если она возникает, двигать Эрлинга в местоположение вашего героя, например
x={15,16,17,18} y={9,9,10,10} for i=1 to n if IsHeroAlive("Erling") then MoveHero("Erling",x[i],y[i],0) end end
Так, условно говоря. На самом деле тут вижу тут пару слабых мест в коде (например, в случае сражения и победы в нём Эрлинг скорее всего не продолжит движение, так как пока бой шёл скрипт уже успел отработать), но логика в целом такая.
Mentx={15,16,17,18} y={9,9,10,10} for i=1 to n if IsHeroAlive("Erling") then MoveHero("Erling",x[i],y[i],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[i],y[i],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[i],y[i],0) end end В n надо передавать размер массива координат.
MoveHeroRealTime двигает героя независимо от хода, даже во время хода противника может. Так что ответ -- нет, если функция до конца по какой-то причине не отработает, то всё.