Wake of Gods Forum | Форум Во Имя Богов
(Mod) Z Battle Order - Printable Version

+- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net)
+-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99)
+--- Forum: Моды (/forumdisplay.php?fid=104)
+---- Forum: Архив (/forumdisplay.php?fid=192)
+---- Thread: (Mod) Z Battle Order (/showthread.php?tid=5553)


(Mod) Z Battle Order - Zur13 - 01.04.2020 14:27

Z Battle Order BETA VERSION


Показывает следующий стек который будет ходить в битве. Пока рассчитывает только по правилам СоД, в основном они совпадают с ЭРА за исключением тех случаев когда моды или другие скрипты влияют на порядок ходов.
Shows the next stack which will act in the battle.

Image: 1.jpg Image: 2.jpg
Для желающих сделать круто как Героях 5+:

Мод на самом деле рассчитывает не только следующий стек, а сразу 8-10 следующих стеков, т.е. можно сделать мод который будет брать информацию из этого мода и показывать в удобном виде. Я не могу заняться полноценным всплывающим окном для отображения списка стеков, потому добровольцы приветствуются. Подробнее внутри мода есть файл forFellowModdersRU.txt Если нужно рассчитать больше стеков вперед или что-то добавить пишите сюда или в личку.

Ссылки для скачивания


[Interface] Z Battle Order (обновление №3 за 01.04.2020)


RE: (Mod) Z Battle Order - XEPOMAHT - 01.04.2020 15:34

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

Поэтому такие вещи лучше делать в виде плагина, код получения последовательности хода можно было бы скопировать с содовского образца из IDA-базы, а не придумать всё самому.

Задача не простая, но выполнимая (например, в HD-моде это было сделано только недавно):

Image: kiss_1448kb.1585733623.png


RE: (Mod) Z Battle Order - igrik - 01.04.2020 15:50

В связи с выходом данного функционала в HD и поэтому потери актуальности в SoD_SP, нужно попросить RoseKavalier сделать плагин для ERA.
Вот так ранее было им сделано в SoD_SP, и в настоящее время я не вижу причин не открыть данную часть плагина для ERA
Image: SOD-SP.jpg


RE: (Mod) Z Battle Order - Zur13 - 01.04.2020 15:55

(01.04.2020 15:34)XEPOMAHT Wrote:  Твой код отчего-то совсем не учитывает различные состояния монстров в бою (например, нужно учитывать наложенные корни, ускорение, ослепление, паралич, состояние ожидания, отрицательную мораль, страх и ещё кучу каких-то данных из таблицы ботлменеджера в соответствующей содовской таблицы данных).

Поэтому такие вещи лучше делать в виде плагина, код получения последовательности хода можно было бы скопировать с содовского образца из IDA-базы, а не придумать всё самому.

Задача не простая, но выполнимая (например, в HD-моде это было сделано только недавно):

Image: kiss_1448kb.1585733623.png

Состояние ожидания учитывает.
Ослепление учитывать должно, хотя не проверял прицельно.
Да паралич нужно добавить. Корни нужно посмотреть как меняется порядок ходов.

Отрицательная мораль это не СоД, если я правильно понимаю то это рандомные эффекты и показывать их заранее неправильно. Цель этого мода сделать за игрока тот расчет который он обычно делает сам прикидывая скорости существ, случайные эффекты игрок не рассчитывает.

А страх и ускорение как влияют?

Была мысль добавить АПИ для других модов чтобы они могли подсказывать как изменяют порядок ходов.


RE: (Mod) Z Battle Order - Zur13 - 01.04.2020 16:48

Версия 0.2
- Исправлено вычисление очередности ходов для стеков с одинаковой скоростью
- Исправлено вычисление очередности для Окаменевших стеков и стеков под действием Паралича.


RE: (Mod) Z Battle Order - XEPOMAHT - 01.04.2020 17:26

(01.04.2020 15:55)Zur13 Wrote:  А страх и ускорение как влияют?

Страх = отрицательной морали. Ускорение просто даёт бонус к скорости (поэтому получение истинной скорости потребует вызова соответствующей содовской функции, а не так, как сделано у Zur13).


RE: (Mod) Z Battle Order - Berserker - 01.04.2020 17:39

XEPOMAHT, Zur13 прав, мораль не должна отображаться на шкале инициативы и не отображается в более поздних играх.


RE: (Mod) Z Battle Order - Zur13 - 01.04.2020 17:44

(01.04.2020 17:26)XEPOMAHT Wrote:  
(01.04.2020 15:55)Zur13 Wrote:  А страх и ускорение как влияют?

Страх = отрицательной морали. Ускорение просто даёт бонус к скорости (поэтому получение истинной скорости потребует вызова соответствующей содовской функции, а не так, как сделано у Zur13).

BM:S выдает скорость со всеми бонусами и дебафами, включая изменения сделанные модами через BM:S насколько я знаю. Но я чуть позже перепроверю на всякий случай Sm


RE: (Mod) Z Battle Order - XEPOMAHT - 01.04.2020 17:57

(01.04.2020 17:39)Berserker Wrote:  мораль не должна отображаться на шкале инициативы и не отображается в более поздних играх.

А кто сказал что она должна быть на шкале (которой и так на ERA нет)? Чуть выше просто представил неполный список того, что учитывает содовский код при передаче хода. Вообще, в любой момент битвы можно поставить перехват и передавать ход как душе угодно (поэтому на ERA учесть абсолютно всё просто нереально), вплоть до добавления механизма инициативы из Пятых Героев (особо ничего сложного там нет, простая замена скорости на инициативу в соответствующих функциях, включая ИИ), поэтому то, что не шибко сложно реализовать на закрытых SoD/HoA, оборачивается головной болью на открытой для всех желающих ERA.

(01.04.2020 17:44)Zur13 Wrote:  BM:S выдает скорость со всеми бонусами и дебафами, включая изменения сделанные модами через BM:S насколько я знаю. Но я чуть позже перепроверю на всякий случай Sm

BM:S (по крайней мере так было в WoG 3.58) просто отдаёт значение структура_стека.скорость. К примеру, для истинной скорости отряда нужно ещё посчитать процентовку, получаемую от замедления. Поэтому, игра ВСЕГДА (или почти всегда) использует функцию, рассчитывающую реальную скорость из номинальной с учётом эффектов заклинаний.


RE: (Mod) Z Battle Order - Zur13 - 01.04.2020 18:16

(01.04.2020 17:57)XEPOMAHT Wrote:  
(01.04.2020 17:39)Berserker Wrote:  мораль не должна отображаться на шкале инициативы и не отображается в более поздних играх.

А кто сказал что она должна быть на шкале (которой и так на ERA нет)? Чуть выше просто представил неполный список того, что учитывает содовский код при передаче хода. Вообще, в любой момент битвы можно поставить перехват и передавать ход как душе угодно (поэтому на ERA учесть абсолютно всё просто нереально), вплоть до добавления механизма инициативы из Пятых Героев (особо ничего сложного там нет, простая замена скорости на инициативу в соответствующих функциях, включая ИИ), поэтому то, что не шибко сложно реализовать на закрытых SoD/HoA, оборачивается головной болью на открытой для всех желающих ERA.

Имеется ввиду что мы не предсказываем случайно выпадающие эффекты такие как повторный ход от высокой морали или пропуск хода из-за низкой морали. По поводу изменения порядка ходов из-за других модов, я чуть выше упоминал это должно быть реализовано на уровне АПИ, если этот мод будет принят, я просто добавлю в этот мод АПИ чтобы другие разработчики модов могли указывать особый порядок рассчета ходов. Это всё решаемые проблемы.

(01.04.2020 17:57)XEPOMAHT Wrote:  BM:S (по крайней мере так было в WoG 3.58) просто отдаёт значение структура_стека.скорость. К примеру, для истинной скорости отряда нужно ещё посчитать процентовку, получаемую от замедления. Поэтому, игра ВСЕГДА (или почти всегда) использует функцию, рассчитывающую реальную скорость из номинальной с учётом эффектов заклинаний.

Только что проверил BM:S выдает скорость отряда с учетом бонуса от заклинания ускорения, но без учета дебафа от заклинания замедления. Буду благодарен за подсказку как вызвать упомянутую функцию рассчета истинной скорости стека из ЕРМ кода для заданного стека.


RE: (Mod) Z Battle Order - XEPOMAHT - 01.04.2020 18:28

(01.04.2020 18:16)Zur13 Wrote:  Буду благодарен за подсказку как вызвать упомянутую функцию рассчета истинной скорости стека из ЕРМ кода для заданного стека.

В ECX записываешь адрес структуры стека, от которого нужна скорость (саму структуру можно получить с помощью BM:Z) и вызываешь функцию по адресу 4489F0h. Скорость стека запишется в EAX, при неудаче (если что-то не так) там будет минус единица.

Если нужна проверка на обездвиженность, то необходимо проверять значения структура_стека+F4h и структура_стека+F8h.

НО! для получения приоритета хода лучше всего вызывать функцию по адресу 464B30h, тогда проверять на скорости уже не надо - игра это сама сделает за тебя.


RE: (Mod) Z Battle Order - Berserker - 01.04.2020 18:47

Version 2.9.6
------------------------
[+] Added new ERM command BM:U6/?$, returning stack actual speed, including slow spell effect.
    Note, BM:S always returns speed without slow spell effect.


RE: (Mod) Z Battle Order - V_Maiko - 01.04.2020 19:05

The truth I would like it to be more faithful to the VCMI version, I don't like that it is positioned anywhere else, only as the VCMI version, not like the previous images that showed...


RE: (Mod) Z Battle Order - Zur13 - 01.04.2020 19:14

(01.04.2020 18:47)Berserker Wrote:  Version 2.9.6
------------------------
[+] Added new ERM command BM:U6/?$, returning stack actual speed, including slow spell effect.
    Note, BM:S always returns speed without slow spell effect.

Спасибо, пропустил этот момент!

Версия 0.3
- Исправлено вычисление очередности ходов для замедленных стеков




moderator Wrote:На данный момент уже реализован мод очерёдности хода в битве, как это сделано в HD-моде.
Называется BattleQueue »

Тема закрыта