Wake of Gods Forum | Форум Во Имя Богов
Плагины. Обсуждение - Printable Version

+- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net)
+-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99)
+--- Forum: Моды (/forumdisplay.php?fid=104)
+--- Thread: Плагины. Обсуждение (/showthread.php?tid=5717)


Плагины. Обсуждение - gamecreator - 19.04.2013 21:59

Обсуждаем плагины ЗДЕСЬ! JC_coffee


RE: Исследование героев - totkotoriy - 08.03.2018 00:16

Я тут пытался запилить окно героя с 10ю вторичными навыками место 8ми через плагин с кнопками... почти получилось :\
Оказывается поверх кнопок выводится текст и иконка вторичного навыка. С иконками справился - вставил деф с прозрачными кадрами, с названием навыков тоже - при открытии стираю названия навыков, а при закрытии восстанавливаю, но вот эти надписи базовое, продвинутое и экспертное если затереть в тхт они затрутся везде. +Сами области для нажатия от старых навыков остаются активными. Может знает кто-нибудь как это обойти? В Сагамосе помнится сделали такое как-то...
Image: 10ss.jpg


RE: Исследование героев - igrik - 08.03.2018 23:50

(08.03.2018 00:16)totkotoriy Wrote:  Я тут пытался запилить окно героя с 10ю вторичными навыками место 8ми через плагин с кнопками... почти получилось :\
Сделаю, ничего сложного. Также доступными для изучения станут 10, а не 8 втор.навыков. !!!Но сделаю не в эти праздники.
Для этого подготовь pcx с замененными расположениями опыта и маны, перенесенными в другое место. Можно в место WoG Спец абилок (блого и проклятий). В общем распланируй окно героя, а я его подгоню под твою задумку


RE: Исследование героев - Algor - 09.03.2018 11:41

igrik, totkotoriy, а можно это будет оформить отдельным модом? Что бы можно было в обычной игре использовать вместо WoG-опции на 10 навыков.
А то мне 10 навыков нравится, а прокручивать их - нет.

И, имхо, лучше не уменьшать иконки втор. навыков, а получить место за счет первичных и удачи/морали.
У первичных убрать подписи "Атака/Защита/пр", оставив только иконки (уменьшенные) и числовые значения, а для удачи/морали также добавить числа.
Специализацию логично будет засунуть наверх к герою и его имени/классу, т.к. эта часть неизменна.


RE: Исследование героев - totkotoriy - 09.03.2018 16:34

(08.03.2018 23:50)igrik Wrote:  
(08.03.2018 00:16)totkotoriy Wrote:  Я тут пытался запилить окно героя с 10ю вторичными навыками место 8ми через плагин с кнопками... почти получилось :\
Сделаю, ничего сложного. Также доступными для изучения станут 10, а не 8 втор.навыков. !!!Но сделаю не в эти праздники.
Для этого подготовь pcx с замененными расположениями опыта и маны, перенесенными в другое место. Можно в место WoG Спец абилок (блого и проклятий). В общем распланируй окно героя, а я его подгоню под твою задумку
Было бы круто!
Вот так сделать?
Image: heroscr4.jpg

(09.03.2018 11:41)Algor Wrote:  igrik, totkotoriy, а можно это будет оформить отдельным модом? Что бы можно было в обычной игре использовать вместо WoG-опции на 10 навыков.
А то мне 10 навыков нравится, а прокручивать их - нет.
Думаю да


RE: Исследование героев - igrik - 09.03.2018 19:05

(09.03.2018 16:34)totkotoriy Wrote:  Вот так сделать?
Наверное да. Я пошаманю, а там будет более ясно видно что и куда лучше перенести.
(09.03.2018 11:41)Algor Wrote:  igrik, totkotoriy, а можно это будет оформить отдельным модом? Что бы можно было в обычной игре использовать вместо WoG-опции на 10 навыков.
А то мне 10 навыков нравится, а прокручивать их - нет.
Значит будет модом


Плагины. Обсуждение - oleggy - 11.06.2018 10:22

Обнаружил баг интерфейса прокачки командира. Неверная картинка при описании навыков. Если этот баг не известен, то скину скриншет с подробностями.


RE: Ошибки, баги и недочёты WoG 3.58f - igrik - 11.06.2018 12:30

Скидывай. Раз ты ипользуешь мод "WoG_Native_Dialogs", то это не Воговский недочет, а мой.


RE: Ошибки, баги и недочёты WoG 3.58f - oleggy - 11.06.2018 12:57

А как можно прикладывать сюда сейвы и картинки? Просто не могу понять где в профиле на форуме можно хранить свои вложения..
До этого пользовался сторонним сервисом, но он хранит несколько дней, это не дело..


RE: Ошибки, баги и недочёты WoG 3.58f - igrik - 11.06.2018 19:00

(11.06.2018 12:57)oleggy Wrote:  А как можно прикладывать сюда сейвы и картинки? Просто не могу понять где в профиле на форуме можно хранить свои вложения..
До этого пользовался сторонним сервисом, но он хранит несколько дней, это не дело..
Тут в профиле некуда прикладывать. Необходимо пользоваться сторонними хостингами.

Я использую:
Для картинок https://imgbb.com/
Для файлов http://rgho.st/


RE: Ошибки, баги и недочёты WoG 3.58f - oleggy - 14.06.2018 18:28

(11.06.2018 12:30)igrik Wrote:  Скидывай. Раз ты ипользуешь мод "WoG_Native_Dialogs", то это не Воговский недочет, а мой.
Вообщем баг проявляется когда прокачиваешь нового командира.

На первом скриншете мы видим что в основные навыки был выбран уже навык здоровья.
Соответственно доступных навыков стало на 1 меньше, т.е. 5.
Навыки сдвигаются влево. Все правильно.
Image: 2018_06_14_20_04_22_2.png

Но если нажать ЛКМ на самый крайний навык справа (5-я клетка), т.е. навык скорости.
Но будет видно что описание этого навыка относится к навыку силы, т.е. к тому навыку который изначально располагался в 5-ой клетке.
Image: 2018_06_14_20_05_04_2.png


RE: Ошибки, баги и недочёты WoG 3.58f - igrik - 15.06.2018 15:07

(14.06.2018 18:28)oleggy Wrote:  Вообщем баг проявляется когда прокачиваешь нового командира.
...
если нажать ЛКМ на самый крайний навык справа (5-я клетка), т.е. навык скорости.
Но будет видно что описание этого навыка относится к навыку силы, т.е. к тому навыку который изначально располагался в 5-ой клетке.
Исправил. Перезалил по тем же ссылкам.
Старый мод нужно удалить, а потом только установить заново.

Дополнительно:
[-] исправлен баг WoG: уменшениt защиты командира при блоке
[+] теперь AI корректно расчитывает силу командира (AI_Value и Fight_Value). Ранее сила командира всегда равнялась 156 ед.


Плагины. Обсуждение - ALEXALEX3434 - 14.01.2019 13:50

(10.04.2018 16:58)igrik Wrote:  Плагины

Данная тема специально создана для размещения пользовательских плагинов для HoMM3.

igrik, Есть ряд вопросов и пожеланий:
1.WoG Native Dialogs- будет ли обновляться?
2. Защита артефактов, пандор и свитков-
Можно ли добавить еще защиту камней командиров

3.Если плагин чтобы после смерти командира, и последующей загрузки предыдущего дня он не исчезал?

4.Есть ли правка способности" с разбега +5%" у кавалерии?


RE: Плагины - igrik - 14.01.2019 15:49

(14.01.2019 13:50)ALEXALEX3434 Wrote:  igrik, Есть ряд вопросов и пожеланий:
1.WoG Native Dialogs- будет ли обновляться?
2. Защита артефактов, пандор и свитков-
Можно ли добавить еще защиту камней командиров

3.Если плагин чтобы после смерти командира, и последующей загрузки предыдущего дня он не исчезал?

4.Есть ли правка способности" с разбега +5%" у кавалерии?
1. WoG Native Dialogs обновляется по мере необходимости (либо правка багов и ошибок, либо добавление функционала). Правда я это нигде не освещаю (только сборку свою перезаливаю при обновлении WND). Например последнее обновление было на прошлой неделе.
2. А надо ли?. Я не вижу необходимости, но если ряд пользоваталей изъявит желание, то сделать могу
3, 4. Подробней опиши. Я ничего не понял.


RE: Плагины - daemon_n - 14.01.2019 15:52

igrik, ALEXALEX3434, командир уже не исчезает, этот баг исправлен. наверно, имеется ввиду баг кавалерийского бонуса для чемпионов и кавалеристов.


RE: Плагины - igrik - 14.01.2019 16:02

(14.01.2019 15:52)daemon_n Wrote:  командир уже не исчезает, этот баг исправлен.
А разве он когда-то исчезал? Я такого что-то не припомню.

(14.01.2019 15:52)daemon_n Wrote:  наверно, имеется ввиду баг кавалерийского бонуса для чемпионов и кавалеристов.
Так в чем суть бага?


RE: Плагины - ALEXALEX3434 - 14.01.2019 17:00

igrik, Баг в том ,что урон с разбега +5% не прибавлялся с осн.урону.
Может и исправлено,но я на эра 2.4 сижу,новее у меня не запускается .
daemon_n, У меня такой баг:
Если командира убили в бою,я загружаю сейв днем ранее ,где он жив,Но его нет(командира).

igrik, WoG Native Dialogs скачал 4 месяца назад, наверное много правок......

WoG Native Dialogs крайне сильно улучшает производитедьность на андроид эмуле,ибо родные вог сообщения вешали игру на 3-10сек,что раздражало.

С ним все фул спид,без единой запинки.)))

А вот новая твоя эра сборка 2.7.7 не запуск,не найден путь к каким-то скриптам и вылетает....(


RE: Плагины - igrik - 14.01.2019 17:42

(14.01.2019 17:00)ALEXALEX3434 Wrote:  igrik, Баг в том ,что урон с разбега +5% не прибавлялся с осн.урону.
Может и исправлено,но я на эра 2.4 сижу,новее у меня не запускается.
Разбег кавалерийского бонуса никогда и ни в одной версии не работет для летающих существ. И поэтому я думаю, что ты проверял на командире, когда обнаружил этот баг.
Для пеших существ кавалерийский бонус работает стабильно и корректно.

(14.01.2019 17:00)ALEXALEX3434 Wrote:  igrik, WoG Native Dialogs скачал 4 месяца назад, наверное много правок......
Да, в WoG Native Dialogs за 4 месяца очень много правок.

(14.01.2019 17:00)ALEXALEX3434 Wrote:  А вот новая твоя эра сборка 2.7.7 не запуск,не найден путь к каким-то скриптам и вылетает....(
Это к разработчику ЭРЫ (Берсеркеру). Я думаю он знает об этой проблеме.


RE: Плагины - daemon_n - 27.01.2019 00:12

(12.04.2018 01:56)igrik Wrote:  WoG Native Dialogs
(Вог диалоги в родном исполнении)

На данный момент сделано:
- диалог командира (скрин)
Есть возможность добавить выход из окна командира клавишей Esc? На Enter выходит, но рука всегда в левой части клавиатуры. На Esc выхожу из всех возможных диалоговых окон.
Если это правится в .btn файле, то какой программой это сделать?


RE: Плагины - totkotoriy - 27.02.2019 22:32

(27.02.2019 12:45)igrik Wrote:  Намаялся я конечно с плагином сетевой передачи, пока разобрался что к чему.

Кому интересно потестировать:
Вот тестовый плагин WoGFixOutOfSync.dll
Плагин класть в EraPlugins любого мода.

igrik, спасибо, что занялся данной темой, а может просто команду в ерм сделать для передачи всех данных и вставить во все боевые скрипты? мне кажется так будет проще и не надо думать в какой момент передавать


RE: Ошибки, баги и недочёты WoG 3.58f - wpion - 03.07.2019 01:21

igrik,как убрать кнопки отмены у ученого и в хижине ведьмы?


RE: Ошибки, баги и недочёты WoG 3.58f - igrik - 03.07.2019 22:54

(03.07.2019 01:21)wpion Wrote:  igrik,как убрать кнопки отмены у ученого и в хижине ведьмы?
Завтра сделаю плагин


RE: Ошибки, баги и недочёты WoG 3.58f - wpion - 04.07.2019 18:25

igrik,ты лучший!да что там, ты просто святой человек!спасибо от нашего маленького комьюнити!


RE: ERA II - Berserker - 18.07.2019 13:01

С Battery конфликтуют хуки и способ сохранения/загрузки данных.

HookCode(POINTER($74C7DD), @Reset_Table, C_HOOKTYPE_JUMP); //сброс значений в таблице на -2 (дефолтное значение) при старте карты перед инструкцией

в Эре:
(* Remove LoadERMTXT calls everywhere *)
Core.p.WriteDataPatch(Ptr($749932 - 2), ['33C09090909090909090']);
Core.p.WriteDataPatch(Ptr($749C24 - 2), ['33C09090909090909090']);
Core.p.WriteDataPatch(Ptr($74C7DD - 2), ['33C09090909090909090']);
Core.p.WriteDataPatch(Ptr($7518CC - 2), ['33C09090909090909090']);

В Эре загрузка/сохранение данных обычно через ReadSavegameSection делается, так формат сохранений не портится. Что касается сброса значений, то есть событие OnBeforeErm. Вероятнее всего, оно подходит для сброса таблицы.

У кого-нибудь остался исходник Battery.pas?


RE: ERA II - igrik - 18.07.2019 14:28

(18.07.2019 13:01)Berserker Wrote:  У кого-нибудь остался исходник Battery.pas?
На форуме же и остался Ab
Battery.dll


RE: ERA II - Berserker - 18.07.2019 19:49

igrik, спасибо большое!


RE: ERA II - ElfbI - 18.09.2019 23:56

Berserker, подскажите, в 2.8.8 в game_bug_fixes нумерация раундов стандартная или измененная?
(08.08.2019 21:54)Berserker Wrote:  Пользователям сборок рекомендуется обновить game bug fixes.dll на этот (в нём нет исправления номеров раундов в бою.)



RE: ERA II - igrik - 19.09.2019 10:28

(18.09.2019 23:56)ElfbI Wrote:  подскажите, в 2.8.8 в game_bug_fixes нумерация раундов стандартная или измененная?
Уже стандартная. В настоящее время game_bug_fixes никак не влияет на нумерацию раундов.


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

Важно!: начиная с версии 2.8.7 в ERA была изменена механика раундов битвы (в SoD она различается для раундов с тактической фазой и без)

Исход: нумирация раундов в настоящее время для ERA 2.8.7 и выше всегда имеет такую механику:
    - во всех битвах первый раунд всегда = 0 (v997 - хранит номер раунда в битве)
    - во время тактической расстановки номер раунда начинается со значения -1000000000, т.е. имеет отрицательное значение


Berserker, и хотя нумерация приведена в норму, баг вызовов остался. Более детально:
Герой с армией максимально прокачаных крестьян (опыт армий) при наличии тактики и сразу после тактической фазы призывает группу других крестьян (но должен это делать лишь с следующем раунде)
Без наличия тактической фазы такой проблемы нет.
Для уточнения: вызов всех существ от опыта армий привязан к содовским раундам баттлменеджера (строка 2445 "crexpo.cpp")
Code:
int Day=(*(int *)&((Byte *)BatMan)[0x13D6C]);
Именно поэтому баг проявляется и сейчас. Именно поэтому я и вносил фиксы в раунды битвы.
Либо перепривязывать данный вызов к BACall_Turn (*(_int_*)0x79F0BC), либо фиксить и содовские раунды. Тут уже как тебе удобнее


RE: Плагины - Berserker - 26.09.2019 22:59

(26.09.2019 21:02)igrik Wrote:  Подробные описания заклинаний

Автор: igrik
Язык: английский или русский (мод сам понимает когда какой язык применять)
Поддерживаемые версии: ERA
Способ установки: устанавливать как мод ERA

Скачать

igrik, прекрасный плагин, спасибо!

У меня вопрос по поводу перевода на другие языки. Можно на tr() перевести сообщения, что сейчас в текстовом файле?
Скажем, глобальная переменная std::string battleLogHint.
// igrik spells descriptions = isd
// int damage = вычислили урон
battleLogHint = tr("isd.deals_x_damage", { "damage", IntToStr(damage) });

И файл Mod\xxx\Lang\igrik spell descriptions.json
Code:
{
  "isd": {
    "deals_x_damage": "Наносит @damage@ урона!"
  }
}



RE: Плагины - Valery - 27.09.2019 00:46

(26.09.2019 21:02)igrik Wrote:  плагин Подробные описания заклинаний

Автор: igrik

What's the difference with THIS

As I'm not sure what the russian text say


RE: Плагины - helgtla - 27.09.2019 01:06

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


RE: Плагины - daemon_n - 27.09.2019 01:06

(27.09.2019 00:46)Valery Wrote:  What's the difference with THIS

As I'm not sure what the russian text say

In bottom line images dealing damage and quantity of creatures will killed by this spell, like in the Sod_SP plugin and the last Hota version


RE: Плагины - Berserker - 27.09.2019 01:35

(27.09.2019 00:46)Valery Wrote:  What's the difference with THIS

As I'm not sure what the russian text say
Valery, estimated damage/kills are displayed in battle log box.


RE: Плагины - igrik - 27.09.2019 18:49

(27.09.2019 01:06)helgtla Wrote:  По плагину Подробные описания заклинаний : если у героя есть навык Волшебство (+15% к урону заклинаний), то такие заклятия как Воскрешение, лечение, поднятие мертвецов-в описании имеют 15% прибавку от навыка, хотя сам навык на эти заклинания не действует(так как заклятия изначально не являются наносящими урон). Плюс одевание артефактов стихийных сфер так же "увеличивает" показатель реса/лечения в описании заклятия(по факту это не так).
Совсем забыл про то, что Волшебство работает только на заклинания, наносящие урон. Исправлено.

Также добавлено автоматическое определение языка (русский или английский).
Для разбирающихся:
Code:
// локализация WoG (0 - eng, 1 - rus)
#define isRusLangWoG (*(_int_*)0x80321C)

Перезалито по той же ссылке.


RE: Плагины - Valery - 28.09.2019 03:13

Berserker Wrote:
(27.09.2019 00:46)Valery Wrote:  What's the difference with THIS

As I'm not sure what the russian text say
Valery, estimated damage/kills are displayed in battle log box.
ah thanks, great mod.


RE: Плагины - AuAu - 28.09.2019 20:57

BattleReplay.dll при рестарте битвы возвращает лишь одну палатку/баллисту/тележку, можно сделать, чтобы возвращал все??
Имеется в виду - с включённой опцией "усиленные боевые машины 3", там можно покупать несколько палаток/прч.


RE: Плагины - igrik - 30.09.2019 14:47

(28.09.2019 20:57)AuAu Wrote:  BattleReplay.dll при рестарте битвы возвращает лишь одну палатку/баллисту/тележку, можно сделать, чтобы возвращал все??
Имеется в виду - с включённой опцией "усиленные боевые машины 3", там можно покупать несколько палаток/прч.
Нужно адаптировать скрипт под плагин (а не плагин под скрипт). Для этого в плагине предусмотрен вызов 2 функций.
!?FU870520; [перед переигрываемой битвой]
!?FU870530; [после переигрываемой битвы]
В них вам нужно будет (скорее всего) исправить всего лишь одну или пару скриптовых переменных, которая инициализирует установку бОльшего кол-ва боевых машин.

Если будете править скрипт, очень внимательно изучите эту конструкцию:




RE: Плагины - AuAu - 30.09.2019 20:32

igrik Wrote:Нужно адаптировать скрипт под плагин (а не плагин под скрипт).

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


RE: Плагины - daemon_n - 01.10.2019 14:32

(26.09.2019 21:02)igrik Wrote:  Подробные описания заклинаний

Неверно пишется урон в строке состояния.
должно быть 480
Проверил все дамаг спеллы - не хватает ровно 5%

пишет кол-во убиваемых - 0 - именно в русской версии

краш при попытке воскресить - наведении на труп

summon вмсето sammon



RE: Плагины - igrik - 01.10.2019 16:24

(01.10.2019 14:32)daemon_n Wrote:  Неверно пишется урон в строке состояния.
Проверил все дамаг спеллы - не хватает ровно 5%
должно быть 480
Нужен сейв. У меня всё корректно пишет.


(01.10.2019 14:32)daemon_n Wrote:  1) пишет кол-во убиваемых - 0 - именно в русской версии
2) краш при попытке воскресить - наведении на труп
3) summon вмсето sammon
Все три пункта исправлены.
Мод перезалит.


RE: Плагины - daemon_n - 01.10.2019 17:57

(01.10.2019 16:24)igrik Wrote:  
(01.10.2019 14:32)daemon_n Wrote:  Неверно пишется урон в строке состояния.
Проверил все дамаг спеллы - не хватает ровно 5%
должно быть 480
Нужен сейв. У меня всё корректно пишет.

Вот СейвНаЯД



RE: Плагины - igrik - 01.10.2019 19:40

(01.10.2019 14:32)daemon_n Wrote:  Неверно пишется урон в строке состояния.
Проверил все дамаг спеллы - не хватает ровно 5%
должно быть 480
Исправлено. Спасибо за репорты.
Мод перезалит Ab


RE: Плагины - professornova - 10.01.2020 16:18

В плагине game bug fixes.dll не так давно появился баг.

Шаги для воспроизведения:
1. Устанавливаем HoMM Complete в новую папку.
2. Устанавливаем чистую era 2.9.3.
3. Устанавливаем game bug fixes.dll версии 58af4cd7484e925e2155df0e7b377fe587e897c3 или выше.
4. Устанавливаем Era Scripts 1.40.
5. Включем скрипт split decision.
6. Начинаем игру на стандартной карте Arrogance.
7. Начинаем бой с ИИ.

Баг: игра вылетает при попытке AI разделения отрядов. Воспроизводится всегда.

В предыдущей версии 7926b520586ba68dd5983c514e79c8d03f8bd44c проблема не воспроизводится и скрипт split decision работает стабильно.


Без Era Scripts 1.40 баг тоже воспроизводится, но в скрипте "Split decision" из WoG есть неисправленные проблемы. Поэтому тестировал сценарий с версией "Split decision" из Era Scripts.


RE: Плагины - daemon_n - 10.01.2020 16:21

professornova Wrote:В плагине game bug fixes.dll не так давно появился баг.
professornova, а ты erm_hooker.era обновил в era scripts?


RE: Вопросы по моддингу - Ivor - 10.01.2020 17:05

Это один из стандартных Воговских скриптов, правильно? Давно их не включал, мне их правила замены не нравятся


RE: Вопросы по моддингу - professornova - 10.01.2020 18:35

да, один из стандартных


RE: Плагины - Berserker - 10.01.2020 18:37

(10.01.2020 16:21)daemon_n Wrote:  
professornova Wrote:В плагине game bug fixes.dll не так давно появился баг.
professornova, а ты erm_hooker.era обновил в era scripts?

daemon_n, скорее удалить его нужно.


RE: Плагины - professornova - 10.01.2020 18:37

Использовал erm_hooker из мода WoG.


era changelog:
Quote:Version 2.9.0
------------------------
[+] ERM Hooker was updated to 2.1 version and is now part of Era package. Mod makers should not include it in their mods.



RE: Плагины - Berserker - 10.01.2020 21:28

igrik Wrote:
(10.01.2020 16:18)professornova Wrote:  В плагине game bug fixes.dll не так давно появился баг.
На данный момент ошибку я исправил. Больше вылетов нет.
Плагин обновлен по той же ссылке: game bug fixes.dll
igrik, это продвинутый плагин или тот, что в Эре нужно обновить?


RE: Плагины - igrik - 10.01.2020 21:53

Berserker Wrote:igrik, это продвинутый плагин или тот, что в Эре нужно обновить?
Это плагин, который я создавал сам, во многом отписываясь в этой теме

У тебя плагин RoseKavalier'a.
Мой плагин включает в себя весь код плагина RoseKavalier, плюс я уже много чего дописал к нему.
Весь код моего плагина можно увидеть на гитхабе.


RE: Плагины - professornova - 10.01.2020 23:08

(10.01.2020 20:48)igrik Wrote:  На данный момент ошибку я исправил. Больше вылетов нет.
Плагин обновлен по той же ссылке: game bug fixes.dll

Спасибо, новая версия работает корректно.

На Era 2.8.8 баг тоже воспроизводился. Я просто для примера привел 2.9.3.


RE: Плагины - Berserker - 10.01.2020 23:28

(10.01.2020 21:53)igrik Wrote:  У тебя плагин RoseKavalier'a.

igrik, да, вспомнил, спасибо. Мне нужен был плагин с минимумом нововведений и максимумом стабильности, потому тот брал.


RE: Плагины - igrik - 11.01.2020 17:05

Обновлен мод увеличенного кол-ва скоростей в битве.
Причина: не сохранялись параметры после перезапуска игры
Ссылка та же тут


RE: Плагины - daemon_n - 11.01.2020 17:06

igrik Wrote:daemon_n, тебе обновлять своё сообщение не нужно!
igrik, сообщение нет.
Сборку... Да112

Спасибо за обновление)


RE: Плагины - Berserker - 11.01.2020 17:12

(11.01.2020 17:05)igrik Wrote:  Обновлен мод увеличенного кол-ва скоростей в битве.
Ссылка та же тут

igrik, огромное спасибо! 112 112 112


RE: Баги сетевой игры - daemon_n - 21.04.2020 19:11

При игре на разных компьютерах (или просто 2 клиента) 100% вылет, если нападать на замок.
После первого выстрела катапульты на компьютере нападающего следует прямой выстрел в нижний стек защитника. Снимает 1 хп, но который второй не видит. Проверено вообще без скриптов и модов. Зависимости только от game bug fixes.dll плагина.

Если есть тактическая фаза, врага нет. Если есть баллистика, краша нет. То есть нет лишнего выстрела.

   Что интересно, на версии Эры 2.9.12 краша с тем же плагином нет, но есть выстрел катапульты, который снимает 1хп. Второй игрок его тоже не видит, но игра крашится лишь при пкм на союзном юните.

   Есть мысль, что в Эре тоже какая-то штука. В голову мне пришло, что дело в измененных батлраундах, но все равно в этом ничего не понимаю.


RE: Баги сетевой игры - daemon_n - 21.04.2020 21:11

(21.04.2020 19:25)daemon_n Wrote:  При игре на разных компьютерах (или просто 2 клиента) 100% вылет, если ...

Исправлено. Спасибо igrik'у.


RE: Баги сетевой игры - Berserker - 21.04.2020 22:22

daemon_n, укажи, пожалуйста. Что и где исправлено Ab


RE: Баги сетевой игры - daemon_n - 21.04.2020 23:59

Berserker, game bug fixes.dll - что-то с передачей данных.


RE: Исследование героев - gamemaster - 19.07.2020 19:18

Hi,

Wondering is Igrik wiling to share some code Sm

Actually i tries to port "wog native dialogs.cpp" to delphi 10.3
Benefits of porting can be:
- In near future i can play with code in spare time Sm
- In far future it can be integrated part of ERA. Perhaps add new functionality trough erm scripts or something like that (extending already existing dialogs)...

Code will be available to bersy if he found that interesting for era3 integration of any kind.
Bersy is only person i know that use delphi beside me that is reason why i mention him Sm.

For now it is private project so provided source wont leak to others if it is concern.

I need all dependices of "wog native dialogs.cpp" if it can be provided (.cpp and .h).

Up until now i had ported some part of code (~5%) and it seems to be no problem to port remaining part if i had source.
I can do it trough reversing with idapro but it is waste of time if code already exists...

So, i am in you grace Igrik Sm


RE: Исследование героев - igrik - 22.07.2020 12:40

gamemaster, Исходный код вы можете увидеть тут:
Source wog native dialogs


RE: Исследование героев - gamemaster - 22.07.2020 20:24

Thanks!!


Плагины. Обсуждение - Archer30 - 31.07.2020 00:20

1. Hi igrik ! I love your plugin Spells Description very much, though I have difficulties on adding Chinese localization to it without replacing English. Will you kindly consider update the plugin with ERA json support? Thanks!

2. This is another request about WoG Native Dialog plugin:

Image: cZZhAat.jpg

So far I believe that the comma I show from the pic above does not appear in WogNDlg.txt. It is handled internally, which frustrates me.
In some languages ​​(Chinese for example), there is an alternative style of comma. Using an English comma does not make sense to those languages.
I wish this comma can be added to WogNDlg.txt for better localization experience of ERA.

Hope that igrik will respond to my request. Thank you in advanced. 96-copy


RE: Плагины - Berserker - 31.07.2020 00:41

Archer30, how do you write comma in Chinese?


RE: Плагины - Archer30 - 31.07.2020 01:05

Berserker, It's ",". Comparing to English comma, just slightly different in style and wider to match up with Chinese characters.


RE: Плагины. Обсуждение - igrik - 31.07.2020 23:25

(31.07.2020 00:20)Archer30 Wrote:  1. Hi igrik ! I love your plugin Spells Description very much, though I have difficulties on adding Chinese localization to it without replacing English. Will you kindly consider update the plugin with ERA json support? Thanks!

2. This is another request about WoG Native Dialog plugin
1. Ok. I'll do it. But later, not now.

2. Comma added to txt file. Download
Correct the text file yourself:
", kills:" (line 22)



PS: show me what a comma looks like in Chinese, please.


RE: Плагины. Обсуждение - Berserker - 01.08.2020 03:29

igrik, в посте выше китайская запятая.


RE: Плагины. Обсуждение - Archer30 - 01.08.2020 12:40

igrik, thank you so much!
My request 1# was submitted 1 month ago. Now I've already got used to the current spell description structure. There is no big deal creating another language file for the plugin. It's up to you to place the request to a low priority Sm

So the Chinese comma is "," comparing to English comma "," only minor difference there. Let me show you in action.
Image: BoCS5es.jpg

Blue line: Chinese comma
Red line: English comma


RE: Плагины. Обсуждение - Archer30 - 05.08.2020 21:31

Asking for more help from igrik

igrik, appologize for failing to notice this before I submitted my last request. I'm in need of your help again about WoG Native Dialogs.

New Request: Moving the spacebar marked below from the plugin to WoGNDlg.txt (end of line 22).
Image: 2knLiPq.jpg

Reason: Spacebar in sentences must be removed in Asian languages.

Explanation:
The current line 22 from WoGNDlg.txt is
Code:
, kills:
The actual sentence in battle will become
Code:
, kills: %killcount%
While in Chinese, the more native way of speaking would be
Code:
,kills:%killcount%
The difference is, there is no space needed after "kills:".


RE: Плагины. Обсуждение - Bes - 06.08.2020 19:02

igrik, тож спрошу по WoG Native Dialog плагину...

В области ввода текста ограничение в 31 символ?
Я не знаю сколько было в базовой реализации WoG, использую щас обновлённый диалог...
Image: 0f1af60a1c81t.jpg


RE: Плагины. Обсуждение - Archer30 - 21.08.2020 13:01

Another new request of WoG Native Dialogs...

Request: Can igrik make a switch of whether or not enabling input dialogs of WoG Native Dialogs please?

Reason: The current input dialogs from WoG Native Dialogs has an shortcoming for Asian language user as it does not support local IME (Input method).

Explanation:
Here's an example explaining how IME works with Chinese input (with WoG Native Dialogs disabled):
Image: bi3cy1p.jpg
When typing "haha" with Chinese IME enabled, "haha" does not instantly appear in the game, instead it's stored in the IME. As "haha" was typed, IME will pop up possible Chinese words with the letter combination "haha". Unitil pressing "1, 2 or 3" from the keyboard to select the actual Chinese words, nothing will be input to the game.

If "1" was pressed after "haha", then
Image: rAqgEDl.jpg
“哈哈” would be input in the game dialogs.

But, with WoG Native Dialogs Enabled, this becomes impossible. Here's another example explain how WoG Native Dialogs behaves with Chinese IME enabled.
Image: UnEWkjP.jpg
So basically the Chinese IME still stores the keyboard input, but WoG Native Dialogs won't write anything from IME. With "haha" + "1" now gets only "haha1" in the dialog.

Conclusion: WoG Native Dialogs does not support Chinese Chinese input while the original WoG dialogs handles it quite well.

I understand that it might be very complex to add local IME support to WND, thus my request is making a switch of the dialog.

I'm looking forward to your response to this one, as well as the request here, igrik. Thank you in advanced Sm


RE: Плагины. Обсуждение - igrik - 21.08.2020 13:27

Image: image.png

Do these input fields support Asian characters?


RE: Плагины. Обсуждение - Archer30 - 21.08.2020 13:37

igrik, they do not, even the official Chinese HoMM3 does not supports any kind of Chinese character input. That's the main reason I believe this could takes many effort of research.

The only dialogs supports Chinese are WoG's, which is essential for objects like living skull.


RE: Плагины. Обсуждение - igrik - 21.08.2020 13:41

(21.08.2020 13:37)Archer30 Wrote:  igrik, they do not, even the official Chinese HoMM3 does not supports any kind of Chinese character input. That's the main reason I believe this could takes many effort of research.

The only dialogs supports Chinese are WoG's, which is essential for objects like living skull.
Very bad. We will decide with Berserker what to do.


Berserker, что будем делать? Выпиливать этот диалог ввода (полностью или через ini файл с параметром)?
Или есть другие предложения? Просто я не вижу способа добавить поддержку азиатских символов в это поле ввода. Я уже много чего перепробовал - всё бестолку.


RE: Плагины. Обсуждение - Berserker - 21.08.2020 14:11

igrik, воговский диалог ввода — обычный элемент управления Windows, который умеет выделять/копировать текст, понимает сообщение вставки из буфера обмена.
К сожалению, азиатский способ ввода будет не применим к большинству игровых диалогов. Потому давай вынесем замену поля ввода в heroes3.ini (есть команда на чтение из ini в era sdk). При UseWindowsInputControl="1" (не 0, не пустом) для диалогов, где присутствуют поле ввода, использовать воговский вариант.


RE: Плагины. Обсуждение - igrik - 21.08.2020 14:16

Значит так и сделаем.


RE: Плагины. Обсуждение - Archer30 - 21.08.2020 14:45

Berserker, but a more ideal way is storing the parameter somewhere else with a file that has VFS support, so that when WoG Chinese mod (or any other Asian language) is loaded, input dialogs automatically become original WoG ones.

I understand copy and paste still works on WoG Native Dialogs, but according to my research of preference in the Chinese WoG forum. most ppl prefer using IME to input.

igrik, many thanks to you for updating the plugin for Asian players! Much appreciated. If you got some more time, please also take a look on my previous request about text.


RE: Плагины. Обсуждение - Berserker - 21.08.2020 19:13

Archer30, I see.

igrik, отбой тогда с ini. Сделай, пожалуйста, экспортируемую функцию stdcall int UseWin32InputControl (int newState).
Функция изменяет тип элемента ввода с родного геройского на Win32 элемент управления, который в ВоГ 3.58 (если диалог с полем ввода, то ты вызываешь оригинал).
0 — ложь,
не 0 считается и сохраняется как 1.
Функция возвращает предыдущее состояние (0 или 1).

Таким образом Chinese Mod будет содержать файл 1000 asian input.erm с вызовом функции в инструкции, например.
Или будет содержать lua/c++ плагин, который вызывает эту функцию ещё до показа окна игры.

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


RE: Плагины. Обсуждение - igrik - 21.08.2020 22:42

Может всё таки опцией сделаем? Так намного проще и удобнее для ERM!

К тому же, я сделаю, чтобы это работало динамически.
Пример: нам нужно, чтобы окно ввода всегда было воговское, но в окне героя (например при переименовании) вызывался диалог ввода WND

UPD: Как сделать экспортируемой функцией я пока не разобрался. Да и на выходные я уезжаю, буду не раньше вторника.
Так что пока что сделал опцией.
Куда-то нужно выложить? Или ждем следующей недели, плюс пока я разберусь с экспортируемымм функциями и запилю их?


RE: Разные вопросы - Night - 22.08.2020 20:28

Berserker
Ещё вопрос вспомнился. Нашёл в дискорд канале по Эре файл BattleAIvsAIFix.dll обновленный, а ещё ранее помню он в сборке какой-то поставлялся.
Что за dll, под какую надобность он был использован ранее? По названию предполагается, что для исправления чего-то при битве AIvsAI (кэп, да Sm), но будет он мне актуален, если у меня все ИИ в союзе стоят или файл также исправляет нечто при сражении AI (фракция компа) vs AI (мобы на карте/банках существ)?


RE: Разные вопросы - Berserker - 22.08.2020 22:08

Night
Плагин от игрика заставляет компа проводить битвы на самом деле, а не в режиме теор. расчёта.


RE: Разные вопросы - daemon_n - 22.08.2020 22:11

Night, корректный опыт за все бои, артефакты за победы над ии, верное количество скелетов у некромантов (в оригинале за все бои всегда 1 скелет)


RE: Разные вопросы - ElfbI - 22.08.2020 22:37

daemon_n, у меня этот плагин приводил к краху игры на ходе компа посредине партии...


RE: Разные вопросы - daemon_n - 22.08.2020 22:44

ElfbI, на какой версии Эры? Раньше так было часто, но на 2.9.14 пока не было жалоб - уже больше месяца файл в сборке.
Разве что с новым TUM для ЭРЫ 3, говорят, есть некоторые проблемы, но я не смортел.


RE: Разные вопросы - ElfbI - 22.08.2020 22:48

daemon_n, 2.9.13

Но у меня много своего, что-то могло конфликтовать


RE: Разные вопросы - Night - 22.08.2020 23:22

Berserker, daemon_n, кажется припоминаю насчёт и битв не в теор.расчёте и за арты и за скелетов, но вопрос актуален у меня по последней части. Если у меня все компы в союзе, будет ли польза для ИИ от этого плагина или ему для сражения с нейтральными монстрами не актуально? Скелеты пожалуй тут особенно интересуют, у меня нередко некроманты против попадают и они одни из самых слабых, дело ли в том, что им скелетов недодают?

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


RE: Разные вопросы - ElfbI - 22.08.2020 23:27

Night, вот тоже скелетов бы отдельным фиксом!


RE: Разные вопросы - Night - 23.08.2020 00:05

daemon_n, ElfbI, Ой блииин, порой костность мышления убивает.
(И лень, лень точно тут причастна, разлагает мозги-и-и Sm)

Сейчас буквально за 10 минут настрогал тест карту, где поставил Некрополис, ему дал 1000 личей, запретил строить здания на юнитов, чтобы не портил проверку своими скелетами и убрал таверну. Поставил перед замком отряд 100 копейщиков.

Как результат:


Без BattleAIvsAIFix.dll - после победы

Image: OjGBpRO.png
С включением BattleAIvsAIFix.dll - после победы

Image: U1jUbso.png


Комментарии как говорится излишни. Осталось только разобраться, можно ли исправить подлагивание перед началом битвы с нейтралами.
Я видео наверно запишу, чтобы можно было понять различие. Оно заметно на глаз ощутимо.


RE: Разные вопросы - Bes - 23.08.2020 00:09

Night, сколько было ДО битвы у неё всё?


RE: Разные вопросы - V_Maiko - 23.08.2020 00:11

Is that plugin still receiving maintenance? I thought igrik had abandoned it, but if it keeps updating I want to use it in my mod too, if it doesn't cause a lot of problems.


RE: Разные вопросы - daemon_n - 23.08.2020 00:20

Bes, это баг оригинала, так что без плагина всегда будет 1. И +1 за каждый бойYes


RE: Разные вопросы - Night - 23.08.2020 00:22

Bes, Ноль скелетов. Только 1000 личей ставил (почему-то с 100 личей ИИ отказался на первый день выносить пикинеров, трусишка Sm).
Видомина 1 уровень, поставил эксперт Чародейства. Всё.

Был странный момент, в первый раз, когда ИИ дали 1 лича и 1 скелета за бой. Не понял в чём прикол. Дальше всё нормально стало. По 1 скелету без dll и по нормальной прибавке с dll.


RE: Разные вопросы - Bes - 23.08.2020 00:25

Night, не, мне интересно сколько первичных было параметров и маны


RE: Разные вопросы - Night - 23.08.2020 00:28

Bes, вот такое всё:
Но это уже третий вариант. Там по разному как-то генерируется. Щас проверю по всякому.
Только щас заметил, что для 1 уровня у неё многовато всего и странно мало маны.

P.S. Понял, что к чему - стоит скрипт not place to people.erm, в нём 10 уровень даётся ИИ, поэтому такой разброс всего.


RE: Плагины. Обсуждение - Berserker - 23.08.2020 16:10

V_Maiko, nope, plugin development was stopped and it still caused crashes accroding to some reports.


RE: Плагины. Обсуждение - PerryR - 23.08.2020 16:39

If it's just for the Skeletons/Experience loss, I could write a small ERM script to fix these problems. Sounds safer to me.
The battle would still be theoretical (faster) and exp and skeletons are given for creatures killed after battle.


RE: Плагины. Обсуждение - Night - 23.08.2020 17:07

PerryR, It will be really great! Since, according to small tests, the BattleAIvsAIFix.dll fix for artifacts and army experience is not so noticeable, but 1 skeleton for any battles for the necropolis ... this was truly regrettable. For a long time I did not understand why my AI opponent necromancer is so weak and helpless.


RE: Плагины. Обсуждение - ElfbI - 23.08.2020 17:08

PerryR, will be really good if you do so! Fixes for the Skeletons/Experience loss are the reason to use that dll


RE: Плагины. Обсуждение - Night - 01.09.2020 13:44

Такой вопрос про переигрываемую битву - при первой переигровке в любом банке существ поле битвы становится "Зеленые поля", это можно как-то поправить или увы?


RE: Плагины. Обсуждение - daemon_n - 01.09.2020 13:45

Night, сейв кинь в дискорд с описанием


RE: Плагины. Обсуждение - Night - 01.09.2020 14:31



В одиночной и в сетевой также.

P.S. Это у меня Morn Battlefield отрубает, переигровка правильно работает без него, уже понял, как видео сделал.
Блин, как его починить то )


RE: Плагины. Обсуждение - daemon_n - 01.09.2020 14:55

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


RE: Разные вопросы - Archer30 - 15.09.2020 04:48

Hi, igrik and Berserker, sorry to bother you again. Another help I'm looking for with wog native dialog.

Issue: Asain characters become super big in the home page of WoG Option Menu with WoG Native Dialog loaded

Screenshots:

Request: To have the same font size in the first pic with WoG Native Dialogs enabled.

As I understand, the font settings here is embedded in the plugin. I have try a few ways including replacing bigfont.fnt with a duplicate of smalfnt.fnt but didn't work.
This issue is also reported by the Korean mod maker, Kongsuni.

Thank you in advanced for investigating this problem. 96-copy

Asian character support plugin, including source, fonts and localization files for wog menu can be found form here.

Bes, sorry for wrong place I posted. Please move this to the plugin discussion thread. Rolleyes
done Gamer1



RE: Разные вопросы - igrik - 15.09.2020 09:45

(15.09.2020 04:48)Archer30 Wrote:  I have try a few ways including replacing bigfont.fnt with a duplicate of smalfnt.fnt but didn't work.
Change the font bigfont2.fnt to suit your needs.


RE: Разные вопросы - Archer30 - 15.09.2020 12:13

Quote:Change the font bigfont2.fnt to suit your needs.

igrik, thanks for replying, although it doesn't work. Changing bigfont2.fnt with a duplicate of smalfont.fnt (Chinese) only makes English characters get smaller, but Chinese stay the same.

Screenshots:


The fonts I used are from Chinese language support pack which can be found from here (same link as above).


RE: Разные вопросы - igrik - 15.09.2020 12:44

You need to customize Chinese characters in file bigfont2.fnt
This window only uses the bigfont2.fnt


RE: Разные вопросы - Archer30 - 15.09.2020 13:40

igrik, it can't be done as bigfont2.fnt does not include Chinese characters (neither smalfont, medfont and bigfont.fnt from the Chinese pack).

Chinese characters use a different mechanism to display in the game. It uses both .fnt and also hzk files (character library, can be found from here in dir WoG CN\Release\EraPlugins ).

Replacing hzk24 (character library meant to be used when bigfont.fnt is loaded) with hzk12 (use when medfont is loaded) also does not work. It does not makes the characters smaller, instead it just make all characters display incorrectly.


I'm not familiar with the Chinese plugin, unfortunately. The author of it has gone for long and not possible to tweak it again.
If the font definition only exists in bigfont2.fnt and Chinese plugin, then it seems nothing can be done now, sadly...Rolleyes


RE: Плагины. Обсуждение - Berserker - 15.09.2020 15:32

Archer30, Rose Kavalier already wrote the reason, afair. Chinese plugin detects font by looking at first 3 characters of its name. So for "big" it loads hzk24.
Possible sizes: 28x25, 14x16, 11x11. It seems like big font should also be 24px height in English.Something is wrong?

igrik, what's is bigfont2.fnt width/height?


RE: Плагины. Обсуждение - Archer30 - 15.09.2020 16:14

Berserker, I was not aware of this conclusion. I don't quite get it though.
For example, I have smaller fonts including medfont.fnt and hzk12, by replacing bigfont.fnt, bigfont2.fnt and hzk24, all big should look like med right?
That's what I tried, but it didn't work. Fonts in home page of wog menu is always the same size.


RE: Плагины. Обсуждение - igrik - 15.09.2020 16:46

(15.09.2020 15:32)Berserker Wrote:  igrik, what's is bigfont2.fnt width/height?
Мои шрифты, которые имеют суффикс "2".
Высота шрифта bigfont2.fnt - 24 px

Archer30-у нужно просто отредактировать шрифты, потому что в сейчас высота его шрифта bigfont.fnt в английской раскладке (который он скидывает по ссылке на китайскую локализацию) составляет 32 px.

Я попробовал заменить bigfont2.fnt, подменив его на medfont.fnt, и у меня сработало. Почему не сработало у него - потому что он видимо что-то не правильно сделал.


RE: Плагины. Обсуждение - Berserker - 15.09.2020 17:07

igrik, китайские шрифты грузятся из папки с плагином WoG Chinese. Они имеют свой формат. Там три шрифта: 28x25, 14x16, 11x11.
Автор плагина так определяет, каким шрифтом рисовать символ: обратимся r текущему Герои 3 шрифту, поле name.
Если big*, то используем шрифт 28х25, если med*, то используем шрифт 14х16, иначе 11х11.

Вот эта топорная привязка к именам и срабатывает. Но автор решил, что для шрифта 24х подойдёт китайский 28х25, который выглядит громоздко. Я ничего не упустил?

Code:
Font24Width:integer=28;
Font24Height:integer=25;
Font12Width:integer=14;
Font12Height:integer=16;
FontTinyWidth:integer=11;
FontTinyHeight:integer=11;

procedure SetFont(hfont:integer;var Width,Height:integer);stdcall;
begin
  if pInteger(hfont+4)^=1718053218 then
  begin
    Width:=Font24Width;
    Height:=Font24Height;
  end else
  if pInteger(hfont+4)^=2037279092 then
  begin
    Width:=FontTinyWidth;
    Height:=FontTinyHeight;
  end else
  begin
    Width:=Font12Width;
    Height:=Font12Height;
  end;
end;

Плагин я могу пересобрать, но альтернативного китайского шрифта кроме этого на 28х25 может не найтись.


RE: Плагины. Обсуждение - igrik - 15.09.2020 17:55

За объяснение проблемы - спасибо, я этого не знал.

Возникает вопрос: чем именно в данном случае я могу помочь?


RE: Плагины. Обсуждение - Berserker - 15.09.2020 18:22

Ну это же просто! Сделай нам другие файлы китайских шрифтов!
Желательно 16x12, 18x14, 20x16 и т.д. На всякий случай всех размеров. 96-copy

Archer30, please translate wogcnconfig.ini contents.


RE: Плагины. Обсуждение - Archer30 - 15.09.2020 19:31

Thank you igrik and Berserker, now I understand how the Chinese plugin work much more clearly.

Berserker, I somewhat know that why the author choose 28x25 and 14x16. it's becoz they are the original fonts extracted from the official Chinese Heroes 3 (While 11x11 seems to be original).

Translation of wogcnconfig.ini

Note that there are two versions of wogcn existing (I have no idea which the source code belongs to). The old release uses config mainly for switching between GB and GBK font, while the new one does not read from config, it just loads hz** files (GB), which is what we are using. For now we have no idea why the new one remove ini support, the history was erased completely. Rolleyes
dlls for these two versions can be found from here.

So my request is to shrink the font size of home page, ideally to make it look like the font without WoG Native Dialogs.
How about this, an extra plugin to appoint the Chinese font in the red square to blue?
This should be the easiest way for everyone.


RE: Плагины. Обсуждение - Berserker - 15.09.2020 19:44

Archer30, then you'll lose 28x25 font support at all, only 14x16 will be used in all dialogs. Is it ok? You never need huge font?


RE: Плагины. Обсуждение - Archer30 - 15.09.2020 19:55

Rolleyes This is not ok. It can't be separated?
Strange, I don't get it. Why the home page of wog menu has to use 28x25 otherwise lose 28x25 in other dialogs?


RE: Плагины. Обсуждение - Berserker - 15.09.2020 22:19

Archer30, because wog home page will always load big font. It should not be language or plugin specific.
English "W" letter is 33 px at my pc in the same dialog.


RE: Плагины. Обсуждение - Archer30 - 15.09.2020 22:42

Thanks Berserker, but that does not explain that with wog native dialog disabled, the font looks just fit. Or is it a completely different mechanism in this case?



RE: Плагины. Обсуждение - Berserker - 15.09.2020 23:23

Archer30, and what's with wog native dialogs, but without HD mod?


RE: Плагины. Обсуждение - Archer30 - 16.09.2020 06:56

Berserker, let me show you below.

By comparing with all my previous screenshots which are taken with HD, we have the
Conclusion: HD does not affect the font size of Chinese characters in wog menu home page.


RE: Плагины. Обсуждение - Berserker - 16.09.2020 15:46

Archer30, ok, I see. Without WND zvslib.dll is drawing options window using Win32 API and custom font settings. It uses Windows fonts and do not load Heroes 3 fonts at all.
Igrik rewritten the dialog from scratch using Heroes 3 dialogs system. There each label/text must have H3 font name. "medfont" was small (?), so igrik used bigfont for main window.

igrik, для окна с приветствием medfont был слишком малым?


RE: Плагины. Обсуждение - Archer30 - 16.09.2020 16:21

Ah, I see. Thanks Berserker. I believe igrik chose big font for home page as it has the best looking for Rus/Eng. Just for Chinese/Korean it looks a bit funny.
My medfont.fnt and smallfont.fnt come with Chinese plugin are exactly the same, although they have hzk12 and hzk10 for different Chinese character sets.

If I get to choose, the ideal font size in wog menu home page would be

Red -> Shrink to med font (is it the same as blue?)
Yellow -> Stay the same


RE: Плагины. Обсуждение - igrik - 16.09.2020 16:27

BigFont
Image: BigFont.jpg

MedFont
Image: MedFont.jpg

Конечно же визуально BigFont смотрится лучше.


RE: Плагины. Обсуждение - Berserker - 16.09.2020 16:52

Archer30, I think the main issue is that Chinese bigfont is too big. It must be much lower in pixels height as I see.
We need extra fonts/conversion tools to generate smaller fonts.


RE: Плагины. Обсуждение - Archer30 - 16.09.2020 17:03

I agree with you Berserker, the 28x25 font is generally too big for most situation, although it comes from official Chinese SoD, and fits quite well specifically for places it's been used.

Can I ask if you have any idea how hzk files should be edited/made?

But I probably still need help from igrik. I mentioned that I tried to replace hzk24 with a duplicate of hzk12 in my post yesterday, and it did not end up well.
Support from WoG Native Dialogs seems to be required (or not?


RE: Плагины. Обсуждение - Berserker - 16.09.2020 17:29

Archer30, to solve the issue we need:
1) Fixed Chinese plugin font size detection.
2) Provide smaller alternative to current font.

As a quick and dirty solution igrik could compile wnd.dll with bigfont2.fnt string replaced with medfont2.fnt.

Quote:official Chinese SoD
I thought, there was no official Chinese SoD and thus no fonts.


RE: Плагины. Обсуждение - Archer30 - 16.09.2020 17:40

Berserker, hmmm the main concern is not sure whether the source code matches with the plugin we use. If you can kindly compile one from the source I will see if it has some obvious issue.
You mean making a smaller font to replace current big fonts? I will try that if I could figure out how to make hzk files.

28x25 is from official SoD. Have to respect that. It's how Chines H3 looks like. Don't attempt to change what players have been used to for 20 years (especially only just for suiting wog menu)

I mean, I thought this was much easier, and it turns out I was wrong. If it's taking too much effort for all of us, then we just ignore it. What do you think Rolleyes


RE: Плагины. Обсуждение - Berserker - 17.09.2020 00:00

Archer30, I edited plugin for Era and released WoG Chinese.exe mod. So you use it. I can change/recompile it to allow smaller fonts, probably, but we would need such font in the same format. So I added to TODO as possibile someday feature, but not prioritised task.

Quote:28x25 is from official SoD. Have to respect that. It's how Chines H3 looks like.
It means, that huge characters is not a big deal in other dialogs, where the same English bigfont2.fnt will be used. Thus it should be tolarable.


RE: Плагины. Обсуждение - igrik - 17.09.2020 10:12

(17.09.2020 00:00)Berserker Wrote:  Archer30, I edited plugin for Era and released WoG Chinese.exe mod. So you use it. I can change/recompile it to allow smaller fonts, probably, but we would need such font in the same format. So I added to TODO as possibile someday feature, but not prioritised task.
Berserker, проблема решена?


RE: Плагины. Обсуждение - Archer30 - 17.09.2020 11:43

Thanks Berserker. This is not a task with high priority at all. If using medfont.fnt and hzk12 is possible for home page, then new font is not required, am I right?


RE: Плагины. Обсуждение - Berserker - 17.09.2020 15:30

igrik, нет. Я правил плагин в прошлом. Сейчас исправить вопрос можешь ты:

if (PluginExists('wogcn')) { fontName = 'medfont2.fnt' }
Тогда китайски плагин загрузит hzk12 и установит верные размеры шрифта.

Это такой временный хак.


RE: Плагины. Обсуждение - igrik - 17.09.2020 15:55

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


RE: Плагины. Обсуждение - Bes - 17.09.2020 16:15

я согласен с igrik'ом, это более гибкий подход.
Я бы даже предложил в heroes3.ini вытащить (если нету) строку, где локализаторы сами будут указывать какой шрифт брать. Кто знает Unsure


RE: Плагины. Обсуждение - Archer30 - 17.09.2020 16:50

Thanks Berserker and igrik, your kind help is crucial to the Chinese community.

I agree with igrik. Considering ERA might be spread to more regions and different compatibility issues might appear, writing parameter to text enables more flexibility.
Personally I prefer putting parameter into a file supported VFS, which can be put into a localization mod. This enables more convenience switching between languages as enable/disable localization mod is the only thing matters.


RE: Плагины. Обсуждение - Berserker - 17.09.2020 17:07

igrik, в json файл нужно. Это самое гибкое API для таких параметров, которые можно точечно перекрывать.
"wnd": {
    "wog_options_dlg": {
    "intro_font": "bigfont2.fnt"
    }
}

Сюда же можно и остальные перенести. RoseKavalier уже json-перевод в плагинах вовсю использует.

Текстовик, ini и отдельный файл для каждого параметра — худшие решения.


RE: Плагины. Обсуждение - igrik - 17.09.2020 17:26

Berserker, я тебе уже скинул в txt файле.
К следующему разу я займусь json'ами.


RE: Плагины. Обсуждение - Berserker - 17.09.2020 17:52

igrik, я подожду постоянно решения, ибо нет ничего временного.
Вот функция tr с исправленным багом:

Code:
/**
* Returns translation for given complex key ('xxx.yyy.zzz') with substituted parameters.
* Pass vector of (parameter name, parameter value) pairs to substitute named parameters.
* Example: Mod\Lang\*.json file: { "eqs": { "greeting": "Hello, @name@" } }
* Example: ShowMessage(tr("eqs.greeting", { "name", "igrik" }).c_str());
*
* @param  key    Key to get translation for.
* @param  params Vector of (parameter name, parameter value pairs).
* @return        Translation string.
*/
std::string tr (const char *key, const std::vector<std::string> params = {}) {
  const int MAX_PARAMS = 64;
  const char* _params[MAX_PARAMS];
  int numParams = params.size() <= MAX_PARAMS ? params.size() : MAX_PARAMS;

  for (int i = 0; i < numParams; i++) {
    _params[i] = params[i].c_str();
  }

  char* buf = _tr(key, _params, numParams - 1);
  std::string result = buf;
  MemFree(buf);

  return result;
}

Можно её, конечно, порезать до:

Code:
std::string tr (const char *key) {
  char* buf = _tr(key, NULL, -1);
  std::string result = buf;
  MemFree(buf);

  return result;
}

Не будет возможности передать параметр вида @name@, @age@ и т.д.


RE: Плагины. Обсуждение - igrik - 17.09.2020 18:42

(17.09.2020 17:52)Berserker Wrote:  igrik, я подожду постоянно решения, ибо нет ничего временного.
Обсуждали, что это же временная мера 96

Готово. Отправил по той же ссылке.

wnd.json
Code:
{
  "wnd": {
      "fonts": {
          "big_font": "bigfont2.fnt",
          "med_font": "medfont2.fnt",
          "small_font": "smalfont.fnt"
      },
    "dlg_wog_options": {
        "intro_font": "bigfont2.fnt",
        "bttn_name": "{WoG Options}",
    },
    "dlg_crexpo": {
        "line0": "STACK EXPERIENCE DETAILS",
        "line1": "Creature Type:",
        "line2": "Experience Rank:",
        "line3": "Experience Points:",
        "line4": "Experience Points to Next Rank:",
        "line5": "Maximum Experience per Battle:",
        "line6": "Number of Creatures in stack:",
        "line7": "Max new recruits without losing Rank:",
        "line8": "Experience Multiplier:",
        "line9": "Upgrade Multiplier:",
        "line10": "Experience after Rank 10:",
        "line11": "Maximum New Recruits to remain at Rank 10:",
    },
    "dlg_commander": {
        "bttn_open_hint": "Open Commander screen",
        "bttn_exit_hint": "Exit Commander screen",
        "bttn_lvlup_hint": "Click to increase selected skill.",
        "bttn_dismiss_rmc": "Click to dismiss this Commander.",
    },
    "combat": {
        "finish_question": "Finish with Quick Combat?",
        "show_killed": ", kills: %s",
    },
  }
}



RE: Плагины. Обсуждение - Berserker - 17.09.2020 21:35

igrik, спасибо. Это не только решает одну проблему, но и позволяет гибко настраивать локализации и отображение вообще.


RE: Плагины. Обсуждение - Bes - 18.09.2020 03:43

Berserker, да, я это и имел ввиду 132 но не привык пока к этим json'ам, всё оперирую старыми подходами
igrik, спасибо!


RE: Плагины. Обсуждение - Archer30 - 18.09.2020 08:10

Thanks everyone for helping with the font issue here!
I just have one stupid question - Has the WoG Naitve Dialogs Plugin with json support been updated yet? Or should I wait? Rolleyes


RE: Плагины. Обсуждение - igrik - 18.09.2020 12:21

(18.09.2020 08:10)Archer30 Wrote:  I just have one stupid question - Has the WoG Naitve Dialogs Plugin with json support been updated yet? Or should I wait? Rolleyes
Да, немного подождать.
Сегодня произошло еще одно обновление плагина: теперь все строки берутся из wnd.json файла, а файл wogndlg.txt больше не нужен.


RE: Плагины. Обсуждение - Archer30 - 18.09.2020 13:12

Yes Great! Thank you igrik! ERA is getting better and better!


RE: Плагины. Обсуждение - wessonsm - 18.09.2020 21:24

В русской версии Героев 3 от GOG появилось полезное нововведение.
В crtraits.txt добавлено поле "Plural2", куда вписаны имена монстров во множественном числе в родительном падеже:

Image: 530d6d370125.png

И описание существ на карте теперь переводятся корректно, то есть "орда копейщиков", а не "орда Копейщики", как было раньше:

Image: 269c088dad7e.png

Судя по всему, к exe игры был применен некий патч или плагин.
С HD-модом эта фича пока не работает, так как HD-мод использует свой exe.
Вот у меня и возник вопрос, сложно ли такое реализовать для Эры?


RE: Плагины. Обсуждение - Raistlin - 18.09.2020 21:56

wessonsm, можно даже без патчей, просто в триггерах MM и CM нужно подменять значение при определенных условиях. Надо создать массив с названиями и брать значение в соответствии с индексом. Ну а чтобы не создавать этот массив вручную, можно написать мини-программку, которая циклом переберет значения в файле и создаст скрипт, где они будут записаны как массив. Можно еще кстати в ert запихать, но это по вкусуAb


RE: Плагины. Обсуждение - daemon_n - 18.09.2020 22:01

wessonsm, я бы не стал. Допустим, знаем точное количество.
21 - под каждый падеж/род/число писать? Не забываем про все остальные текстовики и моды, которые используют имена существ.
Хотя задумка и интересная - врать не буду.


RE: Плагины. Обсуждение - SergOz - 18.09.2020 23:16

Можно просто поменять информационную строку. Например:

Копейщики: группа (10-19)

Гарпии: орда (50-99)

Привидения: легионы (1000+)


RE: Плагины. Обсуждение - Berserker - 18.09.2020 23:31

wessonsm, проще со всеми языками не заморачиваться. А так в локализациях пишут свою функцию определения множественной формы (их три для русского) от конкретного числа объектов и предоставляют по три версии перевода. Всё усложняется существенно. Потому чаще выгодно писать «что-то: сколько-то» и не усложнять всем жизнь.


RE: Плагины. Обсуждение - wessonsm - 19.09.2020 01:34

Ясно, спасибо.


RE: Плагины. Обсуждение - igrik - 19.09.2020 04:01

(18.09.2020 21:24)wessonsm Wrote:  Судя по всему, к exe игры был применен некий патч или плагин.
С HD-модом эта фича пока не работает, так как HD-мод использует свой exe.
Вот у меня и возник вопрос, сложно ли такое реализовать для Эры?
Нет, нельзя.
Сама по себе, оригинальная структура монстра не имеет места для третьего поля с названиями.
Code:
_int_ town;
_int_ level;
_char_* sound_name;
_char_* def_name;
_int_ flags;


_char_* name_single;
_char_* name_plural;
_char_* specification_description;


_int_ cost_wood;
_int_ cost_mercury;
_int_ cost_ore;
_int_ cost_sulfur;
_int_ cost_crystal;
_int_ cost_jems;
_int_ cost_gold;
_int_ fight_value;
_int_ AI_value;
_int_ growth;
_int_ horde_growth;
_int_ hit_points;
_int_ speed;
_int_ attack;
_int_ defence;
_int_ damage_min;
_int_ damage_max;
_int_ shots;
_int_ spells_count;
_int_ advmap_low;
_int_ advmap_high;

Поэтому, то что если что-то и хотели в русской версии Героев 3 от GOG, без перекомпиляции оригинального кода - сторонними методами, просто не могло быть реализовано.


RE: Плагины. Обсуждение - Bes - 19.09.2020 04:44

т.е., если я правильно понимаю, достаточно взять exe-шник от GOG версии, накатить на него ВСЁ, что сейчас есть на h3era.exe, то мы сможем без исходников прикрутить эту поддержку доп.столбца?
Я понимаю, что все адреса нынешней ERA сместятся хрен знает куда. не о том вопрос...


RE: Плагины. Обсуждение - igrik - 19.09.2020 05:23

Чёто я шибко сомневаюсь.
Дайте экзешник GOGa, скажу наверняка...


RE: Плагины. Обсуждение - daemon_n - 19.09.2020 05:35

igrik, вот - Ру exe из официальной ГОГ версии
Вот мне делать нечего посреди ночи148

UPD:И вот что мы имеем (Click to View)



RE: Плагины. Обсуждение - Bes - 19.09.2020 05:36

да всем нам, по ходу, не спится перед выходными



RE: Плагины. Обсуждение - igrik - 19.09.2020 12:02

Да, действительно.
Размер структуры монстра в нашем exe 116 байт.
В этом exe GOG Rus - размер структуры 120 байт.
Причем все поля ниже name_plural берутся со сдвигом на 1 параметр больше, в сравнении с нашим exe.

И локализация этого exe точно заточена под русский язык, потому что в самом exe я встретил несколько предложений на русском.

Но прикрутить такое обозначение к нашему экзешнику: во-первых = дикий геморой, во-вторых = сразу отлетят HD, Тифон, половина моих плагинов и т.д.
Ну вы в общем поняли...


RE: Ваши вопросы по ERM-скриптам - SergOz - 21.09.2020 03:06

Немного разобрался с хуками на исполняемый код.
В теме UN:C igrik дал ссылку на ERM_Hooker. Скачал. Не знаю чем открыть файл.
Интересно же что в нём... 42


RE: Ваши вопросы по ERM-скриптам - daemon_n - 21.09.2020 03:12

SergOz, хукер уже давно поставляется с Эрой (2.8 или 2.9) - по сути, это слегка изменённая dll.


RE: Ваши вопросы по ERM-скриптам - SergOz - 21.09.2020 03:30

daemon_n, это радует, но где он? И опять же - чем открыть? что в нём? как пользоваться?


RE: Ваши вопросы по ERM-скриптам - daemon_n - 21.09.2020 03:43

SergOz, конечно же в плагинах!
Открыть дебаггером


RE: Ваши вопросы по ERM-скриптам - SergOz - 21.09.2020 03:44

daemon_n, Laie_69


RE: Ваши вопросы по ERM-скриптам - daemon_n - 21.09.2020 06:17

SergOz, расскажи потом, пожалуйста, как им пользоваться)
Хотя я понял так. С его помощью можно создать триггер на чуть ли не любое событие. Лучший пример для меня - 80 wog base.erm скрипт.


RE: Ваши вопросы по ERM-скриптам - igrik - 21.09.2020 14:15

(21.09.2020 03:30)SergOz Wrote:  daemon_n, это радует, но где он? И опять же - чем открыть? что в нём? как пользоваться?
ERM Hooker - это плагин. Открывать его ничем не нужно. Он просто должен находиться в папке "EraPlugins" и всё.

Данный плагин позволяет ставить "крючки" в код игры. Как это выглядит:
Объясню на примере обычного текста, например из Колобка:

Code:
Жили-были старик со старухой.
Вот и говорит старик старухе:
— Поди-ка, старуха, по коробу поскреби, по сусеку помети, не наскребешь ли муки на колобок.
Взяла старуха крылышко, по коробу поскребла, по сусеку помела и наскребла муки горсти две.
Замесила муку на сметане (add igrik: тут я хочу, чтобы старуха добавила в тесто 200 грамм коньяка), состряпала колобок, изжарила в масле и на окошко студить положила.
Колобок полежал, полежал, взял да и покатился — с окна на лавку, с лавки на пол, по полу к двери, прыг через порог — да в сени, из сеней на крыльцо, с крыльца на двор, со двора за ворота, дальше и дальше...

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

В данной сказке адрес - это 5 строка 25 символ, и сюда я внедряюсь путем устанавки хука.

!?FU(My_Hook);
; Далее я пишу
", налила в тесто 200 грамм коньяка, еще раз замесила тесто, оставила на пол часа подышать"
hooker->вернуться_в_вызванное_место_Сказки.

На этом все. Теперь сказка будет выглядеть так:

Code:
Жили-были старик со старухой.
Вот и говорит старик старухе:
— Поди-ка, старуха, по коробу поскреби, по сусеку помети, не наскребешь ли муки на колобок.
Взяла старуха крылышко, по коробу поскребла, по сусеку помела и наскребла муки горсти две.
Замесила муку на сметане, налила в тесто 200 грамм коньяка, еще раз замесила тесто, оставила на пол часа подышать, состряпала колобок, изжарила в масле и на окошко студить положила.
Колобок полежал, полежал, взял да и покатился — с окна на лавку, с лавки на пол, по полу к двери, прыг через порог — да в сени, из сеней на крыльцо, с крыльца на двор, со двора за ворота, дальше и дальше...


Теперь стало понятнее что такое хукер и зачем он нужен?

Вот небольшая база хуков и ERM скриптов под них (для обучения)
Но вопросы лучше задавать тут, а не в той уже умершей теме.


RE: Ваши вопросы по ERM-скриптам - SergOz - 21.09.2020 15:03

igrik, большое спасибо за подробный ответ!
Я вчера, разбирясь с хуками, всё так и понял. Базу хуков тоже видел и некоторые меня очень порадовали и я их скопировал на свой комп. Но, я не понял как узнавать адрес хука, чтобы подставить в
и был почти уверен, что ERM_Hooker это что-то типа базы с адресами, потому и хотел его вскрыть (попрактиковаться в хакерстве).

P.S. А бабка точно добавляла спиртное в колобок - иначе бы он не был таким борзым



RE: Ваши вопросы по ERM-скриптам - Night - 21.09.2020 15:24

igrik, То есть hook, это словно влезть в очередь (в исполняемых командах игры) и при этом, чтобы очередь не возмущалась, а осталась при мнение, что так и должно быть? Отжали место, ну и ладно - верная аналогия?

То есть, если мне захотелось сделать:
1) Лазурным драконам убрать призыв водных элементов, а сделать каждый ход от него ледяное кольцо.
2) Перехватить в момент использования заклинания "Вызвать корабль" надписи "здесь нет места для лодки", пояснить игре, что всё написано, а взамен дать скастоваться заклинанию вертикаль из New Skills мода?

Для всего сказанного выше отлично подойдёт ERM Hooker, если разобраться в его работе и научиться применять?


RE: Ваши вопросы по ERM-скриптам - Berserker - 21.09.2020 15:51

Night, для всего этого нужно ещё базовое знание ассемблера и низкроуровневого отладчика вроде OllyDebugger или x32dbg. Если бы всё было элементарно, чужой скомпилированный код читался бы как текст на родном языке и ничего искать не нужно было. igrik и товарищи писали руководства по нахождению адресов в соседних темах.


RE: Ваши вопросы по ERM-скриптам - Night - 21.09.2020 16:00

Berserker, я понимаю.
Везде по сусекам скребу, смотрю полезное, со временем и к руководству доберусь, тем более уже несколько лет по настроению к этому делу присматриваюсь. Не легкая тема, изучение ассемблера и разобраться с отладчиком, но интересно блин.
А по вопросам выше, я для того спрашиваю, чтобы потом "в уме" держать саму суть, можно/нельзя и исходя из этого знать куда двигаться, что использовать. Если нельзя, то искать инструменты, которые позволяет, если можно - по настроению заниматься изучением, чтобы быстрее воплотить идею в жизнь Sm


RE: Ваши вопросы по ERM-скриптам - Berserker - 21.09.2020 16:04

2) Можно. 1) Настройка txt-файла с опытом существ и немного ЕРМ кода, нет?


RE: Ваши вопросы по ERM-скриптам - Night - 21.09.2020 16:24

Berserker,
Quote:1) Настройка txt-файла с опытом существ и немного ЕРМ кода, нет?

С ЕРМ понятно, но сначала нужно же отключить создание водных элементов. А это адрес в памяти узнать.
А txt-файл - это crexpbon.txt из hmm35wog.pac?


RE: Ваши вопросы по ERM-скриптам - SergOz - 21.09.2020 16:27

(21.09.2020 15:51)Berserker Wrote:  igrik и товарищи писали руководства по нахождению адресов в соседних темах.
нашел здесь. Спасибо.


RE: Ваши вопросы по ERM-скриптам - Berserker - 21.09.2020 18:34

Night, да.


RE: Плагины. Обсуждение - Bes - 21.09.2020 19:34

может выделить для хукера отдельно тему? я как раз вчера в полночь с постами по нему встречался в теме ERA2 и ещё прикидывал, надо или нет для него тема... и тут вы днём с ним же и разъяснили для масс что это за зверь (доходчиво для новичков) и как его кормить Rolleyes


RE: Плагины. Обсуждение - Berserker - 21.09.2020 19:37

Bes, не вижу смысла. Это просто пара функций для ЕРМ по установке перехватчиков кода. Вся теория в ассемблере и обратном проектировании.


RE: Вопросы по моддингу - Raistlin - 23.09.2020 18:46

Друзья, возник еще вопрос: мой мод содержит измененный файл crexpbon.txt, однако во время игры у некоторых существ появляются дорожки опыта, которые я туда не в носил (название у них отсутствует, стоит просто "null", однако эффект есть). Подскажите пожалуйста, с чем это может быть связано?


RE: Вопросы по моддингу - daemon_n - 23.09.2020 20:53

Raistlin, мод вог и его русификатор


RE: Вопросы по моддингу - Raistlin - 23.09.2020 21:10

daemon_n, мой мод их перекрывает


RE: Вопросы по моддингу - Bes - 23.09.2020 21:43

а не wog native dialog плагин ли за это теперь отвечает?
я к тому, что если его отключить, пропадут ли такие "нулевые" абилки?


RE: Вопросы по моддингу - Raistlin - 23.09.2020 23:06

Bes, похоже ты прав, без плагина их нет. Но почему-то с плагином их теперь тоже нет. Хотя, в старых партиях они есть... И в тоже время в некоторых партиях их нет! 148


RE: Вопросы по моддингу - Bes - 23.09.2020 23:47

короче, пока не будет пруфов на чистой era, твои эксперименты на твоей личной версии игры не засчитываются 148


RE: Вопросы по моддингу - igrik - 24.09.2020 01:06

(23.09.2020 23:06)Raistlin Wrote:  Bes, похоже ты прав, без плагина их нет. Но почему-то с плагином их теперь тоже нет. Хотя, в старых партиях они есть... И в тоже время в некоторых партиях их нет! 148
Дай сейв. Я хотя бы проверю этот момент в wnd.


RE: Вопросы по моддингу - Raistlin - 24.09.2020 21:35

igrik, спасибо за участие, вот: https://drive.google.com/file/d/1jlUlTjb3RGX5ncyIXIqOp8-3xrYy0ONg/view?usp=sharing

Пример ситуации - воздушный щит у тяжёлых арбалетчиков


RE: Вопросы по моддингу - Raistlin - 24.09.2020 21:51

Могу, кстати, ещё список подключённых библиотек скинуть


RE: Плагины. Обсуждение - Archer30 - 15.10.2020 07:46

igrik, there is a report from a player said that Battle Replay didn't work in his game. He tried reinstalling the game in different PCs, turning off anti-virus but problem persisted. I have no clue at all after checking his screen recording.

https://i.imgur.com/R6b2JT0.mp4

Can you suggest what might be the reason? Rolleyes


RE: Плагины. Обсуждение - igrik - 15.10.2020 11:39

I didn't understand either.


RE: Плагины. Обсуждение - Berserker - 15.10.2020 14:03

Он нажимал на кнопку отмены результатов автобоя. А что должно было отобразиться?


RE: Плагины. Обсуждение - igrik - 15.10.2020 14:20

Ты не знаешь как работает переигрываемая битва? 96-copy
Тот же бой должен был начаться заново.

PS: тем более, если ты пишешь скрипт "Смешанные нейтралы", ты "обязан" учитывать этот плагин Moral


RE: Плагины. Обсуждение - Berserker - 15.10.2020 15:03

igrik, нет, я вопрос автобоя решал наличием быстрых сохранений и автовосстановлением 10% потерь + гибкой настройкой максимальной силы монстров для автобоя.
Значит видео о том, что нажатие на кнопку «Отмена» множество раз не помогло переиграть бой после поражения/побега героя. Нет?


RE: Плагины. Обсуждение - Night - 15.10.2020 16:07

Ну, я проверил у себя, по тем же действиям, что в видео и всё рабочее.
Первый раз такое вижу, а я ведь уже немало повидал ошибок и багов игры.

Archer30, The video shows the mods included, almost everything is basic, but since BattleReplay is a dll plugin, it would be necessary to see the plugins included and it is desirable to compare the latest version FROM HERE, you never know.

Not an expert, but for me so I would be looking for possibly several included versions of the same plugin under different names.

P.S. А GEM скрипты могут влиять?


RE: Плагины. Обсуждение - Archer30 - 15.10.2020 17:41

Night, the player uses the latest assembly and Chinese localization mod only. I tested his savegame and everything worked just fine.

My best guess is that maybe battlereplay requires some library to work?


RE: Плагины. Обсуждение - daemon_n - 15.10.2020 18:33

Archer30, ask him restart PC and check again!


RE: Вопросы по моддингу - igrik - 17.10.2020 15:08

(24.09.2020 21:35)Raistlin Wrote:  igrik, спасибо за участие, вот: https://drive.google.com/file/d/1jlUlTjb3RGX5ncyIXIqOp8-3xrYy0ONg/view?usp=sharing

Пример ситуации - воздушный щит у тяжёлых арбалетчиков
Только увидел сообщение. ПРоверю.
(24.09.2020 21:51)Raistlin Wrote:  Могу, кстати, ещё список подключённых библиотек скинуть
Конечно нужен. У меня вылет при загрузке. Дай список модов или всю игру и укажи что и как тыкать. Желательно по-подробней.


RE: Вопросы по моддингу - Raistlin - 21.10.2020 00:58

igrik, прошу прощения, что не ответил вовремя, вся информация куда-то подевалась... ЕМНИП, у меня был стандартный набор модов без чего-либо дополнительного:

WoG Special
WoG Rus
WoG Scripts
WoG Scripts Rus
WoG UE v2.0.4 (последняя версия - 2.0.5 - на этот баг никак повлияет, изменения там в основном по части скриптов, так что тестировать можно и с ней)


RE: Мод "WoG Scripts" - Valery - 29.10.2020 18:18

Hi Igrik, the other day, when watching Glenn's streaming, you told us you will try to find a fix for the clone bug. Is there a thread where we can follow your progress, as I am very interested in such plugin, I receive a lot of complaints about game crashing when clones overlap. Thanks for noticing us when something is done, if ever.


RE: Мод "WoG Scripts" - igrik - 29.10.2020 18:59

Valery, это уже сделано! На днях я исправил баг клонов.
А сегодня я исправил баг блока (от опыта армий) - на стриме ты его видел.

Вся история есть тут: source game bug fixes
Лечение бага клонов
Лечения бага блока

Скачать плагин всегда можно тут: Тема решения багов ERA


RE: Мод "WoG Scripts" - Valery - 29.10.2020 20:00

Thanks !

But what file do I have to download for those fixes? Will it work on any Era version too?


RE: Мод "WoG Scripts" - Berserker - 30.10.2020 00:09

https://github.com/igrikRS/HoMM3-Plugins/tree/master/game%20bug%20fixes/Release
As far as I see, I can be used on Era 2.X and 3.X, but most players tested it on 2.9.X and 3.X, so try to run the game with it. It contain many bug fixes.


RE: Мод "WoG Scripts" - Valery - 30.10.2020 00:17

Hum, the link shows 4 dll files, all, or one in particular?


RE: Мод "WoG Scripts" - igrik - 30.10.2020 01:52




RE: Мод "WoG Scripts" - Valery - 30.10.2020 03:26

Thanks, I am also using Rose kavalier ""game bug fixes" dll, I suppose this replace right?


RE: Мод "WoG Scripts" - Berserker - 30.10.2020 03:38

Valery, this dll includes patches by Rose, Ben, igrik and others.


RE: Плагины. Обсуждение - Archer30 - 30.10.2020 08:11

igrik and Berserker, not sure whether this has to be done via ERA or BattleReplay plugin, but is it possible to have the same obstacles on the battlefield with each battle replay (with the "Mersenne Whirlwind" update)?
It makes sense to have a replayed battle with the same obstacles settings so you can try again and see if your new tactics work.

daemon_n, I asked but until now I received no response from that player Rolleyes


RE: Плагины. Обсуждение - igrik - 30.10.2020 14:24

Archer30, это новая ERA портит расположение препятствий.

Berserker, это не хорошо! Ты точно тестировал, чтобы Вихрь Мерсенна не трогал расстановку препятствий?


RE: Плагины. Обсуждение - Berserker - 30.10.2020 17:31

Archer30, we will try to solve this issue with igrik.


RE: Плагины. Обсуждение - RoseKavalier - 30.10.2020 18:26

RNG must be called once [advance 1 step] after the seed is set and before generating obstacles to mimic code behaviour. That's because after the seed is set based on x/y/z the first RNG call is for the combat music id, and second+ are obstacles.


RE: Плагины. Обсуждение - Valery - 31.10.2020 18:08

igrik, concerning clones problem, doesn't work or at least it didn't fix the main problem: two hexes automatic clones (!!EA) still place over units if in the next or 2 squares away, making them invisible for that round, then next round possible crash ...


RE: Плагины. Обсуждение - igrik - 31.10.2020 18:24

Valery, не может такого быть. Есть сейв для проверки?


RE: Плагины. Обсуждение - Valery - 31.10.2020 22:16

Save: https://drive.google.com/file/d/12K-LBOUd1JgI-D6EPvEDdJ-FIMiRtel1/view?usp=sharing
Map: Alexander

I replaced the dll plugin before starting this game. In wog plugin it shows active. Second round, one golem stack gets hidden under a clone, then it is invisible.



RE: Плагины. Обсуждение - igrik - 01.11.2020 13:22

Valery, какая у вас версия игры?


RE: Плагины. Обсуждение - Valery - 01.11.2020 17:12

2.46F


RE: Плагины. Обсуждение - igrik - 01.11.2020 23:27

Valery, я нашёл баг. Причина мне ясна. Как решу проблему - напишу. Ожидайте.


RE: Плагины. Обсуждение - igrik - 02.11.2020 14:30

Valery, баг я вылечил. Проверяйте. Ссылка у меня в подписи.
Обязательно сообщите о результате!

Image: Spell-Menu.jpg


RE: Плагины. Обсуждение - Archer30 - 02.11.2020 15:14

igrik, I have waited for this fix for so long. 132


RE: Плагины. Обсуждение - helgtla - 02.11.2020 16:05

igrik, Мод с добавлением панели "горячих" клавиш для заклинаний ещё не анонсирован ? Если так, когда ориентировочно стоит его ждать?
   И ещё, в сборках от Daemon_n одновременно присутствуют библиотеки game bug fixes.dll (46,5 Кб) и game bug fixes extended.dll (47 Кб). Они чем то принципиально отличаются? Или game bug fixes extended.dll уже содержит все исправления, выпущенные на сегодняшний момент ? (game bug fixes extended.dll обновил сегодня из Вашей подписи).


RE: Плагины. Обсуждение - igrik - 02.11.2020 16:38

game bug fixes extended.dll уже давным давно поглотила и содержит весь функционал game bug fixes.dll. Использовать обе попросту нет смысла.

На панель горячих клавиш у меня не хватает времени - слишком огромный сейчас загруз по работе.
На самом деле панель написана на все 98%. Весь игровой функционал работает на 100%

Из того что я ещё НЕ сделал:
1. Нет тени под меню-заклинаний (что и как сделать я знаю, но не хватает времени правильно допилить это)
2. Закрытие списка заклинаний по ЛКМ за пределами окна (тут я пока что не знаю как сделать. Нужно исследовать). Альтернатива клавиша ESC, но мне эта альтернатива не по душе.

Поэтому я совершенно не знаю, когда у меня будет время на эти 2 пункта. А без них мод выпускать я не буду.


RE: Плагины. Обсуждение - Valery - 02.11.2020 16:46

igrik, I tested the full battle with the update and it works perfect, clones go in empty spaces only, and when there is not, they aren't generated. So thanks a lot, hope everyone gets this plugin which will greatly reduce WoG crashes.

I will start new game tomorrow and test it in all situations, then report if we are done. Thanks


RE: Плагины. Обсуждение - igrik - 02.11.2020 16:51

Valery, здорово. Это хорошая новость.


RE: Плагины. Обсуждение - Valery - 02.11.2020 17:04

ok, so there is one minor issue, the clones now can be generated behind the unit (they never did that before), which kinda screws a lot of strategies implying blocking the front of unit, so no clones will appear, especially when clones are archangels and will resurrect every turn

Is it possible to limit clone area to the front 180° angle? That would be awesome to keep existing mechanics

Image: P4vwbd.png


RE: Плагины. Обсуждение - igrik - 02.11.2020 17:09

Я как раз это не считаю проблемой - я наоборот этого и добивался, чтобы клоны создавались и спереди главного монстра, и сбоков, и сзади. Оригинальный вызов клона (SoD) действует в достаточно схожей механике, но в моей схеме запрещён вызов на удалённый гекс (потому что чаще всего клоны создаются массово, например на 7 стеков стороны одновременно в начале n-нного раунда битвы. А это уже 14 стеков (без учёта боевых машин))
Монстр не может вызваться на гекс, если:
- гекс выходит за границы боевого поля
- если на гексе стоит препятствие
- если на гексе стоит другой стек
- если стеков у стороны уже 20

Механика учитывает одногексовых и двухгексовых монстров как для главного стека, так и для вызываемого.

Я сделал по 8 попыток вызвать клон рядом с главным монстром.

Распишу как это работает для атакующего монстра (для защищающегося - механика зеркальна).


Главный одногексовый:
Вызываем одногексовый:
1. Гекс 1
2. Гекс 0
3. Гекс 2
4. Гекс 5
5. Гекс 3
6. Гекс 4
7. (дублируется с п.4)
8. (дублируется с п.5)





Главный одногексовый:
Вызываем двухгексовый:
1. Гекс 1-1*
2. Гекс 0-0*
3. Гекс 2-2*
4. Гекс 5-0
5. Гекс 3-2
6. Гекс 5-5*
7. Гекс 3-3*
8. Гекс 4-4*
Главный двухгексовый:
Вызываем одногексовый:
1. Гекс(6*) -> 1
2. Гекс(6*) -> 0
3. Гекс(6*) -> 2
4. Гекс(6) -> 5**
5. Гекс(6) -> 2**
6. Гекс(6) -> 5
7. Гекс(6) -> 3
8. Гекс(6) -> 4





Главный двхгексовый:
Вызываем двухгексовый:
1. Гекс(6*) -> 1-1*
2. Гекс(6*) -> 0-0*
3. Гекс(6*) -> 2-2*
4. Гекс(6) -> 5-0**
5. Гекс(6) -> 3-2**
6. Гекс(6) -> 5*-5
7. Гекс(6) -> 3*-3
8. Гекс(6) -> 4*-4
Image: image.png


По хорошему для двухгексового вызваемого двухгексовым нужно 10 попыток (тут не хватает 0**-0 и 2**-2), но это очень сильно ломало мой код. И я не стал этого делать...


RE: Плагины. Обсуждение - Valery - 02.11.2020 17:21

ok, no problem, I will have to rethink a few battles, that's the price for progress 132
Thanks for your time, this fix was much needed

Bersy, would be great to include the updated plugin in old Era packages, when have time.


RE: Плагины. Обсуждение - Berserker - 02.11.2020 18:30

Valery, ok, if you have other plugin to include, tell me please. I started to gather proposed fixes for 2.9.15 and can update plugins in 2.46F. Arg, never name any version "F". There cannot exist anything final 96-copy


RE: Плагины. Обсуждение - Bes - 02.11.2020 21:33

Berserker, как по мне, из этой ситуации с префиксом F можно красиво выйти так
2.46 -> 2.46F -> 2.46Fi -> ... 2 years later -> 2.46Final Spiteful


RE: Плагины. Обсуждение - Berserker - 02.11.2020 22:19

Потом 2.46 Final.003, как у Панды? Ab


RE: Плагины. Обсуждение - Bes - 03.11.2020 00:40

ты преувеличиваешь будущий возможный прогресс ERA2.46F 103


RE: Плагины - Berserker - 05.11.2020 17:18

(05.11.2020 16:54)igrik Wrote:  
Панель заклинаний в бою (Click to View)

igrik, супер! 132


RE: Плагины. Обсуждение - igrik - 05.11.2020 17:28

Berserker, спасибо.
Но все обсуждения только тут! Тема плагинов должна быть чистой.


RE: Плагины. Обсуждение - SergOz - 05.11.2020 17:40

igrik, спасибо! Очень нужный и полезный плагин. 132


RE: Плагины. Обсуждение - Panda - 05.11.2020 17:41

igrik, спасибо, просто отлично! Теперь вопрос по поводу работы этого плагина: сейчас при выходе из игры, все заклинания, которые я добавил на панель, исчезают. Есть ли способ сделать так, чтобы они сохранялись хотя бы в сохранениях игры?


RE: Плагины. Обсуждение - Archer30 - 05.11.2020 17:43

igrik, thank you for making the Spell Panel, this is great!

Just a small issue I immediatly notice - the spell Quicksand is not possible to be bound to any key. Can you check that, please?


RE: Плагины. Обсуждение - igrik - 05.11.2020 17:50

Archer30, спасибо. Исправлено.

(05.11.2020 17:41)Panda Wrote:  igrik, спасибо, просто отлично! Теперь вопрос по поводу работы этого плагина: сейчас при выходе из игры, все заклинания, которые я добавил на панель, исчезают. Есть ли способ сделать так, чтобы они сохранялись хотя бы в сохранениях игры?
Panda, я же сразу дал ответ в описании плагина:
Code:
...
- при каждом перезапуске игры: панель нужно настраивать заново
- при каждом перезапуске карты или при старте новой карты: отображается уже привязанная панель

** не спрашивайте почему я принял то или иное решение: данные тезисы - уже обдуманный и окончательный выбор. Меняться они не будут.
Я не хочу лезть в формат сейвов. Поэтому сохранение панели в сохранения игры не будет.


RE: Плагины. Обсуждение - Panda - 05.11.2020 18:02

igrik, упс, точно, "просмотрел", спасибо! Очень нужная вещь 132


RE: Плагины. Обсуждение - XEPOMAHT - 05.11.2020 18:09

(05.11.2020 17:50)igrik Wrote:  Я не хочу лезть в формат сейвов. Поэтому сохранение панели в сохранения игры не будет.

Вроде такое в сами сохранения записывать и не нужно, т.к. индивидуально для каждого игрока. Обычно настройки пишут в ini в папке с модом (в том же MoP горячие клавиши заклинаний сейвятся в *.mop).


RE: Плагины. Обсуждение - Berserker - 05.11.2020 18:33

igrik, написал в ВК, как сохранять в сейвах. А глобальные настройки из json лучше брать.


RE: Плагины. Обсуждение - Bes - 05.11.2020 19:34

да не давите на него, сказано же "Меняться они не будут". Плагин довершён в таком виде в силу определённых причин.
Если когда-то у igrik'а выдастся время и рвение вернуться к нему, то мы это обязательно узнаем Yes

igrik, 132 круто, сбылась давняя нужда в таком ф-ционале 120


RE: Плагины. Обсуждение - igrik - 06.11.2020 13:16

Berserker, меня переубедил. Настройки панели теперь сохраняются и читаются из сейвов.
Но глобальных настроек и загрузки из json - нет, и не будет.


RE: Плагины. Обсуждение - Panda - 06.11.2020 13:56

igrik, спасибо огромное! 120 Теперь этот плагин обретет в ценности +1000%! 132


RE: Плагины. Обсуждение - MOP - 06.11.2020 20:40

Давно сделал привязку заклинаний к горячим клавишам, но так никогда ими и не пользовался в реальной игре.
Видимо, не так уж это трудно и медленно - открыть книгу и выбрать нужное заклинание. А вот запомнить, на какую клавишу какой спелл повесил, и не ошибиться, наколдовав что-то левое - тут нужны навыки игрока в ММОРПГ или просто маньяка-онлайнщика.


RE: Плагины. Обсуждение - SergOz - 06.11.2020 21:54

(06.11.2020 20:40)MOP Wrote:  Давно сделал привязку заклинаний к горячим клавишам, но так никогда ими и не пользовался в реальной игре.
Видимо, не так уж это трудно и медленно - открыть книгу и выбрать нужное заклинание. А вот запомнить, на какую клавишу какой спелл повесил, и не ошибиться, наколдовав что-то левое - тут нужны навыки игрока в ММОРПГ или просто маньяка-онлайнщика.
Плагин выводит в левой части поля боя вертикальную панель с визуальной связанностью клавиш с заклами. Очень удобно и наглядно. Запоминать не нужно.


RE: Плагины. Обсуждение - igrik - 06.11.2020 22:26

(06.11.2020 20:40)MOP Wrote:  А вот запомнить, на какую клавишу какой спелл повесил, и не ошибиться, наколдовав что-то левое - тут нужны навыки игрока в ММОРПГ или просто маньяка-онлайнщика.
Я тоже сколько играл в MoP, ни разу не пользовался. Но, мне кажется, дело не в том: трудно-не-трудно, а в том, что её не видно и просто забывается сама возможность использования.


RE: Плагины. Обсуждение - SergOz - 07.11.2020 15:50

igrik, а с какой версии Эры начинает работать плагин Панель заклинаний в бою?
Есть ли ограничение по совместимости с чем-либо?


RE: Плагины. Обсуждение - Berserker - 07.11.2020 15:51

SergOz, с 2.46.


RE: Плагины. Обсуждение - helgtla - 10.11.2020 02:32

igrik, есть проблема с фиксом клонов/существ призываемых с абилок.
Пример:
Image: image.jpg
На скрине существо(одногексовое) способное призывать клона в каждом раунде, находясь на указанной позиции -призывает клона "за себя" и через клетку. Хотя должно спавнить клона ПЕРЕД собой (клетка свободна). Если поставить в "чистое поле", призыв идёт перед существом (в позицию "1").
   Просто тактика спрятаться за телегу/палатку(закрывшись силовым полем)- весьма распространена и часто используется. В данном случае- это невозможно провернуть (да и сам способ спавна ЧЕРЕЗ клетку очень странно выглядит).
   Про конкретно этот бой , в принципе это не столь критично, можно и пройти(если повезёт), и выживет командер в первом раунде(а это не малый шанс), но на иных картах- это может "запороть сценарий на корню", если исход подобной битвы будет определяющим для дальнейшего прохождения.


RE: Плагины. Обсуждение - igrik - 10.11.2020 11:01

helgtla, спасибо. Исправил. Плагин обновил на гите.
Причина: досадная опечатка при проверке на двухгексовость стека.


RE: Плагины. Обсуждение - Raistlin - 10.11.2020 21:30

Друзья, можете пожалуйста подсказать, почему не подгружается dll? Пока она лежит в плагинах, игра не запускается (на Windows 10, кстати, этой проблемы нет)
Папка Debug


RE: Плагины. Обсуждение - Berserker - 11.11.2020 00:12

Raistlin, скорее всего dll импортирует библиотеки visual c++ redistributable, которые в системе не установлены.


RE: Плагины. Обсуждение - XEPOMAHT - 11.11.2020 00:21

(10.11.2020 21:30)Raistlin Wrote:  Друзья, можете пожалуйста подсказать, почему не подгружается dll?

Компилировать MG_Bastion.dll с поддержкой старых ОС (в настройках проекта Windows XP Support). Ну и НЕ импортировать .NET и visual c++ redistributable, если в проекте это никак не используется.


RE: Плагины. Обсуждение - Raistlin - 11.11.2020 01:52

Berserker, XEPOMAHT, большое Вам спасибо, я постараюсь что-нибудь придумать. Для начала, попробую временно перейти на другую IDE, надеюсь, это поможет.


RE: Плагины. Обсуждение - Berserker - 11.11.2020 03:13

Raistlin, не нужно менять ИДЕ:

There are a few ways to accomplish this. One way is in Project Settings. In "Project" > "Configuration Properties" > "C/C++ Code Generation" > "Runtime Library", choose "Multithreaded (/MT)" as opposed to "Mutithreaded (Static)".


RE: Плагины. Обсуждение - Raistlin - 11.11.2020 11:33

Berserker, я, честно говоря, вообще не знал, как это работает, так что спасибо Вам за совет! Сейчас я уже не дома, но когда вернусь, обязательно попробую это поменять.


RE: Плагины. Обсуждение - Raistlin - 11.11.2020 22:39

Ну что ж, у меня все получилось. Berserker, большое Вам спасибо!


RE: Плагины. Обсуждение - Berserker - 12.11.2020 06:46

Raistlin, пожалуйста )


RE: Карта-мод STALKER для HoMM 3 ERA - Berserker - 13.11.2020 05:15

igrik Wrote:Плюс в плагин BattleReplay встроен свой "BATTLESAVE!", и этот сейв записывается раньше скриптового баттлсейва (и должен работать корректнее скриптового). Но и этот баттлсейв всё равно работает между триггерами !?OB и !?BA.
igrik, само сохранение ты не загружаешь? Просто создаёшь на всякий случай?


RE: Карта-мод STALKER для HoMM 3 ERA - Berserker - 13.11.2020 07:10

А думаю, ну что за дурацкое сохранение BATTLE! появляется без спроса и выделяет в списке сохранений себя, так что при загрузке приходится искать реально последний сейв.
Почему сохранение перед боем не сделать скриптом-модом?


RE: Карта-мод STALKER для HoMM 3 ERA - igrik - 13.11.2020 12:09

Berserker, хорошо, я вырезал автосохранение перед битвой из BattleReplay и сделал отдельный плагин BattleSave.

(13.11.2020 05:15)Berserker Wrote:  igrik, само сохранение ты не загружаешь? Просто создаёшь на всякий случай?
Эмм... А зачем мне его загружать?
С тобой нет смысла обсуждать этот вопрос Ab - ты не играешь в героев. Таких "на всякий случай" возникает сотню раз за партию.

(13.11.2020 07:10)Berserker Wrote:  А думаю, ну что за дурацкое сохранение BATTLE! появляется без спроса и выделяет в списке сохранений себя, так что при загрузке приходится искать реально последний сейв.
Почему сохранение перед боем не сделать скриптом-модом?
Вот именно поэтому скрипт мод и плох! Как ты скрипт создания сохранения вытащишь из самого сохранения?
Отключил плагин - и на уже играющейся карте нет сохранений. Включил плагин - есть сохранения.
Именно этим, такие технические плагины в 100 крат лучше всяких скрипт-модов на аналогичное действие!


RE: Карта-мод STALKER для HoMM 3 ERA - daemon_n - 13.11.2020 14:06

(13.11.2020 12:09)igrik Wrote:  ]Вот именно поэтому скрипт мод и плох! Как ты скрипт создания сохранения вытащишь из самого сохранения?
Отключил плагин - и на уже играющейся карте нет сохранений. Включил плагин - есть сохранения.
Именно этим, такие технические плагины в 100 крат лучше всяких скрипт-модов на аналогичное действие!

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


RE: Карта-мод STALKER для HoMM 3 ERA - igrik - 13.11.2020 14:26

(13.11.2020 14:06)daemon_n Wrote:  В сборке я сделал сейв перед боем отключаемым через отдельное меню в кастомном диалоге, что не требует ни игру перезапускать, ни что-либо где-либо искать для активации/деактивации.
Кастомный диалог - это какой - DL?


RE: Плагины. Обсуждение - daemon_n - 13.11.2020 14:33

igrik, да, DL -вызывается кликом на Индикатор - слева от миникарты.

UPD: что примечательно, можно совместить с плагином через скрипт


RE: Плагины. Обсуждение - igrik - 13.11.2020 15:06

(13.11.2020 14:33)daemon_n Wrote:  igrik, да, DL -вызывается кликом на Индикатор - слева от миникарты.
Вот тебе и вылет, при отключеном моде в полноценном виде 118

(13.11.2020 14:33)daemon_n Wrote:  UPD: что примечательно, можно совместить с плагином через скрипт
Нет уж,спасибо) Плагин можно вкл/откл без всяких танцев с бубном и без риска для крашей


RE: Плагины. Обсуждение - daemon_n - 13.11.2020 15:12

(13.11.2020 15:06)igrik Wrote:  
(13.11.2020 14:33)daemon_n Wrote:  igrik, да, DL -вызывается кликом на Индикатор - слева от миникарты.
Вот тебе и вылет, при отключеном моде в полноценном виде 118

Не-а, вылет не из-за этого)Tease
Без данного мода этих кнопок нет, потому и краша нет.

Вот код, который включает/отключает кнопки. (Click to View)

(13.11.2020 15:06)igrik Wrote:  Нет уж,спасибо) Плагин можно вкл/откл без всяких танцев с бубном и без риска для крашей

Многим непросто найти место переключение плагинов. в идеале, конечно, прямо в опции игры добавить такую настройку.
Ну а насчёт DL - проблему я уже решилSpiteful


RE: Плагины. Обсуждение - Berserker - 13.11.2020 17:35

igrik, уже опять подбираюсь, что поиграть. Но я в Фениксе жал F5 для быстрого сохранения перед боем. Если сохранять автоматически, то нужно без выделения файла в списке сохранений. И я вспомнил, когда чаще всего сохранялся. После битвы. Нет ничего хуже вылета через секунд 5-10 после долгого боя.


RE: Плагины. Обсуждение - daemon_n - 13.11.2020 17:58

Автосейв и после боя можно прикрутить. И даже через 4 секунды после негоAb


RE: Плагины. Обсуждение - igrik - 13.11.2020 18:08

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

Ручное сохранение тоже есть, я себе сделал по W и F9 (F5 занято в HD)


RE: Плагины. Обсуждение - Panda - 13.11.2020 20:20

igrik, с новым плагином на переигровку битвы - BattleReplay.dll при передаче хода появляются след. окна:
Image: 01.jpg Image: 02.jpg
Если положить более старую версию BattleReplay.dll - то этих окон уже нет.


RE: Плагины. Обсуждение - daemon_n - 13.11.2020 21:11

Panda, попробуй отключить fix ai vs ai


RE: Плагины. Обсуждение - Panda - 13.11.2020 22:30

daemon_n, да, действительно, при отключении плагина fix ai vs ai, с новым BattleReplay окон уже не появляется. Но старый плагин BattleReplay работал с fix ai vs ai и никаких окон при этом не появлялось... Unsure


RE: Плагины. Обсуждение - igrik - 13.11.2020 23:24

Я не успел этот момент адаптировать ещё. Всё будет, но чуток позже.
Поэтому я и написал про BattleReplay только в теме Helga.


RE: Ваши вопросы по ERM-скриптам - SergOz - 19.11.2020 02:56

Подскажите, пожалуйста, можно ли в журнале героя убрать пунктирные линии, разделяющие задания?
ПАПИРУС
---------------------------
Заработать денег
---------------------------
Купить еды и пива
---------------------------
Вечером расслабиться
---------------------------
И, если можно, то как это сделать?
P.S. Или, может, можно редактировать длину и цвет этих линий...


RE: Ваши вопросы по ERM-скриптам - Bes - 19.11.2020 16:04

SergOz, там же новый диалог был сделан, это WND
жди ответа igrik


RE: Плагины. Обсуждение - Archer30 - 24.11.2020 17:35

Hi! Is there a complete list of the features of game bug fix extended?


RE: Плагины. Обсуждение - igrik - 25.11.2020 11:13

(24.11.2020 17:35)Archer30 Wrote:  Hi! Is there a complete list of the features of game bug fix extended?
Link


RE: Плагины. Обсуждение - Archer30 - 25.11.2020 11:53

Thank you so much igrik! That's a long list of features 132


RE: Плагины. Обсуждение - daemon_n - 25.11.2020 14:44

Quote:[+] добавление динамического Fight_Value командира
igrik, также работает и на ИИ? То есть они понимают, что у них какой-то убер в армии, и могу в соло пойти на грозных врагов?


RE: Плагины. Обсуждение - XEPOMAHT - 25.11.2020 14:58

(25.11.2020 14:44)daemon_n Wrote:  То есть они понимают, что у них какой-то убер в армии, и могу в соло пойти на грозных врагов?

Командиры не являются частью армии. Поэтому ИИ их никогда не будет оценивать без соответствующих хуков.


RE: Плагины. Обсуждение - daemon_n - 25.11.2020 16:29

Представляю такой баг)

При посещении жертвенного алтаря кнопка "выложить все артефакты" ( не из рюкзака, а вообще все) неактивна, если в инвентаре героя нет артефактов. Не становится активной, пока заново не посетишь объект с артефактом в рюкзаке.

Баг №2
Пропали ограничение мировоозрений для жертв - сейчас все герои могут жертвовать что угодноFie


RE: Плагины. Обсуждение - Archer30 - 25.11.2020 16:41

igrik, there is an incompatibility report of game bug fixes extended and Zulu Town mod by XEricSin.
It was reported by XEricSin (the author himself) - According to him, there is a very high chance that entering battle with Hero #139 results in an instant crash of the game.
Debug
In order to reproduce this bug, entering battle with Hero #139 from Zulu town and you will see the game crash. BUT!!! I can't reproduce this bug with the same condition the author provided.

Could you try to investigate and suggest what might be wrong with game bug fixes in some particular PC? Rolleyes

Edit: According to XEricSin, it seems any hero specializes in creature # >197 results in a crash entering battle with game bug fixes extended loaded.


RE: Плагины. Обсуждение - igrik - 25.11.2020 17:36

(25.11.2020 16:41)Archer30 Wrote:  Edit: According to XEricSin, it seems any hero specializes in creature # >197 results in a crash entering battle with game bug fixes extended loaded.
Archer30, это было исправлено несколько дней назад.
Пусть скачает новую версию game bug fixes extended.


RE: Плагины. Обсуждение - Archer30 - 25.11.2020 18:03

Fixed! Thank you so much igrik! 96-copy


RE: Плагины. Обсуждение - daemon_n - 26.11.2020 08:54

Объясните, пожалуйста, так как я отстал от движухи.
game bug fixes.dll включен в game bug fixes extended.dll? Или для сборки необходимо иметь оба плагина?


RE: Плагины. Обсуждение - Berserker - 26.11.2020 09:13

daemon_n, включён и устарел. Сборки, в которых он присутствуют, объявлены нелегальными.Yes


RE: Плагины. Обсуждение - daemon_n - 26.11.2020 09:17

Понял, спасибо! Надеюсь, он будет включен и в ЭРУ,
которую я не могу скачать с включенным антивирусом



RE: Плагины. Обсуждение - Berserker - 26.11.2020 09:48

daemon_n, я пытался загрузить файл на сайте microsoft, но тщетно. Делайте report false positive, там нужна учётная запись microsoft или логин скайпа.


RE: Плагины. Обсуждение - daemon_n - 26.11.2020 09:49

Berserker, не нужна лицензия винды?


RE: Плагины. Обсуждение - Berserker - 26.11.2020 16:10

daemon_n, нет.


RE: Плагины. Обсуждение - daemon_n - 26.11.2020 21:45

Напоминаю о баге ГСК, который запрещает для изучения "Артиллерию, Волшебство, Грамотность, Защиту, Интеллект, Магию Воды, Магию Земли, Навигацию, Нападение, Некромантию, Обучаемость, Первую Помощь, Сопротивлние, Тактику"


RE: Плагины. Обсуждение - Berserker - 27.11.2020 00:16

Это идея для исправления? Первый раз про такой слышу.


RE: Плагины. Обсуждение - daemon_n - 27.11.2020 00:32

Идея для исправления - отключить запрет на изучение навыков при генерации карты. Большего сказать не могу, но это баг оригинального сода, котрый был исправлен только в хоте.


RE: Плагины. Обсуждение - igrik - 27.11.2020 12:17

(26.11.2020 21:45)daemon_n Wrote:  Напоминаю о баге ГСК, который запрещает для изучения "Артиллерию, Волшебство, Грамотность, Защиту, Интеллект, Магию Воды, Магию Земли, Навигацию, Нападение, Некромантию, Обучаемость, Первую Помощь, Сопротивлние, Тактику"
А точнее можно? В каких объектах, или в каких случаях?


RE: Плагины. Обсуждение - daemon_n - 27.11.2020 12:24

igrik, ой. Хижина ведьмы. Всегда! Если открыть любую рандомку в редаткторе карт, то можно увидеть, что всегда напротив именно данных навыков не стоит галочка


RE: Плагины. Обсуждение - daemon_n - 29.11.2020 17:59

Game bug fixes extended.dll

В общем, баг при посещении или нападении на замок - краш 100%

И - плагин BattleReplay - при повывшении уровня герой может пропустить выбираемый навык.
+ не отображается лог боя, когда на тебя нападает ИИ


RE: Плагины. Обсуждение - Panda - 29.11.2020 18:37

Краш игры при передаче хода - он редкий, случается при передаче хода, повторная загрузка автосейва решает проблему. Так же скидывали еще пару дебагов, которые очень похожи на этот, тоже краш при передаче хода. Берс сказал, что вылет в начале боя, пробовать без всех плагинов igrik-а. Возможный виновник BattleSave или кто-то другой из плагинов.
Дебаг + сохранение:
https://yadi.sk/d/bHVAcx2dh7GZBw


RE: Плагины. Обсуждение - XEPOMAHT - 30.11.2020 00:37

(29.11.2020 18:37)Panda Wrote:  Краш игры при передаче хода - он редкий, случается при передаче хода, повторная загрузка автосейва решает проблему.

Утечка памяти. По адресу - попадание в молоко между загруженными dll. Такое смотреть только в отладчике (правда поймать будет сложно).


RE: Плагины. Обсуждение - daemon_n - 30.11.2020 13:48

(21.09.2011 22:09)igrik Wrote:  [+] рабочий запрет выдачи заклинаний у артефактов, если они запрещены через UN:J0/spell_id/1


Данный запрет работает неоднозначно с UN:J0/spell_id/1, если точнее, UN:J0/spell_id/1 должен работать лишь на ГМ и Пирамиды, однако имеется сейв, где запрет на ГМ и пирамиды выключен, а включен лишь запрет в свитках и ящиках пандоры и у школяров. Однако данный плагин всё равно вырезал Магию у артефактов.


RE: Плагины. Обсуждение - Archer30 - 03.12.2020 07:50

igrik, for BattleReplay plugin, it seems the problem that sometimes level-up screen skips after battle persists according to the player report. Would you please check if everything's alright? Rolleyes

Edit:
Panda, yes the problem with battle replay should be fixed by 1st Dec. But according to a report I received, it hasn't, even with the latest. It would be really good if igrik could investigate further.
I wasn't able to reproduce the bug even with the version before fixed. It would be very helpful know how to trigger so I can test and send more reports.


RE: Плагины. Обсуждение - Panda - 03.12.2020 09:40

igrik, итак, я снова получил вылет при передаче хода, на этот раз загрузка последнего автосейва или более раннего сохранения не помогает, краш игры при передаче хода случается в любом случае. Совет Berserker начать новую игру без плагина BattleSave так же ни к чему не привел, этот краш всё равно периодически проскакивает. Однако, возвращаясь к тому сохранению, я выключил все плагины, передал ход, краша не случилось. Методом перебора начал искать плагин, который вызывает краш игры при передаче хода - им оказался remove theoretical battle ai vs ai, при его отключении при передаче хода краша уже нет, и игра дальше идет нормально.
Дебаг+сохранение:
https://yadi.sk/d/Rd1wzP4oFN0PbA

daemon_n, там в дискорде когда-то пару-троек челов уже писали об этом краше, если у кого снова будет краш при передаче хода, то пусть попробуют отключить плагин remove theoretical battle ai vs ai.
PS: там Archer30 говорит, что с последней версией плагина BattleReplay вроде как проблема с пропуском вторичного навыка осталась.

XEPOMAHT, спасибо.
PS: Что поделать, мое ведро уже совсем старое и дряхлое, прохудилось уже, вот и протекает, а на новое средств нету... 148

Archer30, yes, there was such a problem, but this has already been fixed.
Coordinate with the daemon_n, don't count on me, I am no more. There is no one to edit the plugins at the moment, it is not known when the igrik will return.


RE: Плагины. Обсуждение - igrik - 03.12.2020 14:39

В который раз повторяю - theoretical battle ai vs ai это катализатор багов, но не виновник. Этот плагин заставляет битвы ИИ проводить как настоящие битвы, и поэтому выполняются функции, а также случаи в этих функциях, которые обычный игрок может создать очень редко. И получается, что "с виду" виновен данный плагин, но в 99% случаев это не так.

(03.12.2020 09:40)Panda Wrote:  igrik, итак, я снова получил вылет при передаче хода...
Я разобрался - причина в конфликте плагинов "RK primary skill overflow.dll" и "game bag fixes extended".
Место конфликта: строение "Знаки Страха" в замке Крепость. Оба плагина патчат одно и то же место в коде.

Первый ставит хук (решает проблему переполнения первичных навыков героя):
_PI->WriteLoHook(0x4639FC, GlyphsOfFear_OF);

Второй исправляет ошибку СОДа (перепутанные бонусы атаки и защиты)
// fix Fortress attack and defense bonuses for defended Hero
_PI->WriteByte(0x4639FE, 0x77);

Выход один - не использовать либо первый либо второй плагин.

(03.12.2020 09:40)Panda Wrote:  daemon_n, там в дискорде когда-то пару-троек челов уже писали об этом краше, если у кого снова будет краш при передаче хода, то пусть попробуют отключить плагин remove theoretical battle ai vs ai.
PS: там Archer30 говорит, что с последней версией плагина BattleReplay вроде как проблема с пропуском вторичного навыка осталась.
Я вернул старый и стабильный код плагина (откатил изменения назад). Теперь проблем плагином переигровки не будет. Ссылка там же - на гите.


RE: Плагины. Обсуждение - daemon_n - 03.12.2020 14:48

igrik, привет. Смотрю, battle replay вернулся к старому виду..
Немного начал копать в этой стороне, чтобы оптимизировать для мультиплеера.
Так понимаю, адреса для хуков надо брать с кода на гите?


RE: Плагины. Обсуждение - igrik - 03.12.2020 15:07

Всё что тебе нужно сделать, это вырезать этот участок кода

Ну а дальше тесты, тесты, тесты...


RE: Плагины. Обсуждение - daemon_n - 03.12.2020 15:10

igrik, отлично! Спасибо) буду изучать программирование "на горячую" Ab96-copy


RE: Плагины. Обсуждение - Panda - 04.12.2020 05:31

igrik, спасибо огромное! 132


RE: Плагины. Обсуждение - Panda - 05.12.2020 22:50

igrik, хотелось бы получить небольшое пояснение/консультацию:
в последнем wog native dialogs если я правильно понял, вырезаны некоторые функции, которые теперь стали не нужны и поддерживаются в HD mod версии RC14.
Отсюда возникает вопрос:
Ситуация 1: допустим игрок пользуется старой версией wog native dialogs, где данные функции присутствуют, и обновляет HD mod до версии RC14, не возникнет ли в таком случае каких-либо конфликтов, багов или крашей?
Ситуация 2: допустим игрок пользуется новой версией wog native dialogs, где данные функции вырезаны, и делает откат HD mod до версии RC7 допустим, не возникнет ли в таком случае каких-либо конфликтов, багов или крашей? И что перестанет работать в данном случае?
Спасибо.


RE: Плагины. Обсуждение - daemon_n - 05.12.2020 23:00

Panda, багов и крашей не будет.


RE: Плагины. Обсуждение - igrik - 05.12.2020 23:01

Ситуация 1: нет, конфликтов не возникает. Я проверял. Но я не хочу оставлять дублирующийся код.
Ситуация 2: конфликтов тоже не будет - им не откуда взяться. Просто НЕ будет работать вырезанный мной функционал, а это: F5 в главном меню и установка ползунка в макс положение при покупке существ. На данный момент в HD Бараторч не вернул ещё такой функционал: дабблклик в окне повышения уровня героя и быстро закончить бой по Q. Если он добавит эти пункты в HD, я их вырежу из WND.

PS: для справки - дабблклик в сообщениях IF:Q/M тоже изначально был реализован в HD, потом вырезан в HD и реализован мной в WND. Но этот дабблклик навсегда останется в WND по причине того, что одна небольшая функция была полностью написана заново для создания гибких сообщений ЭРЫ начиная с версии 3.1


RE: Плагины. Обсуждение - Panda - 05.12.2020 23:03

igrik, daemon_n, спасибо за разъяснения! 132


RE: Плагины. Обсуждение - Berserker - 08.12.2020 19:40

igrik скромно умолчал о том, что, что в последней версии (на github) wog native dialogs в родных геройских диалогах можно выбирать картинку, пользуясь клавишами управления курсором. Во многих случаях мышь больше не нужна!


RE: Плагины. Обсуждение - Algor - 08.12.2020 20:39

Дык и раньше ж можно было без мыши - кнопки 1 и 2.


RE: Плагины. Обсуждение - igrik - 08.12.2020 22:02

Algor, ты уверен, что мы об одной и той же игре говорим?


RE: Плагины. Обсуждение - Algor - 08.12.2020 22:29

igrik, эм, может о разных диалогах? Я только что перепроверил на стандартном диалоге повышения уровня героя. 1/2 работает.
Он же относится к "родным геройским диалогам", или я опять что-то забыл? С меня ща станется, ковид бесследно не проходит)


RE: Плагины. Обсуждение - igrik - 08.12.2020 22:42

36 Ты для меня щас Америку открыл! Я и не знал...

Но нет, мы говорим о диалогах типа IF:M IF:N и подобным геройским диалогам.


RE: Плагины. Обсуждение - Berserker - 09.12.2020 04:29

Я тоже про 1 и 2 не знал. В любом случае, речь идёт щб IF:Q/M/N диалогах, где до 8-и выбираемых изображений поддерживается (в оригинале до 2-х).


RE: Плагины. Обсуждение - Bes - 09.12.2020 04:38

ну, вы даёте, игру по части кода как никто знаете, а такие простые игровые моменты ни разу не слышали?
реально удивили.
улучшаете простых существ в окне статистики тож мышью? или таки жмёте U ?



RE: Плагины. Обсуждение - Berserker - 09.12.2020 07:54

Bes, мышью, конечно. Там U не всегда удобна.


RE: Плагины. Обсуждение - igrik - 09.12.2020 09:19

(09.12.2020 04:38)Bes Wrote:  ну, вы даёте, игру по части кода как никто знаете, а такие простые игровые моменты ни разу не слышали?
реально удивили.
В диалоге повышения навыка я реально не знал. В Месседж Боксах 1 и 2 никогда и не работало.


RE: Плагины. Обсуждение - Algor - 09.12.2020 10:08

(09.12.2020 04:38)Bes Wrote:  
улучшаете простых существ в окне статистики тож мышью? или таки жмёте U ?
U не удобно находится, обычно правая рука на мышке а левая на 1/2/w/e/d (s - для слабаков, q тоже не пользую). В BH еще часто "a" пользую. Все это делается без изменения положения левой руки. А U - неудобно, мышью быстрее.


RE: Плагины. Обсуждение - Archer30 - 09.12.2020 12:37

igrik, is the Battlesave plugin still being updated? I can find it nowhere from your github Sorry

Also, your download link of the latest WoG Native Plugin is unavailable here, needs update


RE: Плагины. Обсуждение - igrik - 09.12.2020 16:13

Archer30, все ссылки рабочие. Вы плохо смотрели (WND и BattleReplay)


RE: Плагины. Обсуждение - Archer30 - 10.12.2020 20:30

Thanks, igrk, now all links work. I thought BattleSave was not in your github, but it turned out it's in the same folder with BattleReplay.


RE: Плагины. Обсуждение - Archer30 - 31.12.2020 18:17

(31.12.2020 15:09)igrik Wrote:  XXL-mod. Скачать

Внимание! Использовать только с HD-модом.
Без HD-мода миникарта будет рисоваться с ошибками!

igrik, thank you so much for your amazing XXL-mod!

You forgot to mention that this mod also fixed a critical error with the previous XXL. Now the game won't crash with full map revealed. Nice work! Best gift of the New Year! 96-copy


RE: Плагины. Обсуждение - SergOz - 31.12.2020 20:51

(31.12.2020 15:09)igrik Wrote:  XXL-mod. Скачать

Внимание! Использовать только с HD-модом.
Без HD-мода миникарта будет рисоваться с ошибками!

igrik, спасибо за мод.
Когда в Хоте появилась поддержка огромных карт, очень надеялся что такое будет и в Эре.
Сейчас пылу поубавилось, потому что понял, как тяжело реализовать хороший баланс даже на картах144х144.
Надеюсь, создание хороших карт 252х252 окажется кому-то под силу. Было бы интересно пройти такую карту на Эре.
Может объявить приз для создателя первой такой карты?Pig_ball



RE: Плагины. Обсуждение - Berserker - 31.12.2020 23:19

(31.12.2020 15:09)igrik Wrote:  XXL-mod. Скачать

Внимание! Использовать только с HD-модом.
Без HD-мода миникарта будет рисоваться с ошибками!

igrik, огромное тебе спасибо! Талант не пропьёшь, даже под новый год 177


RE: Плагины. Обсуждение - XEPOMAHT - 01.01.2021 11:16

(31.12.2020 15:09)igrik Wrote:  XXL-mod. Скачать

Внимание! Использовать только с HD-модом.
Без HD-мода миникарта будет рисоваться с ошибками!

igrik, спасибо за реализацию XXL-мода для ERA! Наконец-то можно сказать окончательное "прощай" старому и глючному XXL-моду десятилетней давности.

Интересно, Берсеркер добавит XXL-мод в состав Эры?


RE: Плагины. Обсуждение - Berserker - 01.01.2021 16:13

XEPOMAHT, после тестирования и отвязки от HD-мода по мини-карте — конечно.


RE: Плагины. Обсуждение - daemon_n - 10.01.2021 17:46

(31.12.2020 15:09)igrik Wrote:  XXL-mod.

Спасибо огромное за мод!
Нашёл 2 фишечки, которые прошу добавить:
Прошу добавить поддержку новых размеров карт в список сортировки и в поле отображения размера карты


RE: Плагины. Обсуждение - daemon_n - 10.01.2021 18:27

(27.11.2020 12:24)daemon_n Wrote:  igrik, ой. Хижина ведьмы. Всегда! Если открыть любую рандомку в редаткторе карт, то можно увидеть, что всегда напротив именно данных навыков не стоит галочка

Проверил ещё раз, дабы написать временный фикс на ЭРМ.
Имеем вот что:
Навыки (0..27);
из них (16..27), 5 (навигация) и 12 (некромантия) не генерируются в хижинах ведьмы.
Наводит на мысль, что некромантию и навигацию вырезали специально, и остаётся ровно половина (14) навыков, которые не появляются.

Вот думаю, как бы реализовать.

1. Вернуть ли некромантию/ навигацию (точно нет) ?
2. Принудительно ли делать равномерное распределение навыков или для этой игры достаточно
!!VRi:S16 R11; для каждой второй хижины?


RE: Плагины. Обсуждение - SergOz - 10.01.2021 18:46

(10.01.2021 18:27)daemon_n Wrote:  Вот думаю, как бы реализовать.
Через !!SN:M прще всего, имхо. Записываешь массив, рандомкой считываешь значение выпавшей ячейки.
Если равномерно, то вот тебе в помощь


RE: Плагины. Обсуждение - daemon_n - 10.01.2021 19:04

SergOz, да, сделаю через массив, а то никогда не работал с этим)
Хотя и текущее решение норм


Но проблема с навигацией.
Где-то, может, есть смысл её оставить... Разве что код этот только на рандомных картах реализовать, кстатиRolleyes


RE: Плагины. Обсуждение - Berserker - 10.01.2021 21:37




RE: Плагины. Обсуждение - SergOz - 05.02.2021 19:54

igrik, надеюсь ты сможешь решить проблему.
Суть: при установленном плагине BattleSave, с помощью сейвов, созданных этим плагином, можно:
а) пройти мимо любого монстра, если рядом с ним есть хотя бы одна проходная клетка
б) пройти сквозь любой гарнизон, игнорируя его охрану
что ломает прохождение любой карты.

Если же этот плагин удалить, то при нападении на гарнизон и переигровке боя, используя возможность плагина BattleReplay, в гарнизоне остаётся фантом нападавшего героя. Фантом не пропадает, с ним можно взаимодействовать и он всегда остаётся в гарнизоне.
Вот здесь уже было обсуждение проблемы.


RE: Плагины. Обсуждение - igrik - 10.02.2021 14:02

BattleReplay: проблема создания копии героя в гарнизоне решена. Ссылка та же

На всякий случай укажу - мне пришлось обновить весь репозиторий. Но изменений кроме BattleReplay нет.



RE: Плагины. Обсуждение - SergOz - 10.02.2021 14:35

igrik, большое спасибо. 119
Протестил на разных картах, в разных ситуациях - всё ОК! 20


RE: Плагины. Обсуждение - Panda - 10.02.2021 22:28

igrik, спасибо! 132
У меня возник небольшой конфуз:
Сейчас у меня из скачанного архива пару часов назад, wog native dialogs.era вот такой:
MD5: 9196F0DE2741037408177E5256403480
Но пару недель назад wog native dialogs.era, когда я скачивал его с твоего репозитория, был такой (эта версия сейчас и лежит в сборке игры):
MD5: 78A2FFD2692246A183EA7FA6E71E2967
Учитывая, что кроме плагина BattleReplay изменений нет, то хотелось бы понять, какая версия wog native dialogs.era сейчас правильная.
BattleReplay.dll у меня такой:
MD5: ECFF5491772753F7CBFF02649BEFD279
game bug fixes extended.dll у меня такой:
MD5: C6A34FDECD5485B6BBBA903D798FCBAA
Извини за беспокойство, заранее большое спасибо! Sorry


RE: Плагины. Обсуждение - Archer30 - 11.02.2021 05:37

Hi, igrik! There is a small imperfection of the XXL mod, and I hope you could check that when you have time/motivation.

Image: otRDNDI.jpg
The issue is only observed when playing with HD mod. When you click on the the Underground option from random map generator, it resets map size option to XL if it was larger (H/XH/G).

Thank you in advanced for your investigation. 96-copy


RE: Плагины. Обсуждение - igrik - 11.02.2021 19:45

Archer30, this is the functionality of the HD mod, I can't solve it. Only baratorch can.

Panda, я пересел на новый комп (старый ушёл в утиль) и при "переезде" я провтыкал малость и обновил репозиторий. В результате все плагины перезаписались с новыми констрольными суммами, но функционал у них не изменился ни на каплю (кроме BattleReplay). Поэтому плагины и с теми, и с теми констрольными суммами актуальны. Больше мне нечего добавить...


RE: Плагины. Обсуждение - RoseKavalier - 11.02.2021 21:24

(11.02.2021 19:45)igrik Wrote:  [...]
this is the functionality of the HD mod, I can't solve it. Only baratorch can.
[...]
  • HiHook dialog proc 0x587FD0. If patch order is an issue, just go through vtable 0x641CBC + 0x24
  • Check window message for clicking underground button.
  • Store current map dimension if greater than 144.
  • Call DefaultFunc (Hdmod will do its thing here)
  • As needed, restore pressed button by calling orig proc with button click info of original size, which you know. {0x200, 0x0D, button_id, 0, 0, 0, 0, 0}

In the end it does everything twice but should work. Alternative is to memory patch it out 109


RE: Плагины. Обсуждение - daemon_n - 11.02.2021 21:33

RoseKavalier, That's famous!!!
So, mb then you can say/do how to make buttons disabling, if template settings do not match map size?Rolleyes

i mean if Jebus Cross template (L/XL + U) is chosen, then S/M/H/XH/G buttons will be "grey" (disabled for press)


RE: Плагины. Обсуждение - RoseKavalier - 12.02.2021 07:41

That would require actual reversing of HDmod code. Not impossible, but not something I'm interested in atm.


RE: Плагины. Обсуждение - daemon_n - 12.02.2021 10:00

RoseKavalier, thanks for the answer.

Understand that. Yes, sounds isn't clean way. Better ask Baratorch as HD mod developerYes


RE: Плагины. Обсуждение - igrik - 12.02.2021 10:59

RoseKavalier, thank you for your information! I will definitely use it.

daemon_n, у меня была такая идея, но немного копнув я понял, что это очень хорошенько нужно углубиться в код, чтобы исследовать функционал загрузки шаблонов, и вытащить из них допустимые размеры. Это достаточно кропотливый труд. Я пока что не готов этим заниматься.


RE: Плагины. Обсуждение - igrik - 24.02.2021 18:59

Плагин Переигровки обновлён. (!! но вам нужно обновить и era.dll)
Пожалуйста, внимательно изучите описание: как использовать плагин в связке с ERM.
Code:
Изменения:
[!] - расширение плагина переименовано в *.era
[-] - удалены триггеры 870520 и 870530
[!] - переименованы события:
  !?FU(OnBeforeBattleReplay);   [нажата кнопка переигровки, но состояние боя (отряды, герои) ещё старое]
  !?FU(OnBattleReplay);         [начата переигровка, состояние боя/героя/отрядов сброшено до изначального]

Image: image.png


RE: Плагины. Обсуждение - PerryR - 27.02.2021 17:15

I want to test the new Battle Replay plugin.
Which era.dll version should I use. Is the on from 3.3.4 sufficiant?


RE: Плагины. Обсуждение - daemon_n - 27.02.2021 17:56

PerryR, only 3.3.5 and higher


RE: Плагины - Grossmaster - 13.03.2021 21:25

(13.03.2021 21:03)Raistlin Wrote:  ArenaFix. Скачать

Описание: превращает все Арены с подтипом, отличным от 0, в Колизеи Магов (подсказку при этом нужно заменять самостоятельно). Также плагин улучшает алгоритм выбора навыка для героев ИИ (раньше выбор был случайный) и добавляет проверку на переполнение - теперь герои не могут получить больше чем 99 очков первичных навыков.

Прекрасный плагин. Он будет полезен для wog fix, а именно для объекта стоунхендж, который по моим планам будет иметь функцию колизея магов


RE: Плагины. Обсуждение - Raistlin - 13.03.2021 22:17

Grossmaster, спасибо! Плагин работает примерно так: если у Арены подтип 0, предлагается выбор между Атакой и Защитой, иначе - между Силой и Знанием (тексты при этом берутся из ini-файла). Чтобы Стоунхендж заработал как ты хочешь, поставь ему тип 4 и подтип 1.
Кстати, у меня нашелся маленький косячок, но я его уже исправил и перезагрузил архив. Ничего критичного нет, но я все же советую скачать плагин заново, чтобы в будущем не было путаницы.


RE: Плагины. Обсуждение - XEPOMAHT - 14.03.2021 00:02

(13.03.2021 22:17)Raistlin Wrote:  Чтобы Стоунхендж заработал как ты хочешь, поставь ему тип 4 и подтип 1.

А в MoP 2.19 (и на ERA+ когда-нибудь тоже) это тип 50, подтип не важен. Кстати, твой плагин весит как-то уж многовато. Внутри почти половина забита командами "int 3" + кучи отладочной информации, в общем, чувствуется, что там много неиспользованного собрано компилятором внутри dll.


RE: Плагины. Обсуждение - Raistlin - 14.03.2021 02:06

XEPOMAHT, очень может быть, так как у меня в проекте находится довольно много всяких заголовочных файлов, из которых по факту берется лишь пара функций.
Сделать Колизей отдельным объектом я действительно могу - добавлю в конфиг две строчки для типа и подтипа, а также строчку для статуса использования всех подтипов Арены. Постараюсь сделать завтра.


RE: Плагины. Обсуждение - V_Maiko - 14.03.2021 22:33

Raistlin, I have successfully implemented the Colisseum of the Magi... but unfortunately it is not generated in RMG by itself... Now I have an intense whim to get I get a plugin for RMG so I can manipulate the object generation as I want and thus save me the hassle of using the object replacement scripts as well 173


RE: Плагины. Обсуждение - Raistlin - 14.03.2021 23:05

Ok, I will find a solution Unsure

By the way, this is actually a very good Idea 132


RE: Плагины. Обсуждение - Raistlin - 15.03.2021 21:59

Привет, я тут еще один плагин выложил, но мне в нем кое-что не нравится. Подскажите пожалуйста, как исправить ERM-костыль?



RE: Плагины. Обсуждение - Berserker - 15.03.2021 22:08

Костыль в способе чтения и вывода текста в IF:Q?


RE: Плагины. Обсуждение - Raistlin - 15.03.2021 22:14

Да. Я не разобрался, как правильно выводить сообщения на экран, у функции 0x4F6C00 слишком много параметров.


RE: Плагины. Обсуждение - Berserker - 15.03.2021 22:50

Пиши обёртку:
Code:
TMesType =
  (
    MES_MES         = 1,
    MES_QUESTION    = 2,
    MES_RMB_HINT    = 4,
    MES_CHOOSE      = 7,
    MES_MAY_CHOOSE  = 10
  );

function Msg
(
  const Mes:          string;
        MesType:      TMesType  = MES_MES;
        Pic1Type:     integer   = NO_PIC_TYPE;
        Pic1SubType:  integer   = 0;
        Pic2Type:     integer   = NO_PIC_TYPE;
        Pic2SubType:  integer   = 0;
        Pic3Type:     integer   = NO_PIC_TYPE;
        Pic3SubType:  integer   = 0
): integer;

var
  MesStr:     pchar;
  MesTypeInt: integer;
  Res:        integer;

begin
  MesStr     := pchar(Mes);
  MesTypeInt := ORD(MesType);

  asm
    MOV ECX, MesStr
    PUSH Pic3SubType
    PUSH Pic3Type
    PUSH -1
    PUSH -1
    PUSH Pic2SubType
    PUSH Pic2Type
    PUSH Pic1SubType
    PUSH Pic1Type
    PUSH -1
    PUSH -1
    MOV EAX, $4F6C00
    MOV EDX, MesTypeInt
    CALL EAX
    MOV EAX, [WND_MANAGER]
    MOV EAX, [EAX + $38]
    MOV Res, EAX
  end; // .asm

  result := MSG_RES_OK;

  if MesType = MES_QUESTION then begin
    if Res = 30726 then begin
      result := MSG_RES_CANCEL;
    end // .if
  end else if MesType in [MES_CHOOSE, MES_MAY_CHOOSE] then begin
    case Res of
      30729: result := MSG_RES_LEFTPIC;
      30730: result := MSG_RES_RIGHTPIC;
    else
      result := MSG_RES_CANCEL;
    end; // .SWITCH Res
  end; // .elseif
end; // .function Msg

procedure ShowMessage (const Mes: string);
begin
  Msg(Mes);
end;

function Ask (const Question: string): boolean;
begin
  result := Msg(Question, MES_QUESTION) = MSG_RES_OK;
end;



RE: Плагины. Обсуждение - Raistlin - 15.03.2021 23:12

Berserker, большое Вам спасибо!
Вы этот код прямо сейчас написали? Честно говоря, мне даже неудобно как-то - я ожидал простого совета или максимум - примера использования откуда-то ещё...


RE: Плагины. Обсуждение - XEPOMAHT - 16.03.2021 00:09

(15.03.2021 23:12)Raistlin Wrote:  Честно говоря, мне даже неудобно как-то - я ожидал простого совета или максимум - примера использования откуда-то ещё...

Вызывай эту воговскую функцию и не парься (в с этим MoP ещё сильнее упрощено):

Code:
int Message(const char *zmes,int n,int showtime)
/*
    1-сообщение
    2-запрос
    4-инфа по правой мышке
    7-просьба выбрать
10-можно и выбрать и отказаться
*/
{
    STARTNA(__LINE__, 0)
    if (MainWindow == 0)
    {
        MessageBox(0, zmes, "Heroes of Might and Magic III", 0);
        RETURN(0);
    }

    __asm{
        mov  ecx,zmes
        push 0         // SType 3 : 0
        push -1        // Type 3  : -1
        push showtime  //0
        push -1        // Par ???
        push 0         // SType 2
        push -1        // Type 2
        push 0         // SType 1
        push -1        // Type 1
        push -1        // y
        push -1        // x
        mov eax,0x4f6C00
        mov edx,n
        call eax
    }
    __asm{
        mov eax,0x6992D0
        mov ecx,[eax]
        mov eax,[ecx+0x38]
        mov IDummy,eax    
    }  
    RETURN(IDummy);
}



RE: Плагины. Обсуждение - V_Maiko - 16.03.2021 00:56

Raistlin, Good job! 132 You are our hero of plugin mods! I wonder, what is the new thing that you will come up with? 96-copySpiteful


RE: Плагины. Обсуждение - Raistlin - 16.03.2021 01:50

V_Maiko, thank you for your support! 96-copy The new thing that I will come up with is pretty interesting, but for now it is a secret 144
XEPOMAHT, спасибо за код, я попробую. 132


RE: Плагины. Обсуждение - V_Maiko - 16.03.2021 07:25

After having used the H3.RMGDescription plugin for a long time, I have always wondered, why is a plugin not implemented to allow introducing seeds like in Minecraft? So players can generate their own maps in a more fun way Rolleyes


RE: Плагины. Обсуждение - igrik - 16.03.2021 07:47

Raistlin, при использовании patcher_x86.hpp и заголовочника HoMM3.h вообще не нужно писать ASM код, и всё становится куда проще:

Универсальная обёртка с использованием условий по умолчанию:
Code:
_bool_ f_MsgBox(char* text, int style = 1, int x = -1, int y = -1, int pic1Type = -1, int pic1Subtype = 0, int pic2Type = -1, int pic2Subtype = 0, int unk = -1, int showTime = 0, int pic3Type = -1, int pic3Subtype = 0)
{
  CALL_12(void, __fastcall, 0x4F6C00, text, style, x, y, pic1Type, pic1Subtype, pic2Type, pic2Subtype, unk, showTime, pic3Type, pic3Subtype);
  return (o_WndMgr->result_dlg_item_id);
}

Примеры вызовов:
Code:
f_MsgBox(message); // просто сообщение с текстом
if(f_MsgBox(message, 4) {...}) // вопрос с текстом, в условии
f_MsgBox(message, 1, -1, -1, pic1Type, pic1Subtype); // показ сообщения с одной картинкой (id картинок см.IF:Q)
f_MsgBox(message, 7, -1, -1, pic1Type, pic1Subtype, pic2Type, pic2Subtype); // сообщение с выбором из 2х картинок

daemon_n, просто проснулся раньше обычного. ХЗ, старею походу...



RE: Плагины. Обсуждение - daemon_n - 16.03.2021 07:50

Raistlin, а я вот не понял, зачем этот плагин, когда есть скрипт отображения экрана героя без схлопывания в эра спкриптс, написанный через un:c. Позволяет и командира проверить, и статус оруженосца, и артефакты в рюкзаке - вообще любую информацию.

igrik, ещё нет шести утра – надеюсь, всё нормально 105



RE: Плагины. Обсуждение - daemon_n - 16.03.2021 22:21

Raistlin, а можешь сделать именно фиксы отдельно? Сделай, пожалуйста. Не хочется возиться с добавлением новых объектов, а вот фиксы полезные.

Как именно он работают они, кстати?


RE: Плагины. Обсуждение - Archer30 - 17.03.2021 12:07

Hello! Looking for help from igrik with WoG Native Dialog. I understand these problems have been reported, but I just hope they can be fixed in the near future. Rolleyes

1. Keypad support. Currently, the keypad has no use with input dialogues from WoG Native Dialog.
2. Disappearing WoG Option dialogue. As I understand after HD 5.2 RC11 the WoG dialogue support of OpenGL gets worse, as a result, the WoG Option dialogue disappear immediately (Details). Switching to non-OpenGL mode could resolve the issue, but it's not ideal - I simply can't play H3 without the great performance in OpenGL.


RE: Плагины. Обсуждение - Berserker - 17.03.2021 15:27

1. Seems like it's HD mod feature. Tried without it?
2. Disappearing only occurs with zvslib.dll dialogs from WoG 3.58. Not wog native dialogs bug, but HD mod implementation changing.
Am I wrong?


RE: Плагины. Обсуждение - Archer30 - 17.03.2021 16:07

Berserker, sorry for failing to explain. Right, the second one is not a WND issue. But it can only be fixed by re-writing the zvslib dialogue with WND, so I put my hope in igrik Sorry

The first one is not an HD feature. Tried without HD, the issue persisted.


RE: Плагины. Обсуждение - Berserker - 17.03.2021 16:44

But igrik has rewritten WoG Options dialog. With WND no disappearing should occur. We need igrik's reply.


RE: Плагины. Обсуждение - Archer30 - 17.03.2021 16:56

Yes. igrik rewrite pretty much all of the dialogue of zvslib except for

1. IF:D E F dialog with gif added
2. WoG Options dialogue for saving/loading options (this is what I mentioned above)


RE: Плагины. Обсуждение - Berserker - 17.03.2021 17:37

Ah, it's Select File/Open File dialog, I see.


RE: Плагины. Обсуждение - V_Maiko - 17.03.2021 19:34

(17.03.2021 17:37)Berserker Wrote:  Ah, it's Select File/Open File dialog, I see.

Will it be possible to fix that annoying problem? It is being a nightmare for those who persevere to use OpenGL despite all these graphical problems. Also, if we add this problem with WoG campaigns that have to be rewritten for ERA III, it will be completely unplayable in OpenGL.


RE: Плагины. Обсуждение - Berserker - 17.03.2021 19:57

Will probably cooperate with Igrik. Currently new radio/checkbox dialog is not finished yet.


RE: Плагины. Обсуждение - Raistlin - 21.03.2021 19:40

Прошу прощения, что вовремя не ответил - времени на форум совсем не было... igrik, большое спасибо за информацию и примеры, теперь буду знать. Всем, кто мне помогал, тоже еще раз спасибо!

(16.03.2021 07:50)daemon_n Wrote:  Raistlin, а я вот не понял, зачем этот плагин, когда есть скрипт отображения экрана героя без схлопывания в эра спкриптс, написанный через un:c. Позволяет и командира проверить, и статус оруженосца, и артефакты в рюкзаке - вообще любую информацию.
Да, действительно - это самый очевидный вариант. Вот только не получится ли, что у игрока будет возможность поувольнять армию, а заодно и командира у ненанятого героя?

Quote:Raistlin, а можешь сделать именно фиксы отдельно? Сделай, пожалуйста. Не хочется возиться с добавлением новых объектов, а вот фиксы полезные.

Как именно он работают они, кстати?
Погоди-ка, а что ты имеешь ввиду под этим словом? Ab


RE: Плагины. Обсуждение - daemon_n - 21.03.2021 23:42

(21.03.2021 19:40)Raistlin Wrote:  Да, действительно - это самый очевидный вариант. Вот только не получится ли, что у игрока будет возможность поувольнять армию, а заодно и командира у ненанятого героя?

Нет, не получится - стоит блок на нажатиеAb К слову, он там был не сразу, но позднее добалвен.


RE: Плагины. Обсуждение - Raistlin - 21.03.2021 23:46

Хм, ладно Ab


RE: Плагины. Обсуждение - V_Maiko - 23.03.2021 21:13

Raistlin, is there a way to make Arena subtype 1 generate on random map without replacing anything?


RE: Плагины. Обсуждение - Raistlin - 24.03.2021 00:25

V_Maiko, I have tried something like this:
Code:
_int_ __stdcall GenerateObjectOnRandomMap(LoHook* h, HookContext* c)
{
    *(_ptr_*)(c->eax + 8) = Randint(0, 1);
    return EXEC_DEFAULT;
}
...
Magic->WriteLoHook(0x539075, (void*)GenerateObjectOnRandomMap);
but it does not work... At the moment I can not fix it...


RE: Плагины. Обсуждение - igrik - 24.03.2021 00:46

Raistlin, тут выставляй подтип 0x4C0A7A


RE: Плагины. Обсуждение - Raistlin - 24.03.2021 03:00

igrik, большое спасибо, все получилось:
Code:
_int_ __stdcall GenerateObjectOnRandomMap(LoHook* h, HookContext* c)
{
    *(_ptr_*)(c->esi + 34) = Randint(0, 1);
    return EXEC_DEFAULT;
}

Единственное, я пока так и не смог разобраться с тем, как менять внешний вид объекта. Вы случайно не знаете в какой структуре следует искать указатель на def?


RE: Плагины. Обсуждение - V_Maiko - 24.03.2021 03:12

Raistlin, I did it all via text objects, the appearance of the colisseum of the magi was added to Arena type 4, subtype 1 Ab

Image: unknown.png
Image: unknown-1.png


RE: Плагины. Обсуждение - Raistlin - 24.03.2021 03:56

V_Maiko, and the object can now be generated on random maps??


RE: Плагины. Обсуждение - V_Maiko - 24.03.2021 04:09

Raistlin, subtype 1 is not generated in the map, that is the reason why I am asking all this topic Rolleyes


RE: Плагины. Обсуждение - XEPOMAHT - 24.03.2021 11:18

(24.03.2021 03:00)Raistlin Wrote:  Единственное, я пока так и не смог разобраться с тем, как менять внешний вид объекта. Вы случайно не знаете в какой структуре следует искать указатель на def?

Конкретно для карты - структура _Object_, но там не указатель, а шаблон объекта. Деф меняется уже в структуре шаблона. Если у тебя создан шаблон объекта "тип 4 подтип 1", то для замены объекта на карте вызывается соответствующая содовская функция (можно подсмотреть в функции, например, генерирующей монстров, артефактов, городов из случайных).


RE: Плагины. Обсуждение - Raistlin - 24.03.2021 21:27

(24.03.2021 04:09)V_Maiko Wrote:  Raistlin, subtype 1 is not generated in the map, that is the reason why I am asking all this topic Rolleyes
Ok, I have understood. That is already fixed, I just thought you have found a solution yourself.

XEPOMAHT, я понял, большое спасибо! Я видел эти функции в базе для IDA, попробую сделать по аналогии.


RE: Плагины. Обсуждение - V_Maiko - 24.03.2021 22:15

Raistlin, give me your last version please


RE: Плагины. Обсуждение - Raistlin - 24.03.2021 22:32

I will publish it soon, there is a small issue Ab


RE: Плагины. Обсуждение - daemon_n - 26.04.2021 01:50

Если в бою на ПКМ на ход баллисты выбрать тип "рукопашная атака", то
курсор выстрела не пропадёт,
будет возможность "кликнуть" на врага,
ход передастся без выстрела,
боезапас упадёт до 0,
баллиста более не походит.

У катапульты почти те же результаты, но та стреляет 1 раунд, сколько позволяет навык, и выстрелы уходят в минус. 105

Ещё один баг, оставленный в теме Вог-багов: (Click to View)



RE: Плагины. Обсуждение - ilya - 07.05.2021 17:57

Панель заклинаний в бою
Способ использования (если никто не знает):
- привязать заклинание к горячей клавише: ЛКМ на кнопке
- посмотреть информацию по заклинанию: ПКМ на кнопке
- использовать заклинание: нажатие клавиш 1-0 в бою

А можно сделать, возможно отдельным плагином, чтобы ЛКМ по уже привязанному вызывала заклинание, а ЛКМ по пустому или СКМ устанавливала заклинания?
А может скролом при наведении тоже привязывать/иззменять/отвязывать будет, конечно если это возможно?


RE: Плагины - Valery - 12.05.2021 22:12

Hi guys

I downloaded the battlereplay.era and placed it in Era plugins, but now game crashes on start, I run 2.46F.

Is anything wrong or I must download additional files?.


RE: Плагины - Berserker - 12.05.2021 22:27

Valery, as far as I see, it's compiled with modern era.h, thus depends on Era 2.9x versions. It can be recompiled with changed era.h and old-style ERM triggers (like !?FU870530), but you have to contact igrik.


RE: Плагины. Обсуждение - igrik - 13.05.2021 00:03

Продублирую...

Мои плагины на 2.8.3.
Download




RE: Плагины. Обсуждение - Valery - 13.05.2021 01:37

dll files in main folder?

Also in the rar there is no battlereload.era


RE: Плагины. Обсуждение - Berserker - 13.05.2021 02:20

Valery, they could work. Try placing battlereplay.dll into Mods\YourMod\EraPlugins


RE: Плагины. Обсуждение - Valery - 13.05.2021 04:02

I did, there is no battle save created as I saw in Glenn streaming...

I also placed it in Era 2.9.14 (Wog mod plugins) I have and nothing changed144


RE: Плагины. Обсуждение - Berserker - 13.05.2021 04:28

You want battlesave.dll or battlereplay.dll?


RE: Плагины. Обсуждение - Valery - 13.05.2021 08:51

I got it, I thought it was battlereplay. Thanks 118


RE: Плагины. Обсуждение - Berserker - 13.05.2021 15:35

Welcome Ab


RE: Плагины. Обсуждение - Valery - 13.05.2021 18:40

Just a question : what the battlereplay plugin does? The game already allows you to replay the battle


RE: Плагины. Обсуждение - Berserker - 13.05.2021 19:22

Valery, the game never allowed to replay the battle. Only the battle replay plugin allow to press Cancel button in battle results screen and start the same battle again. Anyway, the plugin cannot restore everything, the scripts could change (specially, global variables). Thus it generates two ERM events, allowing to reset data manually. In other words, plugin should not be used with complex scripts without scripts adaptation and testing. Battle Save plugin is better for this task, though it allows to pick guarded resources and artifacts.


RE: Плагины. Обсуждение - SergOz - 13.05.2021 20:13

(13.05.2021 19:22)Berserker Wrote:  Battle Save plugin is better for this task, though it allows to pick guarded resources and artifacts.
И, самое ужасное, - он позволяет проходить сквозь охраняемые гарнизоны без боя.


RE: Плагины. Обсуждение - Valery - 13.05.2021 22:14

Bers, I see.

I never have battle results before battle, this is HD feature and only available to SoD/Hota, right?

When you do auto-combat, at the end you have an option to replay the battle (two icons, No/Yes), this is the replay I was talking about.


RE: Плагины. Обсуждение - Berserker - 14.05.2021 00:51

Valery, yep, Baratorch implemented battle reply for SoD/Hota. No scripts there, so he only needed to restore heroes/armies/artifacts.


RE: Плагины. Обсуждение - V_Maiko - 19.05.2021 20:47

XEPOMAHT, Thank you very much for the plugin! 96-copy I hope Panda can add it to your assembly Ab


RE: Плагины. Обсуждение - PerryR - 19.05.2021 22:41

Nice plugin and update to MoP XEPOMAHT
132


RE: Плагины. Обсуждение - SergOz - 20.05.2021 01:10

Получил я секретную инфу 144, что был исправлен плагин расширенного экрана лога битвы.
Подскажите, пожалуйста, где можно такой обновлённый плагин скачать.

147 Сори, в ERA 3.7 оказывается всё уже в норме.
Нужно было сначала проверить, потом писать.


RE: Плагины. Обсуждение - igrik - 20.05.2021 12:22

(20.05.2021 01:10)SergOz Wrote:  Получил я секретную инфу 144, что был исправлен плагин расширенного экрана лога битвы.
Подскажите, пожалуйста, где можно такой обновлённый плагин скачать.

147 Сори, в ERA 3.7 оказывается всё уже в норме.
Нужно было сначала проверить, потом писать.
Первое - это не отдельный плагин - это часть WND.
Второе - да, исправление есть. Но оно касается части алгоритма: ранее при затяжных боях (более 100 раундов) расширенный лог битвы открывался очень долго (игра якобы повисала). Сейчас это происходит мгновенно. Так как исправление не критическое, то обновление будет несколько позже.


RE: Плагины. Обсуждение - SergOz - 20.05.2021 14:05

(20.05.2021 12:22)igrik Wrote:  обновление будет несколько позже.
Ждём с нетерпением 121


RE: Плагины. Обсуждение - Raistlin - 20.05.2021 23:40

Я сегодня новый плагин выложил, правда, без исходника. Сейчас подумал и решил, что код тоже можно показать - вдруг пригодится кому Ab
http://wforum.heroes35.net/showthread.php?tid=5192&pid=124780#pid124780

Кстати, в первой версии было 3 хука, сейчас я еще разок внимательно посмотрел на код и понял, что можно обойтись одним. Мне самому очень понравилось решение, наверное, как раз поэтому я его и выкладываю 96-copy


RE: Плагины. Обсуждение - V_Maiko - 21.05.2021 00:21

Raistlin, I don't understand what the plugin is about, the translator doesn't tell me anything logical in the title, what is it about water and dimension door?


RE: Плагины. Обсуждение - Raistlin - 21.05.2021 00:27

V_Maiko, I have fixed a SoD bug. When you cast Dimension Door, but it does not work (for example when you try to place your hero on water), you will still lose mana points. Earlier this problem was solved in HotA, now there is a solution for Era.


RE: Плагины. Обсуждение - V_Maiko - 21.05.2021 00:33

Raistlin, perfect bug fix! 20 one more addition than panda should include in his assembly for players to take advantage of it.


RE: Плагины. Обсуждение - XEPOMAHT - 21.05.2021 00:34

(20.05.2021 23:40)Raistlin Wrote:  сейчас я еще разок внимательно посмотрел на код и понял, что можно обойтись одним.

Твой хук портит edi и немного стек после выхода из функции. Намного надежнее сделать бинарный патч, без хуков. 108


RE: Плагины. Обсуждение - Raistlin - 21.05.2021 00:44

XEPOMAHT, да, Вы правы - я сам это только что заметил. Плагин снова обновлен, код сейчас уберу.

V_Maiko, thanks!


RE: Плагины. Обсуждение - igrik - 21.05.2021 01:02

Обновлен плагин wog native dialogs:
Code:
[+] лог битвы теперь не зависает при открытии в затяжных битвах
[+] изменена цветовая гамма диалога IF:G (с подачи Berserker'a)

Обновлен плагин BattleSave:
Code:
[+] решена проблема с потерей мувпоинтов героя
[+] решена проблема прохода объектов (например гарнизоны)



RE: Плагины. Обсуждение - V_Maiko - 21.05.2021 01:26

igrik, Consider implementing an fix or update to IF:D, IF:E and IF:F receivers in order to end the torment of using OpenGL, or consider merging all dialog receivers into one in IF:G, this is a serious problem and you're not looking at it thoroughly.


RE: Плагины. Обсуждение - igrik - 21.05.2021 01:36

V_Maiko, this question should be asked to Berserker

Berserker, это вопрос по поводу загрузки avi и gif файлов с помощью функции LoadImageAsPcx16.


RE: Плагины. Обсуждение - Berserker - 21.05.2021 01:50

igrik, спасибо за обновление! В IF:G диалогах пункты не выделяются при щелчках по верхней области прямоугольных рамок.
Image: image.png

V_Maiko, gif/avi issue cannot be solved easily by igrik or me. Both formats are animation files and cannot be decoded to native dialog element. Try to contact Verok, the author of OpenGL filter. Maybe it's unsolvable at all.


RE: Плагины. Обсуждение - V_Maiko - 21.05.2021 03:05

Berserker, I'll try my best to be in contact with Verok, if it doesn't offer a solution perhaps it's because OpenGL has stopped supporting those receivers because are obsolete, and the only solution would be to rewrite the code or replace it with a similar one, but as you said it's not easy, I understand, although I will be very offended by the lack of try if WoG Team provided the corresponding source code. Kap


RE: Плагины. Обсуждение - SergOz - 21.05.2021 03:17

(21.05.2021 01:02)igrik Wrote:  Обновлен плагин BattleSave
[+] решена проблема с потерей мувпоинтов героя
[+] решена проблема прохода объектов (например гарнизоны)
Ура! 16
Вчера, переходя на ERA3.7 решил (по совету друзей) всё же использовать сохранение игры перед боем. Но, вставил в скрипт строчку исключающую таковое сохранение при нападении на гарнизоны. Плагин BattleSave был безжалостно удалён уже давно. А сегодня такая приятная новость... Спасибо!


RE: Плагины. Обсуждение - Berserker - 21.05.2021 04:51

V_Maiko, we cannot do it, with or without the source code. avi/gif are rendered as child window by C++ Builder application zvslib.dll. I don't know how OpenGL wrapper is implemented and what exactly is the issue.


RE: Плагины. Обсуждение - V_Maiko - 21.05.2021 05:08

Berserker, ok I'll stop discuss about this here, by the way, the most satisfactory feature of using OpenGL, in addition to the very good screen quality in the game, is also the fluidity of the hero's movement on the map and the creatures in combat, is there a plugin to replace that good feature? (Referring to the latest)


RE: Плагины. Обсуждение - Berserker - 21.05.2021 06:16

V_Maiko, seems like there is not plugin for that. And btw, avi/gifs are used in a limited set of maps, right?


RE: Плагины. Обсуждение - igrik - 21.05.2021 09:13

(21.05.2021 01:50)Berserker Wrote:  igrik, спасибо за обновление! В IF:G диалогах пункты не выделяются при щелчках по верхней области прямоугольных рамок.
Image: image.png
Да, Berserker, я знаю о ней.
Когда я решу эту проблему, то будет закончен и этот диалог 144
Image: image.png




RE: Плагины. Обсуждение - Raistlin - 21.05.2021 12:38

igrik, а если это сделать на уровне графики?


RE: Плагины. Обсуждение - igrik - 21.05.2021 13:19

Нет. Необходимо универсальное решение на уровне кода.
Да и плюс ко всему - на уровне графики - даже просто не интересно.


RE: Плагины. Обсуждение - Berserker - 21.05.2021 16:16

igrik, я бы реализовал просто. Прозрачный деф, которому даёшь нужное расположение и в разы больше картинки нужный тебе прямоугольник реакции нажатия на кнопку. Этот деф размещается после основных элементов строки, то есть имеет z-order выше, перекрывает их. Он универсально обрабатывает щелчок с отпусканием по области, так как является кнопкой. Даже звук кнопки стандартный.


RE: Плагины. Обсуждение - igrik - 21.05.2021 17:32

Да, я думал уже об этом. Но откинул идею, потому что не будет визуального эффекта нажатия кнопки. Это легко увидеть, например зажав не отпуская кнопку ОК в окне героя.


RE: Плагины. Обсуждение - Raistlin - 21.05.2021 18:18

(21.05.2021 13:19)igrik Wrote:  Нет. Необходимо универсальное решение на уровне кода.
Да и плюс ко всему - на уровне графики - даже просто не интересно.
Вообще, да, я согласен. 132

Кстати, я еще немножко посидел над своим вчерашним плагином и обновил его в четвертый раз. Изначальный вариант с тремя хуками все-таки использоваться не будет, я решил просто сдвинуть основной хук и выполнить затертый код самостоятельно.
Исходник (Click to View)



RE: Плагины. Обсуждение - igrik - 21.05.2021 18:47

Raistlin, ну ты чего? Не используй asm вовсе. Это:
Code:
_asm
{
    push    0
    push    0
    push    0
    push    1
    push    1
    mov     ecx, edi
    mov eax, 0x4136F0
    call eax
}

Аналогично этому:
Code:
// void __thiscall AdvMgr_Draw_Minimap_current_coords(_AdvMgr_ *this, char a2, int a3, char a4, char a5, char a6)
CALL_6(void, __thiscall, 0x4136F0, o_AdvMgr, 1, 1, 0, 0, 0 );



RE: Плагины. Обсуждение - Raistlin - 21.05.2021 19:09

Рано или поздно я обязательно всему научусь, большое спасибо! 132


RE: Плагины. Обсуждение - RoseKavalier - 21.05.2021 19:36

@Raistlin
To add to what igrik posted while I was typing this...
Don't use inline ASM to acquire registers unless you declare the function __declspec(naked), you never know how compiler will act exactly.
However if you do declare it __declspec(naked) then you have to handle all of the stack yourself, not the most intuitive when working with LoHook. (So best thing, avoid assembly whenever possible)
The guaranteed safe way to do your way with C++ and the LoHook function would be:
Code:
//THISCALL_6(void, 0x4136F0, c->edi, 1, 1, 0, 0, 0);
CALL_6(void, __thiscall, 0x4136F0, c->edi, 1, 1, 0, 0, 0);
Or use igrik's version 132
Or add it as a member function of AdvMgr and use it directly... AdvMgr->UpdateScreen();

However there is another issue in this code, by jumping to 0x41D474 you are skipping over
Code:
0x41D46B POP EDI
Which means you are not restoring EDI which was pushed on stack at 0x41D232; this is highly likely to cause all sorts of problems including crashes.
Code:
int __stdcall DisableManaUsage(LoHook* hook, HookContext* c)
{
    /* insert update screen code */
    c->edi = c->Pop(); // missing line, pop the top stack value back to edi
    c->return_address = 0x41D474;
    return NO_EXEC_DEFAULT;
}

@igrik
As we previously discussed, you can create your own custom format that inherits from an existing control, and do two modifications:
1- add a DlgItem* field (linkedItem) to link it with the control beneath it
2- modify the virtual table with your own by changing the ProcessMsg(H3Msg& msg) function (+08) with your own.

This can be accomplished either by properly writing virtual function for all controls or using similar style to Wog dialogs / Baratorch dialogs of creating a custom virtual table and inserting it after the control is created (effectively more C-style).

C++style
Code:
struct MyCustomControl : DlgItem
{
    DlgItem* linkedControl;

    virtual int ProcessMsg(H3Msg& msg) override
     {
           if (linkedControl)
                return linkedControl->ProcessMsg(msg);
           return 2; // stop processing the current msg
           return THISCALL_2(int, /*insert_original_address*/, this, &msg); // call original message process
     };
     // add in constructor etc.
};

C-style
Code:
struct MyCustomControl : DlgItem
{
    DlgItem* linkedControl;
     // add in constructor etc.

    static int __fastcall CustomProcessMsg(MyCustomControl* control, int unused, H3Msg& msg)
    {
       if (control->linkedItem) // can add some more checks if needed
           return  control->linkedItem->ProcessMsg(msg);
       return 2; // stop processing the current msg
       return THISCALL_2(int, /*insert_original_address*/, control, &msg); // call original message process
    }

   static int customVT[] = {
      0x123456, // use the actual function addresses
      0x222222,
      (int)MyCustomControl::CustomProcessMsg,
      0xABCDEF,
      ...
   };
}
...and set custom virtual table after creation...
Code:
MyCustomControl* customControl = new MyCustomControl(.......) (in whatever way you pick to create it)
*(int*)(customControl) = (int)MyCustomControl::customVT; // set new virtual table

Whichever way you pick, anytime you perform an action on the overlaying transparent control the message is instead transferred to the linked control.

###

Making properly overloaded controls is, imo, easier, more versatile and does not take a considerable amount of time really since you can simply make a virtual function call the original one. Something I am planning to add in the api when I get time...


RE: Плагины. Обсуждение - Raistlin - 21.05.2021 20:21

RoseKavalier, thank you very much! I did not know how to use __declspec(naked), but now I have understood 132

Plugin got updated (hopefully last time), the code is here:



RE: Плагины. Обсуждение - igrik - 22.05.2021 20:02

(21.05.2021 19:36)RoseKavalier Wrote:  @igrik
As we previously discussed, you can create your own custom format that inherits from an existing control, and do two modifications:
1- add a DlgItem* field (linkedItem) to link it with the control beneath it
2- modify the virtual table with your own by changing the ProcessMsg(H3Msg& msg) function (+08) with your own.

...

Making properly overloaded controls is, imo, easier, more versatile and does not take a considerable amount of time really since you can simply make a virtual function call the original one. Something I am planning to add in the api when I get time...
RoseKavalier, thank you again. I remember that we discussed this point, and I'm even moving in that direction. But the lack of time did not allow me to finish what i am started, and so far there is no result. But it will be mandatory!
Thank you again for your help.


RE: Плагины. Обсуждение - daemon_n - 24.05.2021 08:54

(20.05.2021 22:45)Raistlin Wrote:  «Дверь измерений» игнорирует щелчки по клеткам с водой

Автор: Raistlin
Язык: не имеет значения
Поддерживаемые версии: SoD, ERA
Способ установки: Класть в EraPlugins любого мода

Скачать: https://drive.google.com/file/d/1kWUMTcw7VdfvSMOI7aPg_uFOR88DNw_N/view?usp=sharing

Данный плагин учитывает героя, находящегося в лодке?
Напомню, что "Дверь Измерений" работает, если ты "прыгаешь" с воды на воду.


RE: Плагины. Обсуждение - Archer30 - 24.05.2021 21:22

igrik, I'm looking for help with your plugin WoG Native Dialogue for 283.

Debug + save

exception context.txt
Quote:> Callstack
Wog native dialogs.8472 (?setYellowFrames@@YAXPAV_CustomDlg_@@H@Z + 1474)

With ERA 2.9.14 + WoG Native Dialogue for 283, the game crashes when the hero visits Witch Huts.

Everything's fine with ERA 2.9.14 + WND build-in with ERA release.

Is WND for 283 incompatible with 2914, or is it possible to improve?

Thanks for your help Yes


RE: Плагины. Обсуждение - igrik - 24.05.2021 21:28

(24.05.2021 21:22)Archer30 Wrote:  Is WND for 283 incompatible with 2914, or is it possible to improve?
No, they are not compatible!


RE: Плагины. Обсуждение - Archer30 - 24.05.2021 21:58

Thank you igrik, that's unexpected :O


RE: Плагины. Обсуждение - Raistlin - 27.05.2021 00:38

(24.05.2021 08:54)daemon_n Wrote:  
(20.05.2021 22:45)Raistlin Wrote:  «Дверь измерений» игнорирует щелчки по клеткам с водой

Автор: Raistlin
Язык: не имеет значения
Поддерживаемые версии: SoD, ERA
Способ установки: Класть в EraPlugins любого мода

Скачать: https://drive.google.com/file/d/1kWUMTcw7VdfvSMOI7aPg_uFOR88DNw_N/view?usp=sharing

Данный плагин учитывает героя, находящегося в лодке?
Напомню, что "Дверь Измерений" работает, если ты "прыгаешь" с воды на воду.
Да, должен учитывать.


RE: Плагины. Обсуждение - Archer30 - 28.05.2021 14:31

XEPOMAHT, Увеличение лимита первичных навыков с 99 до 249, what a great plugin you wrote 132

I wonder if this plugin could possibly conflict with some mods/plugins. Got one report from the player saying he's got negative spell damage with Spell Power > 127, but I couldn't get more details from him. I also couldn't reproduce the problem.

If everything's fine, will this plugin be added to the next release of ERA? 102


RE: Плагины. Обсуждение - XEPOMAHT - 28.05.2021 15:52

(28.05.2021 14:31)Archer30 Wrote:  I wonder if this plugin could possibly conflict with some mods/plugins. Got one report from the player saying he's got negative spell damage with Spell Power > 127, but I couldn't get more details from him. I also couldn't reproduce the problem.

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

(28.05.2021 14:31)Archer30 Wrote:  If everything's fine, will this plugin be added to the next release of ERA? 102

Берсеркер скорее против. Данный плагин и так является частью ERA+, более экстремального набора плагинов, чем базовая ERA.


RE: Плагины. Обсуждение - Archer30 - 28.05.2021 16:15

XEPOMAHT, thanks for clarifying!

I would really like this plugin to be embedded in ERA, at least the part preventing overflow of stats > 127 is very necessary.

ERA has got an optional bin patch for stats max at 127 (which is worse than this one) anyway.


RE: Плагины. Обсуждение - XEPOMAHT - 28.05.2021 16:42

(28.05.2021 16:15)Archer30 Wrote:  I would really like this plugin to be embedded in ERA, at least the part preventing overflow of stats > 127 is very necessary.

Авторам сборок не запрещено добавлять prima.dll. Например, в сборку Панды он добавлен, но только выключен. Лично я глубоко не тестировал prima.dll - у меня нет на это времени. Мне пока никаких баг-репоров, связанных с prima.dll, не приходило ни одного. Поэтому - пока только на свой страх и риск, теоретически, в нём всё должно работать, но что и как на практике - время покажет: плагин новый, написан был за 3 дня. Через год наверное узнаем что-да как в нём... 148

(28.05.2021 16:15)Archer30 Wrote:  ERA has got an optional bin patch for stats max at 127 (which is worse than this one) anyway.

Это устаревший патч, возможно когда-нибудь Берсеркер осмелится заменить его на prima.dll, но друг другу они не мешают, т.к. prima.dll перетирает этот патч целиком в памяти игры - по крайней мере если prima.dll грузится позже.


RE: Плагины. Обсуждение - Berserker - 28.05.2021 16:42

Archer30, for now I think base implementation with unsigned byte a much safier variant for core package. But everyone can use new plugins in assemblies, being ready for testing and bug reports, of course )


RE: Плагины. Обсуждение - Panda - 28.05.2021 18:51

Archer30, скажу честно, я сам не тестировал этот плагин (по крайней мере на корректность его работы и длительную игру на стабильность), я просто включил плагин, несколько раз запускал игру, потом минут 30 поиграл, убедившись что игра не крашит и не сыпит ошибками каждые 5 минут, и на этом всё. Поэтому плагин добавил в сборку, но он по умолчанию выключен. Времени у меня больше нет. Как говорил Берс, оставлю это дело на откуп энтузиастам 148


RE: Плагины. Обсуждение - Raistlin - 29.05.2021 00:20

Panda, а мой последний плагин ты добавил или не стал? Ab


RE: Плагины. Обсуждение - igrik - 29.05.2021 00:28

(21.05.2021 19:36)RoseKavalier Wrote:  @igrik
As we previously discussed, you can create your own custom format that inherits from an existing control, and do two modifications:
1- add a DlgItem* field (linkedItem) to link it with the control beneath it
2- modify the virtual table with your own by changing the ProcessMsg(H3Msg& msg) function (+08) with your own.
RoseKavalier, I struggled with this implementation. I didn't win. Still need help.
By the way I use in this plugin _H3API_

PHP Code:
// element that performs the action of another element (linkedItem)
    
struct H3DlgCustomControlItem : public H3DlgItem
    
{
    public:
        
H3DlgItemlinkedItem;

        
//INT32 ProcessMsg(H3Msg* msg) override // this doesn't work either: in "struct H3DlgItem { ... virtual INT32 ProcessMsg(H3Msg* msg); } "
        //{
        //    if (linkedItem)
        //        return  linkedItem->ProcessMsg(msg);
        //        // return THISCALL_2(int, (UINT)&this->linkedItem->vTable[2], this, &msg);
        //    return 2; // stop processing the current msg
        //    // return THISCALL_2(int, (UINT)&this->vTable[2], this, &msg); // call original message process
        //};

        
static int __fastcall CustomProcessMsg(H3DlgCustomControlItemcontrolint unusedH3Msgmsg)
        {
           if (
control->linkedItem// can add some more checks if needed
               
return THISCALL_2(int, (UINT)&control->linkedItem->vTable[2], control->linkedItemmsg);
           return 
2// stop processing the current msg
           // return THISCALL_2(int, /*insert_original_address*/, control, &msg); // call original message process
        
}

        
// constructor 
        
H3DlgCustomControlItem()
        {
            
DwordAt(&this->vTable[0] +0x8) = (int)H3DlgCustomControlItem::CustomProcessMsg;

        }

        static 
H3DlgCustomControlItemCreate(INT32 xINT32 yINT32 widthINT32 heightINT32 idH3DlgItemlinkedControl);
    }; 



RE: Плагины. Обсуждение - Panda - 29.05.2021 00:32

Raistlin, нет, не добавлял, тк на то время:
1. Не было стабильного кода плагина.
2. Димон задал правильный вопрос, и ответа на него на то время не было.
3. Не было времени для тестирования плагина, как функционала и корректности его работы, так и его стабильности.
Unsure


RE: Плагины. Обсуждение - Raistlin - 29.05.2021 00:42

Ясно. На данный момент:
1. Все стабильно.
2. Я проверил, проблемы нет, и ответ на вопрос уже дан.
3. Протестировал всеми способами, плагин работает.


RE: Плагины. Обсуждение - Panda - 29.05.2021 07:38

Raistlin, ок, спасибо, но тк в моем моде есть скрипт, который меняет поведение двери измерений для ИИ, это всё надо тестировать, времени у меня сейчас на это нет, как и на сборки. Unsure


RE: Плагины. Обсуждение - Raistlin - 29.05.2021 17:05

Когда будет, тогда будет - главное, что ты знаешь. Ab Спасибо! 132


RE: Плагины. Обсуждение - Archer30 - 13.06.2021 12:02

Hi igrik! A request from a mod maker for WoG Native Dialogs.

Is it possible to improve the behaviour of experience ability dialogue?

When try to disable the 6th ability of Archer

Without WND:
Image: sqwI46C.png

With WND:
Image: e8QmTOQ.png

Code:
ZVSE2
!#EA(MON_ARCHER):B6/0//////////////;

Difference:
1. When there is a vacancy in the experience ability list, the game without WND will display the rest of the abilities. However, with WND, the rest of the abilities would be hidden. Reduce Def. is hidden in this case.
2. Moving the cursor in the vacancy (red square) result in a crash with WND, while there is no crash without WND.

Currently, it is required to rearrange all the slots when disabling abilities, which requires much more script. Rolleyes

Could you help with this?


RE: Плагины. Обсуждение - igrik - 13.06.2021 13:19

Thanks. It will be fixed soon.


RE: Плагины. Обсуждение - daemon_n - 14.06.2021 23:26

Не нашёл нужной темы.

igrik, предлагаю в багофиксы добавить отображение факта колдовства заклинаний "Берсерк", "Устранение преград", "Телепорт" и "Клон" в лог боя. Оказывается, это не попадает туда148

То же касается площадных заклинаний урона, если они не нанесли урон.

P.S: сообщение может быть дополнено, так как проверяю все заклинания всё проверил

Ну и совсем "крутой чит" получился бы, если было написано, какому именно целевому заклинанию сопротивлялся тот или иной юнит, хотя это уже на личное усмотрениеYes


RE: Плагины. Обсуждение - Archer30 - 16.06.2021 04:39

Thanks igrik Yes

I'd like to propose an idea of fixing the invi WoG Option save/load dialogue (with OpenGL enabled)

As I understand, it takes a lot of time to rewrite the explorer-like dialogue. How about using IF:D E style dialogue instead?

Image: HN4eU0s.png

The directory would be set to the root folder of ERA. A player can enter a name here, then name.dat from root would be saved/loaded. If nothing's entered, then the file name from wog.ini would be used.

Check the text "<Graphics.Mode> = 7" or "<Graphics.Mode> = 6" from ...\_HD3_Data\Settings\era.ini to get whether HD runs in OpenGL mode


RE: Плагины. Обсуждение - Archer30 - 15.07.2021 13:58

Raistlin, hi!

Can I suggest for your plugin ArenaFix please?
It works great. But the part it restrains primary skills doesn't seem to be necessary when Prima is loaded.
A typical scenario is that after visitng any arena, the improved primary skill with 99+ would be reset to 99.

Could you make a compatible version with Prima please? Thank you 4


RE: Плагины. Обсуждение - Archer30 - 04.08.2021 13:03

XEPOMAHT, I'm looking for help with two reports about the plugin Prima

1. Blue heroes with high primary skills froze on turn end
Astral and Solmyr. These two heroes are with 130+ primary skills, and for that reason, the game froze on blue's turn. The issue can be temporary resolved by reduing the primary skills of these two heroes.

2. Ciele reached 240+ primary skills in a sudden
Unfortunely, I can't find a particular event triggering this problem. The save game were retrieved from the player before and after the issue happend.
it's not the first time I hear about a hero suddenly gains massive primarmy skills in a sudden. Perhaps somethings happening with the code?4

Download save games + debug folders

Note: The savegame of the 2nd report requires TUM to load


RE: Плагины. Обсуждение - XEPOMAHT - 04.08.2021 14:08

(04.08.2021 13:03)Archer30 Wrote:  1. Blue heroes with high primary skills froze on turn end
Astral and Solmyr. These two heroes are with 130+ primary skills, and for that reason, the game froze on blue's turn. The issue can be temporary resolved by reduing the primary skills of these two heroes.

У меня сохранения от этой игры не загружаются, т.к. в ERA+ изменённый формат сохранений. Наберите чит гоусоло и проследите конкретное место в игре, на котором зависает игра.

(04.08.2021 13:03)Archer30 Wrote:  2. Ciele reached 240+ primary skills in a sudden
Unfortunely, I can't find a particular event triggering this problem. The save game were retrieved from the player before and after the issue happend.
it's not the first time I hear about a hero suddenly gains massive primarmy skills in a sudden. Perhaps somethings happening with the code?4

Код игры Прима не изменяет - фактически это бинарный патч. Меняются только сами ограничители первичных навыков и тип чтения со знакового на беззнаковое. У Вас используются неизвестные мне плагины, которые могут менять значения первичных навыков (например, Маячок в своей реализации комбо-артефактов меняет их как ему заблагорассудится, что может вызывать плохую совместимость с Примой).

Допустимый диапазон первичных навыков с плагином Прима = -16..+239. Если какой-нибудь скрипт или пользовательский артефакт из TUM опустит значение ниже минус 16, то оно автоматически уйдёт в плюс. Прима поддерживает только стандартные артефакты от SoD/ERA+, которыми нельзя опустить первичные навыки ниже минус 16.


RE: Плагины. Обсуждение - Archer30 - 06.08.2021 14:20

Quote:У меня сохранения от этой игры не загружаются, т.к. в ERA+ изменённый формат сохранений. Наберите чит гоусоло и проследите конкретное место в игре, на котором зависает игра.
That surprises me. The savegame works for clean ERA Rolleyes Does ERA+ and ERA now have different formats of save?
It's quite obvious. The save froze on blue. And after reducing prima skills of two heroes, issue resovled.

Quote:Допустимый диапазон первичных навыков с плагином Прима = -16..+239.
I completely get your idea of the supporting range of Prima. From the save game I have, I don't see any event results in -16 primary skills for a hero. I will try to collect more info on this Yes


RE: Плагины. Обсуждение - XEPOMAHT - 06.08.2021 15:01

(06.08.2021 14:20)Archer30 Wrote:  Does ERA+ and ERA now have different formats of save?

Не должно работать. Сохранения, сделанные в чистой ERA, не грузятся в ERA+, и наоборот. Даже между ERA+ версий 3.4.3 и 3.4.4 сохранения полностью несовместимы (т.к. добавлена поддержка новых заклинаний и вторичных навыков, соответственно, порядок данных в сохранениях уже немного другой, возможно, что мне придётся добавить небольшой патч, чтобы пользователи не могли загружать сохранения старых версий).

(06.08.2021 14:20)Archer30 Wrote:  I completely get your idea of the supporting range of Prima. From the save game I have, I don't see any event results in -16 primary skills for a hero. I will try to collect more info on this Yes

Хорошо, буду ждать результата расследования, и если вина Примы подтвердится, я буду пытаться найти и исправить ошибку.


RE: Плагины. Обсуждение - Archer30 - 11.08.2021 18:43

XEPOMAHT,

the issues I reported about having 250+ primary skills in the early stage of the game has been sorted out. The source is from "some other plugin". So far there is no confirmed report with Prima 132


RE: Плагины. Обсуждение - Bes - 09.10.2021 06:35

странное отображение в окне расширенных способностей монстра
смотрю в окне героя статистику отряда - появляется скобка в поле "смертельный удар"
Image: db1c08e6a072.png

открываю этот же отряд, но уже в бою - скобки никакой нет
Image: 580a40aac972.png

Code:
ERA3.8
wog native dialogs.cpp    130 893    18.06.2020 02:15    -a--
wog native dialogs.map    82 090    18.06.2020 02:15    -a--



RE: Плагины. Обсуждение - igrik - 14.10.2021 13:39

Bes, а как выглядит данное окно без WND?


RE: Плагины. Обсуждение - Bes - 14.10.2021 14:15

прости, не догадался отключить для теста... попробую найти сэйв или смоделирую схожее положение, тогда и отпишусь Sorry


RE: Плагины. Обсуждение - Bes - 14.10.2021 17:55

хм, нашёл сэйв...
короче, странное творится.
зашёл в игру, смотрю статистику - пусто
вышел, зашёл - там теперь символ ǂ
вышел,зашёл - пусто
вышел, зашёл - там , (запятая)
вышел,зашёл - пусто
вышел, зашёл - там - (дефис)
вышел, зашёл - там ; (точка с запятой)
короче, понятно, что плавающмй символ подставляется периодически.
ЗЫ всё, относительно описанного ранее пункта "Смерт.Удар (Click to View)

Отключил WND, ничего в этом поле нет, перегружал игру несколько раз
Image: ef2150c4cf7e.png

как-то так Bad

Upd. ради любопытства продолжил рестарты игры... 5 раз в поле было пусто, потом вылезла буква i
сразу запустил бой - в поле уже пусто. Кодом побеждаю бой, смотрю статистику отряда - всё та же i
Вновь напал (осада) - смотрю статистику отряда - там теперь символ [ (Click to View)



RE: Плагины. Обсуждение - igrik - 15.10.2021 07:06

Bes, похоже на то, что это баг оригинального движка WOG при сборе данной строки. Причем он проявляется, видимо, при определённых обстоятельствах.
Можно мне как-то увидеть линию настройки опыта данного существа (именно данной строки на ERM или в TXT)? Если у тебя есть возможность - скинь её сюда.


RE: Плагины. Обсуждение - Bes - 15.10.2021 16:00

а в каком тхт-файле это будет? или смотреть в скриптах?


RE: Плагины. Обсуждение - igrik - 15.10.2021 17:20

Точно не скажу где именно лежит эта способность. Нужно уточнять у Raistlin по всей видимости.


RE: Плагины. Обсуждение - Raistlin - 21.10.2021 18:33

Кто поставил хук в 46A17D???


RE: Плагины. Обсуждение - Bes - 21.10.2021 19:10

Raistlin, слишком размыто описал претензию...
напиши чутка детальнее - версия игры, какие настройки модов, какая проблема у тебя, что указала на такое заключение?


RE: Плагины. Обсуждение - igrik - 21.10.2021 20:13

Raistlin, в моей версии игры этого хука нет, а значит HD, ERA и все мои плагины хук по этому адресу не ставят.


RE: Плагины. Обсуждение - Raistlin - 21.10.2021 21:13

Хук был у меня в WoG Ultra Edition. Прошу прощения, что написал тут - это все было от полной безысходности. Сейчас я поотключал целую кучу всего, и хука больше нет, однако на такое заключение указывал мой отладчик, показывавший, что по этому адресу прописан jump куда-то в неизвестную точку... Странная ситуация, стоила мне кучи нервов... Пробую повторить и разобраться, в чем там дело. Спасибо за внимание и участие Sorry


RE: Плагины. Обсуждение - SergOz - 01.11.2021 16:30

(01.11.2021 11:45)daemon_n Wrote:  Обновление ERA 3 Лаунчер-издания:
[+] Обновлён плагин "BattleSave.dll" - спасибо igrik;
Подскажите, пожалуйста, где отдельно можно скачать обновлённый плагин?


RE: Плагины. Обсуждение - daemon_n - 01.11.2021 21:02

SergOz, я думаю, я ошибся, и плагин тот же, но в Дискорде скинул


RE: Плагины. Обсуждение - igrik - 03.11.2021 16:02

(13.06.2021 12:02)Archer30 Wrote:  Hi igrik! A request from a mod maker for WoG Native Dialogs.

Is it possible to improve the behaviour of experience ability dialogue?

When try to disable the 6th ability of Archer

Without WND:
Image: sqwI46C.png

With WND:
Image: e8QmTOQ.png

Code:
ZVSE2
!#EA(MON_ARCHER):B6/0//////////////;

Difference:
1. When there is a vacancy in the experience ability list, the game without WND will display the rest of the abilities. However, with WND, the rest of the abilities would be hidden. Reduce Def. is hidden in this case.
2. Moving the cursor in the vacancy (red square) result in a crash with WND, while there is no crash without WND.

Currently, it is required to rearrange all the slots when disabling abilities, which requires much more script. Rolleyes

Could you help with this?

Fixed! 115

Image: Screenshot-1.png


RE: Плагины. Обсуждение - Bes - 03.11.2021 16:53

igrik, 177 спасибо


RE: Плагины. Обсуждение - Archer30 - 03.11.2021 23:38

igrik, can't thank you enough for this 71


RE: Плагины. Обсуждение - Bes - 04.11.2021 02:50

Вот, для сравнения, с учётом последних обновлений плагина WND
картинка из WoG/TE (Click to View)
та же, но из ERA3 (Click to View)



RE: Плагины - komrad.kazackoff - 14.11.2021 10:05

XEPOMAHT Привет подскажи плагин Увеличение лимита первичных навыков с 99 до 249 в SoD, HotA как установить


RE: Плагины - XEPOMAHT - 14.11.2021 13:41

(14.11.2021 10:05)komrad.kazackoff Wrote:  Увеличение лимита первичных навыков с 99 до 249 в SoD, HotA как установить

Просто копируешь в папку с игрой (версия игры должна быть обязательно 3.2, если поставишь на какой-нибудь Комплит, работать не будет): https://vk.com/doc-118013293_620137228


RE: Плагины. Обсуждение - komrad.kazackoff - 14.11.2021 15:02

XEPOMAHT Спасибо, но у меня к сожелению Комплит.


RE: Плагины. Обсуждение - Raistlin - 11.12.2021 11:29

Привет, у меня возникла идейка, но я не знаю, каким образом ее можно реализовать. Можете подсказать пожалуйста?


Я хочу написать отключалку патчей НD-мода, но не знаю, как отключить патч 148 Сначала я думал, что метод UndoAllAt на это способен, но оказалось, что он работает только с текущим экземпляром PatcherInstance.


RE: Плагины. Обсуждение - XEPOMAHT - 11.12.2021 12:06

(11.12.2021 11:29)Raistlin Wrote:  Я хочу написать отключалку патчей НD-мода, но не знаю, как отключить патч 148 Сначала я думал, что метод UndoAllAt на это способен, но оказалось, что он работает только с текущим экземпляром PatcherInstance.

Там только на низком уровне можно (в Тифоне я просто восстанавливаю затёртый патчером код игры там где нужно в рамках ERA+ обычным бинарным патчем как для HD-мода, так и для era.dll), но за подобное надругательство над патчером ни Бараторч, ни Берсеркер не скажут спасибо. На высоком затирать перехваты патчера - вряд ли можно, т.к. хитрый патчер всегда ответит кукишем на подобные вандальные действия. Поэтому я не хочу использовать патчер, т.к. он ограничивает свободу в кодинге игры.

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


RE: Плагины. Обсуждение - Berserker - 11.12.2021 13:03

Raistlin,

Code:
    ///////////////////////////////////////////////////
    // Метод GetInstance
    // Возвращает экземпляр TPatcherInstance
    // с именем owner.
    // в качестве аргумента можно передавать имя модуля.
    // метод возвращает nil в случае, если
    // экземпляр с именем owner не существует (не был создан)
    // Используется для :
    // - проверки активен ли некоторый мод, использующий patcher_x86.dll
    // - получения доступа ко всем патчам и хукам
    //    некоторого мода, использующего patcher_x86.dll
       function GetInstance(owner_name: PAnsiChar): TPatcherInstance; virtual; stdcall; abstract;



RE: Плагины. Обсуждение - Raistlin - 12.12.2021 11:07

Спасибо большое! У меня все получилось - как оказалось, все-таки существует глобальное затирание, но я просто не знал, как его использовать: надо было обращаться к объекту класса GlobalPatcher, а не PatcherInstance. Когда я сделал это, чтобы воспользовать функцией GetInstance, я увидел глобально работающую функцию UndoAllAt.


RE: WoG Ultra Edition v2.5.3 Rus/Eng - XEPOMAHT - 20.01.2022 11:48

(20.01.2022 09:35)igrik Wrote:  
(20.01.2022 07:18)XEPOMAHT Wrote:  Ага, при этом получится та же история, что и с game bug fixes от igrik/Ben/RK - несовместимость с ERA+.
Дай мне список того, что конфликтует в плагине с ERA+, я запилю совместимость.

1. Конфликт с ненавистью монстров - Тифон подменяет адрес кейса на монстров, а game bug fixes extended ставит хук, полностью игнорируя содовскую адресацию кейса, в итоге, ненависти из Тифона не будут работать. Ну это я могу исправить сам в Тифоне, уничтожив соотвествующий хук game bug fixes extended, но для совместимости со старыми версиями Тифона лучше было бы, чтобы хук отменялся в самом game bug fixes extended.

2. Так делать не надо:

Code:
if ( heroID < 0 && heroID > 155 )
        return 0; // выход, если номер героя неправильный

Если номер героя неправильный, игра вылетит намного раньше.

3. Запреты заклов уже исправлены в Тифоне, там же их количество увеличено до 95. Поэтому функции, адресующиеся к o_GameMgr->disabled_spells всегда будут попадать в молоко, т.к. эти таблицы в ERA+ перемещены в память Тифона бинарным патчем, а сам UN:J Тифон вовсе выключает, т.е. функции Игрика Y_ArtGive_Spell, Y_ArtGive_LoadSpells и Y_ArtGive_AllSpells могут приводить к ошибкам в игре. Ну а если кто-то попытается адаптировать плагин Алекса под Эру на новые заклы... там совместимость вообще нулевая.

4. Исходник RK primary skill overflow.cpp должен быть выключен целиком, т.к. он конфликтует и с Тифоном, и с Примой, входящей в сборки Демона.


RE: WoG Ultra Edition v2.5.3 Rus/Eng - igrik - 20.01.2022 12:04

XEPOMAHT, хорошо. Сегодня вечером сделаю:
1. Сделаю проверку на Тифон, если Тифон включен - данный хук НЕ будет устанавливаться вообще.
2. Это то понятно. Просто я давно не лез в этот участок кода. Сделаю проверку на максимальный номер героя
3. Сделаю проверку на Тифон, если Тифон включен - данный хук НЕ будет устанавливаться вообще.
4. Этого кода никогда не было в плагине: исходник лежит чисто для информации, но код не используется и никогда не использовался.


RE: WoG Ultra Edition v2.5.3 Rus/Eng - XEPOMAHT - 20.01.2022 12:33

(20.01.2022 12:01)Raistlin Wrote:я выкладывал плагин, позволяющий убирать хуки, поставленные патчером, с помощью патчера - может быть, попробуешь добавить его в ERA+? Несовместимостей с ним быть не может, а для использования достаточно просто записать адреса в конфиге, и хуки будут убраны.

Мне был бы полезен этот плагин для отмены феаноровских хуков, но я не знаю как им пользоваться. Нужна хотя бы короткая инструкция.

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

(20.01.2022 12:04)igrik Wrote:  Сделаю проверку на Тифон, если Тифон включен - данный хук НЕ будет устанавливаться вообще.

Ок, буду ждать результата. Надеюсь, проверка будет не по имени dll (т.к. Берсеркер в своём релизе Тифона переименовывал dll, если скляроз не изменяет).


RE: WoG Ultra Edition v2.5.3 Rus/Eng - Raistlin - 20.01.2022 14:43

XEPOMAHT, помимо самого плагина есть конфиг, где нужно в первой строчке указать количество убираемых патчей и хуков, а затем просто перечислить все адреса, откуда нужно что-то убрать. Единственное, писать адреса надо в десятичной, а не шестнадцатиричной системе счисления.


RE: WoG Ultra Edition v2.5.3 Rus/Eng - igrik - 20.01.2022 16:09

Если по имени файла я не могу гарантированно узнать есть ли Тифон, или нет - то объясни мне как мне сделать проверку на наличие Тифона.
(20.01.2022 12:33)XEPOMAHT Wrote:  Ок, буду ждать результата.
Сделано. Плагин лежит на гите.


RE: WoG Ultra Edition v2.5.3 Rus/Eng - XEPOMAHT - 20.01.2022 16:56

(20.01.2022 16:09)igrik Wrote:  Если по имени файла я не могу гарантированно узнать есть ли Тифон, или нет - то объясни мне как мне сделать проверку на наличие Тифона.

Для таблицы ненависти - проверять, была ли перенесена структура монстров - вызов GameExt.GetRealAddr(7D0C90h). Если функция выдаст 7D0C90h, значит плагинов на новых монстров нет.

По запретам заклов - проверять конкретно ЭРУ+, т.е. вызовы GameExt.PluginExists('typhon.dll') и функция узнавания версии загруженной dll (ReportPluginVersion в Эре наверное), если 3 и выше, знатит это Тифон от ЭРА+.


(20.01.2022 16:09)igrik Wrote:  Сделано. Плагин лежит на гите.

Спасибо. Протестировал - работает вроде без глюков.


RE: Плагины. Обсуждение - imswear - 26.01.2022 04:59

I just learned to make simple DLL
But it has to be loaded in the HD launcher to work.
As far as I know, in ERA, the DLL file will take effect automatically when it is placed in the MOD folder.
How to achieve this?
There may already be information on this, can you give me a link.
grateful


RE: Плагины. Обсуждение - XEPOMAHT - 26.01.2022 07:04

(26.01.2022 04:59)imswear Wrote:  I just learned to make simple DLL
But it has to be loaded in the HD launcher to work.
As far as I know, in ERA, the DLL file will take effect automatically when it is placed in the MOD folder.
How to achieve this?
There may already be information on this, can you give me a link.
grateful

папка EraPlugins в директории с игрой.


RE: Плагины. Обсуждение - Berserker - 26.01.2022 14:31

imswear, Mods\ModName\EraPlugins or Heroes 3\EraPlugins


RE: Плагины. Обсуждение - imswear - 28.01.2022 04:31

grateful.
But I'm sorry, it didn't work in the Mods\ModName\EraPlugins.
code show as below:
105105:对不起::对不起:


RE: Плагины. Обсуждение - igrik - 28.01.2022 06:30

My congratulations!
Tip: learn to use H3API (examples)

H3API Theme


RE: Эра, дополнения, плагины, заплатки, моды - daemon_n - 09.02.2022 16:15

У меня вопрос насчёт erm_hooker.era:
верно ли он возвращает esp?
алгоритм моих действий:

Смотрю адрес в IDA
Вижу [esp+10h] [ebp-4h]
Пробую через esp - фигня
Пробую через ebp - работает славно.

Дело в хукере, или сама игра так себя ведёт?


RE: Эра, дополнения, плагины, заплатки, моды - Berserker - 09.02.2022 20:50

Ты не забывай, что esp пляшет. Вызов обработчика, вызов ЕРМ обработчика…ESP уже отличается кардинально, весь любой вызов использует стек. А вот ebp сохранил значение esp, по нему и нужно ориентироваться. И только по нему!


RE: Эра, дополнения, плагины, заплатки, моды - daemon_n - 09.02.2022 22:03

Berserker, хмм, точно, вершина же. Ещё одна шишка, подарившая опыт166


RE: Плагины. Обсуждение - Archer30 - 29.03.2022 07:43

XEPOMAHT, hi! It looks like Prima.dll leaves the artifact Wizard's Wella bit awkward. The artifact restores only a max of 1980 mana per turn (equals to 99 knowledge / expert Intelligence) instead of refilling all the mana when the hero has a higher knowledge (100 ~ 127). When the hero has a knowledge more than 127, the max mana restored each turn would be reduced to 20 (expert Intelligence).

Would you like to fix that from Prima?
It's a matter of 5 lines fixing by erm though Rolleyes


RE: Плагины. Обсуждение - XEPOMAHT - 29.03.2022 09:36

(29.03.2022 07:43)Archer30 Wrote:  Would you like to fix that from Prima?

Исправлено: https://vk.com/s/v1/doc/DnAJLSo38aYB0L_AoPpgz2DHACQqNLXixzh2N6wVWpwh8UzpjvM

По части кода данного артефакта, он был запрограммирован людьми, пришедшими на смену в команду программистов NWC после скандала с Форджем, поэтому код отличается от типичного кода Третьих Героев и поэтому не был сразу обнаружен в отладчике. Сейчас данный участок кода найден и пропатчен. Спасибо Archer30.


RE: Плагины. Обсуждение - Archer30 - 29.03.2022 10:40

XEPOMAHT, and thank you for your fix 132


RE: Плагины. Обсуждение - XEPOMAHT - 20.07.2022 02:02

(19.07.2022 22:41)daemon_n Wrote:  Быстрая смена артефактов для диалога героя и встречи

Автор: daemon_n (при неоценимой помощи RoseKavalier), но наработал я сам куда больше в этот раз Spiteful
Идея: Baratorch
Язык: не имеет значения
Поддерживаемые версии: ERA, (возможно SoD - не проверял)

Обязательное требование для данной dll - наличие в виндовозе Microsoft Visual C++ 2015. Хотя сам плагин функционал Microsoft Visual C++ 2015 скорее всего не использует. В итоге - нулевая совместимость с Windows XP и 2003 и фатал эррор в era.dll... Fie

Image: image.png

Да, можно сказать, что старые виндовозы - дремучее старьё, но всё же считаю, что на системах, где работают оригинальные Герои 3 и ЭРА, должны работать и плагины к ним.


RE: Плагины. Обсуждение - daemon_n - 20.07.2022 02:08

XEPOMAHT, а вот нет – ещё как использует.
Дело в том, что я делал плагин из статической библиотеки H3API, что не позволило выставить параметр "MFC в статической библиотеке". Поэтому плагин требует MSVCR 2015x86
Либо поставь библиотеку, либо я позднее перекомпилирую, чтобы плагин имел всю MFC библиотеку в себе, но тогда размер плагина будет раза в 2,5-3 больше


RE: Плагины. Обсуждение - XEPOMAHT - 20.07.2022 02:27

(20.07.2022 02:08)daemon_n Wrote:  Либо поставь библиотеку, либо я позднее перекомпилирую, чтобы плагин имел всю MFC библиотеку в себе, но тогда размер плагина будет раза в 2,5-3 больше

Ну сами майкрософты говорят о том, что ставить её на старые виндовозы уже нельзя, минимальная версия ОС - Висла: https://docs.microsoft.com/ru-ru/cpp/windows/latest-supported-vc-redist?view=msvc-170

Ладно, не критично. Просто хотел проверить на совместимость с ERA+.


RE: Плагины. Обсуждение - daemon_n - 20.07.2022 02:30

XEPOMAHT, скачай просто dllи положи в папку с игрой. Устанавливать даже не надо. Msvcr140.dll, если не ошибаюсь


RE: Плагины. Обсуждение - XEPOMAHT - 20.07.2022 02:51

(20.07.2022 02:30)daemon_n Wrote:  скачай просто dllи положи в папку с игрой. Устанавливать даже не надо. Msvcr140.dll, если не ошибаюсь

Не получится, т.к. она за собой ещё плеяду библиотек требует, например сейчас хочет VCRUNTIME140.dll, потом - CONCRT140.dll и MSVCP140.dll, искать и скачивать всё это барахло я не хочу. Лучше подожду версии твоего плагина, где MFC библиотека будет уже внутри твоего dll.


RE: Плагины. Обсуждение - daemon_n - 20.07.2022 02:57

XEPOMAHT, часов через 13 где-то.


RE: Плагины. Обсуждение - Panda - 20.07.2022 04:07

daemon_n, я так полагаю, что плагин на прокрутку дополнительных навыков командира собран "по такой же схеме" и требует С++ 2015 версии или выше?


RE: Плагины. Обсуждение - daemon_n - 20.07.2022 06:59

Panda, нет, не требует. В этот раз я попробовал новое и скомпилировал статическую библиотеку H3API, с которой намучился)), однако все предыдущие плагины я делал с MFC, так как использую современную студию


RE: Плагины. Обсуждение - daemon_n - 20.07.2022 15:10

XEPOMAHT, держи

в пост тоже добавил


RE: Плагины. Обсуждение - XEPOMAHT - 20.07.2022 16:11

(20.07.2022 15:10)daemon_n Wrote:  держи

в пост тоже добавил

Спасибо, работает. Проверил на ERA+. Но вместо звука по нажатию средней кнопкой мыши по артефакту, когда открывается окно выбора, слышны трески, скрипы и пиканья, как будто звук ещё не прогрузился, а твой плагин уже даёт команду на его воспроизведение (или адрес на звук неправильный и проигрывается мусор). Примерно после 3-5 нажатия уже начинает воспроизводится нормальный звук нажатия на кнопку.

А так шикарный плагин, спасибо. Ab


RE: Плагины. Обсуждение - daemon_n - 20.07.2022 16:29

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


RE: Плагины. Обсуждение - Berserker - 20.07.2022 19:35

daemon_n, плагин отличный, спасибо!


RE: Плагины. Обсуждение - daemon_n - 20.07.2022 21:56

XEPOMAHT, cделал иное воспроизведение звука - прошу проверить Скачать плагин
файл по основной ссылке заменил - будет версия только с msvcr внутри, но из статической библиотеки H3API - спасибо RoseKavalier Yes


RE: Плагины. Обсуждение - daemon_n - 24.07.2022 00:29

(11.07.2022 09:46)daemon_n Wrote:  Прокрутка вторичных навыков для диалога командира

Image: unknown.png
Image: image.png

Скачать плагин

Исходник



Плагин обновлён:
   - добавлены картинки-подсказки для командира в окне битвы;
   - исправлен краш при просмотре окна командира без хозяина в бою
   - исправлен баг WND: при просмотре окна командира без хозяина в бою задний фон существа и id командира не соответствовали отряду на поле боя


RE: Плагины. Обсуждение - igrik - 25.07.2022 02:12

(24.07.2022 00:29)daemon_n Wrote:     - исправлен краш при просмотре окна командира без хозяина в бою
   - исправлен баг WND: при просмотре окна командира без хозяина в бою задний фон существа и id командира не соответствовали отряду на поле боя
Эти 2 пункта мне нужно просто в WND исправить, чтобы не делать костыли. Код исправлений я могу в исходниках твоих увидеть?
Димон, и можешь мне сейв перед такой ситуаций сделать, чтобы я акцентировал своё внимание на самом исправлении, а не создании ситуации исправления.

Например, куда ставится этот хук?
Code:
int pluginHookAddress = wndPlugin.NeedleSearch<3>({0x3D,0x68,0x02 }, 15);



RE: Плагины. Обсуждение - komrad.kazackoff - 25.07.2022 12:36

daemon_n. Спасибо. Подскажи куда его установить.


RE: Плагины. Обсуждение - daemon_n - 25.07.2022 13:57

komrad.kazackoff, положить в папку eraplugins любого мода


RE: Плагины. Обсуждение - komrad.kazackoff - 25.07.2022 16:06

daemon_n. Спасибо.


RE: Плагины. Обсуждение - daemon_n - 07.09.2022 18:43

(07.09.2022 18:34)Berserker Wrote:  Не зачёт, пока не будет видно число погибших Yes

Идея хорошая - также планировал добавить разделение "текущее/максимальное здоровье", то есть ещё + 2 строки - сделаю под размер поля "морали-удачи"


RE: Плагины. Обсуждение - Berserker - 07.09.2022 18:55

Просто всегда проблема, кого воскрешать. В Фениксе на shift + ЛКМ было отображение. В диалоге будет лучше.


RE: Плагины. Обсуждение - igrik - 08.09.2022 02:41

(07.09.2022 16:45)daemon_n Wrote:  Очередное Расширенное окно информации об отряде на поле боя:

Ничёси! Крутой плагин! Давно он напрашивался 132


RE: Плагины. Обсуждение - XEPOMAHT - 08.09.2022 03:56

Да, нужный плагин, жаль текстовиков к нему не выложили, поделитесь, если они есть у кого. А так работает с ERA+ без вылетов.

Image: image.png


RE: Плагины. Обсуждение - daemon_n - 08.09.2022 04:42

XEPOMAHT, что значит "не выложили"?
Я же сказал, что всё в json


RE: Плагины. Обсуждение - daemon_n - 08.09.2022 04:53

Berserker, а где бы ты разместил блок с потерями отряда и здоровья?
У меня пока простая идея такая:
Блок с основными параметрами (4), далее мораль/удача(2), далее новые статусы (4), далее потери здоровья/числа существ(2). Хотя такая чехарда может крайне странно смотреться


RE: Плагины. Обсуждение - XEPOMAHT - 08.09.2022 05:06

(08.09.2022 04:42)daemon_n Wrote:  XEPOMAHT, что значит "не выложили"?
Я же сказал, что всё в json

Теперь понятно. А я пытался дописывать этот текст к существующему json и ЭРА ничего при этом его не увидела и ничего не сказала. И текст при этом не появлялся. Трудно работать с json. Sorry


RE: Плагины. Обсуждение - daemon_n - 08.09.2022 05:20

XEPOMAHT, можно и существующий json положить.
Главное, чтобы имена ключей были те же


RE: Плагины. Обсуждение - XEPOMAHT - 08.09.2022 05:33

(08.09.2022 05:20)daemon_n Wrote:  XEPOMAHT, можно и существующий json положить.
Главное, чтобы имена ключей были те же

И как это сделать? Вот существующий json из ERA+:

Code:
{"wnd":{"fonts":{"big_font":"bigfont2.fnt","med_font":"medfont2.fnt","small_font":"smalfont2.fnt"},"dlg_wog_options":{"intro_font":"bigfont2.fnt","bttn_name":"{WoG options}","use_json_strings":"no"}}}

Дописываю в конец текст из твоего json и движок ЭРЫ его просто игнорирует. Из отдельного json ЭРА текст видит. Из общего - почему-то нет. 105


RE: Плагины. Обсуждение - daemon_n - 08.09.2022 05:39

(07.09.2022 18:55)Berserker Wrote:  Просто всегда проблема, кого воскрешать. В Фениксе на shift + ЛКМ было отображение. В диалоге будет лучше.

Image: unknown.png

XEPOMAHT, тебе надо весь блок скопировать перед последней скобкой
Code:
{"wnd":
        {
            "fonts":
            {
               "big_font":"bigfont2.fnt",
               "med_font":"medfont2.fnt",
               "small_font":"smalfont2.fnt"
             },
             "dlg_wog_options":
               {
                 "intro_font":"bigfont2.fnt",
                  "bttn_name":"{WoG options}",
                  "use_json_strings":"no"
               }
          },

"gem_plugin":
    {
        "combat_dlg":
            {
                "enable":
                {
                    "popup":   "1",
                    "spells":   "1",
                }
                "0":   "Сост:",
                "1":   "Ответ:",
                "2":   "Встрл:",
                "3":   "Закл:",

                "active":   "активен",
                "wait":   "ожидает",
                "def":   "защита",
                "done":   "заверш",
            }
    }
}



RE: Плагины. Обсуждение - XEPOMAHT - 08.09.2022 05:58

(08.09.2022 05:39)daemon_n Wrote:  тебе надо весь блок скопировать перед последней скобкой

Спасибо. Теперь вот осталось как-то заставить json понимать кирилицу, т.к. опять стандартный виндовозный блокнот сохраняет так, что ЭРА потом видит пустоту. Что ж за формат такой поганый... Dash1

Image: image.jpg

Буду ждать ранее обещанный ini. Bad


RE: Плагины. Обсуждение - daemon_n - 08.09.2022 06:12

XEPOMAHT, ставь utf-8 , хотя не думаю, что дело в этом.
Вот уже есть локализованный json

XEPOMAHT, проверь чисто его.
Возможно, у тебя запятых где не хватает.
И используй notepad++ или sublime text,чтобы кодировку задавать


RE: Плагины. Обсуждение - XEPOMAHT - 08.09.2022 06:45

(08.09.2022 06:12)daemon_n Wrote:  XEPOMAHT, ставь utf-8 , хотя не думаю, что дело в этом.
Вот уже есть локализованный json

XEPOMAHT, проверь чисто его.

Проверил - текст появился. Но отредактировать его не могу - блокнот показывает кракозябры вместо текста. В самой игре русский текст выглядит криво, возможно что из-за шрифта. Хотел отредактировать текст, но увы: онлайн-конветером кирилицы конвертирую крокозябры обратно в кирилицу, сохраняю, в итоге текста опять нет. 105 Пробовал сохранять в Юникоде - тут уже сама ЭРА начинает ругаться на то, что не может понять юникодный json. В общем, с кирилицей в json у меня одни проблемы. Со стандартными геройскими текстовиками никогда такого геморроя не было - правятся любыми текстовыми редакторами и движок игры без проблем видит текст с установленными кирилическими шрифтами. А вот освоиться с json никак не получатся. 105

Image: image.png

(08.09.2022 06:12)daemon_n Wrote:  И используй notepad++ или sublime text,чтобы кодировку задавать

Хм, попробую старым воговским erm_s.exe текст в json поменять, возможно и прокатит. Т.к. искать и ставить дополнительный софт ради такой мелочи совершенно нет желания.


RE: Плагины. Обсуждение - daemon_n - 08.09.2022 07:03

XEPOMAHT, ЭРА ругается не на юникод, а на неправильный формат файла из-за запятых и скобок
В общем, мой вердикт, что у тебя эдитор не принимает utf-8, а с плагином и json всё нормально
В любом случае, я сейчас добавляю потери хп и юнитов - заодно ini добавлю


RE: Плагины. Обсуждение - Berserker - 08.09.2022 07:17

XEPOMAHT, ну ты даёшь ) В наше время всё на UTF-8, а ты всё ещё в эпохе блокнота с кодовыми страницами.
И json завоевал гигантскую нишу как универсальный формат для обмена данными.

UltraEdit, Notepad++. Поставь любой редактор, что умеет сохранять в UTF-8. Не двух или 4-х байтовый Юникод, а UTF-8. Этот формат без правок понимает латиницу, а все остальные символы кодируются переменными цепочками байт со значением > 127.


RE: Плагины. Обсуждение - igrik - 08.09.2022 07:19

Вы всё время забываете одну маленькую мелочь - у человека Win 2003, и эти проги туды не встанут никак...


RE: Плагины. Обсуждение - daemon_n - 08.09.2022 07:41

Старые версии программ однозначно есть под эту win


RE: Плагины. Обсуждение - Berserker - 08.09.2022 07:51

UltraEdit я сто лет назад использовал, Notepad++ тоже можно найти.

Notepad++
https://dropmefiles.com/Wg1aO


RE: Плагины. Обсуждение - XEPOMAHT - 08.09.2022 07:56

(08.09.2022 07:03)daemon_n Wrote:  В любом случае, я сейчас добавляю потери хп и юнитов - заодно ini добавлю

Ок, жду обновления твоего плагина.

(08.09.2022 07:17)Berserker Wrote:  В наше время всё на UTF-8, а ты всё ещё в эпохе блокнота с кодовыми страницами.

Увы, новый ПК купить долго не смогу. И так в последнее время залез в долги, на ребёнка просто тонна денег уходит, всякие безконечные кружки, логопеды, подарки, платы в детсаде... Ещё жена хочет, чтобы я искал более высокооплачиваемую работу, но тогда моддингу придётся сказать прощай...

(08.09.2022 07:17)Berserker Wrote:  И json завоевал гигантскую нишу как универсальный формат для обмена данными.

В этом формате слишком много фигурных скобочек и запятых, в которых я путаюсь всё время: где они должны открываться/закрываться, по какому принципу вообще проставляются запятые - интуитивно не понятно, вообще удивительно, что json имеет преимущества в плане понятности человеку, не связанному с программированием, перед обычным массивом строк в txt/ini (или может я слишком привык к txt и мне уже сложно перестроиться под новые текстовые форматы).

(08.09.2022 07:19)igrik Wrote:  Вы всё время забываете одну маленькую мелочь - у человека Win 2003, и эти проги туды не встанут никак...

Да, спасибо igrik за поддержку. По-прежнему ещё остаются люди, пользующиеся старыми виндовозами (лично мне Windows 2003 очень нравится в плане минимализма и скорости работы на старых ПК), да, приходится использовать и старый софт при этом, прося всех кого возможно о сохранении совместимости с Windows 2003 (слава богу, что в HD-моде и в самой ЭРЕ совместимость пока сохраняется 119 ).

(08.09.2022 07:51)Berserker Wrote:  UltraEdit я сто лет назад использовал, Notepad++ тоже можно найти.

Notepad++
https://dropmefiles.com/Wg1aO

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


RE: Плагины. Обсуждение - wessonsm - 08.09.2022 09:26

Для старых корчей вроде есть win 8.1 embedded industry pro, сам пользуюсь и весьма доволен.
32-битная вообще как XP примерно по потреблению ресурсов, 300 метров памяти жрёть - это же вообще понты.


RE: Плагины. Обсуждение - Elmore - 08.09.2022 09:54

У Хероманта должны встать без проблем win7 и win10. Дело не в системнике, а в привычке 105


RE: Плагины. Обсуждение - Berserker - 08.09.2022 11:25

Quote:win 8.1 embedded industry pro
Первый раз слышу про такую В чём отличие от просто Win 8 Professional?


RE: Плагины. Обсуждение - wessonsm - 08.09.2022 11:44

Berserker, ну в общем это как 10-ка LTSC, для банкоматов версия.
Вырезаны все "Modern"-приложения. Ну кроме самых необходимых.
Как следствие - нормальный "калькулятор" (как в 7-ке) и нормальный просмотрщик картинок (тоже как в 7-ке).
В обычной win 8.1 - новомодные полноэкранные версии, которыми пользоваться невозможно.

А в целом, 8.1 как 8.1, работает так же, я думаю отличий немного.


RE: Плагины. Обсуждение - Berserker - 08.09.2022 12:36

Можно будет попробовать, спасибо.


RE: Плагины. Обсуждение - daemon_n - 08.09.2022 13:47

Плагин обновил
- с ini так и не справился - не получается открыть их - видимо, что-то не так делаю

Добавлены строки с потерями хитов и юнитов
исправлен краш при попытке открыть окно опыта вне боя
добавил ру тексты к исходникам
Image: sample.png?raw=true


RE: Плагины. Обсуждение - Berserker - 08.09.2022 14:03

Losses тоже с большой можно. Спасибо огромное. Я бы ещё потери слегка красным выделил. То есть вместо 3 выводить {~red}3{~}.


RE: Плагины. Обсуждение - daemon_n - 08.09.2022 17:15

Berserker, красный смотрится ужасноFie


RE: Плагины. Обсуждение - Berserker - 08.09.2022 19:25

Да ну, а светло розовый пробовал? FFE5E3, скажем.


RE: Плагины. Обсуждение - daemon_n - 09.09.2022 01:28

Berserker, на данном фоне и с таким шрифтом любой цвет смотрится неказисто


RE: Плагины. Обсуждение - Berserker - 09.09.2022 09:35

Даже слегка золотистый?


RE: Плагины. Обсуждение - daemon_n - 09.09.2022 10:03

Berserker, да - тоже о нём подумал, когда проверял - только изменение шрифта поможет


RE: Плагины. Обсуждение - Archer30 - 02.10.2022 03:34

Hi XEPOHAMT, I want to report an issue of Prima, it looks like this plugin results in the game stuck when AI heroes have a great amount of army. My guess is, this is because the total AI value of AI heroes becomes negative. The AI value calculation of H3 is something like this:

Quote:Total AI value of an AI hero = AI value of creature * creature quantity * AI hero's prima skills

With Prima, the AI heroes could reach very high primary skills. This makes the total AI value of AI hero overflow easily, which stuck the game instantly on making AI hero decision.

daemon_n found the function at 004E567C. This is the function for calculating AI hero's attack and defense coef for AI value. I changed the constant at 004E567C +1 from 250 back to 99 in the game, but the game still stuck, the issue was not resolved.

For the same save game, if I just disable Prima or set all the heroes with 99 primary skills, the issue could be resolved - this is the main reason I thought Prima was the one to blame 96-copy.

What do you think about this issue? Could you share your thought about this, and possibly some addresses you suggest to check so I test on my save, please?


RE: Плагины. Обсуждение - XEPOMAHT - 02.10.2022 14:31

(02.10.2022 03:34)Archer30 Wrote:  What do you think about this issue? Could you share your thought about this, and possibly some addresses you suggest to check so I test on my save, please?

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

Image: image.jpg

Игровые ситуации с миллионами Лазурных Драконов в армии ИИ без читов я получить не могу.


RE: Плагины. Обсуждение - Berserker - 02.10.2022 17:54

Там при перевыполнении ещё важно, что в итоге получается. Например, отрицательное или положительное число.


RE: Плагины. Обсуждение - daemon_n - 01.11.2022 05:13

(01.11.2022 02:39)Archer30 Wrote:  Reporting a critical bug of igrik's quest dialog plugin:

If you visits a Guard that only available to another player, for example, Green player visits a Gurard that can only be passed by Red, the Quest log is permernantly locked, resulting a CTD everytime clikcing on it.

Image: kcQf2iB.png

Save game for testing



RE: Плагины. Обсуждение - Archer30 - 04.11.2022 08:36

The problem I reported about igrik's Quest Log plugin was invalid. It was the problem of the buggy SeerHut.txt from ERA 3.


RE: Плагины. Обсуждение - major - 02.02.2023 05:55

Великая благодарность и восхищение, а также баг-репорт по плагину daemon_n.
1. Количество убитых у баллисты показывается не совсем нормальным числом.
2. Просьба атаку героя считать числом беззнаковым, дабы иметь совместимость с плагином, расширяющим первичные навыки до 249.

Image: 1010.jpg


RE: Плагины. Обсуждение - daemon_n - 02.02.2023 05:58

major, привет - спасибо за отзыв - скоро исправлю


RE: Плагины. Обсуждение - XEPOMAHT - 02.02.2023 22:43

Плагин Прима обновлён. Большая благодарность major за найденные адреса, которые автор плагина в спешке почему-то упустил.

Скачать: https://vk.com/s/v1/doc/SVs9LZuMZqraeicO4EKBdkycsCnUZ87UVAvK1OMOEMxedkVzH-k


RE: Плагины. Обсуждение - daemon_n - 03.02.2023 07:13

XEPOMAHT, так я не понял, проблема в чьём плагине-то:?


RE: Плагины. Обсуждение - XEPOMAHT - 03.02.2023 08:18

(03.02.2023 07:13)daemon_n Wrote:  так я не понял, проблема в чьём плагине-то:?

Наверное в new_battle_interface_dlg.dll. Совместимость с Примой проверять ещё нужно.


RE: Плагины. Обсуждение - daemon_n - 03.02.2023 18:06

major, готово - плагин исправлен -скоро будет на гите и в сборке;
XEPOMAHT, обе проблемы были у меня - а вот что исправил ты тогда?)))


RE: Плагины. Обсуждение - XEPOMAHT - 04.02.2023 09:44

(03.02.2023 18:06)daemon_n Wrote:  а вот что исправил ты тогда?)))

Неправильное отображение масимального урона выше атаки 127.


RE: Плагины. Обсуждение - daemon_n - 05.02.2023 00:23

XEPOMAHT, ну, у меня в плагине то же было насчёт самой атакиRolleyes


RE: Плагины. Обсуждение - major - 05.02.2023 02:07

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


RE: Плагины. Обсуждение - daemon_n - 05.02.2023 02:14

major, у меня не дело в атаке баллисты, а просто отображении по формуле 2-3 * атака героя +1;
на сам урон это не влияет.


RE: Плагины. Обсуждение - major - 05.02.2023 02:51

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


RE: Плагины. Обсуждение - major - 11.02.2023 19:35

Баг-репорт по плагину Spells Description.
При попытке поднять демонов из темных драконов получаем стабильный краш.

Code:
// получаем структуры активного и целевого стека
_BattleStack_* stack_active = (_BattleStack_*)c->ebx;
_BattleStack_* stack_target = o_BattleMgr->Get_Resurrect_BattleStack(side, gex_id, 1);

Если у цели иммунитет к воскрешению, то в структуру стека получаем тыкву. Надо проверить на воскрешение пит-лордами.

Code:
if (!stack_target)
stack_target = CALL_3(_BattleStack_*, __thiscall, 0x5A4150, o_BattleMgr, side, gex_id);



RE: Плагины. Обсуждение - igrik - 12.02.2023 03:32

Спасибо за багрепорт.
Исправлю - когда доберутся до кода руки. Постараюсь в течении следующей недели.


RE: Плагины. Обсуждение - igrik - 16.02.2023 07:52

(11.02.2023 19:35)major Wrote:  Баг-репорт по плагину Spells Description.
При попытке поднять демонов из темных драконов получаем стабильный краш.

Исправлено.
Оказывается из иммунных существ в оригинале можно призывать Демонов. Сделал так же.


RE: Плагины. Обсуждение - daemon_n - 07.03.2023 06:06

(02.02.2023 22:43)XEPOMAHT Wrote:  Плагин Прима обновлён. Большая благодарность major за найденные адреса, которые автор плагина в спешке почему-то упустил.

Скачать: https://vk.com/s/v1/doc/SVs9LZuMZqraeicO4EKBdkycsCnUZ87UVAvK1OMOEMxedkVzH-k


Плагин теперь позволяет иметь 0 силы магии и знания при надевании артефактов из сета титанов


RE: Плагины. Обсуждение - XEPOMAHT - 07.03.2023 10:32

(07.03.2023 06:06)daemon_n Wrote:  
(02.02.2023 22:43)XEPOMAHT Wrote:  Плагин Прима обновлён. Большая благодарность major за найденные адреса, которые автор плагина в спешке почему-то упустил.

Скачать: https://vk.com/s/v1/doc/SVs9LZuMZqraeicO4EKBdkycsCnUZ87UVAvK1OMOEMxedkVzH-k


Плагин теперь позволяет иметь 0 силы магии и знания при надевании артефактов из сета титанов

Да, и Прима тут ни при чём - в оригинале герои могут иметь и 0 и отрицательные значения магсилы и знания (можно выставлять в редакторе карт с патчем Кавалериста, необязательно надевать сеты титанов). Прима с самой первой версии показывает честное значение из структуры героя, т.к. проверка на 1 при показе просто не влезла в геройский код из-за особеностей проверки беззнаковых байтов (не хватает несчастного 1 байта, чтобы делать инкремент). Если нужно - могу добавить хуки и рисовать единицы вместо нулей, но на геймплей это никак не повлияет. Да и конкретных адресов у меня нет (Прима написана на декомпиляте из ollydbg, без использования IDA-базы, поэтому конретно патчит Прима, я сказать не могу). Если кто-нибудь найдёт адреса на окно в экране приключений, хинты на героев в нём, а так же на окна героя, обмена героя, обзора королевства и т.д, то можно добавить туда хуки - у меня нет возможности это найти и исправить, т.к. моя база разобрана довольно слабо, т.к. досталась она мне от WoG Team.


RE: Плагины. Обсуждение - wessonsm - 25.03.2023 14:16

Баг-репорт по плагину "BattleSpeed".
Если в диалоге настроек битвы нажать кнопку "По умолчанию", игра вылетает.

Насколько я понял, игра посылает команду SendCmd2Item несуществующему элементу диалога.


RE: Плагины. Обсуждение - XEPOMAHT - 25.03.2023 14:39

(25.03.2023 14:16)wessonsm Wrote:  Баг-репорт по плагину "BattleSpeed" (вроде бы).
Если в диалоге настроек битвы нажать кнопку "По умолчанию", игра вылетает.

По ID 230 в диалоге ничего нет. Т.е. по адресу 46F403h нужно проверять eax и если там 0, то функцию в 46F405h пропускать, т.к. она не работает с несуществующими в диалоге элементами и просто вылетает.

А если делать как положено, то там нужно узнать индексы, которые создаёт плагин BattleSpeed, и подставлять их в функцию сброса настроек по умолчанию вместо старых несуществующих.


RE: Плагины. Обсуждение - Archer30 - 13.06.2023 11:05

igrik, hi, could you share the source of the battlesave plugin, please? Ideally on your GitHub.

There are several problem I'd like have it fixed. Right at the momement the most serious problem is that when AI initiates an battle with a human player, the battle save would still work. When you load this battle save you would immediately being able to play as that AI player.


RE: Плагины. Обсуждение - igrik - 20.06.2023 17:39

(13.06.2023 11:05)Archer30 Wrote:  igrik, hi, could you share the source of the battlesave plugin, please? Ideally on your GitHub.

There are several problem I'd like have it fixed. Right at the momement the most serious problem is that when AI initiates an battle with a human player, the battle save would still work. When you load this battle save you would immediately being able to play as that AI player.
It is located there. Right here
But now the daemon_n is in charge of this plugin. He has already made edits to it.


(25.03.2023 14:16)wessonsm Wrote:  Баг-репорт по плагину "BattleSpeed" (вроде бы).
Если в диалоге настроек битвы нажать кнопку "По умолчанию", игра вылетает.

Насколько я понял, игра посылает команду SendCmd2Item несуществующему элементу диалога.
Спасибо за багрепорт.
Исправлю - когда доберутся до кода руки.


RE: Плагины. Обсуждение - igrik - 22.06.2023 06:55

BattleSpeed: исправил вылет по нажатию кнопки "по дефолту".
Обновление плагина лежит на гите (тут)


RE: Плагины. Обсуждение - daemon_n - 24.06.2023 14:25

battlesave plugin is fixed


RE: Плагины. Обсуждение - Archer30 - 25.06.2023 19:03

igrik, daemon_n, thanks!


RE: Плагины. Обсуждение - Archer30 - 27.07.2023 08:41

Hi igrik, I wonder if there is a way to redefine commanders' AI values in your plugin.

At the moment, I need to divide all the AI values by a number to prevent the game being stuck (This usually happens when playing some old maps with 32167 units in every slot). It can be easily done by scripts but for commanders, there seems to be no way. Ideally I'd hope commanders' AI values can be changed by scripts too.


RE: Плагины. Обсуждение - MOP - 02.09.2023 07:35

XEPOMAHT, что с адресом 432B11h в prima.dll? Почему-то не увеличен лимит.
Да, и... если код библиотеки представляет собой чистый бинарный патч - почему бы и не сделать его бинарным патчем, а не dll?


RE: Плагины. Обсуждение - XEPOMAHT - 02.09.2023 10:28

(02.09.2023 07:35)MOP Wrote:  что с адресом 432B11h в prima.dll? Почему-то не увеличен лимит.

Там какой-то слабопонятный рассчёт для ИИ, с вычетанием силы магии *25, поэтому рисковать не стал. Могу в понедельник попробовать увеличить этот лимит в prima.dll и выложить.

(02.09.2023 07:35)MOP Wrote:  Да, и... если код библиотеки представляет собой чистый бинарный патч - почему бы и не сделать его бинарным патчем, а не dll?

1. Вручную в шестнадцатеричном редакторе набирать более 400 бинарных патчей в bin-файл у меня может занять месяцы, т.к. ПО для конвертирования бинарного патча из ассемблерного кода у меня нет (и сомневаюсь, что оно у кого-то есть, т.к. это никому не нужно). Мне после 20 адреса уже надоест и я брошу это дело. Человеческий фактор.

2. Код prima.dll был просто скопирован с typhon.dll. И то потому что бы протестировать патч на первичные навыки вне ЭРЫ+, т.к. тестировать это в самой ЭРА+ никто бы не стал. В самой ЭРА+ все бинарные патчи я стараюсь встраивать в Тифон, т.к. это очень удобно (тот же патч на увеличение лимита героев в игре - тоже бинарный патч, но довольно объёмный, и даже был портирован в MoP, но тоже в виде dll, а не bin, т.к. по моей практике реализовывать такие вещи в формате bin - очень неудобно, т.к. я работаю с bin без исходных кодов, а читать и редактировать вручную более 2000 адресов в bin - лютый ппц и гигантские затраты времени, на обычном ассемблере намного и намного удобнее и вразы быстрее). Соответственно, если возникают правки в prima.dll, то они легко могут быть скопированы в typhon.dll и наоборот.

3. Стараюсь заниматься моддингом по принципу "работает - не трогай". В том же Тифоне 3.5 есть то, что мне уже не нравится, т.к. реализовывалось 5 лет назад, когда опыта было не много, но - не меняю. То же использование воговских и эровских триггеров в Тифоне 3.5 сегодня считаю пережитком прошлого, но это скорее всего останется навсегда, т.к. переписывать огромные пласты кода просто нет ни времени, ни желания, особенно в силу возраста.


RE: Плагины. Обсуждение - MOP - 02.09.2023 14:26

Ну, никто и не набирает бинарные патчи вручную прямо в hex (что за изврат?). Лично я копирую изменённые мной места из листинга OllyDbg - так и сама логика ассемблера сохраняется в виде комментариев. Дальше сохранить в блокноте, ExeBuilder - и патч готов. Думаю, все так и поступают.
Хотя, впрочем, это тоже долго (не месяцы, конечно, а день-другой), муторно и, по большому счёту, никому не нужно, а я продолжаю это делать лишь потому, что так повелось с самого начала.
А редактор карт под это дело не патчился? А то я и там лимиты под 249 подогнал.


RE: Плагины. Обсуждение - XEPOMAHT - 02.09.2023 19:56

(02.09.2023 14:26)MOP Wrote:  Лично я копирую изменённые мной места из листинга OllyDbg - так и сама логика ассемблера сохраняется в виде комментариев. Дальше сохранить в блокноте, ExeBuilder - и патч готов. Думаю, все так и поступают.

Наверное так лучше, но я привык вносить все изменния непосредственно в шестнадцатеричном редакторе, работаю так лет 20. Переучиваться под ExeBuilder поздно (да и самой ExeBuilder у меня нет, как с ней работать - не знаю 105 ).

(02.09.2023 14:26)MOP Wrote:  А редактор карт под это дело не патчился? А то я и там лимиты под 249 подогнал.

Нет, т.к. будет конфликтовать с Unleashed.dll, автор которого так же решил изменить эти лимиты в редакторе "по своему", в итоге чтобы получить значения выше 127, в редакторе нужно выставлять отрицательные значения первичным навыкам.


RE: Плагины. Обсуждение - Berserker - 02.09.2023 20:59

XEPOMAHT, а ты мазохист, однако )


RE: Плагины. Обсуждение - daemon_n - 03.09.2023 10:55

Не нашёл тему для багрепортов - в общем, исправление ещё СоДовского бага, где гекс прямо перед боевыми машинами в битве добавлялся в список атак для ближнего боя, что позволяло "бить" ими"
Код на C++ (Click to View)

Картиночки (Click to View)



RE: Плагины. Обсуждение - MOP - 03.09.2023 15:29

(02.09.2023 19:56)XEPOMAHT Wrote:  Наверное так лучше, но я привык вносить все изменния непосредственно в шестнадцатеричном редакторе, работаю так лет 20. Переучиваться под ExeBuilder поздно (да и самой ExeBuilder у меня нет, как с ней работать - не знаю 105 ).
А, так я к исходникам MoP её не прилагал? Как и батник в виде:
Code:
LIB\BinMagic.exe Cmd=ConvertPatch SourcePatch="LIB\*.txt" ResultPatch="MoP.bin" PatchFor=File
ExeBuilder.exe
Del *bin
MOVE Out.exe "..\MoP.exe"
запуском которого из немного модифицированного (расширенные секции, добавленные новые + замена иконки), но всё ещё подходящего для ВОГ h3te.exe за пару секунд с помощью ~55000 патчей создаётся адовый MoP.exe.
Вообще, эта программа должна идти в стандартной сборке ЭРЫ. По крайней мере, раньше (лет 10 назад, хе-хе) шла.
(02.09.2023 19:56)XEPOMAHT Wrote:  Нет, т.к. будет конфликтовать с Unleashed.dll, автор которого так же решил изменить эти лимиты в редакторе "по своему", в итоге чтобы получить значения выше 127, в редакторе нужно выставлять отрицательные значения первичным навыкам.
Опять какие-то извраты... Там же работы на три копейки:
Code:
; расширение первичных навыков:
; расширение значений в комбобоксах:
946D0 E9BFB10900;            JMP MoPMAPED.0052F894
946D5 9090;                  NOP(2)

12F894 817DF0F9000000;       CMP DWORD PTR SS:[EBP-10],0F9
12F89B 8D45E0;               LEA EAX,[EBP-20]
12F89E E9344EF6FF;           JMP MoPMAPED.004946D7

9477B E923B10900;            JMP MoPMAPED.0052F8A3

12F8A3 85C0;                 TEST EAX,EAX
12F8A5 68F9000000;           PUSH 0F9
12F8AA 59;                   POP ECX
12F8AB E9D04EF6FF;           JMP MoPMAPED.00494780

948B3 40;                    INC EAX - увеличить кол-во знаков вводимого текста на 1 (2 -> 3)
948B4 6A00;                  PUSH 0
948B6 50;                    PUSH EAX
948B7 68C5000000;            PUSH 0C5
948BC FF76C4;                PUSH DWORD PTR DS:[ESI-3C]
948BF E9ECAF0900;            JMP MoPMAPED.0052F8B0

12F8B0 FFD7;                 CALL EDI
12F8B2 68F9000000;           PUSH 0F9
12F8B7 6A00;                 PUSH 0
12F8B9 E90650F6FF;           JMP MoPMAPED.004948C4

; расширить элементы диалога для 3-значных чисел:
20727C 1C
2072F4 1C
20736C 1C
2073E4 1C
Image: image.png


RE: Плагины. Обсуждение - XEPOMAHT - 03.09.2023 19:57

(02.09.2023 10:28)XEPOMAHT Wrote:  
(02.09.2023 07:35)MOP Wrote:  что с адресом 432B11h в prima.dll? Почему-то не увеличен лимит.

Там какой-то слабопонятный рассчёт для ИИ, с вычетанием силы магии *25, поэтому рисковать не стал. Могу в понедельник попробовать увеличить этот лимит в prima.dll и выложить.

Готово: https://vk.com/s/v1/doc/ZAq265d81PtmuK8m35pYF1appwc4I-E6e61ocX2hEz3r9d-DFKU

В теме плагинов ссылка так же обновлена.

(03.09.2023 15:29)MOP Wrote:  Опять какие-то извраты... Там же работы на три копейки:

Спасибо. Добавлю по возможности данный код в h3wmapedpatch.dll, когда всё же доберусь до редактора карт.


RE: Плагины. Обсуждение - MOP - 04.09.2023 13:16

Есть ещё один адресок.
Code:
004C83DA  8D8820160200                      lea    ecx,[eax+00021620h]
004C83E0  8A80991A0200                      mov    al,[eax+00021A99h]
004C83E6  3C63                              cmp    al,63h
...
Честно говоря, вообще не разбирал здесь код, но, судя по тому, что 21A99h - 21620h = 479h, обращение идёт всё-таки к Знанию героя.


RE: Плагины. Обсуждение - XEPOMAHT - 04.09.2023 14:10

(04.09.2023 13:16)MOP Wrote:  Есть ещё один адресок.
Code:
004C83DA  8D8820160200                      lea    ecx,[eax+00021620h]
004C83E0  8A80991A0200                      mov    al,[eax+00021A99h]
004C83E6  3C63                              cmp    al,63h
...
Честно говоря, вообще не разбирал здесь код, но, судя по тому, что 21A99h - 21620h = 479h, обращение идёт всё-таки к Знанию героя.

Да, там происходит вычисление стартовых очков магии для случайного героя таверны. Спасибо, что нашли этот адрес (он знаком ещё по увеличению количества героев в игре из-за этой жопошной адресации к структуре героя, из-за чего в ранних версиях MoP с патчем на новых героев Таверна постоянно сыпала ошибками как из рога бездны - то-ли у автора си-шного кода Таверны руки не из того места росли, то ли сам си-шный компилятор так топорно собрал код несмотря на то, что сам функционал Tavern_Generate_One_New_Hero прост как валенок). Завтра пропатчу в Приме это место, но особо оно ничего не изменит, т.к. стартовые значения Знания у случайных ненанятых героев выше 99 - возмутительная редкость.


RE: Плагины. Обсуждение - MOP - 04.09.2023 14:27

Да я не находил.) Точнее, нашёл ещё тогда, когда переделывал первичные навыки под 127. Сейчас просто сверяю prima.dll и патч "РАСШИРЕНИЕ ЗНАЧЕНИЙ ПЕРВИЧНЫХ НАВЫКОВ ДО +127" из StructureChanges.txt.
Да, и можно уже на "ты"? Коллеги всё-таки.)


RE: Плагины. Обсуждение - daemon_n - 13.09.2023 00:14

(03.09.2023 19:57)XEPOMAHT Wrote:  Готово: https://vk.com/s/v1/doc/AxhaiL2i8H23Qn1aC_lPZ1_BY1XhIA9C7SGh8u0heDbRwRoI8u4

В теме плагинов ссылка так же обновлена.

Рекомендую проверить хорошенько по ИИ и артефактам.
Добавил в сборку - крашит в ф-ции, где ИИ рассчитывает ценность арта по статам. Откатываю у себя...


RE: Плагины. Обсуждение - XEPOMAHT - 13.09.2023 06:50

(13.09.2023 00:14)daemon_n Wrote:  Добавил в сборку - крашит в ф-ции, где ИИ рассчитывает ценность арта по статам. Откатываю у себя...

HD_CRASH_LOG.txt и x86 patches.txt сохранились? Проверить - нет возможности (скорее всего функция со статами от артов и была пропущена изначально как раз из-за вылетов в ней, что даже замена бинарного патча на хук не помогла, увы).


RE: Плагины. Обсуждение - daemon_n - 13.09.2023 12:50

XEPOMAHT, Вот один из репортов

В разных вариантах указывает разный сбойный модуль, но всё крутится вокруг артов для ИИ - откат плагина решал все проблемы.

P.S.: с Днюхой 177


RE: Плагины. Обсуждение - XEPOMAHT - 14.09.2023 20:56

(13.09.2023 12:50)daemon_n Wrote:  В разных вариантах указывает разный сбойный модуль, но всё крутится вокруг артов для ИИ - откат плагина решал все проблемы.

Вот Прима без хука: https://vk.com/s/v1/doc/ZAq265d81PtmuK8m35pYF1appwc4I-E6e61ocX2hEz3r9d-DFKU

Дебаг-отчёт от HD-мода мне больше нравится, от ЭРЫ не очень ясно на какой функции происходит вылет, поэтому отследить ошибку не получилось.


RE: Плагины. Обсуждение - igrik - 21.11.2023 20:17

Guest, у тебя случаем не сохранились ли исходники патча на 32-bit color mode? А то что-то я не могу никак нагуглить


RE: Плагины. Обсуждение - Nevemor - 21.11.2023 22:07

(21.11.2023 20:17)igrik Wrote:  Guest, у тебя случаем не сохранились ли исходники патча на 32-bit color mode? А то что-то я не могу никак нагуглить

Думаю нет) я даже не уверен где это. Это из HD мода? В общем, я в этом нуб.


RE: Плагины. Обсуждение - XEPOMAHT - 21.11.2023 22:34

(21.11.2023 20:17)igrik Wrote:  XEPOMAHT, у тебя случаем не сохранились ли исходники патча на 32-bit color mode? А то что-то я не могу никак нагуглить

Code:
; НАЗВАНИЕ: Оконный 32-битный цветовой режим
; ВЕРСИЯ: 1.0
; АВТОР: Bourn
; ОПИСАНИЕ: Позволяет играть в оконном режиме при глубине цвета в 32 бита
; EXE: TE, SOD
; StatFree = YES

; DATA "DDRAW.dll" => "ZDRAW.dll"
;25C7D8 5A

;25C7B6 6D; smackw32.dll -> mmackw32.dll (обновлённая библиотека для проигрывания видеозаставки)



RE: Плагины. Обсуждение - igrik - 21.11.2023 23:37

XEPOMAHT, спасибо.


RE: Плагины. Обсуждение - Archer30 - 27.11.2023 20:04

Bugs of ChooseAttack.dll by igrik and temporary fixes



RE: Плагины. Обсуждение - Archer30 - 27.11.2023 20:33

Bug of game bug fixes extended by igrik

This plugin prevents a hero from learning a banned spell from artifacts, for example, a hero can no longer learn Scuttle Boat from Sea Captain's Hat when Scuttle Boat is banned in map.
This might not be wrong logically, yet it breaks the compatibility of custom maps. Many maps on "artifact gives banned spells" mechanism to work. A certain spell usually cannot be obtained anywhere except after getting the particular artifact in a trial.

I would recommend reverting the changes in game bug fixes extended.dll.


RE: Плагины. Обсуждение - igrik - 29.11.2023 04:56

Archer30, I haven't seen your bug reports. I'll fix it in a few days.


RE: Плагины. Обсуждение - Archer30 - 29.11.2023 09:44

igrik, hi! I think this is the first time I have reported them. If you need more info, please just let me know.


RE: Плагины. Обсуждение - igrik - 29.11.2023 22:36

(27.11.2023 20:33)Archer30 Wrote:  Bug of game bug fixes extended by igrik

This plugin prevents a hero from learning a banned spell from artifacts ...
Fixed.

(27.11.2023 20:33)Archer30 Wrote:  Fixed losing Double Strike/Strike all around after the commander learns shooting with ChooseAttack plugin
This contradicts the course of the game. Shooting monsters cannot attack twice in melee. See 0x441BAA. But I can allow an exception for commanders.
Image: image.png


(27.11.2023 20:33)Archer30 Wrote:  Fixed losing Strike all around after the commander learns shooting with ChooseAttack plugin
Refused. I was unable to reproduce this bug. Need a save game.

(27.11.2023 20:33)Archer30 Wrote:  Fixed sometimes Enchanters lose the ability to cast with ChooseAttack plugin
Can be reproduced if Enchanters act after shooters' turn (For example, after Sharpshooters, Titans)
Refused. I was unable to reproduce this bug. Need a save game.


RE: Плагины. Обсуждение - Archer30 - 30.11.2023 04:02

Quote:This contradicts the course of the game. Shooting monsters cannot attack twice in melee.
In WoG and ERA, commanders are the exception to this rule. They can attack twice even if they learn shooting.

Here are the save games for the two problems. I wrote the attacker and defender should be used for reproducing the bug in their filenames.

If you use the latest launcher build, it should be noted that in a previous update, I put my fix for Double Strike/Strike all around problem in ...\Mods\Game Enhancement Mod\Data\s\79 wog - igrik.erm. You will need to search for "Fixed losing Double Strike/Strike all around" and remove the related script before testing.

Tips:
In the save game for checking Commander loses Strike All Around, you might need to spam "Q + battlereplay" before the two stacks of Thunder Birds could move closed like in this pic.
In the save game for checking Enchanters lose the chance to cast, if you make Enchanters the first acting unit by putting them in a slot earlier than Sharpshooters, their ability to cast will be recovered. Like this:



RE: Плагины. Обсуждение - igrik - 30.11.2023 07:38

Archer30, thanks for the detailed bug report! Such reports are really important, it's easy to look for a error.
All fixes are available on GitHub

Code:
game bug fixes extended.dll
[-] фикс: двуклеточные монстры в бою могут сделать 1 шаг назад
[-] фикс: командиры, имеющие флаг стрельбы и двойной атаки, в рукопашной теперь атакуют дважды.

choose attack.dll
[+] Плагин залит на репозиторий
[-] фикс: стрелки с флагом "Круговая атака" и артефактом "Лук снайпера" не атаковали всех вокруг. Исправлено.
[-] фикс: Чародеи (монстр 136) не могли кастовать после хода более быстрых существ в своей армии.



RE: Плагины. Обсуждение - Archer30 - 30.11.2023 10:59

igrik, thanks! All reported issues are fixed. Yet I had a crash before battle when I was testing with the save Gelu vs Thunderbirds. Judging by the log, it has a strong chance related to game bug fixes extended. There was another report earlier with the same bug. However that save requires Third Upgrade Mod Reborn (a Third Upgrade Mod variant I made) to load. If you need that mod, I will send it to you.

The crash doesn't reproduce with 100% chance. I believe it's rather rare like lower than 3%.

Here are the save games and debug of the two crashes.
exception context
Quote:> Callstack
Game bug fixes extended.1818 (?getAIValue_NPC@@YA_JH@Z + 104)



RE: Плагины. Обсуждение - igrik - 30.11.2023 18:51

Archer30, unfortunately, I do not know and cannot find the reason for the departure. But just in case, I added a check for a null pointer to the commander's structure in plugin game bug fixes extended.dll


RE: Плагины. Обсуждение - Archer30 - 30.11.2023 20:03

igrik, thanks for your work!


RE: Плагины. Обсуждение - Archer30 - 01.12.2023 20:45

igrik, there is a new bug report today about game bug fixes extended.

Issue: The game crashes when the arrow tower shoots Christian's troops
Disabling game bug fixes extended resolves the crash.

Download the save game the debug here


RE: Плагины. Обсуждение - igrik - 02.12.2023 00:44

(01.12.2023 20:45)Archer30 Wrote:  Issue: The game crashes when the arrow tower shoots Christian's troops
Disabling game bug fixes extended resolves the crash.
Fixed!


RE: Плагины. Обсуждение - SergOz - 31.12.2023 11:05

Неплохо было бы, чтобы плагин Spells_Description показывал количество восстанавливаемых существ при касте "Жертвы". Ну, типа, при наведении курсора на жертвуемый отряд... А то высчитывать кого выгоднее пожертвовать сложновато.

Но это так, в качестве идеи



RE: Плагины. Обсуждение - Archer30 - 10.01.2024 11:04

igrik, hi! I have an improvement suggestion about Spell Description Mod.
Could you enable this mod to show the details of Soul Eaters' (Necropolis commander) spell? Including the HP of regeneration and the number of troops to be revived, just like the normal Animated Undead spell.
That would be very handy. Thank you in advance.


RE: Плагины. Обсуждение - igrik - 10.01.2024 13:37

SergOz, Archer30, понял. Сделаю.


RE: Плагины. Обсуждение - igrik - 13.01.2024 21:19

SergOz, Archer30, я добавил ваши предложения. Но код плагина очень сильно был переработан, ввиду чего нужно хорошенько его оттестировать, ибо могут быть неожидаеммые ошибки!
Code:
game bug fixes extended.dll
[!] исправление бага WOG: IDummy(0x83EEFC) иногда может возвращать мусор в функции 0x75D654.
    Например: командир нежити очень часто мог оживлять тысячи существ, потому что в переменной IDummy была не его сила магии (например 5 силы), а мусор (например 465411488 так называемой силы).

spells desctiptions.era
[+] Добавлен расширенный показ для заклинаний командиров
[+] Добавлен расширенный показ для заклинания Жертва
[+] Добавлены строки в текстовик плагина SpDescr.txt (у игроков его требуется обновить)
[!] Произведён серьезный рефакторинг кода плагина



RE: Плагины. Обсуждение - Archer30 - 14.01.2024 02:55

igrik, thansk for your work! The plugin works ok from my tests.

Suggestion:
This is a line from SpDescr.txt:
Quote:"To sacrifice the %s (resurrect %d hit points, creatures: %d)"

The hit points calculated here do not consider the max hit points of the target being revived, for example:
When I sacrifice 10000 Supreme Archangels to revive a stack of 20 Goblins, it shows this on the screen:
Image: DQKUtep.png
Quote:(resurrect 7590000 hit points, creatures: 20)

It might be more accurate if the hit points displayed here are calculated considering the max available hit points of the resurrecting target. For example:
Quote:(resurrect 100 hit points, creatures: 20)
- each Goblin has 5 hp, thus 5*20=100 at max.

________________________________


There is also a bug report about ChooseAttack.dll
Ice Elementals can no longer cast Protection from Water for allies if ChooseAttack.dll is enabled.
Download the save game for testing (But it's reproducible in a new game as well)

There are also reports about shooters losing the ability to shoot with ChooseAttack.dll in some battles. But I could not find a save game to reproduce the problem (and the problem seems to be resolved after loading)


RE: Плагины. Обсуждение - igrik - 14.01.2024 07:25

(14.01.2024 02:55)Archer30 Wrote:  It might be more accurate if the hit points displayed here are calculated considering the max available hit points of the resurrecting target. For example: each Goblin has 5 hp, thus 5*20=100 at max.
I disagree. This is not informative. And what to do when you choose from several stacks, and you need to determine the most minimal of the necessary ones?

(14.01.2024 02:55)Archer30 Wrote:  There is also a bug report about ChooseAttack.dll
Ice Elementals can no longer cast Protection from Water for allies if ChooseAttack.dll is enabled.
Fixed!


RE: Плагины. Обсуждение - Berserker - 14.01.2024 14:42

igrik, почему бы не сделать так: resurrect %d/%d hit points, creatures: %d/%d, где первое число реальное значение очков жизни или существ, а второе — максимально возможное? Если бы ещё и числа форматировались с k = 1000, kk = 1000000 префиксами, вообще было бы супер. Или хотя бы _ в качестве разделителя. 150_000 / 7_900_200 или 150k / 7900k. Но это так, пожелания )


RE: Плагины. Обсуждение - igrik - 14.01.2024 15:02

В данном случае я взял пример из Хоты, и сделал так же. А там этот вопрос, я думаю, тоже мусолили.
Тогда давайте предложения - сделаю как желает большинство.
Но строка вида "resurrect %d/%d hit points, creatures: %d/%d" - лично мне не особо нравится. Особенно creatures: %d/%d
К тому же, до этой строки одно действие назад вызывалась строка: Воскресить %s (потеряно %s ед. здоровья, существ: %s), в которой было видно сколько здоровья и существ было потеряно

Либо "восстановит %d из %d ед.здоровья, существ: %d из %d"
Тогда это будет выглядеть:
- при переполнении: восстановит 7590k из 100 ед.здоровья, существ: 20 из 20
- при недостаче: восстановит 70 из 100 ед.здоровья, существ: 14 из 20

Заодно и форматирование тысяч в k сделаю.


RE: Плагины. Обсуждение - Berserker - 14.01.2024 17:34

Quote:- при переполнении: восстановит 7590k из 100 ед.здоровья, существ: 20 из 20
Тут наверное имелось в виду «существ: 1234 из 20», раз первое значение берётся с переполнением.


RE: Плагины. Обсуждение - SergOz - 14.01.2024 19:27

igrik, спасибо.
(14.01.2024 15:02)igrik Wrote:  Либо "восстановит %d из %d ед.здоровья, существ: %d из %d"
Тогда это будет выглядеть:
- при переполнении: восстановит 7590k из 100 ед.здоровья, существ: 20 из 20
- при недостаче: восстановит 70 из 100 ед.здоровья, существ: 14 из 20
Мне нравится такой вариант. Я так понял, что после выбора игроком в книге заклинания "Жертва" и после выбора восстанавливаемого отряда, при наведении курсора на жертвуемый отряд, будет отображаться количество хп в жертвуемом отряде и количество хп в восстанавливаемом и после этого показатель количества юнитов, которое "воскреснет" в восстанавливаемом отряде и сколько в нём было в начале боя. Если это так, то это просто супер.
P.S. Хотя, мне было бы достаточно и просто количество, которое "воскреснет" из того что было изначально )


RE: Плагины. Обсуждение - igrik - 15.01.2024 14:47

(14.01.2024 17:34)Berserker Wrote:  
Quote:- при переполнении: восстановит 7590k из 100 ед.здоровья, существ: 20 из 20
Тут наверное имелось в виду «существ: 1234 из 20», раз первое значение берётся с переполнением.
Совершенно нет. Не вижу полезности в таком отображении.

Сделано
Code:
spells desctiptions.era
[+] Добавлено форматирование для огромных чисел (k и M)
[+] Строка заклинания Жертва теперь имеет вид "To sacrifice the %s (resurrect %s of %s hit points, creatures: %s of %s)"
[!] Исправлены некоторые строки в текстовике плагина SpDescr.txt (у игроков его требуется обновить)



RE: Плагины. Обсуждение - Archer30 - 15.01.2024 17:39

igrik, looks like the lastest Spell Description update broke the mouse hint of Soul Eater's Animate Undead casts.
SpDescr.txt was updated.
Download save game for testing


RE: Плагины. Обсуждение - igrik - 16.01.2024 08:24

(15.01.2024 17:39)Archer30 Wrote:  igrik, looks like the lastest Spell Description update broke the mouse hint of Soul Eater's Animate Undead casts.
SpDescr.txt was updated.
Download save game for testing
I don't understand. Everything works for me.
Are you sure it doesn't work?


RE: Плагины. Обсуждение - Archer30 - 16.01.2024 08:39

igrik, it's missing information about how many troops will be revived when hovering the cursor on Skeletons and trying to animate undead with Soul Eaters.
Image: LbnZmj2.png
Does it work for you?

I kinda remember the second last version worked ok, but now it seems no longer working for me.


RE: Плагины. Обсуждение - igrik - 16.01.2024 10:22

GitHub is broke my files. I do not know what the reason is, apparently this is their error

Download


RE: Плагины. Обсуждение - Archer30 - 16.01.2024 11:03

igrik, now it's working perfectly, thank you so much!


RE: Плагины. Обсуждение - SergOz - 16.01.2024 18:24

igrik, спасибо! Супер!


RE: Плагины. Обсуждение - Archer30 - 18.01.2024 04:30

igrik, bug report about Spell description mod:

The game 100% crashes when trying to cast a spell with Rampart commanders. The crash happens exactly when hovering the mouse cursor over spell targets.

Download save game and debug


RE: Плагины. Обсуждение - igrik - 18.01.2024 10:14

Fixed! Download

UPD: Attention!
I found that saving files from GitHub no longer works correctly when "save as...". You need to use (Click to View)
If you use "save as..." -> then the files break! (Click to View)



RE: Плагины. Обсуждение - Sandris - 18.01.2024 11:10

Друзья, а можно ли плагином (либо иным способом) разместить Название класса и Уровень героя в 2 строки вместо одной (как это сейчас)?
Выше Класс, ниже Уровень. Интервал в пикселях примерно как на изображении.
Был бы очень признателен.

Image: image.png


RE: Плагины. Обсуждение - Видомина - 19.01.2024 11:00

Sandris, Герои мрачное фентези - вам бы что то среднее между дисайплс и текущим морем лоска выдавать.


RE: Плагины. Обсуждение - SergOz - 19.01.2024 11:28

Согласен с Видоминой.
Но дело даже не в мрачности фентези, а просто в глазах рябит


RE: Плагины. Обсуждение - Berserker - 19.01.2024 18:43

Я уже давно говорил, что пунктир точно не подходит для рамок (реально бешенная рябь). Скорее всего, с классическими цельными линиями смотрится бы шикарно.


RE: Плагины. Обсуждение - igrik - 20.01.2024 08:40

(18.01.2024 11:10)Sandris Wrote:  Друзья, а можно ли плагином (либо иным способом) разместить Название класса и Уровень героя в 2 строки вместо одной (как это сейчас)?
Выше Класс, ниже Уровень. Интервал в пикселях примерно как на изображении.
Был бы очень признателен.
Sandris, ты упускаешь один очень важный момент, а именно то, что шрифты Bigfont и Medfont имеют разные размеры в разных версиях игр. И тут вылезает достаточно большая проблема - что нельзя сделать одиноково расположение текста в пикселях! Вот посмотри сам:

Русский шрифт в ERA:
Image: 1.png

Английский GOG шрифт
Image: 2.png

Мне из-за этой проблемы в окне командира и в окне опыта существ пришлось нехило так попотеть на этапе разработки этих диалогов.


RE: Плагины. Обсуждение - Sandris - 20.01.2024 10:12

igrik, спасибо.
Ну хотя бы для текущей русской версии из Сборки. Sm
Только имя на пару пикселей больше отдалить от класса и уровня.


RE: Плагины. Обсуждение - A1uK - 26.01.2024 11:27

привет всем,как сделать любой шаблон под XXL мод? Чтобы играть на H,XH,G рандомных картах?
хотел переделать spider 1.3 и XXL 8XM12a не даёт
8xm12a
spider




RE: Плагины. Обсуждение - slater777 - 27.01.2024 07:51

(26.01.2024 11:27)A1uK Wrote:  привет всем,как сделать любой шаблон под XXL мод? Чтобы играть на H,XH,G рандомных картах?
хотел переделать spider 1.3 и XXL 8XM12a не даёт
8xm12a
spider


Нужно в TEditor'е поднимать размер зон до тер пор, пока карта не начнет генерироваться.


RE: Плагины. Обсуждение - Archer30 - 31.01.2024 08:36

igrik, I'd like to report my findings of Spell Description Mod

1. The hint of Pitlord's number of resurrections is incorrect.
Image: sAZufO5.png
In this battle, I tried to revive a dead pikemen stack of 11, the hint shows a huge number instead of the correct amount.
This issue can be reproduced in a new game.

2. Potential crash when AI resurrect with Pitlord's spell.
I am not entirely sure this is spell description related, but the address of the crash hints it could be.
In the save game, when Tazar initiates a battle with Pit Lords and spams Death Ripple to kill the extra stacks spawned by "Karmic Battle" (option 38), there is a chance the crash when Pitlords resurrect the killed allies.
Again this crash is only reproducible with a low chance. I just report here in case it's useful to improve the plugin if it turns out to be related.

Download save games and debug


RE: Плагины. Обсуждение - major - 31.01.2024 17:06

Не знал, куда написать, сюда или в моддинг.
В общем, никогда не работал с диалогами, и не пойму в чем ошибка. Нужно, чтобы в городе при клике на здание открывался жертвенник.
По аналогии со строением на карте, сделал такой код.
Code:
int player_id = o_GameMgr->GetMeID(); // текущий игрок
_Dlg_* dlg = (_Dlg_*)(DwordAt(c->ebp) - 0x370); // ?
CALL_3(int, __thiscall, 0x560060, dlg, &o_GameMgr->hero[town->down_hero_id], player_id); // загрузка диалога
CALL_3(void, __thiscall, 0x5FF800, dlg, -1, -1); // центрирование диалога
CALL_2(int, __thiscall, 0x565640, dlg, 0); // показ диалога
CALL_1(int, __thiscall, 0x562630, dlg); // уничтожение диалога
CALL_1(void, __thiscall, 0x5D5810, o_TownMgr); // обновление экрана города

Код работает, диалог показывается, жертвенник работает. Но при закрытии диалога происходит краш с ошибкой в Wog native dialogs:
Code:
Failed to read data at A.
EIP: Wog native dialogs.1358D (?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z + 221). Code: C0000005

> Registers
EAX: 00000001 (int: 1)
ECX: 02D39AEC (int: 47422188, pint: 0x02D39F10 = 47423248)
EDC: 0EE6B100 (int: 249999616, pint: 0x0EEC36F8 = 250361592)
EBX: 00000001 (int: 1)
ESP: 02D3980C (int: 47421452, pint: 0x00000001)
EBP: 02D398D8 (int: 47421656, pint: 0x0D6142A3 = 224477859)
ESI: 00007801 (int: 30721)
EDI: 0000000A (int: 10)

Соответственно, без этого плагина краша нет, все работает.


RE: Плагины. Обсуждение - XEPOMAHT - 31.01.2024 23:15

(31.01.2024 17:06)major Wrote:  Код работает, диалог показывается, жертвенник работает. Но при закрытии диалога происходит краш с ошибкой в Wog native dialogs:

Под жертвенный алтарь нужно выделять стековую память, если её не выделить - используется первая попавшаяся с затиранием данных в ней, в данном случае - затираются какие-то данные Wog native dialogs. В Вашей команде там стоит знак вопроса - память на функцию Вы подаёте, но не понимаете какую. В ERA+ жертвенный алтарь открывается в Причале, что ещё нужно? При этом вся функция - ассемблерная, без СИ, в оригинале, с которого копируется код, так же ассемблер (я тупо скопировал и не вдавался в подробности), как это должно быть на СИ - х.з.

(31.01.2024 17:06)major Wrote:  CALL_3(void, __thiscall, 0x5FF800, dlg, -1, -1); // центрирование диалога

Эта команда - для карты приключений. При вызове из диалога города она не требуется.

(31.01.2024 17:06)major Wrote:  int player_id = o_GameMgr->GetMeID(); // текущий игрок
_Dlg_* dlg = (_Dlg_*)(DwordAt(c->ebp) - 0x370); // ?
CALL_3(int, __thiscall, 0x560060, dlg, &o_GameMgr->hero[town->down_hero_id], player_id); // загрузка диалога

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


RE: Плагины. Обсуждение - major - 01.02.2024 03:13

(31.01.2024 23:15)XEPOMAHT Wrote:  Под жертвенный алтарь нужно выделять стековую память, если её не выделить - используется первая попавшаяся с затиранием данных в ней, в данном случае - затираются какие-то данные Wog native dialogs. В Вашей команде там стоит знак вопроса - память на функцию Вы подаёте, но не понимаете какую. В ERA+ жертвенный алтарь открывается в Причале, что ещё нужно? При этом вся функция - ассемблерная, без СИ, в оригинале, с которого копируется код, так же ассемблер (я тупо скопировал и не вдавался в подробности), как это должно быть на СИ - х.з.
Я поэтому и хочу понять, как с этим работать. Смотрел код в Соде, смотрел код в Тифоне, - практически одинаковые. Понимаю, что память надо выделить, но сколько? Как это определить?
Сейчас попробовал сделать так, и вроде не крашится.
Code:
_Dlg_* dlg = (_Dlg_*)o_New(600);

(31.01.2024 23:15)XEPOMAHT Wrote:  Эта команда - для карты приключений. При вызове из диалога города она не требуется.
Без этой команды диалог расположен левее и выше экрана города. А так четко по центру.

(31.01.2024 23:15)XEPOMAHT Wrote:  Начало функции неправильное. Для получения игрока - используйте содовскую функцию, а для армии героя - проверяйте героя на null, т.к. героя может не быть (он в городе в 2-х местах) - выводите сообщение без вызова диалога жертвенного алтаря.
Там содовская функция 0x4CE6E0 используется. И все проверки на наличие героя, конечно, есть.

В общем пока что игра не крашилась, но я не исключаю рандомные краши. Поэтому вопрос актуальный, как правильно это сделать, и как узнать, сколько памяти выделять?


RE: Плагины. Обсуждение - XEPOMAHT - 01.02.2024 06:48

(01.02.2024 03:13)major Wrote:  Я поэтому и хочу понять, как с этим работать. Смотрел код в Соде, смотрел код в Тифоне, - практически одинаковые. Понимаю, что память надо выделить, но сколько? Как это определить?

Столько же, сколько и выделяет СоД - 968 байт. На СИ непонятно как вручную выделяется стековая память - это делает компилятор автоматически (СИ - высокоуровневый язык и не разрешает работать со стеком напрямую).

(01.02.2024 03:13)major Wrote:  Без этой команды диалог расположен левее и выше экрана города. А так четко по центру.

Странно, я разницы не заметил. Тогда раскоментирую её в Тифоне.

(01.02.2024 03:13)major Wrote:  Там содовская функция 0x4CE6E0 используется. И все проверки на наличие героя, конечно, есть.

В твоем коде не заметил. СИ тяжело читать.

(01.02.2024 03:13)major Wrote:  Поэтому вопрос актуальный, как правильно это сделать, и как узнать, сколько памяти выделять?

Этот диалог нестандартный, там надо смотреть на количество памяти, которое выделяет СоД. Как правильно написать на СИ - сложно сказать. У тебя в коде только 1 строчка высокоуровневая (как раз которую я не смог понять), остальное - низкоуровневое, поэтому смысл использовать СИ? Проще поставить ассемблерную вставку и не мучиться, т.к. у тебя копируется ассемблерный код, восстановить который корректно на СИ может только профессиональный программист.


RE: Плагины. Обсуждение - igrik - 01.02.2024 11:59

(31.01.2024 17:06)major Wrote:  Не знал, куда написать, сюда или в моддинг.
В общем, никогда не работал с диалогами, и не пойму в чем ошибка. Нужно, чтобы в городе при клике на здание открывался жертвенник.
По аналогии со строением на карте, сделал такой код.
Code:
int player_id = o_GameMgr->GetMeID(); // текущий игрок
_Dlg_* dlg = (_Dlg_*)(DwordAt(c->ebp) - 0x370); // ?
CALL_3(int, __thiscall, 0x560060, dlg, &o_GameMgr->hero[town->down_hero_id], player_id); // загрузка диалога
CALL_3(void, __thiscall, 0x5FF800, dlg, -1, -1); // центрирование диалога
CALL_2(int, __thiscall, 0x565640, dlg, 0); // показ диалога
CALL_1(int, __thiscall, 0x562630, dlg); // уничтожение диалога
CALL_1(void, __thiscall, 0x5D5810, o_TownMgr); // обновление экрана города

Код работает, диалог показывается, жертвенник работает. Но при закрытии диалога происходит краш с ошибкой в Wog native dialogs. Соответственно, без этого плагина краша нет, все работает.
Очень странно. Вообще не понятно, причём здесь WND. Покажи весь код плагина, чтобы я мог дома проверить и определить почему.

(31.01.2024 17:06)major Wrote:  Без этой команды диалог расположен левее и выше экрана города. А так четко по центру.
Это проверялось с HD модом? Значит без этой команды HD не проверяет на центр экрана, и диалог рисуется в центре игры без учёта HD разрешения игры.


RE: Плагины. Обсуждение - major - 01.02.2024 14:28

(01.02.2024 11:59)igrik Wrote:  Очень странно. Вообще не понятно, причём здесь WND. Покажи весь код плагина, чтобы я мог дома проверить и определить почему.
Вот.
Code:
int __stdcall Town_Dialog_Unique_Dwelling_4(LoHook* h, HookContext* c)
{
    _Town_* town = (_Town_*)c->ecx;

    // Если нажата правая кнопка мыши.
    if (IntAt(c->ebp + 8))
    {
        // Переходим к функции показа сообщения.
        c->return_address = 0x5D4353;
        return NO_EXEC_DEFAULT;
    }

    // Возврат по умолчанию - показ сообщения по ЛКМ.
    c->return_address = 0x5D4077;

    // Если Некрополис.
    if (town->type == TID_NECROPOLIS)
    {
        // Переходим к Трансформатору нежити.
        c->return_address = 0x5D3FCE;
    }
    // Если Причал.
    else if (town->type == TID_COVE)
    {
        // Устанавливаем возврат на выход из функции.
        c->return_address = 0x5D4617;

        // Если в гарнизоне никого.
        if (town->down_hero_id == -1)
        {
            // Записываем сообщение в буфер.
            sprintf(o_TextBuffer, o_GENRLTXT_TXT->GetString(274), (char*)CALL_2(int, __fastcall, 0x460CC0, TID_COVE, TBI_UNIQUE_4));
            // Выводим сообщение о героях-гостях.
            CALL_12(void, __fastcall, 0x4F6C00, o_TextBuffer, 1, -1, -1, -1, -1, -1, 0, -1, 0, -1, 0);
        }
        // Иначе.
        else
        {
            // Получаем текущего игрока.
            int player_id = o_GameMgr->GetMeID();
            // Выделяем память под диалог.
            _Dlg_* dlg = (_Dlg_*)(DwordAt(c->ebp) - 0x370);
            // Загружаем диалог.
            CALL_3(int, __thiscall, 0x560060, dlg, &o_GameMgr->hero[town->down_hero_id], player_id);
            // Располагаем его по центру.
            CALL_3(void, __thiscall, 0x5FF800, dlg, -1, -1);
            // Выводим диалог на экран.
            CALL_2(int, __thiscall, 0x565640, dlg, 0);
            // Уничтожаем диалог.
            CALL_1(int, __thiscall, 0x562630, dlg);
            // Обновляем экран города.
            CALL_1(void, __thiscall, 0x5D5810, o_TownMgr);
        }
    }
    
    return NO_EXEC_DEFAULT;
}
Code:
_PI->WriteLoHook(0x5D4055, Town_Dialog_Unique_Dwelling_4);

(01.02.2024 11:59)igrik Wrote:  Это проверялось с HD модом? Значит без этой команды HD не проверяет на центр экрана, и диалог рисуется в центре игры без учёта HD разрешения игры.
Да, с HD модом. Вот так оно выглядит без центровки.

Image: grotto.png


RE: Плагины. Обсуждение - XEPOMAHT - 01.02.2024 14:50

(01.02.2024 14:28)major Wrote:  
Code:
_PI->WriteLoHook(0x5D4055, Town_Dialog_Unique_Dwelling_4);

Этот хук весь кейс кликов по типу специальных объектов 4 в ERA+ подменит. При этом в подменном коде самого кейса у Вас нет (с проверками код работает медленнее) и адреса выходов не совпадают с теми, что должны быть в кейсе:

Code:
Адреса_кликов_в_экране_города_Special4 = $
dd 5D406Ch ; Замок - Святой Источник (сообщение)
dd 5D4617h ; Оплот - ничего (пустой клик)
dd 5D406Ch ; Башня - Стена Знаний (сообщение)
dd 5D406Ch ; Инферно - Культ Огня (сообщение)
dd Подготовить_некротрон ; Некрополис - Некротрон (открывает преобразователь нежити)
dd 5D406Ch ; Темница - Академия Боевых Искусств (сообщение)
dd 5D406Ch ; Цитадель - Чертоги Вальгаллы (сообщение)
dd 5D406Ch ; Крепость - Водяное Колесо (сообщение)
dd 5D4617h ; Сопряжение - ничего (пустой клик)
dd WoG_Клик_в_окне_города.открыть_окно_жертвенного_алтаря ; Причал - Грот (открывает жертвенный алтарь)
dd 5D406Ch ; Фордж - Дубликатор (сообщение)
dd 5D406Ch ; Бастион - Самум (сообщение)

Зачем переписываете на СИ то, что и так сделано в ERA+? Там тонна несделанных вещей болтается, те же здания Форджа/Бастоина могли запрограммировать, т.к. Причал давным давно полностью реализован на Ассемблере. Stop


RE: Плагины. Обсуждение - major - 01.02.2024 15:53

(01.02.2024 14:50)XEPOMAHT Wrote:  Этот хук весь кейс кликов по типу специальных объектов 4 в ERA+ подменит. При этом в подменном коде самого кейса у Вас нет (с проверками код работает медленнее) и адреса выходов не совпадают с теми, что должны быть в кейсе:
Ну скорость работы мне абсолютно не важна, так как разницы у себя я не замечаю, и мод делаю исключительно для себя. А так как для почти всех городов результат один - показ сообщения - решил не использовать свитч, дабы не перечислять все города. Ну и к тому же, если вдруг когда-нибудь будет еще один город, его в свитч добавлять не надо будет, так как по умолчанию показывается стандартное сообщение.
Адреса выходов не совпадают, так как после проверки города, идет проверка на нажатие ПКМ. У меня же проверка на нажатие ПКМ вынесена ранее. Сделал так для того, чтобы Некротрон и Грот не открывались на нажатие ПКМ.

(01.02.2024 14:50)XEPOMAHT Wrote:  Зачем переписываете на СИ то, что и так сделано в ERA+? Там тонна несделанных вещей болтается, те же здания Форджа/Бастоина могли запрограммировать, т.к. Причал давным давно полностью реализован на Ассемблере. Stop
Основная причина здесь из-за Некротрона (и Преобразователя), которые подменяли некоторых существ в таблице Трансформации на личей и скелетов, не зависимо от их изначальной установки в Тифоне. У меня для него другое свойство.


RE: Плагины. Обсуждение - igrik - 01.02.2024 18:09

(31.01.2024 08:36)Archer30 Wrote:  igrik, I'd like to report my findings of Spell Description Mod

1. The hint of Pitlord's number of resurrections is incorrect.
In this battle, I tried to revive a dead pikemen stack of 11, the hint shows a huge number instead of the correct amount.
This issue can be reproduced in a new game.
Fixed!
You can fix the error in the text file yourself. Replace %d with %s
Image: image.png

(31.01.2024 08:36)Archer30 Wrote:  2. Potential crash when AI resurrect with Pitlord's spell.
I am not entirely sure this is spell description related, but the address of the crash hints it could be.
In the save game, when Tazar initiates a battle with Pit Lords and spams Death Ripple to kill the extra stacks spawned by "Karmic Battle" (option 38), there is a chance the crash when Pitlords resurrect the killed allies.
Again this crash is only reproducible with a low chance. I just report here in case it's useful to improve the plugin if it turns out to be related.
I do not know what the mistake is. But it's not about the plugin.


RE: Плагины. Обсуждение - igrik - 01.02.2024 18:44

(01.02.2024 03:13)major Wrote:  В общем пока что игра не крашилась, но я не исключаю рандомные краши. Поэтому вопрос актуальный, как правильно это сделать, и как узнать, сколько памяти выделять?
Code:
int player_id = o_GameMgr->GetMeID();
// выделяем память под диалог (600 байт, см.0x5601D0)
_int_ dlg = o_New(600);
// конструктор диалога
CALL_3(int, __thiscall, 0x560060, dlg, &o_GameMgr->hero[town->down_hero_id], player_id);
// Располагаем диалог по центру.
CALL_3(void, __thiscall, 0x5FF800, dlg, -1, -1);
// запускаем диалог
CALL_2(int, __thiscall, 0x565640, dlg, 0);
// Уничтожаем диалог.
CALL_1(int, __thiscall, 0x562630, dlg);
// очищаем память диалога
o_Delete(dlg);
// Обновляем экран города.
CALL_1(void, __thiscall, 0x5D5810, o_TownMgr);



RE: Плагины. Обсуждение - Archer30 - 02.02.2024 01:45

igrik, thank you!


RE: Плагины. Обсуждение - major - 09.02.2024 07:02

Вопрос по плагину NPC_Skills_Scrolling.dll.
У меня он ни в какую не хочет запускаться, при построении диалога командира игра крашится, так как в ecx не попадает структура командира.

Code:
HOMM3 HD version: 5.4 R29
Time {   13.02.2024    09:45:22 }

GUN:  [ZZ79779073039T645247MVGZX HHW 039TY]

Exception
{
   Module:     NPC_Skills_Scrolling.dll
   Adress:      [ NPC_Skills_Scrolling.dll+0x1E4B ]
   Code:        EXCEPTION_ACCESS_VIOLATION
   Flags:       0x00000000
   Information: read of address: 0x00000120
}

Context { EAX: 0x00000000, ECX: 0x00000000, EDX: 0x00000000, EBX: 0x00000268, ESP: 0x02D398B4, EBP: 0x02D398DC, ESI: 0x0C73AEF0, EDI: 0x0C73AF20 }

Call stack
{
                           ? called from before    [ 0x0000001C ]
                           ? called from before    [ 0x0C73AEF0 ]
}

Полагаю, что проблема, или не проблема, вот здесь. Структура npc забита нулями.
Code:
int __stdcall Before_WndNPC_DLG(LoHook* h, HookContext* c) //before dlg run
{

    _DlgNPC_* npcDlg = o_dlgNPC;
    _Npc_* npc = (_Npc_*)o_dlgNPC->DlgTop;

    HDDlg* dlg = (HDDlg*)c->esi;

    GetNpcSSkills(npc); // place new skills into vector
    ...
}

Сначала думал, что проблема в ERA+. Но в итоге оставил в list.txt такой набор модов, и игра всё равно крашится.
Code:
WoG
WoG Rus

Сборка Эра+ от Панды. Версия Эры 3.9.1. WND присутствует.

P.S. Опытным путём выяснил, что замена папки WoG из Лаунчера решает проблему. Копаю дальше.

P.P.S. В общем отбой, у меня оказалась немного более старая версия WND, с ней игра крашится. С новой всё ок.


RE: Плагины. Обсуждение - XEPOMAHT - 10.02.2024 23:06

igrik, по какому принципу wog_native_dialogs.era решает, отрисовывать эти кнопки или нет? Т.к. при вызове диалога из главного меню игры, кнопки на форму не ставятся:

Image: image.jpg


RE: Плагины. Обсуждение - igrik - 11.02.2024 04:51

(10.02.2024 23:06)XEPOMAHT Wrote:  igrik, по какому принципу wog_native_dialogs.era решает, отрисовывать эти кнопки или нет? Т.к. при вызове диалога из главного меню игры, кнопки на форму не ставятся:

Заполнение состояния кнопок просходит в функции BuildAll 0x7787CE (wogsetup.cpp в исходниках WOG).
Как именно - я уже не и помню. Но в этот механизм я не лез. Тут всё делает сам Вог

Я читаю состояне из _DlgSetup->ButtonsStates[номер_кнопки (Click to View)
Описание структуры в исходниках WOG (classes.h) (Click to View)



RE: Плагины. Обсуждение - XEPOMAHT - 11.02.2024 06:58

(11.02.2024 04:51)igrik Wrote:  Заполнение состояния кнопок просходит в функции BuildAll 0x7787CE (wogsetup.cpp в исходниках WOG).
Как именно - я уже не и помню. Но в этот механизм я не лез. Тут всё делает сам Вог

Спасибо за подсказку. Нашёл воговский кастыль:

Code:
// поддержка режима редактирования опций ВоГификации
    //{0x4EF3A0,0x0,DP(GoToNewGameScreen)}, // * new setup now

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


RE: Плагины. Обсуждение - Berserker - 11.02.2024 22:05

Там не костыль. В разных диалогах разные кнопки. Опции можно просматривать и из меня сохранения игры. Потому есть функция конфигурации диалога до отображения.


RE: Плагины. Обсуждение - XEPOMAHT - 11.02.2024 23:54

(11.02.2024 22:05)Berserker Wrote:  Там не костыль. В разных диалогах разные кнопки. Опции можно просматривать и из меня сохранения игры. Потому есть функция конфигурации диалога до отображения.

Там 2 набора кнопок, переключаемых флагом. Флаг можно менять непосредственно перед запуском диалога вог-опций смотря из того, запущена в игре карта или нет. Соотвественно, так ВоГ-опции можно посмотреть в любой момент игры. Тифон сейчас делает именно так.

Вот ещё одни свзязанные с вог-опциями костыли, полной переделкой которых сейчас занимаюсь. Бараторч за каким-то чёртом ставит свою кнопку, Игрик - свою, Херомант - свою. Итого: 3 кнопки, находящиеся на ОДИНАКОВЫХ КООРДИНАТАХ и, теоретически, должны открывать ОДНО И ТОЖЕ в ОДНОМ ДИАЛОГЕ!!!! Почему только теоретически? Потому что эти кнопки НИЧЕРТА В ИГРЕ НЕ ДЕЛАЮТ, тупо болтаются на форме, а сам клик происходит из рассчёта координат на форме диалога. В итоге, мне приходится прятать кнопки Бараторча и Игрика, чтобы запрограммировать кнопку вог-опций по-содовски и так же добавить к ней подсказку (к сожалению, и Игрик, и Бараторч ставят свои кнопки только после конструктора окна, а не прямо в нём, поэтому отключить эти кнопки невозможно - отключается весь функционал HD-мода в этом окне, да и кнопки плагина на XXXL-карты перестают работать... в общем совместмость на платформе ЭРЕ - главная БЕДА. Извините, накипело....). Беда кнопок Бараторча и Игрика - они возвращают 0 при клике на них, поэтому их невозможно запрограммировать. Поэтому приходится ставить свою кпопку, которую понимает и обрабатывает содовский код.


RE: Плагины. Обсуждение - Berserker - 12.02.2024 00:40

Да, эта боль понятна.


RE: Плагины. Обсуждение - igrik - 12.02.2024 05:17

1. Что значит каким-то чёртом HD-mod/WND ставит кнопку? Ты видел как делает это Вог? - Там просто проверяется условное место клика и по нему запускается меню Вог опций. Вот это - костыльная реализация, причем которая при увеличенных разрешениях уже корректно не работает.
2. Именно поэтому неправильно утверждать, что клик на кнопку Вог-Опций "не возвращает ничего". Он выставляет параметры клика (x=640, y=110, itemId=0), которые Вог сам потом коректно обрабатывает и поготавливает меню Вог опций. Это сделано, чтобы не поломать код Вога. А ты его сейчас начал ломать, т.е. делаешь то, на что обычно сам же и жалуешься.
3. Я добавляю эту кнопку, потому что кнопка HD-modа не имеет перевода. Вот решил я так на тот момент. Не вижу проблемы их скрыть стандартными средствами игры, делов то: 2 вызова одной и той же фунции , чтобы скрыть кнопки HD и WND. Если прям архикритично - могу убрать свою (тогда останется кнопка HD-мода, которая всегда будет на английском). Но за много лет - это первая жалоба, что кнопок видитиле две.
4. Кнопка запрограммирована как раз таки по Содовски, так что тут не надо ля-ля. Суть твоей претензии заключается в том, что это сделано в HiHook'e, а не LoHook'e, но эта претензия не принимается. HiHook всегда более предпочтительный инструмент. Этот вопрос уже неоднократно аргументировался.


RE: Плагины. Обсуждение - XEPOMAHT - 12.02.2024 07:44

(12.02.2024 05:17)igrik Wrote:  1. Что значит каким-то чёртом HD-mod/WND ставит кнопку? Ты видел как делает это Вог? - Там просто проверяется условное место клика и по нему запускается меню Вог опций. Вот это - костыльная реализация, причем которая при увеличенных разрешениях уже корректно не работает.

Воговская реализация не была переделана под нормальную. Т.е. пытались поправить это дело и в HD-моде, и в wog_native_dialogs.era, но до конца так и не довели. Воговские кастыли не были заменены.

(12.02.2024 05:17)igrik Wrote:  2. Именно поэтому неправильно утверждать, что клик на кнопку Вог-Опций "не возвращает ничего". Он выставляет параметры клика (x=640, y=110, itemId=0), которые Вог сам потом коректно обрабатывает и поготавливает меню Вог опций. Это сделано, чтобы не поломать код Вога. А ты его сейчас начал ломать, т.е. делаешь то, на что обычно сам же и жалуешься.

Кнопка должна окрывать само воговское меню, а не создавать новые кастыли, чтобы заставлять корректно срабатывать воговские кастыли с HD-модом. В исходных кодах функция, открывающая меню, по неизвестным причинам закомментирована. 105

(12.02.2024 05:17)igrik Wrote:  3. Я добавляю эту кнопку, потому что кнопка HD-modа не имеет перевода. Вот решил я так на тот момент.

На кнопке можно заменить текст вызовом содовской функции 5FED80h. Т.к. это стандартный параметр элемента диалога "text", описанный в erm-хелпе.

(12.02.2024 05:17)igrik Wrote:  Не вижу проблемы их скрыть стандартными средствами игры, делов то: 2 вызова одной и той же фунции , чтобы скрыть кнопки HD и WND.

Адрес этой функции пока не нашёлся.

(12.02.2024 05:17)igrik Wrote:  Если прям архикритично - могу убрать свою (тогда останется кнопка HD-мода, которая всегда будет на английском). Но за много лет - это первая жалоба, что кнопок видитиле две.

Смысл, тогда начнут жаловаться игроки, что кпопка не на русском. Лучше оставить как есть.

(12.02.2024 05:17)igrik Wrote:  Суть твоей претензии заключается в том, что это сделано в HiHook'e, а не LoHook'e, но эта претензия не принимается. HiHook всегда более предпочтительный инструмент. Этот вопрос уже неоднократно аргументировался.

Претензия в общем-то в том, что Вы с Бараторчем ставите хуки на одинаковые адреса, в итоге при затирании хука затирается весь HiHook, поэтому конкретно что-то одно из данного типа хука отключить нельзя - тут либо всё, либо ничего. Но это мои проблемы, не Ваши, поэтому в ЭРЕ+ можно найти 1 весёлый феаноровский плагин с кучей хуков на адрес-пустышку, несмотря на то, что это HiHook-и, только там варварским способом удалось запретить их исполнение в отдельно взятом плагине. Совершенно не хочется заниматься этим варварством и в плагинах Игрика. Лучше как-то попытаться договориться (с Феанором это нереально, т.к. он давно ушёл из моддинга и поддержкой своих плагинов уже лет 10 не занимается).

(12.02.2024 05:17)igrik Wrote:  Да уж, XEPOMAHT. Ты явно не умеешь работать в команде. Постоянно на всех жалуешься, что это не так, да это не так.

Умел бы работать в команде - меня сейчас бы здесь уже не было. Увы, характер скверный, не женат, друзей нет, ссорюсь со всеми и ничего с этим поделать не могу.

(12.02.2024 05:17)igrik Wrote:  Если кто-то когда-то попытается домодифицировать ERA+, то я предсталяю как это будет сложно сделать ему.

Вряд ли кому-то это особо нужно, т.к. 99% моддеров предпочитают делать моды с 0. Все, кроме Майора, кто были тем или иным способом связаны с ERA+, давно занимаются чем-то другим, остался один я.


RE: Плагины. Обсуждение - igrik - 12.02.2024 16:53

(12.02.2024 07:44)XEPOMAHT Wrote:  Воговская реализация не была переделана под нормальную. Т.е. пытались поправить это дело и в HD-моде, и в wog_native_dialogs.era, но до конца так и не довели. Воговские кастыли не были заменены.
Кнопка должна окрывать само воговское меню, а не создавать новые кастыли, чтобы заставлять корректно срабатывать воговские кастыли с HD-модом. В исходных кодах функция, открывающая меню, по неизвестным причинам закомментирована.
Никто ничего не пытался поправить (про так называемые Воговские костыли).
Исправлялась только графическя часть, не трогая логику. Поэтому функция, открывающая Воговское меню закомментирована. Она использовалась только для тестов при написании кода, не более.
Это называется разделение зон ответственности. Почитай на досуге об этом.


(12.02.2024 07:44)XEPOMAHT Wrote:  Адрес этой функции пока не нашёлся
Code:
dlg = NewScenarioDlg(можно вытащить указатель отсюда0x587FD0)
HdButton = MEMORY[0x5FF5B0](dlg, 8888);
if ( HdButton )
  MEMORY[0x5FED80](HdButton, 6, 6); // скрыть кнопку HD
WndButton = MEMORY[0x5FF5B0](dlg, 4444);
if ( WndButton )
  MEMORY[0x5FED80](WndButton, 6, 6);  // скрыть кнопку WND



RE: Плагины. Обсуждение - FallenAngel - 05.03.2024 10:52

igrik, фиксы: генерация темницы на подземелье на поверхности (DungeonTerrain.dll), поле битвы в подземелье зависит от почвы (no_underground_at_underground.bin) добавите в game bug fixes?


RE: Плагины. Обсуждение - Archer30 - 05.03.2024 12:37

Can we have RK's patch about AI thinking process added to game bug fixes?
https://github.com/RoseKavalier/H3Plugins/blob/fc6fce1c43fbf18386d0753af44ebdca51bbe28f/SoD_SP_Public/src/hooks/varia/Fixes.cpp#L78

This is useful for preventing crashes of dividing 0 (42437D) speed when war machines are placed on the map with wog map editor.



RE: Плагины. Обсуждение - igrik - 06.03.2024 09:02

(05.03.2024 10:52)FallenAngel Wrote:  igrik, фиксы: генерация темницы на подземелье на поверхности (DungeonTerrain.dll), поле битвы в подземелье зависит от почвы (no_underground_at_underground.bin) добавите в game bug fixes?
Можно. Загрузите оба этих файла, чтобы я не искал их, пожалуйста. Я сам их декомпилирую и включу в свой плагин.
Хм. Я думал, что заплатку "no_underground_at_underground.bin" я давным давно как включил в плагин. Но оказалось что нет.


(05.03.2024 12:37)Archer30 Wrote:  Can we have RK's patch about AI thinking process added to game bug fixes?
https://github.com/RoseKavalier/H3Plugins/blob/fc6fce1c43fbf18386d0753af44ebdca51bbe28f/SoD_SP_Public/src/hooks/varia/Fixes.cpp#L78

This is useful for preventing crashes of dividing 0 (42437D) speed when war machines are placed on the map with wog map editor.
Ok, I will add it.


RE: Плагины. Обсуждение - FallenAngel - 06.03.2024 09:41

igrik, DungeonTerrain.dll, no_underground_at_underground.bin


RE: Плагины. Обсуждение - igrik - 06.03.2024 20:22

(05.03.2024 10:52)FallenAngel Wrote:  igrik, фиксы: генерация темницы на подземелье на поверхности (DungeonTerrain.dll)
FallenAngel, что делает именно этот плагин, и почему его нужно включить в game bug fixes?
То что я увидел не имеет никакого отношения к исправлению багов игры.


RE: Плагины. Обсуждение - FallenAngel - 06.03.2024 20:43

igrik, если игра без подземелья, темница может сгенериться на чужой земле. Т.е. может стартовать без преимущества родной земли. Настаивать на включение его в плагин не буду, просто хотел узнать, добавите ли. Если что, оставлю в моде у себя просто, что мне нужно.


RE: Плагины. Обсуждение - igrik - 06.03.2024 21:12

FallenAngel, а о побочках плагина вы вкурсе?
Этот плагин делает много чего другого, что не касается генерации земли Данжа на поверхности.
- Он зачем то устанавливает тип земель для каждого замка, что и в оригинале игры (во первых - ненужное дублирование кода, во вторых - серьёзная проблема совместимости с различными модами)
- Он добавляет показ длительности заклинаний в бою (x12 или x4 раунда и т.п.), что его явно не касается, и давно реализовано в другом плагине
- Он включает/отключает показ тени силового поля в бою (что уже сделано в плагине исправлении багов)
- Он лезет в генерацию охраны между зонами при создании случайной карты. Причём одно исправляет, а другое ломает.

Генерацию Данжа на типе поверхности "подземелье" я конечно включу в плагин исправления багов.
Но конкретно этот плагин очень, очень сильно замусорен относительно своего названия. Просто имейте это в виду.


RE: Плагины. Обсуждение - FallenAngel - 07.03.2024 05:32

igrik, ого, спасибо, я не знал про побочки


RE: Плагины. Обсуждение - igrik - 09.03.2024 18:26

Обновлен плагин game bug fixes extended.dll
Code:
[+] Исправлен один из багов раздвоения героев: когда герой при полёте или хождении по воде останавливается на водном ивенте
[+] Темница на поверхности генерируется на родной земле
[+] Битвы в шахтах в подземелье проверяют тип почвы. Ранее было всегда = подземелье
[+] При осаде города у охраны при объединении армий с героем-гостем не появляются фантомные артефакты Знамя Полководца
[+] Убийство охраны у Лагеря Беженцев больше не ломает тип существ в этом лагере
[+] Исправлен вылет из игры, когда Суккуб очаровывает существ при битве после разрушения строения в городе.
[+] Добавлен показ стоимости улучшений существ на кнопке апгрейда в окне существа (я не хотел делать в этом плагине, но было очень удобно, потому что используется один и тот же хук, что и в исправлении описания кнопки Сказочного дракона. Поэтому, пусть будет уже так)



RE: Плагины. Обсуждение - FallenAngel - 09.03.2024 20:48

igrik, а заплатка no_underground_at_underground.bin? Или в вог/куда-то еще пойдет?


RE: Плагины. Обсуждение - igrik - 09.03.2024 21:10

(09.03.2024 20:48)FallenAngel Wrote:  igrik, а заплатка no_underground_at_underground.bin? Или в вог пойдет?
Она добавлена.
Code:
[+] Битвы в шахтах в подземелье проверяют тип почвы. Ранее было всегда = подземелье



RE: Плагины. Обсуждение - FallenAngel - 09.03.2024 22:09

igrik, не заметил, спасибо!


RE: Плагины. Обсуждение - Archer30 - 10.03.2024 01:46

igrik, thanks for your work!

Might be a problem or might not, but I noticed an unexpected change of game_bug_fixes.
Hero info panel is not shown immediately until the msg box on day 1 from the map is closed

If you start Arrogance the first map of SoD

With game bug fixes:
Hero info panel is empty
Without game bug fixes:
Hero info panel is ready immediately
It is completely fine either way. I just mention it here in case it is a sign of something else's wrong.


RE: Плагины. Обсуждение - igrik - 10.03.2024 04:42

Fixed!

Update the info panel has been corrected. It is updated only when the adventure map is active.
I did it on purpose. I've always been infuriated by updates inside the city or the hero's screen, or battles, etc. (watch the screenshot)




RE: Плагины. Обсуждение - major - 16.03.2024 03:20

Для добавления в game bug fixes extended.

Есть визуальный баг, или скорее недочёт, связанный со штрафом препятствий.
Если двухгексовое существо стоит справа за стенами при осаде, то при некотором расположении стрелков слева от стен, стрельба по переднему гексу может быть со сломанной стрелой, а по заднему - с прямой, или наоборот. Причем урон в обоих случаях одинаковый. Связано с тем, что при определении штрафа здесь 0x43B713 и здесь 0x443999 в функцию передается гекс, на котором стоит существо (для 2-гексового - задняя часть), и урон рассчитывается по нему. А вот отображение прямой и сломанной стрелы здесь 0x476106 как раз зависит именно от гекса, на который наведён курсор.

Визуализация бага

На мой взгляд достаточно сделать одинаковым отображение прямой/сломанной стрелы для обоих гексов, нежели пересчитывать урон.
В ХотЕ, кстати, баг тоже присутствует.


RE: Плагины. Обсуждение - XEPOMAHT - 12.04.2024 14:32

igrik, зачем нужна данная строчка из TownHeroesMeet.cpp из wog_native_dialogs.era?

Code:
if ( *(int*)((int)o_ExecMgr +4) != (int)o_WndMgr )

Т.к. адреса менеджера o_ExecMgr в базе нет, поэтому я понять не могу что это, а узнать всё же желательно, т.к. пришлось перенести весь твой код из TownHeroesMeet.cpp в Тифон для того, чтобы открывать диалог встречи героев по хотовской кнопке в городе.


RE: Плагины. Обсуждение - igrik - Yesterday 00:17

Потому что в 90% случаев возникал баг с зависанием игры.
Баг заключался вот в чём:
1) Стартуем игру (новый запуск из винды, это важно! НЕ простая перезагрузка карты, а прям перезагрузка игры)
2) Заходим в город и вызываем диалог обмена героев. Важно НЕ проводить встречу вне города, до этого момента
3) После закрытия диалога встречи игра закрывает и диалог города тоже, и появляется визуальный баг (позже скину скрин)

Т.е. игра показывает основную карту, но без героев и городов. на мышь реакции нет, реакция есть на F4, F5 и всё

Этот код решал эту проблему в 99% случаев путём правильной перетасовки менеджеров
Code:
if ( *(int*)((int)o_ExecMgr +4) != (int)o_WndMgr )

Вот небольшое объяснение причины бага: т.е. на момент вызова диалога обмена в городе описание плохого и хорошего расположнения менеджеров в структуре o_ExecMgr
Image: JB0t2JA.png

Замечание: в коде Хоты и в Моп я подобного кода (да и вообще упоминания такой проблемы) не видел. Не понимаю, если честно - почему у меня такая проблема нарисовывалась и почему в других версиях этого не было.


RE: Плагины. Обсуждение - XEPOMAHT - Yesterday 01:28

(Yesterday 00:17)igrik Wrote:  Потому что в 90% случаев возникал баг с зависанием игры.

Ну я давно в курсе (именно по-этому данная кнопка в старых версиях ERA+ ничего не делает). Как я понял из кода игры, программисты из NWC схитрили и чтобы окно города всегда было открыто, то нужно, чтобы из под дочернего окна была видна хоть какая-нибудь часть диалога города, например полоска ресурсов (очередные содовские костыли). Если не видно ничего, то движок игры думает, что окно перекрыто и принудительно не показывает его. Но после закрытия дочернего возврата к показу родительского уже нет и у меня не получилось найти решение как заставить игру думать, что после уничтожения менеджера встречи героев активным становится менеджер города, а не менеджер карты приключений (т.к. диалог встречи героев отвязывается от менеджера карты приключений только костылями, возможно хотовцы сделали как-то без костылей, но этого мы никогда не узнаем).

(Yesterday 00:17)igrik Wrote:  Этот код решал эту проблему в 99% случаев путём правильной перетасовки менеджеров
Code:
if ( *(int*)((int)o_ExecMgr +4) != (int)o_WndMgr )

Мне хотелось узнать что контретно делает эта строчка. Т.к. и без неё почему-то работает. Конкретнее - что такое o_ExecMgr, т.к. я не нашёл его в вого-базе IDA.

(Yesterday 00:17)igrik Wrote:  в коде Хоты и в Моп я подобного кода (да и вообще упоминания такой проблемы) не видел. Не понимаю, если честно - почему у меня такая проблема нарисовывалась и почему в других версиях этого не было.

В MoP в городе диалог встречи героев не используется, насколько помню. Да и сам вызов Мастер модифицировал, добавив туда воговский триггер например.

А исходные коды HoA с этой кнопкой есть только у HotA Crew, т.к. по рукам бродят только коды от старых версий, где этой копки ещё нет.


RE: Плагины. Обсуждение - igrik - Yesterday 02:15

(Yesterday 01:28)XEPOMAHT Wrote:  Мне хотелось узнать что контретно делает эта строчка. Т.к. и без неё почему-то работает. Конкретнее - что такое o_ExecMgr, т.к. я не нашёл его в вого-базе IDA.
Эта строчка проверяет, является ли o_WndMgr текущим менеджером (т.е. на верху дерева иерархии) или нет.
ExecMgr = это класс загрузки и управления базовыми менеджерами игры. Например он же загружает битву каждый раз, и каждый раз её выгружает. Так же и с диалогом города.
Буду дома - скину его структуру (то что я когда-то ещё разобрал)

(Yesterday 01:28)XEPOMAHT Wrote:  В MoP в городе диалог встречи героев не используется, насколько помню. Да и сам вызов Мастер модифицировал, добавив туда воговский триггер например.
Как это? Нажми кнопку "Home" в городе с двумя героями. Я про MoP 3.07 и позднее

(Yesterday 01:28)XEPOMAHT Wrote:  А исходные коды HoA с этой кнопкой есть только у HotA Crew, т.к. по рукам бродят только коды от старых версий, где этой копки ещё нет.
Ну так я тоже за счёт реверса смотрел. Но я не увидел у них там этих танцев с бубном.


RE: Плагины. Обсуждение - MOP - Yesterday 07:49

(Yesterday 00:17)igrik Wrote:  Замечание: в коде Хоты и в Моп я подобного кода (да и вообще упоминания такой проблемы) не видел. Не понимаю, если честно - почему у меня такая проблема нарисовывалась и почему в других версиях этого не было.
Была она, была. Именно поэтому при входе в экран города функция обновления экрана карты приключений самым грязным способом глушится намертво, а при выхода из экрана города - восстанавливается.


RE: Плагины. Обсуждение - igrik - Yesterday 11:05

А я себе голову ломал "почему всё норм", когда смотрел код MoP. Теперь понятно. Спасибо за инфу Ab

Code:
struct _ExecMgr_; // Размер: 16
#define o_ExecMgr (*(_ExecMgr_**)0x699550)

// Менеджер работы с другими менеджерами (размер - 16)
NOALIGN struct _ExecMgr_ : _Struct_
{
  _Manager_* previous;
  _Manager_* next;
  _Manager_* current;
  _Manager_* field_C;

  _Manager_* RunManager() { return CALL_1(_Manager_*, __thiscall, 0x4B0BA0, this); }
  _byte_ CallManager(_Manager_* mgr)  { return CALL_2(_byte_, __thiscall, 0x4B09D0, this, mgr); }
  _int32_ PushManager(_Manager_* mgr) { return CALL_2(_int32_, __thiscall, 0x4B0770, this, mgr); }
  _int32_ AddManager(_Manager_* mgr)  { return CALL_3(_int32_, __thiscall, 0x4B0880, this, mgr, -1); }
  void RemoveManager(_Manager_* mgr)  { return CALL_2(void, __thiscall, 0x4B0950, this, mgr); }
};


// * размер 0x38h (56 байт) // первые 56 байт всех менеджеров в игре.
NOALIGN struct _Manager_ : _Struct_
{
  struct {
    _dword_ managerConstructor; // 0x44D200
    _dword_ managerDestructor;
    _dword_ managerUpdate;
  } *h3ManagerVTable;

  _Manager_* previus;   // parent
  _Manager_* next;      // child
  _int32_ id;
  _int32_ priority;
  char name[28];    // 0x14
  _int32_ nameEnd;  // 0x30
  _int32_ isActive; // 0x34

  void SetPreviousManager(_Struct_ *prevMgr) { previus = (_Manager_*)prevMgr; }
  void SetNextManager(_Struct_ *nextMgr) { next = (_Manager_*)nextMgr; }
  _Manager_* ActivateManager() { return CALL_1(_Manager_*, __thiscall, 0x4B0BA0, this); }

  void SetManagers(void *mgr1, void *mgr2)
  {
    previus = (_Manager_ *)mgr1;
    next = (_Manager_ *)mgr2;
  }
};

Code:
// это
if ( *(int*)((int)o_ExecMgr +4) != (int)o_WndMgr )
// то же самое, что и это
if ( o_ExecMgr->next != (_Manager_*)o_WndMgr )



RE: Плагины. Обсуждение - XEPOMAHT - Yesterday 12:23

(Yesterday 07:49)MOP Wrote:  Именно поэтому при входе в экран города функция обновления экрана карты приключений самым грязным способом глушится намертво, а при выхода из экрана города - восстанавливается.

Тифон так же пишет вместо структуры менеджера карты приключений 0, не давая ему обновляться - там так же добавлена проверка на 0 при попытке любого обновления.

(Yesterday 11:05)igrik Wrote:  
Code:
// это
if ( *(int*)((int)o_ExecMgr +4) != (int)o_WndMgr )
// то же самое, что и это
if ( o_ExecMgr->next != (_Manager_*)o_WndMgr )

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


RE: Плагины. Обсуждение - igrik - Yesterday 23:54

(Yesterday 12:23)XEPOMAHT Wrote:  ... то ли я что-то неправильно переписал с исходников (СИ тяжело читать).
Так декомпилируй WND и напиши по декомпилированому.
А вообще, если хардкодно блочишь обновление экрана карты приключений, то зачем эти танцы с бубуном