Объявления

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

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

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
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)
Поблагодарили: 2161 раз.

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

Сообщение AlexSpl » 08 янв 2019, 14:39

Цитата:
Никак не могу понять зачем возвращать значения.
Заремарил _PI->WriteLoHook(0x4AC168, restoreOriginalReward) , проверил все банки - все работает.

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

Цитата:
Также не понимаю что за 2-а магических числа: 0x54 и 0x58.

Это смещения (оффсеты) полей в структуре _СrBankState_ (см. homm3.h).
Последний раз редактировалось AlexSpl 08 янв 2019, 14:50, всего редактировалось 1 раз.
Вернуться к началу

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

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

Сообщение as239 » 08 янв 2019, 14:49

Вот теперь понял, все абсолютно верно сделано.
Вернуться к началу

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)
Поблагодарили: 2161 раз.

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

Сообщение AlexSpl » 08 янв 2019, 14:54

Цитата:
Наверное имеются ввиду что награда и полученное количество будет другим для второго игрока (скорее всего он получит другое количество психических элеменалей т.к. их ОЗ отличает от эфритов).
Но вот расчет полученного количества должен идти от одних и тех же значений.

Нет, именно такую, как и первый. Switch для второго игрока просто не сработает.

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

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

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

Сообщение as239 » 08 янв 2019, 15:00

Цитата:
Нет, именно такую, как и первый. Switch для второго игрока просто не сработает.

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

Цитата:
Я вот теперь думаю, что надо было не по существам определять награду, а по кол-ву и типу охранников :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)
Поблагодарили: 2161 раз.

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

Сообщение AlexSpl » 08 янв 2019, 15:04

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

offlinequetzalcoatl  
имя: vik
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 12 янв 2019, 15:28
Пол: Мужчина
Поблагодарили: 11 раз.

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

Сообщение quetzalcoatl » 13 янв 2019, 16:33

Всем добрый вечер.

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

Всем спасибо за ответы :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)
Поблагодарили: 2161 раз.

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

Сообщение AlexSpl » 14 янв 2019, 06:02

Цитата:
Прочитав несколько веток на форуме (о создании собственного плагина и пользовательские плагины), хотел бы спросить кроме Си, насколько нужно глубоко знать Ассемблер, а точнее на каком уровне, чтобы разобраться и написать собственный плагин?

Зависит от задачи. Обычно просто требуется найти место в коде для хука, определить, какие входные данные потребуются для решения (в каких регистрах/где в памяти что находится), и работать уже с ними на C++ как с обычными переменными/структурами.

Цитата:
И вопрос тем, кто уже создавал пользовательские плагины. С помощью плагинов можно только изменять уже существующие вещи или же можно добавлять новые, например новых юнитов и т.п.?

Просто отвечу, что можно :smile1: Зависит от ваших способностей и наличия свободного времени.

* * *
Если вы прямо с нуля начинаете, то можете почитать здесь и далее в теме о том, как найти нужное место в коде.
Вернуться к началу

offlinequetzalcoatl  
имя: vik
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 12 янв 2019, 15:28
Пол: Мужчина
Поблагодарили: 11 раз.

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

Сообщение quetzalcoatl » 14 янв 2019, 07:07

Благодарю за ответ :smile1: Буду пробовать разбираться.

AlexSpl писал(а):

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


Для Героев 3 идея нахождения нужных переменных/структур будет схожа как для вторых?
Вернуться к началу

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)
Поблагодарили: 2161 раз.

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

Сообщение AlexSpl » 14 янв 2019, 07:19

Цитата:
Для Героев 3 идея нахождения нужных переменных/структур будет схожа как для вторых?

Да. Самый простой способ - обычный текстовый поиск. Идея: если игра показывает сообщение (текст), например, когда мы берём артефакт, а нам как раз нужно как-то изменить что-то, касающееся взятия артефакта, то логично, что код, нужный нам, будет рядом с тем, который показывает сообщение. Таким же образом можно искать и места, где игра загружает ресурсы (по имени загружаемого ресурса). Какие-то более сложные вещи уже потребуют знания формата, в котором хранятся данные (например, структур игрока/героя). Многие структуры (в игре это объекты) прокомментированы в заголовочном файле homm3.h.
Вернуться к началу

offlinequetzalcoatl  
имя: vik
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 12 янв 2019, 15:28
Пол: Мужчина
Поблагодарили: 11 раз.

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

Сообщение quetzalcoatl » 14 янв 2019, 07:42

AlexSpl писал(а):

Да. Самый простой способ - обычный текстовый поиск. Идея: если игра показывает сообщение (текст), например, когда мы берём артефакт, а нам как раз нужно как-то изменить что-то, касающееся взятия артефакта, то логично, что код, нужный нам, будет рядом с тем, который показывает сообщение. Таким же образом можно искать и места, где игра загружает ресурсы (по имени загружаемого ресурса). Какие-то более сложные вещи уже потребуют знания формата, в котором хранятся данные (например, структур игрока/героя). Многие структуры (в игре это объекты) прокомментированы в заголовочном файле homm3.h.


Идея понятна, когда работаешь с готовыми структурами (объектами). Например, если же нужно заменить или добавить желтый цвет флага в игру, смотрим в заголовочный файл homm3.h и ищем там структуру (объект), который отвечает за загрузку спрайтов цветов в игру (хотя желтый цвет присутствует и в окне выбора замка, и уже непосредственно в самой игре у замка и героев). Далее через шестнадцатеричный редактор ищем места куда все это загружается, и потом создаем плагин по загрузке нового цвета. Алгоритм действий получается примерно таким?
Вернуться к началу

Пред.След.

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

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

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

cron