Объявления

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

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

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

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

Сообщение igrik » 10 сен 2020, 14:59

Поэтому это слово и было в кавычках.
Но самое идеальное решение в Хоте, ИМХО (сначала вход в гильдию, а потом показ сообщения о покупке книги).

На счет комфортно/некомфортно - спору нет. Ведь, как всегда оказывается, на вкус и цвет все фломастеры разные...
Вернуться к началу

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

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

Сообщение Rolex » 22 сен 2020, 19:02

Доброго времени суток. Очень нужно несколько отдельных плагинов подключаемых к HD-моду исключительно для SoD/Complete. Каждый пункт - отдельный плагин. По большей части нужны для игры по сети. Некоторые плюшки есть в SOD_SP, но не все, главная проблема - мультиплеер там не работает. Нужно, чтобы все плагины также работали в мультиплеере. Последние 2-3 плагина конечно будет сложно реализовать, но первые 9, думаю, вполне реально.

1) Навык некромантия должен поднимать 5%/10%/15% погибших после боя в виде Скелетов вместо 10%/20%/30%.
2) Амулет Гробовщика должен добавалять 2.5% к показателю некромантии вместо 5%, Сутана Вампира — 5% вместо 10%, Сапоги Мертвеца — 7.5% вместо 15%. Плащ Короля Нежити должен давать герою без некромантии 15% некромантии вместо 30%.
3) Усилитель Некромантии должен добавалять 5% некромантии всем героям вместо 10%.
4) Прирост Огненных Птиц и Фениксов нужно снизить до 1 (2 после постройки Замка).
5) Отображение возможного количества убитых существ при показе возможного урона. В формате (урон: X1-X2, убьет: Y1-Y2).

Заметил одну особенность. В HotA и SoD_SP для тех существ у которых атака состоит из двух выстрелов или двух ударов, урон и возможное кол-во убитых существ отображается не так, как хотелось бы.
То есть урон и количество убитых рассчитывается и отображается фактически по первому выстрелу или ударе, но по сути то это часть атаки, ибо два выстрела или два удара - это одна атака, это просто особенность существа. То есть, возможно, правильней было бы отображать урон для подобных существ в виде:
(урон: X1-X2 + Y1-Y2, убьет: A-B + C-D)
В случае со стрелками (Стрелки, Великие Эльфы) X1=Y1 / X2=Y2, или когда Налетчики или Крестоносцы бьют существо, которое уже не ответит. А вот в случае ответного удара уже сложнее (X1<>Y1 / X2<>Y2), ибо второй удар может производится уже меньшим количеством существ, а следовательно и урон от них уже будет меньше (исключение - если после ответа врага не погибло ни одно существо).

В SOD_SP еще ошибка в русском переводе.
Пишет: (убьет X из Y). Хотя убивает обычно больше X. Что соответствует (kills X out of Y), а верно (kills X to Y). Проблема в переводе на русский. В английской версии все верно. Правильней было бы выводить:
(убьет от X до Y)
а еще лучше как в HotA:
(убьет: X-Y)

6) Отображение возможного урона и количества уничтоженых существ у одиночной мишени при касте заклинания, или сколько будет восстановлено/воскрешено. В формате (урон: X, убьет: Y) / (восстановит здоровья: X, существ: Y)
7) Очень нужен отдельный плагин для SoD/Complete, который восстановит код Отрицательной Удачи (Неудачи) (анимацию можно использовать из заклинания "Неудача"). При отрицательной Удаче отряд имеет шанс нанести половинный урон. Чем выше степень отрицательной удачи - тем выше шанс (-1: 8.3%, -2: 16.7%, -3: 25%). (этого нет в SoD_SP).
8) Мораль и Удача "> 3" -> возможные варианты: (-6 / +6) или (-9 / +9) или (-12 / +12).

Оригинал (-3 / +3):
+3 - 12,5%
+2 - 8,3%
+1 - 4,2%
0 - 0%
-1 - 8,3%
-2 - 16,7%
-3 - 25%

Как вариант (-12 / +12):
+1 - 4,2%, +2 - 8,3%, +3 - 12,5%, +4 - 16,7%, +5 - 20,8%, +6 - 25%, +7 - 29,2%, +8 - 33,3%, +9 - 37,5%, +10 - 41,7%, +11 - 45,8%, +12 - 50%
0 - 0%
-1 - 4,2%, -2 - 8,3%, -3 - 12,5%, -4 - 16,7%, -5 - 20,8%, -6 - 25%, -7 - 29,2%, -8 - 33,3%, -9 - 37,5%, -10 - 41,7%, -11 - 45,8%, -12 - 50%

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

Или (-9 / +9):
+1 - 4,2%, +2 - 8,3%, +3 - 12,5%, +4 - 16,7%, +5 - 20,8%, +6 - 25%, +7 - 29,2%, +8 - 33,3%, +9 - 37,5%
0 - 0%
-1 - 8,3%, -2 - 16,7%, -3 - 25%, -4 - 33,3%, -5 - 41,7%, -6 - 50%, -7 - 58,3%, -8 - 66,7%, -9 - 75%

Или (-6 / +6):
+1 - 4,2%, +2 - 8,3%, +3 - 12,5%, +4 - 16,7%, +5 - 20,8%, +6 - 25%
0 - 0%
-1 - 8,3%, -2 - 16,7%, -3 - 25%, -4 - 33,3%, -5 - 41,7%, -6 - 50%

9) Внешние жилища, принадлежащие игрокам, копят существ каждую неделю. Если жилища никому не принадлежат, то еженедельно количество существ в них равняется одному приросту.

---------
10) Изменения механики Полёта, Хождения по Воде и Двери Измерений, за счёт которых даже с помощью этих заклинаний невозможно посещать и собирать объекты без пробития их охраны на случайных картах.

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

12) Механизм исследования заклинаний.
На экране Гильдии Магов можно проводить исследование заклинаний, изменяя имеющиеся в слотах заклинания.
Цена исследования составляет (2 * уровень заклинания) ртути, серы, кристаллов и драгоценных камней и 1000 золота. Исследование в каждом городе можно проводить не чаще раза в день (независимо от строительства).
При исследовании старое заклинание пропадает из слота и предлагается на выбор одно из двух новых (на пятом уровне генерируется одно новое заклинание без выбора). Исследование в одном и том же слоте можно проводить несколько раз, но промежуточные заклинания не могут быть изучены героями. Каждый раз заклинание генерируется в соответствии со стандартными шансами для города, но уже бывшие в Гильдии Магов или отклонённые при выборе заклинания не могут быть сгенерированы во второй раз, пока есть те, которых ещё не было.
В любой момент можно бесплатно завершить исследование в слоте. В этом случае текущее заклинание станет доступным для изучения, но изменять заклинание в данном слоте больше будет нельзя.
Обязательные для города заклинания не могут быть изменены на другие. В каждый момент в городе может идти только одно исследование, перед началом исследования в другом слоте текущее нужно завершить.

Возможно не так как в HotA, может попроще. Но это очень полезная штука. Было бы неплохо иметь такой плагин для SoD/Complete.

Вместе с плагином по возможности выкладывайте также исходный код (здесь или viewtopic.php?f=56&t=529).

Может, кого что заинтересует. В общем, кто что сможет. Заранее благодарен за любую помощь.
_______________________________________________________________________________________________________________________________________________________________________

Good day. I really need several separate plugins to connect to the HD-mod exclusively for SoD / Complete. Each item is a separate plugin. Mostly needed for online play. There are some features in SOD_SP, but not all, the main problem is that multiplayer does not work there. All plugins need to work in multiplayer too. The last 2-3 plugins will certainly be difficult to implement, but the first 9, I think, are quite feasible.

1) The skill of necromancy should raise 5% / 10% / 15% of the deaths after the battle in the form of Skeletons instead of 10% / 20% / 30%.
2) The Undertaker's amulet should add 2.5% to necromancy instead of 5%, Vampiric Sutan - 5% instead of 10%, Deadman's Boots - 7.5% instead of 15%. The Cloak of the Undead King should give a hero without necromancy 15% necromancy instead of 30%.
3) The Necromancy Amplifier should add 5% necromancy to all heroes instead of 10%.
4) The growth of Fire Birds and Phoenixes must be reduced to 1 (2 after the construction of the Castle).
5) Display of the possible number of killed creatures when showing the possible damage. In the format (damage: X1-X2, kills: Y1-Y2).

Noticed one peculiarity. In HotA and SoD_SP for those creatures whose attack consists of two shots or two strike, the damage and the possible number of killed creatures are not displayed as we would like.
That is, the damage and the number of killed are calculated and displayed actually by the first shot or strike, but in fact this is part of the attack, because two shots or two strikes are one attack, this is just a feature of the creature. That is, it might be more correct to display the damage for such creatures as:
(damage: X1-X2 + Y1-Y2, kills: A-B + C-D)
In the case of archers (Marksmen, Grand Elves) X1 = Y1 and X2 = Y2, or when Wolf Raiders or Crusaders hit a creature that no longer responds. But in the case of a retaliatory strike, it is already more difficult (X1 <> Y1 and X2 <> Y2), because the second strike can be produced by a smaller number of creatures, and therefore the damage from them will already be less (except if after the enemy's response none of them died being).


There is a Russian translation error in SOD_SP.
Writes: (убьет X из Y). Although usually kills more than X. Which corresponds to (kills X out of Y), but true (kills X to Y). The problem is in translation into Russian. Everything is correct in the English version. It would be more correct to output:
(убьет от X до Y)
but better as in HotA:
(убьет: X-Y)

6) Displaying the possible damage and the number of kills creatures at a single target when casting a spell, or how much will be restored / resurrected. In the format (damage: X, kills: Y) / (restore health: X, creatures: Y)
7) I really need a separate plug-in for SoD / Complete, which will restore the code of Bad Luck (animation can be used from the spell "Misfortune"). With negative Luck, the unit has a chance to deal half damage. The higher the degree of negative luck, the higher the chance (-1: 8.3%, -2: 16.7%, -3: 25%). (this is not in SoD_SP).
8) Morale and Luck "> 3" -> possible options: (-6 / +6) or (-9 / +9) or (-12 / +12).

Original (-3 / +3):
+3 - 12,5%
+2 - 8,3%
+1 - 4,2%
0 - 0%
-1 - 8,3%
-2 - 16,7%
-3 - 25%

As an option:
+1 - 4,2%, +2 - 8,3%, +3 - 12,5%, +4 - 16,7%, +5 - 20,8%, +6 - 25%, +7 - 29,2%, +8 - 33,3%, +9 - 37,5%, +10 - 41,7%, +11 - 45,8%, +12 - 50%
0 - 0%
-1 - 4,2%, -2 - 8,3%, -3 - 12,5%, -4 - 16,7%, -5 - 20,8%, -6 - 25%, -7 - 29,2%, -8 - 33,3%, -9 - 37,5%, -10 - 41,7%, -11 - 45,8%, -12 - 50%

I don't know if there is a logical explanation for why negative morality and good luck happen (should happen) 2 times more often than positive. I still have one explanation - there are much more positive morale / luck modifiers than negative ones.

Or (-9 / +9):
+1 - 4,2%, +2 - 8,3%, +3 - 12,5%, +4 - 16,7%, +5 - 20,8%, +6 - 25%, +7 - 29,2%, +8 - 33,3%, +9 - 37,5%
0 - 0%
-1 - 8,3%, -2 - 16,7%, -3 - 25%, -4 - 33,3%, -5 - 41,7%, -6 - 50%, -7 - 58,3%, -8 - 66,7%, -9 - 75%

Or (-6 / +6):
+1 - 4,2%, +2 - 8,3%, +3 - 12,5%, +4 - 16,7%, +5 - 20,8%, +6 - 25%
0 - 0%
-1 - 8,3%, -2 - 16,7%, -3 - 25%, -4 - 33,3%, -5 - 41,7%, -6 - 50%

9) Dwellings belonged to players accumulate creatures on a by-week basis. Number of creatures in dwellings without owner is set to one creature growth each week.

---------
10) Fly, Water Walk and Dimension Door spell changes which make it impossible to trigger objects without alerting the guard even while using these spells.

11) Some creatures must be able to take an alternate action.
Shooting creatures can perform melee attack instead of shot.
Harpies and Harpy Hags can attack without return.
Faerie Dragons can attack instead to spell cast.
Archangels and Pit Lords can move to hex instead to corpse resurrect from it.

12) The spell research mechanic.
It’s now possible to carry out research in the Mage Guild screen, replacing spells in the slots.
The cost is (2*spell level) of mercury, sulfur, crystals, gems, and 1000 gold. Research is limited to one per day, per town (doesn’t prevent construction).
The research removes the old spell from the slot and offers a choice of two random new spells (one new spell at level 5, no choice). It’s possible to do further research in the same spell slot, but the heroes won’t be able to learn the spell until the research is finalized. New spells will be generated according to the base certainty value by town type. Old spells (that ones that were in town or were not chosen after research) won’t be generated again before every potential new one is cycled through.
You may finalize the research at any point. From that point your heroes will be able to learn the spell you selected, but the spell slot will become permanent.
A town’s mandatory spells can’t be replaced. Only one instance of research may be carried out in a town at any time. You’ll have to finalize the research before working on a different spell slot.

Perhaps not as in HotA, maybe simpler. But this is a very useful thing. It would be nice to have a plugin like this for SoD / Complete.

If possible, post the source code along with the plugin (here or viewtopic.php?f=56&t=529).

Maybe someone will be interested in something. In general, who can do what. Thanks in advance for any help.
Вернуться к началу

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

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

Сообщение as239 » 30 сен 2020, 10:56

igrik писал(а):

RoseKavalier писал(а):

What does this do?
Код: Выделить всё
hdv(_bool_, "HotA.SwapMgrCalledFromTown") = 1;

При вызове диалога обмена героев, HD мод проверяет данный твик, и если он true, то HD мод блокирует вот эти кнопки
 
Изображение

У меня почему-то не работает - кнопки активны, нет идей что не так?
Код: Выделить всё
#define hdv(type, name) _P->VarValue<type>((PCHAR)(name))
char __stdcall Y_DlgTown_Proc(HiHook* hook, H3TownManager* tm, H3Msg* klick)
{
   char res = THISCALL_2(char, hook->GetDefaultFunc(), tm, klick);
   inTownDlg = false;
   if (!res) return res;

   if (klick->command == 2 && klick->subtype == HK_E) {
      int heroU_id = tm->town->garrisonHero;
      int heroD_id = tm->town->visitingHero;

      auto edit = P_TownMgr->dlg->Get<H3ScreenlogEdit>(7001); // only done by hdmod
      if (edit && edit->enteringText) return res;
      if (heroU_id == -1 || heroD_id == -1) return res;

      H3Hero* heroU = P_Main->GetHero(heroU_id);
      H3Hero* heroD = P_Main->GetHero(heroD_id);

      inTownDlg = true;

      if (*(int*)((int)&P_ExecutiveMgr + 4) != (int)&P_WindowMgr) {
         *(int*)((int)&P_TownMgr + 4) = (int)&P_AdventureMgr;
         *(int*)((int)&P_TownMgr + 8) = (int)&P_WindowMgr;

         *(int*)((int)&P_AdventureMgr + 4) = NULL;
         *(int*)((int)&P_AdventureMgr + 8) = (int)&P_WindowMgr;

         *(int*)((int)&P_WindowMgr + 4) = (int)&P_TownMgr;
         *(int*)((int)&P_WindowMgr + 8) = (int)&P_MouseMgr;
      }
      hdv(_bool_, "HotA.SwapMgrCalledFromTown") = 1;
      FASTCALL_2(void, 0x4A25B0, heroU, heroD);//изучение заклинаний по грамотности
      THISCALL_3(void, 0x4AAA60, &P_TownMgr, heroU, heroD);

      hdv(_bool_, "HotA.SwapMgrCalledFromTown") = 0;
      THISCALL_1(void, 0x5D5930, &P_TownMgr);
      THISCALL_1(void, 0x5D5810, &P_TownMgr);

      inTownDlg = false;

      return 1;
   }

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

offlineigrik  
Подмастерье
Подмастерье
 
Сообщения: 108
Зарегистрирован: 14 сен 2017, 12:35
Пол: Не указан
Поблагодарили: 84 раз.

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

Сообщение igrik » 03 окт 2020, 14:22

as239 писал(а):

У меня почему-то не работает - кнопки активны, нет идей что не так?

Я этого не знал, но в HD для СОДа не существует такой проверки. Поэтому она и не работает.
Вернуться к началу

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

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

Сообщение Rolex » 04 окт 2020, 12:30

Ребят, помогите, пжл, хотя бы по первым плагинам по балансировке оригинальной Некромантии и уменьшения прироста Огненных птиц/Фениксов до 1 (2 с Замком). Может кто-то ранее уже делал подобное.
Вернуться к началу

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 » 04 окт 2020, 14:33

Посмотрите здесь (поиск по ключевому слову Necromancy). Может, там и про птиц что-то есть. Для плагина просто прибавляете 400000h к адресам, указанным в этом гайде.
Вернуться к началу

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

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

Сообщение Rolex » 04 окт 2020, 15:35

AlexSpl писал(а):

Посмотрите здесь (поиск по ключевому слову Necromancy). Может, там и про птиц что-то есть. Для плагина просто прибавляете 400000h к адресам, указанным в этом гайде.

Спасибо.

Мне бы для начала разобраться с полным решением первого плагина. С остальными по аналогии, думаю, будет уже легче.
Цитата:
Навык некромантия должен поднимать 5%/10%/15% погибших после боя в виде Скелетов вместо 10%/20%/30%.


Что-то надергал с других плагинов и вот что у меня получилось.

Ошибка: определенный пользователем литеральный оператор не найден. Это я за 400000h. И так 0x400000h - то же самое.

Код: Выделить всё
#define _CRT_SECURE_NO_WARNINGS

#include "stdafx.h"
#include "HotA\patcher_x86.hpp"
#include "HotA\homm3.h"

Patcher* _P;
PatcherInstance* _PI;

static _bool_ plugin_On = 0;

int __stdcall changeNecromancy(LoHook* h, HookContext* c)
{
   
   float NecromancySkill = *(float*)(c->ecx + 0x400000h);

   return EXEC_DEFAULT;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
   if (DLL_PROCESS_ATTACH == ul_reason_for_call)
   {
      if (!plugin_On)
      {
         plugin_On = 1;
         _P = GetPatcher();
         _PI = _P->CreateInstance("HD.Plugin.changeNecromancy");

         _PI->WriteLoHook(0x23E9B8, changeNecromancy);
      }
   }

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

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 » 04 окт 2020, 15:51

Уберите следующий код:

Код: Выделить всё
_PI->WriteLoHook(0x23E9B8, changeNecromancy);


Код: Выделить всё
int __stdcall changeNecromancy(LoHook* h, HookContext* c)
{
   
   float NecromancySkill = *(float*)(c->ecx + 0x400000h);

   return EXEC_DEFAULT;
}

Hex-патчи не требуют хуков.

Далее, 400000h = 0x400000, и именно это число нужно прибавлять к адресам, указанным в гайде. Например, 0x23E9B8 + 0x400000 = 0x63E9B8.

Вместо

Код: Выделить всё
_PI->WriteLoHook(0x23E9B8, changeNecromancy);

напишите

Код: Выделить всё
_PI->WriteDword(0x63E9B8, здесь должен быть Ваш процент);


Например, 5% = CD CC 4C 3D = 0x3D4CCCCD

Если путаетесь, можно ещё так:

Код: Выделить всё
_PI->WriteHexPatch(0x63E9B8, "CD CC 4C 3D");

Этим Вы измените процент Некромантии на уровне None :smile1: Адреса для Basic, Advanced и Expert: 0x63E9B8 + 4, 0x63E9B8 + 8, 0x63E9B8 + 12 соответственно. Если автор гайда не наврал :smile1: , то должно работать.

* * *
В оригинальном экзешнике такие проценты:

00 00 00 00 | CD CC CC 3D | CD CC 4C 3E | 9A 99 99 3E

Вы можете написать сразу так:

Код: Выделить всё
_PI->WriteHexPatch(0x63E9B8, "Здесь Ваша строка с процентами");

Конвертер дробей в Hex здесь. Запись 0x98ABCDEF - это строка "парами наоборот": EF CD AB 98.

Всё, что касается Hex-редактирования Героев 3, упомянутое в гайде BTB, делается через WriteDword или WriteHexPatch (кому как удобнее).
Вернуться к началу

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

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

Сообщение Rolex » 04 окт 2020, 17:06

AlexSpl, огромное спасибо за подробные разъяснения. Все получилось и все рабоатет.

Код: Выделить всё
#define _CRT_SECURE_NO_WARNINGS

#include "stdafx.h"
#include "HotA\patcher_x86.hpp"
#include "HotA\homm3.h"

Patcher* _P;
PatcherInstance* _PI;

static _bool_ plugin_On = 0;

BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
   if (DLL_PROCESS_ATTACH == ul_reason_for_call)
   {
      if (!plugin_On)
      {
         plugin_On = 1;
         _P = GetPatcher();
         _PI = _P->CreateInstance("HD.Plugin.changeNecromancy");

         _PI->WriteDword(0x63E9B8 + 4, 0x3D4CCCCD);
         _PI->WriteDword(0x63E9B8 + 8, 0x3DCCCCCD);
         _PI->WriteDword(0x63E9B8 + 12, 0x3E19999A);
      }
   }

   return TRUE;
}


Возникло еще пару вопросов:
1. А есть ли вообще смысл менять значение навыка на уровне None? Вроде как заклинания мы можем использовать на уровне None, там обычно они равны Basic. А навыки вроде же сразу идут с Basic.
2. А возможно ли как-то прямо из кода плагина также исправить описание (без правки текстовиков в TXTEdit), то есть изменить дефолтные описания на те значения, которые устанавливает плагин?
Последний раз редактировалось Rolex 04 окт 2020, 17:52, всего редактировалось 2 раз(а).
Вернуться к началу

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 » 04 окт 2020, 17:08

Цитата:
Возникло еще пару вопросов:
1. А есть ли вообще смысл менять значение навыка на уровне None? Вроде как заклинания мы можем использовать на уровне None, там обычно они равны Basic. А навыки вроде же сразу идут с Basic.
2. А возможно ли как-то прямо из кода плагина также исправить описание (без правки текстовиков в TXTEdit). То есть изменить дефолтные описания на те значения, которые устанавливает плагин.

1. Скорее всего, нет. Сделано для универсальности. Но утверждать не могу.
2. Посмотрите тему с готовыми плагинами. Там как раз есть код, меняющий описания из плагина.
Вернуться к началу

Пред.След.

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

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

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