Объявления

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

В spellIndirectTable хранятся значения для игровых свитчей, работающих с заклинаниями. У нас вызовы существ - два последних числа, поэтому во все таблицы, кроме B, добавляем ещё одно значение, равное последнему. В таблице B у нас 38 для Firebirds и 39 для Magic Elementals, пусть будет 40 для Sprites. Теперь идём в функцию SummonCreatures(), добавляем кейс, а также не забываем прописать новое значение в условии (позже я этот момент упрощу, а пока нужно делать так): if (c->ecx == 38 || c->ecx == 39 || c->ecx == 40). Ещё не забудьте добавить новое заклинание вызова в список разрешённых (enabled spells).
Вернуться к началу

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

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

Сообщение Rolex » 21 сен 2021, 12:40

Все сделал. Сейчас по идее должно все работать. Единственный момент, в книге не отображается пока что. Гляньте, пжл, код, какая-то мелочь осталась, что-то нужно добавить/исправить и все заработает.

Отнес к Магии Воздуха. Также нужно было еще добавить массив параметров: int spriteSpellParams[] = { 800, 800, 1200, 1600 };

Плюс есть еще один коварный момент, который будет отличать Summon Sprite от всех других вызовов элементалей:

Вызов Фей не должен мешать после этого вызову элементалей.

Как это сделать?

NewSpells.txt
(67.34 КБ) Скачиваний: 109
Вернуться к началу

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 » 22 сен 2021, 03:06

Нужно увеличить кол-во заклинаний (SPELLS_NUM). Ещё можно убрать коэффициент 1.2 в getSummoningEffect(). Он - компенсация за дороговизну. Для Фей можно даже понижающий сделать. Момент с разрешением вызова других элементалей делается через дополнительный лоухук (позже добавлю).
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

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

Сообщение void_17 » 22 сен 2021, 13:18

Почему возникают ситуации, что некоторые аргументы функции в самой функции просто не применяются? Это проблема IDA или какой-то хитрый ход программистов NWC?
Вернуться к началу

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

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

Сообщение Rolex » 22 сен 2021, 15:45

AlexSpl писал(а):

Нужно увеличить кол-во заклинаний (SPELLS_NUM).

Точно. Увеличил на всякий еще ANIMS_NUM также до 87.

AlexSpl писал(а):

Ещё можно убрать коэффициент 1.2 в getSummoningEffect(). Он - компенсация за дороговизну. Для Фей можно даже понижающий сделать.

Сделал коэффициент 0.8 в getSummoningEffect() для Фей. Также немного поднял параметры до spriteSpellParams[] = { 1000, 1000, 1500, 2000 }. Плюс отнес его ко всем школам вместо только магии Воздуха.

Сейчас все прекрасно отображается и работает. Для Фей осталось добавить дополнительный лоухук, чтобы можно было вызывать и других элементалей вместе с Феями.
AlexSpl писал(а):

Момент с разрешением вызова других элементалей делается через дополнительный лоухук (позже добавлю).

Теперь нам остается добавить всего 2 интереснейших закла - Смертельный взгляд (Death Stare) и Возрождение (Revival) и плагин готов. В итоге у нас получится 11 уникальных заклов, где не будет ни одного из MoP.

В MoP походные заклы - либо имба, либо малолезный Факел (хотя добавить их можно, любителям WoG зайдет, другие - откл в ini). А боевые мне вообще не нравятся. Ну разве что Притяжение при осаде города может пригодится, остальное - такое себе. Польза Регенерации сомнительна, только для существ 6-7 уровня на начальных этапах. Вызов светлячкеов - фигня. Вьюга такое себе. На Эксперте она срабатывает массово на все вражексие отряды. При этом в оригинале нет ни одного ударного закла, который бы наносил урон исключительно вражексим отрядам (Волна Смерти, Уничтожение нежити и Армагеддон - наносят урон всем отрядам на поле боя). Наш Death Cloud, да и другие заклы, выглядят куда интересней.

Исходный код:
NewSpells.txt
(67.38 КБ) Скачиваний: 103

1) Смертельный взгляд (Death Stare) - 5 уровень - 30 (при развитии школы - 25) - Магия огня

В оригинале работает так, что при ударе каждая Могучая горгона мгновенно убивает 1 существо в целевом отряде с шансом 10%, но не более N/10, где N – количество Могучих горгон. Округление вверх. Действует только на живых. Немагическая способность.

Например, 31 Могучая горгона после атаки может дополнительно убить до 4 существ (31/10) Смертельным взглядом (округление вверх) . Однако ключевым фактором является то, что шанс срабатывания рассчитывается для каждой горгоны отдельно, а не для всего отряда. Иначе бы 31 горгона всегда убивала 4 существ Смертельным взглядом.

Вероятность хотя бы одного успешного срабатывания способности можно рассчитать по формуле: 1 – (1 – p)^N

где p – шанс срабатывания Смертельного взгляда, равный 0,1 (10%), N – количество Могучих горгон.

Закл должен работать следующим образом:

Могучие горгоны у нас существа 5-го уровня. Обычно абилка соответствует базовому уровню развития школы. Как правило, на Эксперте идет двухкратный прирост относительно Базового уровня.

Делаем для Базового/Продвинутого/Экспертного уровня: 10%/13,33%/20%.
Что будет соответствовать: N/10, 2*N/15 (или N/7.5), N/5

N - кол-во существ в дружественном отряде на который наложен закл.

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

Таким образом 100 / P - часть от всего стека, то есть максимально возможное кол-во существ убиваемых Смертельным взглядом за один раз.

Для всех существ 5-го уровня P будет фиксированным (за исключеним Элементалей земли/магмы) и будет зависеть только от уровня развития школы.

Кол-во убивамых Смертельных взглядом существ зависит от кол-ва существ в атакующем стеке. Очевидно, что оставляя процент неизменным и накладывая этот закл на более низкоуровневых существ, чей прирост гораздо больше, мы получим имбу. А для более высокоуровневых, мы, наооборот, потеряем в эффективности, так как их прирост меньше. А потому, чтобы выйти на тот же уровень убийств, мы должны пропорционально увеличению прироста уменьшать процент и наборот.

Для этого введем коэффициент k, где k = 3 / bg. Где bg - base growth - базовый прирост существ на который накладывается закл и 3 - это базовый прирост Могучих горгон и всех существ 5-го уровня за исключением Элементалей земли/магмы (там 4).

Итого мы получим следующую формулу для максимально возможного кол-ва убиваемых Смертельным взглядом существ:
N * P * k / 100 или 3 * N * P / 100 * bg
---
Например, для существ 4-го уровня, чей базовый прирост приемущественно равен 4 (за исключением Пегасов, там 5), мы получим:
3 * N * P / 4 * 100

Это будет 7,5%; 10%; 15% или N/13.33; N/10; N/6.66

Для существ же 6-го уровня, чей базовый прирост равен 2, мы получим:
3 * N * P / 2 * 100

Это будет 15%; 20%; 30% или N/6.66; N/5; N/3.33.
---
2) Возрождение (Revival) (абилка Лордов вампиров) - 5 уровень - Мана 30 (при развитии школы - 25) - Магия Земли

None/Basic: Восстанавливаем 50% в здоровье/существах от нанесенного нашим отрядом (под Revival) урона.
Advanced: Восстанавливаем 75% в здоровье/существах от нанесенного нашим отрядом (под Revival) урона.
Expert: Восстанавливаем 100% в здоровье/существах от нанесенного нашим отрядом (под Revival) урона.

Немного подправил картинки для Death Stare плюс включил в архив Вам еще картинки для Revival и Summon Sprite для обновления def'ов.

Images for DefTool.rar
(31.25 КБ) Скачиваний: 98
Вернуться к началу

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 » 23 сен 2021, 10:01

Цитата:
Почему возникают ситуации, что некоторые аргументы функции в самой функции просто не применяются? Это проблема IDA или какой-то хитрый ход программистов NWC?

Было бы более понятно с примером. Компилятор, может, например, записать аргумент в локальную переменную, и потом код уже использует эту переменную, а изначальный аргумент становится хранилищем для временных данных (такое иногда происходит с аргументами без const). Сама IDA не всегда точно определяет кол-во аргументов и соглашение о вызове. Допускаю ещё, что аргумент объявлен, но по каким-то причинам оказывается ненужным.
Вернуться к началу

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

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

Сообщение Rolex » 30 сен 2021, 20:24

Я придумал, как сбалансировать Fear. Нам нужно сделать, чтобы на None/Basic урон от ответки снижался до 50% (на 50%), половина от обычного урона, а на Advanced до 25% (на 75%), четверть от обычного урона. А вот Expert не трогаем, там ответки быть не должно. То есть так будет оптимально, если мы сделаем подобно тому, как работает ответка в оригинале при атаке отряда под Слепотой.

AlexSpl писал(а):

Да, можно добавить одно походное для разнообразия, но уникальное.

Также придумал последнее 12 заклинание, как раз таки нужное нам уникальное ПОХОДНОЕ! Довольно таки интересное и главное полезное походное заклинание, которое отлично впишется в магическую систему третьих Героев.

Заклинание назвал Mobility (Подвижность).

Изображение Изображение

Есть 2 возможных варианта его реализации:

1.
4 уровень - Магия Земли - 16 маны (12 при развитии навыка)
None: +300 единиц перемещения 1 раз в день.
Basic: +300 единиц перемещения 2 раза в день.
Advanced: +300 единиц перемещения 3 раза в день.
Expert: +300 единиц перемещения 4 раза в день.

2.
5 уровень - Магия Земли - 20 маны (15 при развитии навыка)
None: +300 единиц перемещения 1 раз в день.
Basic: +600 единиц перемещения 1 раз в день.
Advanced: +900 единиц перемещения 1 раз в день.
Expert: +1200 единиц перемещения 1 раз в день.

Если же игрок попытается использовать данный закл, когда кол-во попыток на день уже исчерпано, то в таком случае аналогично как и с Dimension Door, выводим сообщение:
[Hero name] is not skilled enough to cast this spell again today.

Я немного больше склоняюсь к первому варианту, более сбалансированный что ли, больше маны придется тратить в итоге. Хотя второй вариант тоже неплох. Все же окончательный выбор пускай будет за Вами. Тот вариант, который считаете более подходящим, такой и выбирайте. Также и с картинкой. Я сделал две. Какая больше вам лично понравится, такую и выбирайте.

PS: AlexSpl, а как обстоят дела с хуком для Фей, чтобы можно было вызывать других элементалей вместе с Феями? Вы, вроде, обещали добавить. Код с добавленным заклом Вызов Фей я публиковал, но что-то вы его даже не смотрели... Ах да, и что там с Death Stare и Revival, получается? А то что-то вы вообще перестали отписыватся в теме. Неужели KB II так сильно затянул?
Думаю, можно же переодически немного отвлекатся и в перерывах пилить плагин. Надо бы уже его доделывать, а то как-то нехорошо получается, большую часть уже сделали, осталось совсем ничего, и все зависло. Надо бы уже его добивать.

Mobility.zip
Архив с картинками нового заклинания
(22.02 КБ) Скачиваний: 97
Вернуться к началу

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 » 01 окт 2021, 18:13

Я понимаю, что нужно доделывать, но, если честно, я не фанат последних заклинаний и мотивации их пилить у меня ноль. Раз уж Вы добавили Вызов фей, включу это заклинание в плагин. Мне кажется, на данном этапе гораздо важнее отполировать те заклинания, которые уже есть, добавить нормальные описания, вынести характеристики в ini. Если будет интерес, конечно, будем добавлять новые. Насчёт походного, которое Вы предложили: выглядит блекло. Даже МП за бой поднимать интереснее.
Вернуться к началу

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

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

Сообщение Rolex » 01 окт 2021, 18:26

Ну блин всего 2 боевых закла и 1 походное. Я понимаю, что они не очень простые в реализации (Death Stare и Revival), но ведь уникальные, интересные и главное полезные. Да и походное Mobility как по мне, вполне себе ничего. С учетом того, что у нас вообще нет ни одного походного, то пускай хоть такое будет. Дополнительные MP никогда не бывают лишними. В некоторых ситуациях подобный закл может очень сильно помочь.

Да и тем более Вы же лично сделали все, целый конструктор, чтобы добавление новых заклов было максимально простым и быстрым. Раз уж аж 9 добавили, то эти уже можно добавить и все, на этом точка. У меня лично уже нет идей, только добавлять заклы из MoP (если будет интерес к этим). 12 заклов придумал. :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 » 01 окт 2021, 18:32

Они как раз таки простые в реализации (соответствующий код уже есть). Ладно Вампиризм может быть полезен, но всё равно я думаю, что Вы нереальные (имбовые) проценты придумали, но я не одобряю Death Stare. Почему? Как Вы себе представляете, например, отряд крестьян, который убивает несколько Чёрных Драконов? Что это за магия такая? Death Stare самое место в абилках. Т.е. никакой логики за заклинанием. А походное должно быть реально крутым. Просто прибавить MP смотрится, как чит. Т.е. его реально будут кастовать каждый ход при игре на скорость, ибо мастхэв. А нужно полезное, но ситуативное.
Вернуться к началу

Пред.След.

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

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

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