Ñêðèïòû - Ñòðàíèöà 183 - Ôîðóì HeroesWorld-à

Áûñòðàÿ íàâèãàöèÿ ïî îñíîâíûì ðàçäåëàì ôîðóìà:
Òóðíèðû
ÊÀÐÒÛ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Ãåðîè Ìå÷à è Ìàãèè 5 - Êàðòîñòðîèòåëüñòâî (Ðåäàêòîð êàðò)  ýòîì ðàçäåëå ìîæíî îáñóæäàòü âñå ÷òî êàñàåòñÿ ðåäàêòîðà êàðò äëÿ Heroes of Might and Magic V. Òàê æå çäåñü îáñóæäàåì êàðòîñòðîèòåëüñòâî.

Îòâåò
Ñòðàíèöà 183 èç 261
 
Îïöèè òåìû
#2731
Ñòàðûé 19.06.2018, 02:58
  #2731
^
Gerter
 
Àâàòàð äëÿ Gerter
📖
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
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
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
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
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30707
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30707
Ïî óìîë÷àíèþ
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
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30707
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30707
Ïî óìîë÷àíèþ
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
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30707
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30707
Ïî óìîë÷àíèþ
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
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
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
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
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
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30707
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30707
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

MoveHeroRealTime двигает героя независимо от хода, даже во время хода противника может.
Так что ответ -- нет, если функция до конца по какой-то причине не отработает, то всё.
Ment âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
Îòâåò
Ñòðàíèöà 183 èç 261


Îïöèè òåìû



×àñîâîé ïîÿñ GMT +4, âðåìÿ: 13:00.


vBulletin v3.5.0, Copyright ©2000-2024, Jelsoft Enterprises Ltd. (Ðóññêèé)

ßíäåêñ öèòèðîâàíèå    Top.Mail.Ru