Объявления

Друзья, если не получается зарегистрироваться, напишите на почту 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 » 06 авг 2024, 16:17

Цитата:
м-да.. обидно..

Это решение команды. Теоретически подключить плагин к HotA возможно, но через костыли, которые слетят при следующем обновлении. Я предлагал сделать билд HotA специально для тех, кто хочет играть с новыми фичами (с выпиленным лобби, чтобы не мешать спортсменам), но пока тихо. Вот можно было бы выпустить 1.7.2 и отдать обрезанную 1.7.1 на растерзание начинающим мододелам :smile1: Я отчасти понимаю команду: отдуваться за чужие баги не хочется, поэтому предложенное мною решение было бы компромиссным.
Вернуться к началу

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 » 07 авг 2024, 13:39

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

 Код
Код: Выделить всё
#include "..\..\Headers\HoMM3API.h"
#include "stdafx.h"
#include "math.h"

Patcher* _P;
PatcherInstance* _PI;

#define pCombatManager (*(_BattleMgr_**)0x699420)
int speedBeforeWait[2][21];

void __stdcall combatManagerLoadArmies(HiHook* h, _BattleMgr_* combatMgr, bool is_surrounded)
{
   CALL_2(int, __thiscall, h->GetDefaultFunc(), combatMgr, is_surrounded);

   for (int group = ATTACKER; group <= DEFENDER; ++group)
      for (int index = 0; index < 21; ++index)
         speedBeforeWait[group][index] = -1;
}

int __stdcall newRoundSettings(LoHook* h, HookContext* c)
{
   army* curArmy = (army*)c->esi;
     
   if (speedBeforeWait[curArmy->group][curArmy->index] != -1) {
      curArmy->sMonInfo.speed = speedBeforeWait[curArmy->group][curArmy->index]
         + (curArmy->spellInfluence[SPELL_HASTE] ? curArmy->tailwindBonus : 0)
         + (curArmy->spellInfluence[SPELL_PRAYER] ? curArmy->prayerBonus : 0);

      speedBeforeWait[curArmy->group][curArmy->index] = -1;
   }
   
   return EXEC_DEFAULT;
}

int __stdcall lowerSpeed(LoHook* h, HookContext* c)
{
   army* curArmy = (army*)c->ebx;

   if (curArmy) {
      speedBeforeWait[curArmy->group][curArmy->index] = curArmy->sMonInfo.speed
         - (curArmy->spellInfluence[SPELL_HASTE] ? curArmy->tailwindBonus : 0)
         - (curArmy->spellInfluence[SPELL_PRAYER] ? curArmy->prayerBonus : 0);

      curArmy->sMonInfo.speed = (int)ceil(curArmy->sMonInfo.speed * 0.5f);
   }
     
   return EXEC_DEFAULT;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
   static bool plugin_On = false;

   if ( DLL_PROCESS_ATTACH == ul_reason_for_call )
   {
      if ( !plugin_On )
      {
         plugin_On = true;
         _P = GetPatcher();
         _PI = _P->CreateInstance((char*)"HD.Plugin.H3.FairWait");
         _PI->WriteHiHook(0x4631E0, SPLICE_, EXTENDED_, THISCALL_, combatManagerLoadArmies);
         _PI->WriteLoHook(0x446F11, newRoundSettings);
         _PI->WriteLoHook(0x479236, lowerSpeed);
      }
   }

   return TRUE;
}

FairWait.zip
(4.83 КБ) Скачиваний: 108
Вернуться к началу

offlinexepomaht  
имя: Leg
 
Сообщения: 2
Зарегистрирован: 15 окт 2021, 14:13
Пол: Мужчина
Поблагодарили: 0 раз.

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

Сообщение xepomaht » 07 авг 2024, 22:08

AlexSpl писал(а):

Цитата:
м-да.. обидно..

Я предлагал сделать билд HotA специально для тех, кто хочет играть с новыми фичами (с выпиленным лобби, чтобы не мешать спортсменам), но пока тихо. Вот можно было бы выпустить 1.7.2 и отдать обрезанную 1.7.1 на растерзание начинающим мододелам :smile1: Я отчасти понимаю команду: отдуваться за чужие баги не хочется, поэтому предложенное мною решение было бы компромиссным.


А оно вообще кому-то, кроме 1-2 человек, нужно? Недавний эксперимент с редактором hota.dat показал, что моддинг HoA сообществу вообще не интересен несмотря на готовое ПО. Фанатам HoA в подавляющем большинстве не нужны изменения в игре не от HotA Crew. Те, кому моды всё-таки нужны, пасутся на ЭРЕ, где есть и Причал и даже Фабрика (но автор сделал это чисто для себя, поэтому в интернете не найдёте), или на VCMI, где Причал с Фабрикой так же присутсвуют для всех желающих. HotA Crew ориентируется под большинство несмотря на то, что сама команда переодически пополняется моддерами, поддержку моддинга могут организовать только сторонние энтузиасты (я из их числа, если что...).

В саму h3hota.exe можно добавить загрузчик пользовательских плагинов, если так боитесь обновлений, т.к. h3hota.exe в обновлениях не изменяется, могут только добавить проверку контрольной суммы для защиты, но пока такой защиты нет. Особенно смешно читать тему "моддинг хоты" на формух, где на 99% - моддинг СоДа, а не HoA. :smile12:
Вернуться к началу

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 » 08 авг 2024, 05:54

Цитата:
Особенно смешно читать тему "моддинг хоты" на формух, где на 99% - моддинг СоДа, а не HoA.

Энтузиасты из той темы пишут патчи исключительно в шестнадцатеричном редакторе и в таких тонкостях не разбираются. Если они патчат экзешник HotA, значит, это моддинг HotA :smile23:

Цитата:
А оно вообще кому-то, кроме 1-2 человек, нужно?

Сложно оценить размер аудитории. Но иногда заходят, спрашивают. Узнают, что плагины не для HotA, и уходят. Не десятки тысяч человек, конечно, но больше пары точно :smile1:

Цитата:
VCMI, где Причал с Фабрикой так же присутсвуют для всех желающих

VCMI - реальная альтернатива для непосвящённых. Плагины - для тех, кто видит разницу :smile2:
Вернуться к началу

offlineTrueMefista  
имя: Mefista
Посвященный
Посвященный
 
Сообщения: 53
Зарегистрирован: 18 дек 2021, 12:35
Пол: Женщина
Поблагодарили: 10 раз.

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

Сообщение TrueMefista » 09 авг 2024, 19:09

xepomaht писал(а):


А оно вообще кому-то, кроме 1-2 человек, нужно? Недавний эксперимент с редактором hota.dat показал, что моддинг HoA сообществу вообще не интересен несмотря на готовое ПО.


На heroescommunity да
http://heroescommunity.com/viewthread.php3?TID=42152
Вернуться к началу

Пред.

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

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

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