Объявления

Друзья, если не получается зарегистрироваться, напишите на почту 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 » 13 ноя 2021, 18:33

Загрузка lod'а будет дорабатываться, а 2 ед. урона, скорее всего, дописывает сам SoD_SP, почему-то считая это заклинание ударным (вероятно, идёт перехват выводимого сообщения, а SoD_SP не подозревает, естественно, о существовании новых заклинаний и путает его с ударным из-за Type = 0).
Вернуться к началу

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 » 16 ноя 2021, 13:19

Сделал загрузку lod'а по методу RoseKavalier, убрал свою, lod успешно загружается, но новые картинки для заклинаний отображаются только тогда, когда NewSpells.lod в корне папки NewSpells.

Код: Выделить всё
int LoadingFunction = NULL;
int __stdcall LoadCustomLODPath(LoHook* h, HookContext* c)
{
   char buffer[MAX_PATH];
   strcpy(buffer, curDir);
   strcat(buffer, "\\Data\\");
     
   int numLoaded;
   if (LoadingFunction)
      numLoaded = CALL_1(int, __stdcall, LoadingFunction, buffer);

   itoa(numLoaded, buffer, 10);
   ShowMessage(buffer);

   return EXEC_DEFAULT;
}

...

// LOD
LoadingFunction = _P->VarGetValue("LodTable.Function", NULL);
_PI->WriteLoHook      (0x4EEA81, LoadCustomLODPath);
//_PI->WriteDword     (0x69E5B8, 3);
//_PI->WriteDword     (0x69E5B8 + 4, (int)&lodType);
//_PI->WriteLoHook     (0x55A57D, loadLod);


H3.LodTable.dll кидать в папку NewSpells не нужно, SoD_SP сам подхватывает lod'ы активных плагинов из их корневых папок:

Цитата:
By default, H3.LodTable will seek all *.lod and *.pac archives in every ^^active^^ HDmod pack.
If you have a custom LOD/PAC folder, you can use the "LodTable.Function" patcher_x86 variable to recuperate the folder loading function.

Но описанный ниже метод почему-то не работает. Уже и путь перепроверил, и LoadingFunction, и кол-во подгружаемых lod'ов. Рабочий порядок файлов для обеспечения совместимости с SoD_SP пока остаётся таким:

[Data]
[Language]
NewSpells.dll
NewSpells.ini
NewSpells.lod

По странным описаниям новых заклинаний в SoD_SP с NewSpells. SoD_SP использует уточнения описаний почти для каждого заклинания. Это может быть урон, стоимость в МП, шансы срабатывания и т.п. По умолчанию, видимо, заклинание считается ударным и добавляется подсказка об уроне на основании значений полей Effect. Исправить это может только RoseKavalier (например, можно просто не добавлять строчку с дополнительным описанием для заклинаний с номерами выше 69).
Вернуться к началу

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

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

Сообщение Rolex » 16 ноя 2021, 13:32

Rolex писал(а):

Сделал загрузку lod'а по методу RoseKavalier, убрал свою, lod успешно загружается, но новые картинки для заклинаний отображаются только тогда, когда NewSpells.lod в корне папки NewSpells.

Интересно, то есть получается, что если NewSpells.lod будет не в корне, например, в папки Data (как было ранее), то ресурсы не подгрузятся? А snd по какому методу загружаются вашему или RoseKavalier? Или Вы все, что было в snd, запихнули в lod?
Вернуться к началу

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 » 16 ноя 2021, 13:42

Нужно проконсультироваться с RoseKavalier. Я следовал его инструкции, а snd грузится по моему методу (правда, я не проверял, слышны ли новые звуки с подключённым SoD_SP).

Цитата:
Или Вы все, что было в snd, запихнули в lod?

Сэмплы только "запихнуть" можно в lod, но пользы от этого никакой. Разный размер заголовков, и функция чтения lod'ов не умеет загружать сэмплы.
Вернуться к началу

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

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

Сообщение RoseKavalier » 16 ноя 2021, 15:59

H3.LodTable doesn't perform recursive lookup, just the main directory like HDmod does for bitmaps; it gives you some freedom to disable/backup things by moving to another folder. I suppose checking if there is a /data/ directory may not be a terrible idea.
Also there is no harm in including it within your own projects, it will not apply a second time around if someone else uses it.

To connect additional sound archives to the game, the insertion method is slightly different, you can check Bersy's implementation and here.

What's the issue with newSpells exactly?
If it's the spellbook description, then I've been meaning to update that part for a long time and it would be good to do it. Keep in mind the plugin is not likely to support additions, I would simply remove conflicts.
Вернуться к началу

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 » 16 ноя 2021, 16:06

Цитата:
To connect additional sound archives to the game, the insertion method is slightly different, you can check Bersy's implementation and here.

I simply use the rudiment (perhaps) which loads extra snd files:

Код: Выделить всё
int __stdcall loadSnd(LoHook* h, HookContext* c)
{
   c->eax = (int)sndPath;

   return EXEC_DEFAULT;
}

...

_PI->WriteLoHook     (0x598979, loadSnd);


Цитата:
I suppose checking if there is a /data/ directory may not be a terrible idea.

So, then what is the purpose of using _P->VarGetValue("LodTable.Function", NULL)?
Вернуться к началу

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

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

Сообщение igrik » 18 ноя 2021, 05:40

Круто вы запилили плагин на новые спеллы. Поздравляю!

Но я не говорил что это невозможно, я говорил - что это очень сложно и может занять достаточно много времени :smile2:
Вернуться к началу

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 » 19 ноя 2021, 14:18

Сложность - понятие субъективное. Мне задачу облегчили две идеи:

1) Массив _GameMgr_.disabled_shrines[70] используется в качестве локального при генерации заклинаний в святилищах, а поэтому его можно объединить с массивом _GameMgr_.disabled_spells[70]; после генерации.
2) Удачная идея об объединении массивов _Hero_.spell[70] и _Hero_.spell_level[70] (система "Ниппель" в действии) :smile1:

Насчёт затраченного времени. В принципе, плагин был готов уже в сентябре, остальное время потрачено на добавление заклинаний, игру в King's Bounty II и багфиксы. Я в курсе, что могут оставаться неучтённые моменты, но если такие найдутся, не думаю, что их будет сложно учесть. Немножко, конечно, демотивировала реакция сообщества, но, я думаю, это из-за того, что мы добавили уже приевшиеся всем заклинания, а не какие-то реально новые. Я особо не настаивал на добавлении оригинальных заклинаний с вау-эффектом: почти все мои идеи отправились в Recycle Bin, потому что Rolex'у хотелось, чтобы новые заклинания не сильно отличались от оригинальных, но код открыт и никто не стоит на пути энтузиастов-экспериментаторов :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 » 19 ноя 2021, 15:08

Я недавно, кстати, перечитал всё, что написано про заклинание Fear. Из слов Грега Фултона о том, что Fear было "более слабой" версией отрицательной морали, делаю вывод, что действовало оно 1 раунд. А ещё прикольно, что бета-версию Героев 3 слил на Warez 14-ти летний подросток Nick Ferrari :smile12: Он представлялся игровым журналистом и рассылал письма в игровые конторы с просьбой поделиться игрой для написания обзоров :smile20: Вычислили его после того, как начали рассылать именные версии беты Героев 3 (в код было зашито закодированное имя тестера/журналиста). Эх, до сих пор питаю надежду, что хотя бы одна бетка с тех времён сохранилась, но учитывая тогдашнюю скорость Интернета и объём HDD, надежд на это мало.

Самые лучшие времена были: конец 90-х - начало 2000-х. Ламповые :smile16: А сейчас и с Интернетом сделали чёрти что и с играми :smile29: Казалось бы такой огромный выбор игр, а играть, по сути, не во что. Один проходняк со сроком годности 2-3 года. И играют теперь не так. На полном серьёзе пишут: "играла, держа под рукой walkthrough, чтобы не испортить статистику достижений". Т.е. уже дойти самому до чего-то не ценится, важнее "игровой статус", ведь именно он показывает остальным, насколько ты крутой геймер :smile2:
Вернуться к началу

offlineprimitive  
имя: Тим
 
Сообщения: 8
Зарегистрирован: 17 апр 2021, 15:42
Пол: Мужчина
Поблагодарили: 1 раз.

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

Сообщение primitive » 19 ноя 2021, 17:31

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


Я вам не скажу за всё сообщество, но персонально восхищён. Как только появилась новая версия, запустил с ней новую игру. К сожалению, начала падать при обмене артефактов между героями, поэтому дальше Eye of Magi не прошёл. Возможно, падает из-за самоскомпилированного плагина DisableSkillsAndSpells с точно теми же самыми функциями RMGDisableSpells, что и в NewSpells, которые я когда-то летом скопировал с этого форума. Ну или из-за несовместимости с чем-то другим, не уверен. Когда времени есть пара часов на выходных особо не поразбираешься. Следующий раз выделю отдельно DisableSkills и попробую снова, если время будет. В любом случае NewSpells - в золотой фонд.

P.S. Чтоб два раза не вставать - а через плагины можно обменять специализацию двух героев?
Вернуться к началу

Пред.След.

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

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

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