Боевые скрипты и управление боем - Форум 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
Сообщения: 3351
Выставка наград
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
По умолчанию
Боевые скрипты и управление боем

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

Почему захотел создать тему:
В файлике со скриптовыми функциями есть также описание функций, применяющихся в сражениях.
Например, я уже применял такие возможности, как различные призывы существ на поле боя, касты целевых / массовых / площадных заклинаний, движение по шкале 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
Адрес: Национальный заповедник
Сообщения: 30674
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
По умолчанию
Re: Боевые скрипты и управление боем

По 1 же вроде используется какой-то глобальный скрипт, чтобы бонус скорости дать герою. Или не то?
По 3: есть умения, которые уменьшают отброс, и заклинания, у которых вообще нет отброса (заколдованная стрела не отбрасывает). Может, это как-то использовать, что-то переназначить, где-то подкрутить?
Ment вне форума
Ответить с цитированием
#4
Старый 28.02.2017, 18:53
  #4
^
MasteR
 
Аватар для MasteR
📖
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
По умолчанию
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
Сообщения: 3351
Выставка наград
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
По умолчанию
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
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
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, время: 03:48.


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

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