еще раз, герой преграждает единственно возможный путь к нужной клетке? тогда все работает согласно механике, CanHeroMove считает героя непроходимым препятствием. можно добавить проверку на такую ситуацию и если она возникает, двигать Эрлинга в местоположение вашего героя, например
Сообщения от Скрипты
еще раз, герой преграждает единственно возможный путь к нужной клетке?
тогда все работает согласно механике, CanHeroMove считает героя непроходимым препятствием. можно добавить проверку на такую ситуацию и если она возникает, двигать Эрлинга в местоположение вашего героя, например
попробуй заменить MoveHero на MoveHeroRealTime, и проверку 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 по одному шагу, с проверкой успешности. Координаты шагов -- в массив.
Можно делать кучу MoveHero по одному шагу, с проверкой успешности. Координаты шагов -- в массив.
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
Так, условно говоря. На самом деле тут вижу тут пару слабых мест в коде (например, в случае сражения и победы в нём Эрлинг скорее всего не продолжит движение, так как пока бой шёл скрипт уже успел отработать), но логика в целом такая.
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 надо передавать размер массива координат.
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 надо передавать размер массива координат.
Эх, к сожалению, проблема та же: если в точке 15,8 стоит герой, Эрлинг будет стоять там где и остановился.
ну если только в этой точке проблема, то можно просто в нее двигать, если нужная недоступна
ну если только в этой точке проблема, то можно просто в нее двигать, если нужная недоступна
через GetObjectPosition() либо просто двигать героя в эту точку, если CanHeroMove не выполнилось
Появился еще вопрос: если во время действия фукции MoveHeroRealTime герой не дойдет до точки, он со следующего хода продолжит идти туда?
MoveHeroRealTime двигает героя независимо от хода, даже во время хода противника может.
Так что ответ -- нет, если функция до конца по какой-то причине не отработает, то всё.
Так что ответ -- нет, если функция до конца по какой-то причине не отработает, то всё.
Статистика
Приветствуем новейшего участника:
recijeb
Сейчас на сайте 8 пользователей 1253 гостей
Посетители сегодня 32
- Валера 111
- Граф Орлов
- Джек
- Драккошка
- Дугал
- Злобный Ящур
- Небо
- Нэйко
- Саргон
- ALVYDAS
- Arandor
- AstralLein
- burymm
- Dark Jack
- dotahcxun
- elizbar1967
- fktifzobr@mail.ru
- Golvek
- Happy Life
- Heroist
- Hottler
- HwKeeper
- IchGViji
- kcfgogbfalgfl
- LifeForm
- Narron
- OrnsteinDragonslayer
- PingWing
- Ple-Sen
- Sir Syddan
- Siverfale
- Valery59