Объявления
Поздравляем
Roman2211


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

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

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 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)
Поблагодарили: 2185 раз.

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

Сообщение AlexSpl » 29 май 2020, 16:42

Таверна:

Код: Выделить всё
.text:004C8282 mov     [edx+ebx*4+28h], esi

esi - ID героя, ebx - слот. Естественно, придётся чекнуть на уникальность.

Стартовый тоже с помощью брейкпоинта находится.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

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

Сообщение as239 » 12 июн 2020, 09:10

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

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

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

Сообщение as239 » 19 июн 2020, 14:53

А есть ли где вырезанные картинки объектов карты приключений, 231 штука?
Уж больно муторно делать это самому - достаешь из def, пересохраняешь в png, ставишь прозрачный фон...
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

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

Сообщение RoseKavalier » 19 июн 2020, 15:42

Вернуться к началу

offlineArmageddets  
Новичок
Новичок
 
Сообщения: 21
Зарегистрирован: 31 окт 2018, 15:05
Пол: Не указан
Поблагодарили: 2 раз.

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

Сообщение Armageddets » 24 июн 2020, 10:13

В примере по делфи есть маленькая опечатка. Написано вот так:
uses System.SysUtils, Windows, PatchApi;

А вместо точки нужна запятая после слова System:
uses System, SysUtils, Windows, PatchApi;

Пробовал сделать пример. Получилось. Хотелось бы еще узнать если в делфи аналогия для работы с define или же нужно вручную по другому только работать?

И второй вопрос. Как Вы ищете нужные участки памяти? Видел, что на С++ подключается файл homm3.h для более удобной работы.
#include "..\..\include\homm3.h"
При работе с делфи нужно подключать другой?

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

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 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)
Поблагодарили: 2185 раз.

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

Сообщение AlexSpl » 24 июн 2020, 10:56

Цитата:
В примере по делфи есть маленькая опечатка. Написано вот так:
uses System.SysUtils, Windows, PatchApi;

Здесь всё правильно (System.SysUtils - полное название юнита). Но если Ваша версия Delphi ругается, System можно опустить.

Цитата:
Хотелось бы еще узнать если в делфи аналогия для работы с define или же нужно вручную по другому только работать?

Аналога нет. Используйте константы и функции.

Цитата:
И второй вопрос. Как Вы ищете нужные участки памяти?

Эта самая сложная часть и называется реверсингом. Для начала скачайте базу IDA Героев 3, где многие функции имеют понятные имена (Heroes3f.idb).

Цитата:
Видел, что на С++ подключается файл homm3.h для более удобной работы.
#include "..\..\include\homm3.h"
При работе с делфи нужно подключать другой?

Аналогичной библиотеки нет, но Вы всегда можете переписать на Delphi нужные функции.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

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

Сообщение as239 » 24 июн 2020, 11:51

И все таки как правильно пропустить несколько ходов программно?
Пробую так:
Код: Выделить всё
_LHF_(PassTurn){
   //H3Player *AcPl = h3_ActivePlayer;

   for (int i = 0; i < 6; i++)
   {
      c->ecx = (int)P_Main;
      char ret = FASTCALL_0(char, 0x4C6CA0);
      //h3_ActivePlayer = AcPl;
   }
   return NO_EXEC_DEFAULT;
}
...
   _PI->WriteLoHook(0x409CDF, PassTurn);

Но проходит только один день и как я понял ходят не все компы.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 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)
Поблагодарили: 2185 раз.

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

Сообщение AlexSpl » 24 июн 2020, 12:06

Попробуйте вызывать в цикле

Код: Выделить всё
int __thiscall ProcessAdvMapButtonEvents(int this, _MouseStr_ *cmd, int a3, int a4, int a5)

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

Только параметры этой функции для пропуска хода не подскажу. Но их очень легко получить с помощью брейкпоинта или даже лоухука на 0x408992 (просто нажмите кнопку пропуска хода и выведите на экран аргументы функции).
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

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

Сообщение as239 » 24 июн 2020, 14:35

Нет все равно проходит только один ход.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 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)
Поблагодарили: 2185 раз.

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

Сообщение AlexSpl » 24 июн 2020, 14:44

Странно. Разве вызов этой функции не есть эмуляция клика по кнопке завершения хода? Может, кое-что ещё после вызова этой функции делать нужно.
Вернуться к началу

Пред.След.

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

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

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