Скрипты - Страница 183 - Форум HeroesWorld-а

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.

Ответ
Страница 183 из 260
 
Опции темы
#2731
Старый 19.06.2018, 02:58
  #2731
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

еще раз, герой преграждает единственно возможный путь к нужной клетке? тогда все работает согласно механике, CanHeroMove считает героя непроходимым препятствием. можно добавить проверку на такую ситуацию и если она возникает, двигать Эрлинга в местоположение вашего героя, например
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2732
Старый 19.06.2018, 13:26
  #2732
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

Gerterеще раз, герой преграждает единственно возможный путь к нужной клетке?
Да, но в других сценариях также написано просто MoveHero(…), и герой идет туда, даже если ему преграждает путь другой герой с бешеной армией.

Gerterтогда все работает согласно механике, CanHeroMove считает героя непроходимым препятствием. можно добавить проверку на такую ситуацию и если она возникает, двигать Эрлинга в местоположение вашего героя, например
Даже не представляю как это написать
AlekseyS вне форума
Ответить с цитированием
#2733
Старый 19.06.2018, 15:39
  #2733
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

попробуй заменить MoveHero на MoveHeroRealTime, и проверку CanHeroMove убрать

точнее, как то так

	if(CanMoveHero(Erling, 15, 9, 0)) then
  MoveHero(Erling, 15, 9, 0)
else
  MoveHeroRealTime(Erling, 15, 9, 0)
end
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2734
Старый 19.06.2018, 16:59
  #2734
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

Gerterпопробуй заменить 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 это точка входа в замок, возможно это поможет.
AlekseyS вне форума
Ответить с цитированием
#2735
Старый 19.06.2018, 17:02
  #2735
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
По умолчанию
Re: Скрипты

Можно делать кучу MoveHero по одному шагу, с проверкой успешности. Координаты шагов -- в массив.
Ment вне форума
Ответить с цитированием
#2736
Старый 19.06.2018, 18:04
  #2736
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

MentМожно делать кучу MoveHero по одному шагу, с проверкой успешности. Координаты шагов -- в массив.
Можно поподробнее, пожалуйста.
AlekseyS вне форума
Ответить с цитированием
#2737
Старый 19.06.2018, 18:23
  #2737
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
По умолчанию
Re: Скрипты

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

Так, условно говоря. На самом деле тут вижу тут пару слабых мест в коде (например, в случае сражения и победы в нём Эрлинг скорее всего не продолжит движение, так как пока бой шёл скрипт уже успел отработать), но логика в целом такая.
Ment вне форума
Ответить с цитированием
#2738
Старый 19.06.2018, 19:15
  #2738
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

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
Миниатюры
Нажмите на изображение для увеличения
Название:  N.jpg
Просмотров: 11
Размер:	123.4 Кбайт
ID:	55625  
AlekseyS вне форума
Ответить с цитированием
#2739
Старый 19.06.2018, 19:17
  #2739
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
По умолчанию
Re: Скрипты

Ах, ну да.
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 надо передавать размер массива координат.
Ment вне форума
Ответить с цитированием
#2740
Старый 19.06.2018, 19:52
  #2740
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

Эх, к сожалению, проблема та же: если в точке 15,8 стоит герой, Эрлинг будет стоять там где и остановился.
AlekseyS вне форума
Ответить с цитированием
#2741
Старый 19.06.2018, 20:21
  #2741
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

ну если только в этой точке проблема, то можно просто в нее двигать, если нужная недоступна
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2742
Старый 19.06.2018, 20:41
  #2742
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

Gerterну если только в этой точке проблема, то можно просто в нее двигать, если нужная недоступна
А есть команда, проверяющая находиться ли герой на той точке?
AlekseyS вне форума
Ответить с цитированием
#2743
Старый 19.06.2018, 21:08
  #2743
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

через GetObjectPosition() либо просто двигать героя в эту точку, если CanHeroMove не выполнилось
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2744
Старый 19.06.2018, 23:16
  #2744
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

Появился еще вопрос: если во время действия фукции MoveHeroRealTime герой не дойдет до точки, он со следующего хода продолжит идти туда?
AlekseyS вне форума
Ответить с цитированием
#2745
Старый 19.06.2018, 23:26
  #2745
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
По умолчанию
Re: Скрипты

MoveHeroRealTime двигает героя независимо от хода, даже во время хода противника может.
Так что ответ -- нет, если функция до конца по какой-то причине не отработает, то всё.
Ment вне форума
Ответить с цитированием
Ответ
Страница 183 из 260


Опции темы



Часовой пояс GMT +4, время: 03:47.


vBulletin v3.5.0, Copyright ©2000-2024, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование    Top.Mail.Ru