Объявления

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

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

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

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

Сообщение AlexSpl » 06 авг 2024, 16:17

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

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

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

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 КБ) Скачиваний: 109
Вернуться к началу

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

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
Вернуться к началу

offlineGezellig  
имя: Pavel
 
Сообщения: 7
Зарегистрирован: 13 фев 2022, 12:41
Пол: Мужчина
Поблагодарили: 2 раз.

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

Сообщение Gezellig » 18 дек 2024, 22:38

Добрый день, уважаемые :smile1:

У меня два вопроса
1. Кажется, где-то на просторах этого форума видел плагин, который делает доступным грейд по комбинации A+ПКМ. Или U+ПКМ, не помню точно, но что-то такое было. Можете поделиться?
2. Есть ли в природе (и если нет - насколько сложно осуществимо, с учетом возможного использования def/msk из HotA) плагин с центрированием существ в SoD?
Вернуться к началу

offlineАватара пользователя
Владимир  
Эксперт
Эксперт
 
Сообщения: 1067
Зарегистрирован: 30 окт 2012, 18:37
Пол: Не указан
Награды: 3
Высшая медаль (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (1)
Поблагодарили: 645 раз.

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

Сообщение Владимир » 19 дек 2024, 07:08

Gezellig писал(а):

плагин с центрированием существ в SoD

Здравствуйте!
"Центрирование" - это случайно не про отображение монстров-охранников на карте приключений? В Героях 1 и 2 для этого были маленькие простые картинки, вписанные в один квадратик или 32x32 пикселя, а в Тройке - большие красивые, вписанные в 64x64 и не выходящие правым нижним углом за то место, где стоит монстр. Налево и вверх такая картинка может выпирать далеко, что неудобно и мешает восприятию карты.
Или вы другое имели в виду?
Вернуться к началу

offlineGezellig  
имя: Pavel
 
Сообщения: 7
Зарегистрирован: 13 фев 2022, 12:41
Пол: Мужчина
Поблагодарили: 2 раз.

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

Сообщение Gezellig » 19 дек 2024, 12:45

Владимир писал(а):

Gezellig писал(а):

плагин с центрированием существ в SoD

"Центрирование" - это случайно не про отображение монстров-охранников на карте приключений?


Владимир, здравствуйте!
Абсолютно верно.

Думаю, пояснить на примере будет проще.
Вот, допустим, спрайты существ из SoD
 SoD
Изображение

А вот, они же, но в HotA
 HotA
Изображение

Это не единственные примеры, к сожалению.

Насколько я знаю, в HotA сделано радикально: там просто переписали все маски существ и центрировали их на уровне def-файлов. Но есть нюанс: для SoD они не подойдут, поскольку будут обрезаться игрой.

Таким образом, я вижу два варианта решения:
1. Каким-то кодом подвинуть все криво стоящие существа на их законный центр
2. Написать аналог кода HotA и взять их спрайты для использования в SoD
Вернуться к началу

offlineАватара пользователя
Владимир  
Эксперт
Эксперт
 
Сообщения: 1067
Зарегистрирован: 30 окт 2012, 18:37
Пол: Не указан
Награды: 3
Высшая медаль (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (1)
Поблагодарили: 645 раз.

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

Сообщение Владимир » 20 дек 2024, 11:23

Я попробовал сделать один из спрайтов побольше - 3x2 клетки и поэкспериментировал с разными масками. Проблема в том, что спрайт всё равно отсчитывает своё положение от правой нижней клетки; картинка существа оказывается уже на целую клетку левее интерактивной клетки, примерно как у этой неправильной хижины провидца (верхняя):
Изображение
Открыл свою старую версию Хоты - обнаружил, что в ней ничего ещё не исправлено.

Если получится исправить - хорошо, но пока не получилось.
Вернуться к началу

offlineGezellig  
имя: Pavel
 
Сообщения: 7
Зарегистрирован: 13 фев 2022, 12:41
Пол: Мужчина
Поблагодарили: 2 раз.

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

Сообщение Gezellig » 20 дек 2024, 23:04

Владимир,

есть две мысли для Вас.
1. В редакторе RoseKavalier реализована такая фича. Насколько я понимаю, в игру он не смог её добавить по тем или иным причинам, но, возможно, удастся разобраться?
Подробнее здесь и во вложении.

2. Можно попробовать все-таки прикрутить спрайты из HotA, не вижу в этом зашквара, более того, в этом был план отчасти :smile1:
Однако, если в лоб сейчас попробовать это сделать, то получится что-то типа вот такого:
Изображение

Зато посередине :D
Вложения
Monster Centering.pdf
(162.06 КБ) Скачиваний: 3
Вернуться к началу

Пред.След.

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

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

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