Вопросы по моддингу (Heroes 4)

Форум предназначен для обсуждения общегеройской тематики, не относящейся к аддону Equilibris. Флуд, флейм и оффтоп, категорически запрещены.
Post Reply
Nexus
Level 1 Hero
Level 1 Hero
Posts: 2
Joined: Sat Aug 19, 2017 14:06

Вопросы по моддингу (Heroes 4)

Post by Nexus »

Приветствую всех!
В первую очередь хочу выразить огромную благодарность Equilibris Team за эту замечательную модификацию и ваши труды над любимой игрой (с героями познакомился именно с 4 части). Именно ваш мод побудил снова переиграть в неё с новыми красками.

Загорелся желанием сделать мини-мод на основе Екви 3.55, а также ремейком всех оригинальных кампаний под него.
В моддинге я новичек. На данный момент разобрался как редактировать некоторые параметры, вытаскивать кампании и запаковывать их обратно. Проверял всё на работоспособность. Но возник ряд вопросов, с которымии прошу помочь знающих людей:

1) Кампании оригинальных героев и вихрей войны распаковались и нормально открываются редактором, а кампании грядущей бури пишут, что они не являются файлом кампаний героев 4 и не открываются, в чём может быть проблема?

2) Я правильно понимаю, что на уровне сложности Чемпион ИИ будет максимально силён?

3) Можно как-то сделать ИИ "поумнее"? Он иногда банально тупит и пропускает ходы, не захватывает даже свободные шахты, а просто стоит. Или всё решается путем выставления максимальной его силы в редакторе и приоритете в конкретных местах на карте?

4) Возможно ли как-то "прикрутить" Цитадели и Замку увеличение прироста существ? (т.е. функционал здания "Загон" у барбов)

5) Как отредактировать цифру прироста золота в городе (750 и 1000)? И вообще любые цифровые показатели у построек (нашел только в таблицах стоимость постройки зданий)

6) Продолжая про цифры, очень интересует где находятся числовые данные абилок юнитов (например в Экви у единорогов повысили шанс ослепления) и так же числовые данные объектов на карте (Очень хочу изменить количество опыта, которое даёт Камень Знаний и в целом "вдохнуть" новую жизнь в некоторые объекты) и числовые данные (характеристики) артефактов. Я нашел только стоиомсть артефактов, всё в тех же таблицах

7) Каким образом можно заменить существ в городах и внешних жилищах?
И зависят ли они как-то друг от друга? Т.е. если вместо церберов поставить в городе наниматься гаргулий, то внешнее жилище "Псарня" тоже будет гаргулий предлагать для найма?

8 ) Я научился заменять абилки существ, но вот добавить новые, не получилось, где-то косячу в коде и крашится exeшник
Делал по гайду Accolon'a в этом же разделе форума. Но там разбирался пример Элементаля Земли, которому были изменены абилки в Экви, и там уже стоят nop на месте где должны быть его абилки, что запутало меня. Не понимаю сколько "nop" нужно проставить в конкретном существе (от чего зависит) и как быть, если тот новый адрес call 300 уже используется?
Пробовал делать на угад, как понял из примера - не вышло :(

Буду очень признателен за любую помощь
Roman2211
Level 6 Hero
Level 6 Hero
Posts: 76
Joined: Thu May 03, 2012 21:42

Re: Вопросы по моддингу (Heroes 4)

Post by Roman2211 »

1) Используй прогу MH4
2) Нет, AI не сможет валить нейтралов, самый оптимальный уровень сложности - Мастер
3-8) Это всё зашито в ехе...
Nexus
Level 1 Hero
Level 1 Hero
Posts: 2
Joined: Sat Aug 19, 2017 14:06

Re: Вопросы по моддингу (Heroes 4)

Post by Nexus »

Спасибо за ответ!
Все кампании распаковал и они работают

Протестил сложность ИИ, на мастере не накладывают на себя герои зелье бессмертия, что хнык(
Зато на сложности "Магистр" зелья уже используют, да и карту вроде более менее пылесосят, хотя на мастере всё же (по ощущениям) быстрее

Капаюсь в h4mod.exe нашёл где измененные экви абилки существ, там как я понял и свободные места в коде находятся (где 0000 стоят)
Получилось добавить абилку окаменения элементалу земли, но т.к. там было всё в притык (в экви ему и так изменяли абилки), то затер одну строчку снизу, при этом exe не крашится и в игре абилка работает у элемов. Если так оставить будет нормально или какую-то важную строчку затёр и нельзя так делать?

Первый скриншот как было и второй то, что стало у меня в коде:
Image
Image
User avatar
Max_HMMI
Equilibris Core Team
Equilibris Core Team
Posts: 806
Joined: Sat Apr 02, 2005 19:45
Location: Киев

Re: Вопросы по моддингу (Heroes 4)

Post by Max_HMMI »

Nexus wrote: Thu Sep 07, 2017 22:40 5) Как отредактировать цифру прироста золота в городе (750 и 1000)? И вообще любые цифровые показатели у построек (нашел только в таблицах стоимость постройки зданий)
Ой, дай бог памяти... По-моему, это где-то в exe-шнике.
6) Продолжая про цифры, очень интересует где находятся числовые данные абилок юнитов (например в Экви у единорогов повысили шанс ослепления) и так же числовые данные объектов на карте (Очень хочу изменить количество опыта, которое даёт Камень Знаний и в целом "вдохнуть" новую жизнь в некоторые объекты) и числовые данные (характеристики) артефактов.
Там же.
8 ) Я научился заменять абилки существ, но вот добавить новые, не получилось, где-то косячу в коде и крашится exeшник.
Добавить дополнительную абилку существу или добавить новую абилку в игру?
Не понимаю сколько "nop" нужно проставить в конкретном существе (от чего зависит) и как быть, если тот новый адрес call 300 уже используется?
1. Nop используется для того, чтобы "забить" остатки старой инструкции, т.к. машинный код выполняется последовательно. В общем случае, остаток инструкции также будет выполнен, что, с очень высокой степенью вероятности, приведет к крашу приложения. Исключение - когда остаток обходится операциями перехода, но и тут красивше "забить" его nop-ами (повышает читабельность кода).
2. Если адрес 300 уже занят, то подойдет любой свободный адрес в этой области (насколько я помню, там нули). Только, если в коде есть ссылки на абсолютные адреса, то их нужно подкорректировать.
Получилось добавить абилку окаменения элементалу земли, но т.к. там было всё в притык (в экви ему и так изменяли абилки), то затер одну строчку снизу, при этом exe не крашится и в игре абилка работает у элемов. Если так оставить будет нормально или какую-то важную строчку затёр и нельзя так делать?
В принципе, нельзя, но, думаю, в данном конкретном случае можно. Видимо, это какой-то код от старых версий Equi, который нынче перенесен в dll, а в данном месте уже не используется. Я основываюсь на том, что у меня в коде нет ссылок на адрес .40035B, а переход по адресу .40036A ведет в никуда. Поэтому место по адресам .40035B-.40036E можно смело использовать под свои нужды. А вот ниже лезть не советую - мегадракон будет шибко недоволен! ;)
Post Reply