Объявления
Поздравляем
Roman2211


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

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

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 08 мар 2019, 07:19

as239 писал(а):

Ben80 писал(а):

Так, пожалуй, еще получше будет:

Код: Выделить всё
int __stdcall send2Chat(LoHook* h, HookContext* c) {
   char* mes = "Plugin XYZ is used";
   if(o_NetworkGame && o_GameMgr->curr_day_ix == 2 &&
   o_GameMgr->curr_week_ix == 1 && o_GameMgr->curr_month_ix == 1)
      CALL_2(char, __fastcall, 0x554BB0, mes, 127);
   return EXEC_DEFAULT;
}
...
_PI->WriteLoHook(0x4C7207, send2Chat);


Спасибо! Проверил все работает.


Если есть возможность проверить для 3 сетевых игроков - проверь, пожалуйста. А то у меня на компе даже 1 виртуалка жутко тормозит.
Вернуться к началу

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

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

Сообщение as239 » 08 мар 2019, 07:35

Цитата:
Если есть возможность проверить для 3 сетевых игроков - проверь, пожалуйста. А то у меня на компе даже 1 виртуалка жутко тормозит.

На троих тоже работает.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 09 мар 2019, 08:28

Написал мне игрок один, как эта фишка работает - говорит, что ИИ тоже эфир засоряет. Так что, видимо, стоит еще добавить в условие:

Код: Выделить всё
o_GameMgr->GetPlayer(o_ActivePlayerID)->IsHuman()
Вернуться к началу

offlineАватара пользователя
Catastrophe  
имя: Alex
Посвященный
Посвященный
 
Сообщения: 88
Зарегистрирован: 07 мар 2019, 11:50
Пол: Мужчина
Поблагодарили: 22 раз.

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

Сообщение Catastrophe » 11 мар 2019, 00:07

Ben80 писал(а):

Если есть возможность проверить для 3 сетевых игроков - проверь, пожалуйста. А то у меня на компе даже 1 виртуалка жутко тормозит.

Можно же запускать несколько копий игры, я так и делаю. Одним окном создаю сервер, другим подключаюсь сам к себе.
 Спойлер
Изображение

Ben80 писал(а):

Написал мне игрок один, как эта фишка работает - говорит, что ИИ тоже эфир засоряет. Так что, видимо, стоит еще добавить в условие:

Код: Выделить всё
o_GameMgr->GetPlayer(o_ActivePlayerID)->IsHuman()

Все работает без нареканий, спасибо
 Спойлер
Изображение
Быстрее всего смогу ответить вам в Telegram: @PleaseAndThankYou
Вернуться к началу

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

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

Сообщение as239 » 11 мар 2019, 13:47

Хотелось бы подкорректировать дипломатию, следующим образом:
1. Присоединяться могут только живые существа (те же что и демонятся)
2. Существо может присоединиться только если у всех отрядов войска героя, +1 мораль или выше.
3. Существо может присоединиться только если оно есть в армии героя (с учетом грейда).

Есть еще дополнительная сложность в виде HW_Rules, он вообще отключает присоединение.
Нужно отменить его правку, а потом уже добавить 3-и вышеописанные условия.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 11 мар 2019, 14:29

Catastrophe писал(а):

Все работает без нареканий, спасибо
 Спойлер
Изображение


Вы автор Ad Fontes ? Доделали свой мод ?
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 11 мар 2019, 14:41

as239 писал(а):

Есть еще дополнительная сложность в виде HW_Rules, он вообще отключает присоединение.
Нужно отменить его правку, а потом уже добавить 3-и вышеописанные условия.


Насчет HW Rulez - видимо, нужно узнать какие хуки за это ответственны (нужно включить логирование)
Код: Выделить всё
_P->SaveDump("log_1.txt");


И использовать для этого более раннюю версию HD мода + плагин HW Rulez (чтобы хуки HW Rulez в логе можно было легко идентифицировать).

Хуки можно отменять (хотя не уверен, что именно те хуки можно будет отменить). Типа такого:
Код: Выделить всё
_PI_2 = _P->GetInstance("HD.SoD");
_PI_2->UndoAllAt(0x005AAD90);
Вернуться к началу

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

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

Сообщение as239 » 13 мар 2019, 10:45

Пробую пока только ПКМ, платное присоединение, без HW rules:

Код: Выделить всё
int __stdcall Diplomacy(LoHook* h, HookContext* c) {

   _PI->WriteHexPatch(0x417246, "EB");

   return EXEC_DEFAULT;
}

_PI->WriteLoHook(0x41723D, Diplomacy)


В этот хук мы попадаем если нейтралы хотят присоединиться платно или сбежать.

_PI->WriteHexPatch(0x417246, "EB");
Отменяет платное присоединение.
Т.е. осталось обернуть эту строку в 3-и вышеописанные условия.
Но для этого мне нужно получить структуры текущего героя и нейтрала.
Как это сделать?
И правильная ли логика или здесь все надо делать по-другому.
Вернуться к началу

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

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

Сообщение RoseKavalier » 13 мар 2019, 12:51

You will need more than just this hook region, sub_004170B0 is only for RMB monster dialog; check sub_004A6C70 and sub_004A73B0, maybe more not sure.

Anyhow, in this sub, creature type is stored to EDI at 0x4170E1 and _Hero_ is stored to ESI starting at 0x41711D.
Вернуться к началу

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

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

Сообщение as239 » 13 мар 2019, 16:29

К сожалению, ничего не получается, кроме вылетов.
Вернуться к началу

Пред.След.

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

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

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