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


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

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

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

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

Сообщение igrik » 04 июн 2019, 06:53

Catastrophe писал(а):

Подскажите - как добавить в чит-код "move" каст Полёта на героя, помимо выдачи ему бесконечного передвижения?


Код: Выделить всё
int hero_id = o_ActivePlayer->selected_hero_id; // получаем номер выбранного героя активного игрока
if (hero_id != -1 ) { // и если таковой имеется
   o_GameMgr->GetHero(hero_id)->fly_cast_power = 3; // устанавливаем ему полёт уровня Эксперт
}
Вернуться к началу

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

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

Сообщение Catastrophe » 04 июн 2019, 18:58

У нас опять рассинхрон, скинь свой homm3.h
'fly_cast_power' : is not a member of '_Hero_'
Код: Выделить всё
NOALIGN struct _Hero_
{
 _int16_ x; // +0
 _int16_ y; // +2
 _int16_ z; // +4
 _byte_ visible; // +6
 _dword_ mui_xyz; // +7
 _byte_ field_0B; // +11
  // miu = map_item under hero
 _dword_ miu_object_type; // +12
 _dword_ miu_object_c_flag; // +16
 _dword_ miu_setup; // +20
 _word_ spell_points; // +24
 _dword_ id; // +26
 _dword_ id_wtf; // +30
 _int8_ owner_id; // +34
 _char_ name[13]; // +35
 _dword_ _class; // +48
 _byte_ pic; // +52
 _dword_ aim_x; // +53
 _dword_ aim_y; // +57
 _dword_ aim_z; // +61
 _byte_ field_41[3]; // +65
 _byte_ x_0; // +68
 _byte_ y_0; // +69
 _byte_ run; // +70
 _byte_ field_47; // +71
 _byte_ flags; // +72
 _dword_ movement_points_max; // +73
 _dword_ movement_points; // +77
 _dword_ expa; // +81
 _word_ level; // +85
 _dword_ visited[10]; // +87
 _byte_ field_7F[18]; // +127
 _Army_ army; // +145
 _byte_ second_skill[28]; // +201
 _byte_ second_skill_show[28]; // +229
 _dword_ second_skill_count; // +257
 _dword_ temp_mod_flags; // + 261
 _byte_ field_109[4]; // +265
 _byte_ dd_cast_this_turn; // +269
 _dword_ disguise; // +270
 _dword_ field_112; // +274
 _byte_ d_morale; // +278
 _byte_ field_117[3]; // +279
 _byte_ d_morale_1; // +282
 _byte_ d_luck; // +283
 _byte_ is_sleeping_byte11C; // +284
 _byte_ field_11E[16]; // +284
 _Artifact_ doll_art[19]; // +301
 _byte_ free_add_slots; // +453
 _byte_ locked_slot[14]; // +454
 _Artifact_ backpack_art[64]; // +468
 _byte_ backpack_arts_count; // +980
 _dword_ sex; // +981
 _bool8_ has_biography; // +985
 _HStringF_ biography; // +986
 _byte_ spell[70]; // +1002
 _byte_ spell_level[70]; // +1072
 //_byte_ primary_skill[4];
 _byte_ attack; // +1142
 _byte_ defence; // +1141
 _byte_ power; // +1142
 _byte_ knowledge; // +1143
 _byte_ field_47A[24]; // +1144
Быстрее всего смогу ответить вам в Telegram: @PleaseAndThankYou
Вернуться к началу

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

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

Сообщение igrik » 04 июн 2019, 19:33

Сейчас под рукой у меня его нет (только на рабочем ПК).
Помню что поле это имеет смещение 0x112 (+274 dec.)
Короче, "_dword_ field_112; // +274" это и есть "fly_cast_power". Переименуй его и будет всё ок.
Вернуться к началу

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 июн 2019, 19:36

Цитата:
@AlexSpl
Хотел бы подкорректировать "Орлиный глаз" под сетевые нужды.
Срабатывать он должен после перехода хода в битве и давать шанс изучить заклинание, которое колдовалось противником в прошлом раунде.
Вы делали с Ben80 похожий мод. Но мне на хватает знаний чтобы его подкорректировать.

Там минимум изменений: добавить хук, который будет сохранять ID заклинаний после каста каждой из сторон (функция getEagleEyeSpells() должна возвращать последнее скастованное противником заклинание в случае, если заклинание получилось выучить), и переместить хук eagleEyeMain() так, чтобы он выполнялся каждый новый раунд.
Вернуться к началу

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

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

Сообщение Catastrophe » 05 июн 2019, 00:44

igrik писал(а):

Короче, "_dword_ field_112; // +274" это и есть "fly_cast_power". Переименуй его и будет всё ок.

спасибо, работает, а по поводу моего кода, там без 13 хуков никак не обойтись же? кроме как через хай хук всю функцию читов переписывать
Быстрее всего смогу ответить вам в Telegram: @PleaseAndThankYou
Вернуться к началу

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

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

Сообщение Ben80 » 05 июн 2019, 02:42

AlexSpl писал(а):

Там минимум изменений: добавить хук, который будет сохранять ID заклинаний после каста каждой из сторон (функция getEagleEyeSpells() должна возвращать последнее скастованное противником заклинание в случае, если заклинание получилось выучить), и переместить хук eagleEyeMain() так, чтобы он выполнялся каждый новый раунд.


Если игроки используют функционал HD мода Save/Load во время битвы, то это не будет работать. В идеале нужно использовать нативную структуру оригинальной игры, предназначенную для сохранения заклинаний, использованных во время битвы.
Вернуться к началу

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

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

Сообщение RoseKavalier » 05 июн 2019, 03:43

Catastrophe писал(а):

спасибо, работает, а по поводу моего кода, там без 13 хуков никак не обойтись же? кроме как через хай хук всю функцию читов переписывать

One HiHook is simplest, yep!
Вернуться к началу

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

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

Сообщение Catastrophe » 05 июн 2019, 20:33

Снятие лимитов на мораль и удачу + уменьшенный шанс их выпадения. Для снятия лимита отрицательной удачи нужно сначала добавить ее в игру, благо feanor выкладывал исходники своего плагина "badluck" для этого
 
Изображение

Код: Выделить всё
         // unlimited morale
         _PI->WriteDword(0x464586, 50); // pos
         _PI->WriteDword(0x464593, 4294967246); // neg
         _PI->WriteByte(0x46458C, 206); // neg
         _PI->WriteByte(0x4645A0, 50); // pos
         // morale chance
         _PI->WriteDword(0x4645AA, 50); // default is 24

         // unlimited dismorale
         _PI->WriteDword(0x46474B, 25); // pos
         _PI->WriteDword(0x464754, 4294967271); // neg
         _PI->WriteByte(0x46477C, 231); // neg
         _PI->WriteByte(0x46478C, 25); // pos
         // bad morale chance
         _PI->WriteDword(0x46479E, 25); // default is 12

         // luck limit
         _PI->WriteDword(0x4E3BFB, 50);
         _PI->WriteDword(0x4E3C05, 4294967246);
         // in battle
         _PI->WriteDword(0x43F65F, 50);
         _PI->WriteDword(0x441541, 50);
         _PI->WriteByte(0x43F658, 50);
         _PI->WriteByte(0x44153A, 50);
         // luck chance, two addresses for melee and ranged
         _PI->WriteDword(0x44154E, 50);
         _PI->WriteDword(0x43F66C, 50);

 Удача отображается неправильно (только в стеке существ и на карте), в чем может быть проблема? (Заклинания: -6)
Изображение
Последний раз редактировалось Catastrophe 05 июн 2019, 21:20, всего редактировалось 3 раз(а).
Быстрее всего смогу ответить вам в Telegram: @PleaseAndThankYou
Вернуться к началу

offlinecatshy  
Новичок
Новичок
 
Сообщения: 15
Зарегистрирован: 06 сен 2018, 12:32
Пол: Не указан
Поблагодарили: 0 раз.

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

Сообщение catshy » 05 июн 2019, 20:56

Hello guys :) do any body know how to call a function to make a save game file? or just get a save file body as string without create a new file. (HOTA + HD Mod)
Вернуться к началу

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

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

Сообщение Catastrophe » 05 июн 2019, 22:11

catshy писал(а):

HOTA + HD Mod

hota doesn't support plugins for hd mod anymore
Быстрее всего смогу ответить вам в Telegram: @PleaseAndThankYou
Вернуться к началу

Пред.След.

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

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

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