Объявления

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

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

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineigrik  
Подмастерье
Подмастерье
 
Сообщения: 108
Зарегистрирован: 14 сен 2017, 12:35
Пол: Не указан
Поблагодарили: 84 раз.

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

Сообщение igrik » 14 авг 2019, 09:15

AlexSpl писал(а):

2igrik: А добавить typedef double DOUBLE?

Да. Работает. Спасибо :smile1:
Вернуться к началу

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

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

Сообщение RoseKavalier » 14 авг 2019, 13:55

igrik писал(а):

RoseKavalier, why does the error appear?
VS 2019 community
Код: Выделить всё
Error (active)   E0020   identifier "DOUBLE" not determined   Test   D:\My_Projects\HoMM3\Headers\H3Structures.h   1276   
Error (active)   E0020   identifier "DOUBLE" not determined   Test   D:\My_Projects\HoMM3\Headers\H3Structures.h   2924   
Error (active)   E0020   identifier "DOUBLE" not determined   Test   D:\My_Projects\HoMM3\Headers\H3Structures.h   2925   
Error (active)   E0020   identifier "DOUBLE" not determined   Test   D:\My_Projects\HoMM3\Headers\H3Structures.h   2926



DOUBLE is declared is <WTypes.h>. A quick search shows that this file may be problematic with platforms newer than SDK 8.1 (I use platform v141_xp or older). I did not experience this issue when testing with VS2019, probably because of platform or toolset I used.
I'll try to add a declaration for this type (and others maybe) based on the platform / toolset.

######

Random spellscrolls - as with other non-random artifacts, these are selected during RMGeneration; Alex has already identified the hook location.
Secondary skill lock is pretty much the same as spells, look at the address I mentioned.
Blocking artifacts can be done also through bitfields and during RMG creation there may be the RMG_Main::bannedArtifacts field, although I don't know if that is used to generate unique artifacts during generation. There is also a field in h3m format for banned artifacts which appears near the spell and secondary skill location.

######

I would have thought the Item2Stack flag would only be checked when you click OK. If it is not, you could artificially send a LMB click to it and let the HW rulez proc handle it.
Код: Выделить всё
H3Msg my_msg{ H3Msg::MC_MouseButton, H3Msg::MS_LButtonDown, 101, 0, 0, 0, 0, 0 };
STDCALL_2(int, dlg->HDproc, dlg, &my_msg);
Вернуться к началу

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

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

Сообщение as239 » 14 авг 2019, 15:42

Цитата:
If it is not, you could artificially send a LMB click to it and let the HW rulez proc handle it.

Thanks a lot! Finally it works fine!
Код: Выделить всё
         b->ToggleFlag(GamePlayChangesOn);
         H3DlgCustomButton *Item2Stack = (H3DlgCustomButton   *)msg->GetDlg()->GetH3DlgItem(101);
         if (GamePlayChangesOn != Item2Stack->CastDef()->GetFrame())
         {
            H3Msg my_msg{ H3Msg::MC_MouseButton, H3Msg::MS_LButtonDown, 101, 0, 0, 0, 0, 0 };
            STDCALL_2(int, dlg->HDproc, dlg, &my_msg);
         }
Вернуться к началу

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

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

Сообщение as239 » 14 авг 2019, 18:08

Хотел еще спросить.
1. Как программно получить seed из save?
2. Как сделать чтобы в одиночной игре по кнопке "Restart scenario" происходил полный переген карты, как в сетевой игре?
Вернуться к началу

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 » 15 авг 2019, 02:07

Цитата:
1. Как программно получить seed из save?

Насколько мне известно, значение seed рандомной карты нигде не хранится (перезапустил игру, загрузил сохранённую случайную карту, и значения seed в оперативной памяти не оказалось). Поэтому, наверно, единственный способ получить seed - запарсить заголовок карты: seed будет храниться как текстовая строка в описании карты (o_GameMgr->map_header.f0;). Как его оттуда достать (учитывая, что описания могут быть на разных языках, название шаблона - содержать цифры и т.п.), другой вопрос :smile1: Второй вариант: сохранять значение seed прямо в сейв. Больше никак.
Вернуться к началу

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

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

Сообщение as239 » 15 авг 2019, 15:41

Ок значит буду сам сохранять.

Нужна помощь с запретом навыка "Навигация".
Правильно ли я нашел адрес для хука: "0x54AE6A"?
И что здесь будет являться аналогом: "c->ebp - 0x34"?
Вернуться к началу

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 » 15 авг 2019, 21:02

Цитата:
Правильно ли я нашел адрес для хука: "0x54AE6A"?

Да, можно ставить там.

Цитата:
И что здесь будет являться аналогом: "c->ebp - 0x34"?

c->ebp - 0x10
Вернуться к началу

offlineEranikus  
имя: Максим
 
Сообщения: 9
Зарегистрирован: 02 авг 2019, 10:45
Пол: Мужчина
Поблагодарили: 3 раз.

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

Сообщение Eranikus » 15 авг 2019, 22:48

Уважаемые разработчики плагинов, у меня вопрос - возможно ли сделать подключаемый плагин к СОДу, который бы включал для монстров анимацию idle, как это сделано в хоте и vcmi?
Вернуться к началу

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

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

Сообщение as239 » 16 авг 2019, 06:01

Не работает этот код:
Код: Выделить всё
_LHF_(DisableNavigation){

   H3Bitfield *banned_skills = (H3Bitfield*)(c->ebp - 0x10);
   banned_skills->SetState(NH3Skills::NAVIGATION, TRUE);
   return EXEC_DEFAULT;
}
   _PI->WriteLoHook(0x54AE6A, DisableNavigation);


И вот так тоже не работает:
Код: Выделить всё
_LHF_(DisableNavigation){

   int DisabledSkillsList[] = { NH3Skills::NAVIGATION };
   int *DisabledSkills = (int*)(c->ebp - 0x10);

   for (int i = 0; i < sizeof(DisabledSkillsList) / sizeof(int); ++i)
   {
      *(int*)(DisabledSkills + (DisabledSkillsList[i] >> 5)) |= 1 << (DisabledSkillsList[i] & 31);
   }

   return EXEC_DEFAULT;
}
Вернуться к началу

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 » 16 авг 2019, 07:57

Как именно не работает? Навигация генерируется в Хижинах? Если её предлагают на левел-апах, то нужно прописать ей нулевой вес.
Вернуться к началу

Пред.След.

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

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

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