Объявления

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

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

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

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

Сообщение Rolex » 30 июл 2021, 14:23

AlexSpl писал(а):

Я думаю запостить в тему с пользовательскими плагинами. Только сделаю универсальный заголовок из GENRLTXT.TXT.

На ваше усмотрение. Ну и раз вы также за изучение заклов 5-го уровня, тогда вместо этого:
Код: Выделить всё
o_Spell[spell].level <= hero->second_skill[HSS_WISDOM] + 2 && o_Spell[spell].level <= hero->second_skill[HSS_EAGLE_EYE] + 1

нужно делать это:
Код: Выделить всё
o_Spell[spell].level <= hero->second_skill[HSS_WISDOM] + 2 && o_Spell[spell].level <= hero->second_skill[HSS_EAGLE_EYE] + 2


И, кстати, а что насчет вероятностей решили? По-моему, 20% - это бесполезно. Тут либо делать 50%/75%/100%, либо вообще убирать вероятности. Везде 100%, чтобы уровень Орлиного глаза влиял только на макс уровень закла, который может выучить герой. Как раз будет до 3-го/4-го/5-го вместо 2-го/3-го/4-го.
Вернуться к началу

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 » 30 июл 2021, 15:15

100% плохо, т.к. есть арты на Eagle Eye и специализация.
Вернуться к началу

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

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

Сообщение Rolex » 30 июл 2021, 15:39

Вижу в готовых вы сделали 40%/60%/80%. Тоже вариант неплохой.

Также заметил вы изменили showSpellDlg. Там строку из o_GENRLTXT_TXT берете. А чем такой вариант лучше предыдущего?
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

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

Сообщение void_17 » 30 июл 2021, 15:40

Кто знает функции которые отвечают за:
преобразователь скелетов в некрополисе,
монстроторговцев у варваров,
межгородской телепорт в инферно,
верфь?

Перерыл базу, ничего не нашел.
Вернуться к началу

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 » 30 июл 2021, 15:45

Цитата:
Там строку из o_GENRLTXT_TXT берете. А чем такой вариант лучше предыдущего?

Тем, что так делается в оригинале. Правда, на русской версии не тестировал.
Вернуться к началу

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 » 30 июл 2021, 15:47

Цитата:
Кто знает функции которые отвечают за:
преобразователь скелетов в некрополисе

См. 4E40F1h. Остальное тоже можно поискать. Маски строений в этом документе: https://handbookhmm.ru/forum/download/file.php?id=1671
Вернуться к началу

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

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

Сообщение Rolex » 30 июл 2021, 16:00

AlexSpl писал(а):

Тем, что так делается в оригинале.

Ясно.

AlexSpl писал(а):

Правда, на русской версии не тестировал.

Я протестировал на русской версии. Все ок.

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

Можно добавить:
Код: Выделить всё
struct SecSkillDesc
{
   char* Name;
   char* BasicDesc;
   char* AdvancedDesc;
   char* ExpertDesc;
};

SecSkillDesc EagleEyeDesc =
{
   "Орлиный взор",
   "{Базовый Орлиный взор}\n\nПозволяет герою с 40%-й вероятностью изучить заклинание до 3-го уровня включительно, направленное противником во время боя, как только он получает ход в бою.",
   "{Продвинутый Орлиный взор}\n\nПозволяет герою с 60%-й вероятностью изучить заклинание до 4-го уровня включительно, направленное противником во время боя, как только он получает ход в бою.",
   "{Экспертный Орлиный взор}\n\nПозволяет герою с 80%-й вероятностью изучить заклинание до 5-го уровня включительно, направленное противником во время боя, как только он получает ход в бою."
};

int __stdcall changeEagleEyeDesc(LoHook* h, HookContext* c)
{
   *(SecSkillDesc*)(*(int*)0x67DCF0 + 11 * 16) = EagleEyeDesc;
   return EXEC_DEFAULT;
}
...
_PI->WriteLoHook(0x4E6D77, changeEagleEyeDesc);
Вернуться к началу

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 » 30 июл 2021, 17:09

Такие описания лучше помещать в ini. Язык детектить - такое себе. Есть не только английская и русская версии. Думаю в ini вынести ещё и проценты.

Хотя нет. Вспомнил, что есть плагин, позволяющий менять описания вторичных навыков: https://handbookhmm.ru/forum/viewtopic.php?f=56&t=529#p16656. Так что лучше менять там.

* * *
Вообще, неплохо бы написать путеводитель по этой теме. Здесь столько готовых примеров, что свои плагины можно писать, просто копируя код из примеров :smile1: Сам так делаю, потому что, естественно, всё забывается. Когда создавал тему, не думал, что она будет настолько популярной (относительно других на этом форуме, конечно).
Вернуться к началу

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

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

Сообщение Rolex » 30 июл 2021, 18:24

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

 тыц
Изображение


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

У меня есть общее понимание того, как это сделать, но конечно мне потребуется кое-какая помощь.

Насколько я понимаю, нам потребуется два хука. Первый на диалоге по ПКМ по кнопке апгрейда в окне существа в городе и второй для инфо строки в окне существа при наведнии курсора на эту кнопку.

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

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

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

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 » 30 июл 2021, 18:35

Когда кнопка апгрейда неактивна, попап диалог не показывается? Или в чём сложность? Стоимость в ресурсах легко получить из o_CreatureInfo[ID существа].cost.

Я бы не парился и выводил информацию о стоимости апгрейда стека прямо в ресурсах: т.е. нажал правую кнопку, а в строке ресурсов - стоимость апгрейда, отпустил - текущие ресурсы игрока.
Последний раз редактировалось AlexSpl 30 июл 2021, 18:46, всего редактировалось 1 раз.
Вернуться к началу

Пред.След.

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

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

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

cron