Боевые скрипты и управление боем - Форум HeroesWorld-а

Вернуться   Форум HeroesWorld-а > Все о игре Герои 5. All about Heroes 5 > Герои Меча и Магии 5 - Картостроительство (Редактор карт)
Имя
Пароль
Карта сайта Регистрация Справка Пользователи Календарь Все разделы прочитаны
Быстрая навигация по основным разделам форума:
Кланы HW Турниры на HW КАРТЫ и Картостроительство Heroes 6 Heroes 5 Heroes 4 Heroes 3 Heroes 2 Heroes 1 Might&Magic

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

Ответ
 
Опции темы
Старый 28.02.2017, 16:46   #1
MasteR
 
Аватар для MasteR
Регистрация: 24.01.2013
Сообщения: 2544
MasteR - уровень боевого духа MasteR - уровень боевого духа MasteR - уровень боевого духа
Выставка наград
По умолчанию Боевые скрипты и управление боем

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

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

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

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


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

1) Можно ли с помощью боевых скриптов на время боя повышать статы существ / героев? (например, дать + 1 к скорости дружественных существ).
2) Можно ли во время боя дать какому-то существу не присущую ему абилку? (вряд ли, но мало ли...)
3) Как сделать так, чтобы при касте заклинания с помощью скрипта герой не откатывался по шкале ATB? (конечно, можно двигать героя по шкале с помощью соответствующей функции, но я не нашел функции, возвращающей ТЕКУЩЕЕ положение юнита / героя)
4) Ситуация: дружественное существо начинает свой ход и атакует вражеское. В это время герой по скрипту кастует условную магическую стрелу, и целевое существо умирает до того, как прибегает атакующий. Как избежать данной коллизии?
5) Могут ли с помощью боевого скрипта кастовать заклинания существа, которые сами по себе этого делать не в состоянии? Либо те, у которых такого заклинания нет в их книге? Боевые машины могут кастовать?
6) Можно ли в бою дать доп. выстрелы баллисте, палатке? Увеличить урон / силу лечения?
7) Есть ли конструкция по типу try - catch, позволяющая игнорировать возникшие ошибки во время выполнения скрипта?
MasteR вне форума   Ответить с цитированием
Старый 28.02.2017, 17:58   #2
RedHeavenHero
 
Аватар для RedHeavenHero
Регистрация: 10.02.2012
Сообщения: 2331
RedHeavenHero - уровень боевого духа RedHeavenHero - уровень боевого духа RedHeavenHero - уровень боевого духа
Выставка наград
По умолчанию 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
RedHeavenHero вне форума   Ответить с цитированием
Старый 28.02.2017, 18:20   #3
Ment
 
Аватар для Ment
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 21367
Ment - уровень боевого духа Ment - уровень боевого духа Ment - уровень боевого духа
По умолчанию Re: Боевые скрипты и управление боем

По 1 же вроде используется какой-то глобальный скрипт, чтобы бонус скорости дать герою. Или не то?
По 3: есть умения, которые уменьшают отброс, и заклинания, у которых вообще нет отброса (заколдованная стрела не отбрасывает). Может, это как-то использовать, что-то переназначить, где-то подкрутить?
__________________
Цитата:
Arandor 0:16
видимо в этот раз придется быть негодяем

Алекс 0:18
Раньше был негодяем добровольно, а теперь заставили?




Ment вне форума   Ответить с цитированием
Старый 28.02.2017, 18:53   #4
MasteR
 
Аватар для MasteR
Регистрация: 24.01.2013
Сообщения: 2544
MasteR - уровень боевого духа MasteR - уровень боевого духа MasteR - уровень боевого духа
Выставка наград
По умолчанию Re: Боевые скрипты и управление боем

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

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

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

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

Захотел я например с помощью боевых скриптов реализовать "откат" героя после каста на 20 % меньше (т.е. на позицию 0.2 по АТВ вместо 0). С обычным случаем все сработает нормально, но как быть, например, если у героя есть чародейство? В этом случае простое задание позиции АТВ уже не будет работать правильно, и надо вычислять все умения героя и его противника?
MasteR вне форума   Ответить с цитированием
Старый 28.02.2017, 19:00   #5
RedHeavenHero
 
Аватар для RedHeavenHero
Регистрация: 10.02.2012
Сообщения: 2331
RedHeavenHero - уровень боевого духа RedHeavenHero - уровень боевого духа RedHeavenHero - уровень боевого духа
Выставка наград
По умолчанию Re: Боевые скрипты и управление боем

Цитата:
Один из возможных топорных методов, как я думаю - дать соответствующий артефакт герою в начале сражение и забрать его в конце, но это наверное не сработает, если у героя слот под этот артефакт уже занят...
В таком случае лучше отработают ChangeHeroStat и GiveHeroBattleBonus.
Цитата:
Т.е. изначально надо дать существу побольше маны, и отнять ее после каста.
Да, именно так.
Цитата:
Тут имелся ввиду дополнительный выстрел за ход, т.е. не 2, а 3 выстрела за раз например.
Тут опять вряд ли. Можно дать дополнительный ход.
Цитата:
В этом случае простое задание позиции АТВ уже не будет работать правильно, и надо вычислять все умения героя и его противника?
Да, скорее всего, придется делать так.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума   Ответить с цитированием
Старый 07.03.2017, 15:13   #6
MasteR
 
Аватар для MasteR
Регистрация: 24.01.2013
Сообщения: 2544
MasteR - уровень боевого духа MasteR - уровень боевого духа MasteR - уровень боевого духа
Выставка наград
По умолчанию Re: Боевые скрипты и управление боем

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

@cr = GetAttackerCreatures()
@setATB(cr[0], 1)
MasteR вне форума   Ответить с цитированием
Старый 07.03.2017, 17:44   #7
RedHeavenHero
 
Аватар для RedHeavenHero
Регистрация: 10.02.2012
Сообщения: 2331
RedHeavenHero - уровень боевого духа RedHeavenHero - уровень боевого духа RedHeavenHero - уровень боевого духа
Выставка наград
По умолчанию Re: Боевые скрипты и управление боем

Она работает, только не всегда в состоянии отнять ход. Если какое-либо существо ход уже получило, то эффект setATB проявится только после завершения его хода.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума   Ответить с цитированием
Старый 25.05.2018, 19:45   #8
LetoX
Регистрация: 16.11.2017
Сообщения: 31
LetoX - уровень боевого духа
По умолчанию Re: Боевые скрипты и управление боем

может не в тему но может кто-нибудь сказать какие параметры нужны в функции UnitCastGlobalSpell?
LetoX вне форума   Ответить с цитированием
Старый 25.05.2018, 19:57   #9
Jack_of_shadows
 
Аватар для Jack_of_shadows
Регистрация: 08.09.2013
Сообщения: 417
Jack_of_shadows - уровень боевого духа
По умолчанию Re: Боевые скрипты и управление боем

Цитата:
какие параметры нужны в функции UnitCastGlobalSpell?
имя кастующего существа или героя (у него должно быть достаточно маны) и id глобального заклинания.
__________________
РПГ-сценарий для HoMM5: Путь героя
ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума   Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.
Быстрый переход


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


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

Яндекс цитирование  Rambler\'s Top100   Рейтинг@Mail.ru

Авторские права - Copyright © 2002-2008 www.HeroesWorld.ru All rights reserved


На правах рекламы:123123