Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì - Ôîðóì HeroesWorld-à

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

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

Îòâåò
 
Îïöèè òåìû
#1
Ñòàðûé 28.02.2017, 16:46
  #1
^
MasteR
 
Àâàòàð äëÿ MasteR
📖
Ðåãèñòðàöèÿ: 24.01.2013
Ñîîáùåíèÿ: 3372
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 24.01.2013
Ñîîáùåíèÿ: 3372
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì

В общем-то, вижу целесообразным посвятить отдельную тему именно боевым скриптам (надеюсь нигде такой же темы не создано).

Почему захотел создать тему:
В файлике со скриптовыми функциями есть также описание функций, применяющихся в сражениях.
Например, я уже применял такие возможности, как различные призывы существ на поле боя, касты целевых / массовых / площадных заклинаний, движение по шкале ATB.
Но в ходе экспериментов с боевыми скриптами возникало много вопросов, на которые так и не нашлось ответа.

Для чего тема:

Лично мне хотелось бы понимать, насколько велики возможности картодела управлять боями, используя боевые скрипты. Почему в тех или иных случаях скрипт не срабатывает / не приводит к желаемому результату, и как этого результата добиться.
Также начинающие картоделы получат возможность поближе познакомиться с боевыми скриптами.


Вот лишь немногие вопросы, которые я помню и которые давно хотелось задать:

1) Можно ли с помощью боевых скриптов на время боя повышать статы существ / героев? (например, дать + 1 к скорости дружественных существ).
2) Можно ли во время боя дать какому-то существу не присущую ему абилку? (вряд ли, но мало ли...)
3) Как сделать так, чтобы при касте заклинания с помощью скрипта герой не откатывался по шкале ATB? (конечно, можно двигать героя по шкале с помощью соответствующей функции, но я не нашел функции, возвращающей ТЕКУЩЕЕ положение юнита / героя)
4) Ситуация: дружественное существо начинает свой ход и атакует вражеское. В это время герой по скрипту кастует условную магическую стрелу, и целевое существо умирает до того, как прибегает атакующий. Как избежать данной коллизии?
5) Могут ли с помощью боевого скрипта кастовать заклинания существа, которые сами по себе этого делать не в состоянии? Либо те, у которых такого заклинания нет в их книге? Боевые машины могут кастовать?
6) Можно ли в бою дать доп. выстрелы баллисте, палатке? Увеличить урон / силу лечения?
7) Есть ли конструкция по типу try - catch, позволяющая игнорировать возникшие ошибки во время выполнения скрипта?
MasteR âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2
Ñòàðûé 28.02.2017, 17:58
  #2
^
RedHeavenHero
 
Àâàòàð äëÿ RedHeavenHero
📖
Ðåãèñòðàöèÿ: 10.02.2012
Ñîîáùåíèÿ: 2378
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 10.02.2012
Ñîîáùåíèÿ: 2378
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì

MasteRВот лишь немногие вопросы, которые я помню и которые давно хотелось задать:

1) Можно ли с помощью боевых скриптов на время боя повышать статы существ / героев? (например, дать + 1 к скорости дружественных существ).
2) Можно ли во время боя дать какому-то существу не присущую ему абилку? (вряд ли, но мало ли...)
3) Как сделать так, чтобы при касте заклинания с помощью скрипта герой не откатывался по шкале ATB? (конечно, можно двигать героя по шкале с помощью соответствующей функции, но я не нашел функции, возвращающей ТЕКУЩЕЕ положение юнита / героя)
4) Ситуация: дружественное существо начинает свой ход и атакует вражеское. В это время герой по скрипту кастует условную магическую стрелу, и целевое существо умирает до того, как прибегает атакующий. Как избежать данной коллизии?
5) Могут ли с помощью боевого скрипта кастовать заклинания существа, которые сами по себе этого делать не в состоянии? Либо те, у которых такого заклинания нет в их книге? Боевые машины могут кастовать?
6) Можно ли в бою дать доп. выстрелы баллисте, палатке? Увеличить урон / силу лечения?
7) Есть ли конструкция по типу try - catch, позволяющая игнорировать возникшие ошибки во время выполнения скрипта?
1-3) Скорее всего, невозможно.
4) Можно использовать конструкцию
	repeat sleep() until combatReadyPerson()
которая будет ждать пока не наступит чей-либо ход.
5) Существа могут колдовать заклинания, которые не знают, в том числе и те существа, которые не умеют колдовать вовсе. Однако маны на это заклинание должно хватать.
6) Скорее всего, нет. Но у баллисты выстрелы все равно бесконечные: после достижения 0 она продолжит стрелять, и выстрелы станут отрицательными.
7) Можно эмулировать try с помощью startThread и catch с помощью errorHook. В библиотеке lualib реализовывал функцию pcall, которая примерно это и делает.
__________________
Êàðòû äëÿ Ãåðîåâ Ìå÷à è Ìàãèè 5
Îäèíî÷íûå: Çàâåñà ñðûâàåòñÿ, Ïîñîë, Ïîñëåäíèé ðûâîê, Ýõî Ïóñòîòû
Êàìïàíèÿ: Èìïåðèÿ Åäèíîðîãà

Ñóùåñòâà NCF
Îðäåí Ïîðÿäêà: 1
Íåéòðàëû: 1 2 3 4
Êàðòû äëÿ Ãåðîåâ Ìå÷à è Ìàãèè 5
Îäèíî÷íûå: Çàâåñà ñðûâàåòñÿ, Ïîñîë, Ïîñëåäíèé ðûâîê, Ýõî Ïóñòîòû
Êàìïàíèÿ: Èìïåðèÿ Åäèíîðîãà

Ñóùåñòâà NCF
Îðäåí Ïîðÿäêà: 1
Íåéòðàëû: 1 2 3 4
RedHeavenHero âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3
Ñòàðûé 28.02.2017, 18:20
  #3
^
Ment
 
Àâàòàð äëÿ Ment
📖
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30706
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30706
Ïî óìîë÷àíèþ
Re: Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì

По 1 же вроде используется какой-то глобальный скрипт, чтобы бонус скорости дать герою. Или не то?
По 3: есть умения, которые уменьшают отброс, и заклинания, у которых вообще нет отброса (заколдованная стрела не отбрасывает). Может, это как-то использовать, что-то переназначить, где-то подкрутить?
Ment âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#4
Ñòàðûé 28.02.2017, 18:53
  #4
^
MasteR
 
Àâàòàð äëÿ MasteR
📖
Ðåãèñòðàöèÿ: 24.01.2013
Ñîîáùåíèÿ: 3372
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 24.01.2013
Ñîîáùåíèÿ: 3372
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì

RedHeavenHero1-3) Скорее всего, невозможно.
Может есть какие-то варианты, как добиться похожих эффектов без модов и боевых скриптов?
Один из возможных топорных методов, как я думаю - дать соответствующий артефакт герою в начале сражение и забрать его в конце, но это наверное не сработает, если у героя слот под этот артефакт уже занят...

RedHeavenHero4) Можно использовать конструкцию
	repeat sleep() until combatReadyPerson()
которая будет ждать пока не наступит чей-либо ход.
хороший метод, спасибо
RedHeavenHero5) Существа могут колдовать заклинания, которые не знают, в том числе и те существа, которые не умеют колдовать вовсе. Однако маны на это заклинание должно хватать.
Т.е. изначально надо дать существу побольше маны, и отнять ее после каста. Но тут, скорее всего, всплывет другая проблема - существо откатится по АТВ.
RedHeavenHero6) Скорее всего, нет. Но у баллисты выстрелы все равно бесконечные: после достижения 0 она продолжит стрелять, и выстрелы станут отрицательными.
Тут имелся ввиду дополнительный выстрел за ход, т.е. не 2, а 3 выстрела за раз например.

RedHeavenHero7) Можно эмулировать try с помощью startThread и catch с помощью errorHook. В библиотеке lualib реализовывал функцию pcall, которая примерно это и делает.
Надо будет попробовать. Спасибо

Добавлено через 5 минут
Еще такой вопрос:

Захотел я например с помощью боевых скриптов реализовать "откат" героя после каста на 20 % меньше (т.е. на позицию 0.2 по АТВ вместо 0). С обычным случаем все сработает нормально, но как быть, например, если у героя есть чародейство? В этом случае простое задание позиции АТВ уже не будет работать правильно, и надо вычислять все умения героя и его противника?
MasteR âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#5
Ñòàðûé 28.02.2017, 19:00
  #5
^
RedHeavenHero
 
Àâàòàð äëÿ RedHeavenHero
📖
Ðåãèñòðàöèÿ: 10.02.2012
Ñîîáùåíèÿ: 2378
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 10.02.2012
Ñîîáùåíèÿ: 2378
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì

Один из возможных топорных методов, как я думаю - дать соответствующий артефакт герою в начале сражение и забрать его в конце, но это наверное не сработает, если у героя слот под этот артефакт уже занят...
В таком случае лучше отработают ChangeHeroStat и GiveHeroBattleBonus.
Т.е. изначально надо дать существу побольше маны, и отнять ее после каста.
Да, именно так.
Тут имелся ввиду дополнительный выстрел за ход, т.е. не 2, а 3 выстрела за раз например.
Тут опять вряд ли. Можно дать дополнительный ход.
В этом случае простое задание позиции АТВ уже не будет работать правильно, и надо вычислять все умения героя и его противника?
Да, скорее всего, придется делать так.
__________________
Êàðòû äëÿ Ãåðîåâ Ìå÷à è Ìàãèè 5
Îäèíî÷íûå: Çàâåñà ñðûâàåòñÿ, Ïîñîë, Ïîñëåäíèé ðûâîê, Ýõî Ïóñòîòû
Êàìïàíèÿ: Èìïåðèÿ Åäèíîðîãà

Ñóùåñòâà NCF
Îðäåí Ïîðÿäêà: 1
Íåéòðàëû: 1 2 3 4
Êàðòû äëÿ Ãåðîåâ Ìå÷à è Ìàãèè 5
Îäèíî÷íûå: Çàâåñà ñðûâàåòñÿ, Ïîñîë, Ïîñëåäíèé ðûâîê, Ýõî Ïóñòîòû
Êàìïàíèÿ: Èìïåðèÿ Åäèíîðîãà

Ñóùåñòâà NCF
Îðäåí Ïîðÿäêà: 1
Íåéòðàëû: 1 2 3 4
RedHeavenHero âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#6
Ñòàðûé 07.03.2017, 15:13
  #6
^
MasteR
 
Àâàòàð äëÿ MasteR
📖
Ðåãèñòðàöèÿ: 24.01.2013
Ñîîáùåíèÿ: 3372
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 24.01.2013
Ñîîáùåíèÿ: 3372
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì

С удивлением для себя обнаружил, что скриптовая функция setATB() не работает. Сначала попробовал ее, чтобы поднять баллисту, потом попробовал на герое и существах. Эффект нулевой. Вызывал таким образом через консоль:

@cr = GetAttackerCreatures()
@setATB(cr[0], 1)
MasteR âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#7
Ñòàðûé 07.03.2017, 17:44
  #7
^
RedHeavenHero
 
Àâàòàð äëÿ RedHeavenHero
📖
Ðåãèñòðàöèÿ: 10.02.2012
Ñîîáùåíèÿ: 2378
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 10.02.2012
Ñîîáùåíèÿ: 2378
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì

Она работает, только не всегда в состоянии отнять ход. Если какое-либо существо ход уже получило, то эффект setATB проявится только после завершения его хода.
__________________
Êàðòû äëÿ Ãåðîåâ Ìå÷à è Ìàãèè 5
Îäèíî÷íûå: Çàâåñà ñðûâàåòñÿ, Ïîñîë, Ïîñëåäíèé ðûâîê, Ýõî Ïóñòîòû
Êàìïàíèÿ: Èìïåðèÿ Åäèíîðîãà

Ñóùåñòâà NCF
Îðäåí Ïîðÿäêà: 1
Íåéòðàëû: 1 2 3 4
Êàðòû äëÿ Ãåðîåâ Ìå÷à è Ìàãèè 5
Îäèíî÷íûå: Çàâåñà ñðûâàåòñÿ, Ïîñîë, Ïîñëåäíèé ðûâîê, Ýõî Ïóñòîòû
Êàìïàíèÿ: Èìïåðèÿ Åäèíîðîãà

Ñóùåñòâà NCF
Îðäåí Ïîðÿäêà: 1
Íåéòðàëû: 1 2 3 4
RedHeavenHero âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#8
Ñòàðûé 25.05.2018, 19:45
  #8
^
LetoX
 
Àâàòàð äëÿ LetoX
📖
Ðåãèñòðàöèÿ: 16.11.2017
Ñîîáùåíèÿ: 67
Ðåãèñòðàöèÿ: 16.11.2017
Ñîîáùåíèÿ: 67
Ïî óìîë÷àíèþ
Re: Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì

может не в тему но может кто-нибудь сказать какие параметры нужны в функции UnitCastGlobalSpell?
LetoX âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#9
Ñòàðûé 25.05.2018, 19:57
  #9
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 515
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 515
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì

какие параметры нужны в функции UnitCastGlobalSpell?
имя кастующего существа или героя (у него должно быть достаточно маны) и id глобального заклинания.
__________________
ÐÏÃ-ñöåíàðèé äëÿ HoMM5: Ïóòü ãåðîÿ

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
ÐÏÃ-ñöåíàðèé äëÿ HoMM5: Ïóòü ãåðîÿ

×àÂî ïî ñîçäàíèþ êàðò äëÿ HoMM5: ×àÂî
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#10
Ñòàðûé 29.10.2018, 18:21
  #10
^
Artempozd
📖
Ðåãèñòðàöèÿ: 29.10.2018
Ñîîáùåíèÿ: 6
Ðåãèñòðàöèÿ: 29.10.2018
Ñîîáùåíèÿ: 6
Ïî óìîë÷àíèþ
Re: Áîåâûå ñêðèïòû è óïðàâëåíèå áîåì

Пожалуйста подскажите можно ли сделать скрипт позволяющий герою накладывать бафы на баллисту
Artempozd âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
Îòâåò


Îïöèè òåìû



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


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

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