Объявления

Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

Как создать плагин для HD мода

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineRolex  
имя: Alex
Ветеран
Ветеран
 
Сообщения: 890
Зарегистрирован: 22 сен 2020, 18:58
Откуда: УКРАИНА
Пол: Мужчина
Поблагодарили: 49 раз.

Re: Как создать плагин для HD мода

Сообщение Rolex » 17 апр 2021, 15:04

Но этот способ у Мерсенна будет более оптимален чем у Randint, даже без случайного seed, так же?

Получается вот это:
Код: Выделить всё
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<int> uid(1, 100);


Можно заменить, например, вот этим:
Код: Выделить всё
mt19937 gen(2147483647);
uniform_int_distribution<int> uid(1, 100);
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2162 раз.

Re: Как создать плагин для HD мода

Сообщение AlexSpl » 18 апр 2021, 11:26

Для генерации случайных событий в бою вполне достаточно того ГПСЧ, который есть. Но подойдёт и Mersenne twister с установкой одинакового Seed для обоих игроков.
Вернуться к началу

offlineRolex  
имя: Alex
Ветеран
Ветеран
 
Сообщения: 890
Зарегистрирован: 22 сен 2020, 18:58
Откуда: УКРАИНА
Пол: Мужчина
Поблагодарили: 49 раз.

Re: Как создать плагин для HD мода

Сообщение Rolex » 18 апр 2021, 12:14

Ок. С ГПСЧ разобрались.

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

Все дело в том, что мод сейчас не подтягивает именно портреты героев как из "Папка_с_игрой\Data", так и с "Папка_с_игрой\_HD3_Data\Common". Остается только один выход - перепаковка ресурсов игры (lod-файлов), что не совсем удобно.

Вот, например, наименования портретов Оррина: hps000kn.pcx (маленький) и hpl000kn.pcx (большой). Мне бы пример с заменой по одному герою, а для остальных бы я и сам, думаю, сделал. Всего, кстати, 163 маленьких и 163 больших портретов героев (144 дефолтных героя и 19 из кампаний и тп). Хотя если есть возможность сделать без прописывания оригинальных названий картинок по каждому герою, то было бы вообще здорово. Просто все картинки, которые находятся в папке с плагином (в оригинальном формате *.pcx) и совпадают по названию с оригинальными подгружаем вместе с плагином и подменяем нашими кастомными картинками оригинальные. Есть вообще идеи как это сделать?
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2162 раз.

Re: Как создать плагин для HD мода

Сообщение AlexSpl » 19 апр 2021, 00:57

Поменять портрет одного героя на портрет другого легко. Например, Оррина на Валески:

Код: Выделить всё
o_HeroInfo[0].hps_name = (_ptr_)"hps001kn.pcx";
o_HeroInfo[0].hpl_name = (_ptr_)"hpl001kn.pcx";

Можно прописать полный путь к кастомным портретам (как получить текущую директорию, Вы знаете), но это вряд ли сработает (хотя попробовать стоит). Если не сработает, нужно хукать функцию, отображающую портреты. Брейкпоинт на перечисленные выше поля - и вперёд :smile1:
Вернуться к началу

offlineRolex  
имя: Alex
Ветеран
Ветеран
 
Сообщения: 890
Зарегистрирован: 22 сен 2020, 18:58
Откуда: УКРАИНА
Пол: Мужчина
Поблагодарили: 49 раз.

Re: Как создать плагин для HD мода

Сообщение Rolex » 19 апр 2021, 13:23

AlexSpl писал(а):

Если не сработает, нужно хукать функцию, отображающую портреты. Брейкпоинт на перечисленные выше поля - и вперёд :smile1:

Вот здесь поподробней, пжл. Лучше, конечно, с готовым примером, например, на примере портретов Оррина. Или это решается сразу для всех подгружаемых вместе с плагином портретов? Хук один нужен будет?
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2162 раз.

Re: Как создать плагин для HD мода

Сообщение AlexSpl » 19 апр 2021, 14:30

Если Вам так интересен моддинг, почитали бы для начала про ассемблер и IDA. С++ Вы же знаете. Без хотя бы базовых знаний, требующихся для реверсинга, много не наплагинишь :smile2: Я могу, конечно, помочь, но основную работу Вы должны сделать самостоятельно.
Вернуться к началу

offlineRolex  
имя: Alex
Ветеран
Ветеран
 
Сообщения: 890
Зарегистрирован: 22 сен 2020, 18:58
Откуда: УКРАИНА
Пол: Мужчина
Поблагодарили: 49 раз.

Re: Как создать плагин для HD мода

Сообщение Rolex » 19 апр 2021, 14:42

Цитата:
Если Вам так интересен моддинг, почитали бы для начала про ассемблер и IDA.

Очень интересен на самом деле. Обязательно почитаю и поизучаю как появится больше свободного времени.

Цитата:
С++ Вы же знаете.

Ну знаете это громко сказано. Самые азы разве что.

Цитата:
Я могу, конечно, помочь, но основную работу Вы должны сделать самостоятельно
.
Пока будьте добры немного помогите. В моем списке плагинов, которые мне нужно закончить уже немного осталось. Буду пытаться сам делать то, что знаю. Но кроме ассма и IDA я еще не так глубоко знаю Героев как Вы изнутри.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2162 раз.

Re: Как создать плагин для HD мода

Сообщение AlexSpl » 19 апр 2021, 14:55

Замена портретов - отличный способ попрактиковаться в реверсинге для начинающего мододела. Попробуйте хотя бы с помощью брейкпоинтов найти функцию, которая отображает большой портрет в окне героя. Самые азы в этой теме (жаль, правда, картинки удалили). Вам понадобится IDA, адрес поля _byte_ pic; // +52 (я надеюсь, этого будет достаточно) какого-нибудь героя и брейкпоинт на чтение этого поля.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2162 раз.

Re: Как создать плагин для HD мода

Сообщение AlexSpl » 20 апр 2021, 17:05

А что за формат PCX используется? Я сохранил портрет в формате PCX в mtPaint, и игра пытается подгружать его из папки DATA после замены hpl_name, но, может быть, я размеры перепутал или формат, потому как вместо того, чтобы отобразить портрет, игра показывает окно командной строки с полным путём к портрету, а после закрытия этого окна завершает работу.

Даже если распаковать какой-нибудь портрет с помощью MMArchive в формате PCX и положить его в DATA, возникает эта ошибка (в HD_TC2.dll + 0x4882).

* * *
Так, разобрался. HD мод подтягивает портреты уже в формате BMP. Просто пересохраните портрет в формате PCX в BMP. Можно кидать не только в корень, но и во вложенные папки (в этом случае относительный путь придётся прописать в hps_name и hpl_name).
Последний раз редактировалось AlexSpl 20 апр 2021, 17:37, всего редактировалось 1 раз.
Вернуться к началу

offlineRolex  
имя: Alex
Ветеран
Ветеран
 
Сообщения: 890
Зарегистрирован: 22 сен 2020, 18:58
Откуда: УКРАИНА
Пол: Мужчина
Поблагодарили: 49 раз.

Re: Как создать плагин для HD мода

Сообщение Rolex » 20 апр 2021, 17:35

AlexSpl писал(а):

Вам понадобится IDA.

Поставил IDA 7.0 причем платную пропатченную версию с расширенным функционалом. Есть также WinHex и Hex Editor Neo.

AlexSpl писал(а):

адрес поля _byte_ pic; // +52 (я надеюсь, этого будет достаточно) какого-нибудь героя и брейкпоинт на чтение этого поля

Я без понятия что это и как ставить эти брейкпоинты.

По ссылке, которую вы дали речь за Герои 2. Я понимаю, что там все похоже делается, но есть и нюансы, плюс все Ваши картинки умерли. Очень сложно без них разобраться в общем.

Да и Вы сами же писали:
AlexSpl писал(а):

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


Какие есть варинты?
1. Вы можете быстро помочь найти адрес хука лично.
2. Помогать пошагово здесь уже по моей задаче подробно с картинками на моем примере (по ассемблеру, отладке, поиску адресов, IDA + WinHex).
3. Написать подробную детальную инструкцию по всем приемам и нюансам отладки, анализа кода и поиска адресов для хуков для Героев 3 (IDA + WinHex/Hex Editor Neo), как для найболее популярной в плане моддинга части Героев (да и вообще), особенно после появления патчера. Такой темы до сих пор нет.

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

Очевидно, что первый вараинт самый быстрый и простой. Третий самый объемный. Но если будет такая тема, то, вероятно, появится и больше мододелов.
Можно пойти по второму варианту, что-то среднее между первым и вторым. Выбор за Вами.
Последний раз редактировалось Rolex 20 апр 2021, 17:43, всего редактировалось 4 раз(а).
Вернуться к началу

Пред.След.

Вернуться в Общий раздел

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron