Объявления |
---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаНет, видимо, его тоже заменили. Нужно возвращать оригинальный. Его ни с каким другим не спутать.
|
Re: Как создать плагин для HD модаAlexSpl писал(а): Тогда предлагаю поступить следующий образом. В папку с dll плагином мы помещаем наш lod-архив, где будут наши def-ки с картинками заклов, оригинальный звук Fear из RoE, а также 2 текстовых файла Eng и Rus с описанием наших заклов. Плюс с dll и lod будет ini-файл. В ini пользователь сможет задавать язык на котором он хочет, чтобы было описание заклинаний, а также выбирать заклинания, которые он хочет, чтобы работали. Например, если задан Language = 0, то отображаем описание заклов на анг языке, если Language = 1, то на русском. Fear = 0 - не добавляет в гильдию, книгу, свитки, ученых, как будто его нет, просто полностью откл его. Fear = 1 - полностью вкл данный закл, отображаем везде и тд. Аналогично и с другим заклами. Таким образом игрок сможет выбрать и подключить себе те заклы, которые ему больше всего по душе. Наш lod мы подгружаем вместе с dll и подменяем оригинальные ресурсы с таким же именем в оригинальных лодах. Подобное сделано в SoD_SP. Но там еще менюшка с настройками прямо из игры вызывается и каждую опцию можно изменить прямо в игре через кастомное меню опций с автосохранением всех изменений в ini. Нам же, думаю, возится с кастомными диалогами и ненужно, достаточно, чтобы пользователь задавал все сам ручками через ini. |
Re: Как создать плагин для HD модаПересмотрел абилки и сделал еще для парочки спецабилок картинки. Также переделал картинки для Disease (Болезнь). Из тех трех, которые я бросал именно Disease получилась хуже всего, две другие, вроде, норм. Так вот в этот раз для Disease выдрал картинку из анимации закла. Она там в очень хорошем качестве и разрешении. Вот ее и взял. Также смотрел bmp-шки из def-ок Aging и Poison, так вот они там не очень (речь не за качество), как для картинок для заклов как-то не очень смотрятся, только для анимации и годятся. Но они нам и ненужны. Из картинок окна информации получилось вполне себе ничего. А вот Disease можно и заменить. Вот она точно лучше.
Касательно новых заклов, то решил, что можно добавить Облако смерти (Death Cloud) и Смертельный удар (Death Blow). Оба закла будут 5-го уровня. 1) Death Cloud - площадный закл. У Death Cloud диаметр атаки 3 гекса, как и у Огненного шара. Кстати, Огненный шар идет как закл 3-го уровня, так и как абилка Магогов. Анимация одна и таже. А вот закла Death Cloud нет, только абилка. На 4 уровне есть Метеоритный дождь, а потому решил делать его заклом 5-го уровня с уроном где-то между Метеоритным дождем и Взрывом. Предлагаю следующий урон: Базовый: СМ * 40 + 30 Продвинутый: СМ * 40 + 60 Экспертный: СМ * 40 + 120 2) Death Blow будет наподобие Бешенства, только без снижения защиты. То есть Бешенство поднимает атаку врага в 2/2,5/3 раза и урон на 50%/75%/100%, но это все в ущерб защите. А вот в случае со Смертельным ударом защита остается прежней, а потому его и делаем заклом 5-го уровня. Касательно длительности действия, также как и Бешенство в течении 1 раунда. То есть у дружественного отряда с наложенным Death Blow будет возможность сделать одну усиленную атаку и дать одну усиленную ответку и все это без ущерба к защите. Урон предлагаю сделать следующий: Базовый: базовый урон повышается на 50% Продвинутый: базовый урон повышается на 75% Экспертный: базовый урон повышается на 100% Касательно анимации, то здесь, я думаю, лучше проигрывать ее дважды. Один раз при наложении на своем отряде и второй раз перед атакой (или ответкой) уже на вражеском отряде, собственно так, как она и работает у Рыцарей смерти. То есть наподобие Огненного щита, где как при наложении, так и в работе используется одна и таже анимация. В итоге включая Fear у нас получится 6 заклов: 3 закла 4-го уровня включая Fear (Страх, Яд, Болезнь) и 3 закла 5-го уровня (Старение, Облако смерти, Смертельный удар). Прикрепил архив с bmp-шками для DefTool:
|
Re: Как создать плагин для HD модаЭффекты не добавлял (возможны эффекты спецабилок существ). Версия для демонстации появления в гильдии магии, объектах на карте, изучения героем и каста (анимация/звук/картинка в информационном окошке отряда):
Death Cloud пока работает, как Fireball. Можно попробовать заменить 5 на 4 и 11 на 17 в таблицах, но не уверен, что этого будет достаточно, чтобы сделать его площадным. * * * Поправил Death Cloud (теперь площадное), анимация работает (но анимация Fireball её замещает), оставил пока функцию Fireball (для Death Cloud придётся писать свой кейс). * * * Потихоньку пилю функцию для Death Cloud на основе функции для Frost Ring/Fireball/Inferno/Meteor Shower/Berserk. При желании можно будет добавить ещё ударных площадных (это относительно быстро). Картинки Disease, Aging и Death Blow получились очень чёткими, не выбиваются из общего стиля. А вот остальные, такое чувство, что мутноватые (заметно). Aging и Death Blow отнёс к Магии Огня, остальные ушли в Землю (по расцветке). В Земле и так много заклинаний, но ничего не поделаешь: зелёные - значит, Земля Сам не ожидал, что добавлять новые заклы окажется так легко. Конечно, какие-то с оригинальной механикой будет сложнее добавить. Но те, которые напоминают оригинальные, добавить нет проблем (хотя я против, я как раз за необычные заклинания, чтобы интересно было). Но я бы добавил призыв Феникса, например (в KB есть такое заклинание). Призыв вообще элементарно делается, но нужны картинки. Ещё прикольное было бы Кольцо кристаллов (окружает отряд кристаллами с 1 ХП), но тут реально нужна хорошая анимация (особенно разрушения), чтобы красиво выглядело. Интересный факт. Имя анимации Aging - egA, т.е. Age наоборот. |
Re: Как создать плагин для HD модаДоделал Death Cloud (формулу взял Rolex'а):
UPD: Разобрался с полем disabled_spells[SPELLS_NUM]. Теперь всё должно быть OK. Пришлось переписать функцию генерации заклинаний в святилищах. При тестах я часто рестарчу карту, так вот обнаружил плавающие вылеты 0x4078D5 и 0x4079A5, если несколько раз рестартить. Сначала подумал, что ошибка плагина. Отключил все плагины, убрал ресурсы из Common. Вылеты остаются (с HD+ и без). Может 30 рестартов не вылетать, а может на 3-4 вылететь. Следующий этап - сдвиг абилок в позицию 110, чтобы работали 0-109 - заклинания будут, а 110-127 - абилки существ. * * * Начал переносить спецабилки и наткнулся на ещё один подводный камень:
Пока у нас было меньше 81 заклинания, он не был заметен. Теперь абилки начинаются с индекса 110, а посему эти массивы оказываются тесными. Хорошо, что под элемент массива отводится 4 байта, когда 2-х более чем достаточно. 65535 раундов? Серьёзно? Сначала подумал заменить инструкции. Hапример, mov ecx, [esi+ebx*4+198h] на movzx ecx, word [esi+ebx*2+198h], но размер первой 7 байт, а второй - 8, да и не универсально это. Придётся хукать Благо, я посчитал, что обращений к этим полям не так много. |
Re: Как создать плагин для HD модаОчень круто переписал начало функции applySpell() (sub_444610), но как посмотрел, сколько ещё всего нужно править для того, чтобы игра работала с массивами active_spell_duration и active_spells_power, как с имеющими 2-х байтовые элементы, руки опустились Нет, это подъёмная работа - 16 хуков, включая уже закрытые в applySpell(), и не забыть про код заклинаний защиты от стихий, - но, значит, стал я смотреть, как игра работает с active_spells_power (+2DCh) (на самом деле, это поле хранит уровень магической школы наложенного заклинания; название сбивает с толку). Так вот, подозрительно мало она работает с этим полем, если я, конечно, всё увидел: это поле апдейтится в applySpell(), но я не вижу пока кода, который использует (!) значения, записанные туда. Игра хранит бонусы/штрафы к характеристикам, и когда время действия заклинания прекращается либо его снимают, она вычитает бонусы и прибавляет штрафы, т.е. не вычисляет их на основе уровня школы магии наложенного заклинания (не использует поле +2DCh).
Такой вопрос: зачем тогда игре хранить уровень школы магии наложенного заклинания вместе с его длительностью? Есть предположения? И нельзя ли использовать active_spells_power как продолжение active_spell_duration, что избавило бы от дополнительных хуков и, самое главное, потенциальных ошибок? * * * Пришёл к выводу, что перенос спецабилок - плохая идея. Есть код, который проходит по всем заклам И спецабилкам, а поэтому нужна непрерывность. Т.е. новые заклинания теперь будут сразу после спецабилок. Как же запретить спецабилкам генериться в качестве заклинаний тогда? Это было бы проблемой, если бы не расширенный массив disabled_spells[140], который реально спасает. Достаточно отключить спецабилки Если я прав насчёт массива active_spells_power, то останется добавить несколько пропущенных патчей (исправить 81 = кол-во оригинальных заклинаний + кол-во спецабилок на общее кол-во заклинаний и спецабилок) и плагин в техническом плане готов (и даже с работающим Death Cloud) Написание кода для других заклинаний, как Вы понимаете, творческий процесс и потребует больше времени, чем ушло на "фундамент". Можно, конечно, налепить с десяток аналогов Frost Ring, Fireball и Inferno (как Вам, например, заклинание Blizzard: Inferno, но только синее? шучу), но я сейчас говорю о заклинаниях, которые будут действительно интересны. Как минимум, те заклы, которые уже добавлены, постараюсь закончить после KB II (а может, в перерывах от). Кстати, с заклами, повторяющими абилки, есть проблема из-за одинаковых картинок: как разруливать ситуацию, когда на отряд кастанули спелл Disease, а потом Зомби ещё и свой эффект наложили? В информационном окне существа будет две совершенно одинаковых картинки. |
Re: Как создать плагин для HD модаAlexSpl писал(а): Да я также заметил мутноватый фон у некоторых картинок. Но это никак не связано с тем, что я делал. Ведь я использовал для всех наших заклов один тот же фон для книги. Это, видимо, связано с особенностями картинки самой книги. Вы можете заметить, что первое заклинание во втором ряду, не зависимо от того наше оно или родное, всегда находится на мутном фоне. Например, Удар Молнии или Уничтожении нежити. Просто такое не со всеми заклами, плюс большинство родных занимают большую площадь по ширине и это почти незаметно. Да и вы ранее в качество родных заклов сильно не всматривались, не придавали этому значения, а потому просто не замечали подобного. Вот как раз таки наши Death Cloud и Poison и попали на мутный фон. Но если для проверки мутности сделать их заклами 4-го уровня, то они перестанут быть такими, фон изменится в лучшую сторону. Кстати, а вот Death Blow немного не поместился и в результате появились голубые пиксели на концах, которые не поместились. Но я сейчас ее исправил, включил в архив, теперь должно быть ок. Замените у себя. AlexSpl писал(а): Наверное, тогда уже Призыв Фениксов. Ибо всега призывать 1 Феникса с любой СМ плохо. Но нужно держать баланс: суммарная сила призваных Фениксов не должна быть существенно сильнее суммарной силы призваных Элементалей Земли на одном уровне развития школы магии. Нужно выходить плюс-минус на тот же уровень, хотя небольшие отклонения в ту или иную сторону, там до 10% или даже до 20% вполне нормально. Также можно добавить призыв Психических элементалей или Элементалей магии, раз призыв проще всего делается. Что-то одно конечно лучше выбрать. В общем картинки я сделал. Для элементалей вообще два вида картинок слепил, что больше вам понравится, то и выбирайте. Варианты: Элементали психики + Огненные птицы Элементали психики + Фениксы Элементали магии + Фениксы На ваше усмотрение. По призыву предлагаю следующие формулы: Элементали психики / Элементали магии: Базовый: СМ Продвинутый: СМ * 1,5 Экспертный: СМ * 2 Огненные птицы: Базовый: СМ * 0,5 Продвинутый: СМ * 0,75 Экспертный: СМ Фениксы: Базовый: СМ * 0,25 Продвинутый: СМ * 0,375 Экспертный: СМ * 0,5 AlexSpl писал(а): Ну у нас же не KB и даже не WoG. Кристаллы с ХП вокруг отряда во время боя? Какая-то дичь как по мне. Я так понял, что идея как с единичками, прикрыть основной отряд, чтобы враг потратил свою атаку, чтобы добраться к основному отряду. Нам нужно что-то, чтобы прикрыть основной отряд и при этом это что-то должно погибать абсолютно от любой атаки и урона. Для этого отлично подойдет Кольцо крестьян. У них всего 1 хп, а урон не может быть менее 1. Другое дело как этот закл разбить на уровни. Типа на Базовом Крестьянин погибает без возрождения, на Продвинутом возрождается 1 раз, на Экспертном 2 раза после гибели. Но это бредятина. Можно поступить иначе, окружать отряд каким-то 1 гексвым препятствием, которые бывают на поле боя, и делать возможным атаку существами этого препятствия. Типа 1/2/3 атаки на Базовом/Продвинутом/Экспертном и препятствие разрушается в момент разрушения можно проигрывать анимацию разрушения препятствий. Но вопрос в том, сможете ли вы подобное реализовать. Если сможете, то картинки я сделаю. AlexSpl писал(а): С оригинальным эффектом у нас только Fear. Там нужно будет убрать возможность атаки и ответки. Для лучников можно будет на основе Забывчивости лепить. Просто еще убрать атаку в ближнем бою. Остальные же заклы, которые у нас есть, получается нужно также допиливать, можно на основе оригинальных функций уже имеющихся заклов, как с Death Cloud. Кстати, Disease (Болезнь) нужно сделать 4-го уровня. Мы его немного прокачаем, я хочу его сделать АнтиМолитвой. Хочу добавить к нему эффект Медлительности 20%/40%/40% для всех отрядов. На Эксперте он массовый, как и Молитва. Плюс Death Blow у Вас сейчас накладывается на вражеский отряд, а должен как Бешенство на свой отряд. Анимацию при наложенииний на свой отряд и перед атакой на вражеский используем одну и ту же. Длительность действия, как и с Бешенством в течении 1 раунда. 1 атака и одна 1 ответка с повышенным уроном. AlexSpl писал(а): Ничего страшного. Пускай будет. При наведении курсора на картинку мы увидим длительность его действия и в случае с абилками там будет 3 раунда, а с заклом кол-во раундов будет равно СМ. Другой вариант: при наложении абилки на отряд под заклом с этой абилкой, проверять остаток раундов этого закла. Если оно меньше 3, то не добавляем картинку, а просто устанавливаем большее кол-во раундов в данном случае 3. Если же остаток раундов длительности этого закла 3 и более, то не добавляем картинку с длительностью абилки. Аналогично и с Aging и Poison. Если отряд под абилкой, то при наложении этого же закла с длительностью больше остатка абилки, просто обновляем кол-во раундов на большее, которое соотвествует силе магии героя, но при этом картинку не дублируем, а оставляем одну. Кстати, как в WoG, так и в HotA нет ни одного нового заклинания. В ERA, кстати, нельзя добалять новые заклы, а только менять хар-ки уже существующих. 7 новых заклов были добавлены только в MoP. Но редактор заклинаний MoP также не позволяет добавлять новые заклы. Только редактировать уже существующие. Вот здесь было обсуждение: http://wforum.heroes35.net/showthread.p ... 241&page=2 На плюсах же отдельную dll, как отдельный плагин к моду, который добавляет новые заклы еще никто до Вас не делал. По всей видимости все это из-за того, что добавление новых заклов это, вероятно, самая сложная задача в моддинге Героев. Да и Fear так никто и не вернул до сих пор. Кстати, MoP писался полностью на асме. Там 3 походных закла и 4 боевых. Но часть из них малопелезны, а другая часть по большей части имбовые и больше подходяд WoG. По сути мод MoP и базируется на аддоне WoG. Наши же заклы очень хорошо вписуются в SoD не нарушая баланс и отлично бы подошли HotA. Если же делать как я предлагал с возможностью откл заклов через ini-файл. Fear = 1 - закл генерируется в гильдии и попадает в книгу, Fear = 0 - закл откл, как будто его нет. То, думаю, можно взять и добавить 1-2 закла из MoP. Например, интересные Сбор войск и Притяжение. Сбор войск интересно реализовано: Базовый: открывается ближайшее внешнее жилище к герою в пределах экрана. Продвинутый: дает возможность выбрать любое внешнее жилище, которое находится в пределах экрана с героем. Эксперт: позволяет выбрать абсолютно любое подконтрольное жилище на карте. При наведении на жилище иконка курсора меняется и становится такой как при наведении на город. Можно было бы этот закл добавить. А то у нас одни боевые и нет ни одного походного. Тем игрокам, которые посчитают его имбой смогут его откл через ini. Есть еще интересный закл - Встреча героев, но, по-моему, это жесткая имба, так как ломает сложившуюся в игре тактику "цепочек". Правда в MoP это как бы компенсирется его стоимость и новым механизмом восполнения маны. Я, думаю, на этом нам стоит остановится и не придумывать больше новых заклов, пока не реализуем все то, что уже задумали. Насколько мне известно, Вы неплохо знаете Ассемблер. В таком случае Вам может будет интересно, а может и полезно глянуть исходный код MoP, а именно код по добавлению новых заклов: Исходники MoP v3.07 (пароль=123) https://drive.google.com/uc?export=down ... B5Tfr7g4Q1 Мануал MoP v3.07: https://drive.google.com/file/d/1XiIMHQ ... IIoP6/view Мой архив с картинками существ для призывы (плюс исправленный Death Blow):
Последний раз редактировалось Rolex 23 авг 2021, 17:50, всего редактировалось 4 раз(а).
|
Re: Как создать плагин для HD модаЦитата: Спасибо. Это определённо пригодится (вдруг какие адреса пропустил). Делаю def'ы под новый порядок заклинаний. Идея сдвигать абилки бредовая Сейчас думаю, сколько кода нужно было бы перелопатить, чтобы все подвинуть. Огромный плюс оставить абилки на месте в том, что они сразу будут работать без проблем. |
Re: Как создать плагин для HD модаВот пока что получилось (версия для тестирования):
Спецабилки теперь должны работать все. Если кто желает помочь в тестировании, интересует правильность наложения эффектов (графическая составляющая), правильность их снятия*, генерация новых заклинаний в объектах на карте и гильдии магии. Полноценно работает пока только Death Cloud. * Не все кейсы пока найдены и пропатчены, но уже гораздо круче, чем раньше. Всё более-менее работает * * * Цитата: Плагин пока задумывается как конструктор. Новые заклинания имеет смысл добавлять после того, как всё будет работать чётко (а для этого нужно много тестов и часов с дебаггером). Поэтому пусть пока будут 6 для демонстрации. Разве Вызов Фениксов добавить. По идее, будет работать, как и другие заклинания вызова (только смотреть, что там с двухгексовостью, нужно; хотя Элементали воды нормально же вызываются). Картинку Death Blow заменю позже (не увидел вовремя). Сейчас планирую заниматься техническими моментами: контроль целостности структур с помощью брейкпоинтов (важно знать, например, можно ли занимать массив active_spells_power или придётся его переносить), поиск участков кода, в которых осуществляется проход по всем заклинаниям и т.п. Но это уже не в таком ударном темпе |
Re: Как создать плагин для HD модаAlexSpl писал(а): Добавьте тогда за компанию и вызов Psychic Elemental. Все равно одинаково будут делаться. Там даже проще, он 1 гексовый. Формулы и картинки я бросал. Пускай 8 будет. Их и будем тестировать и вылизывать. Потом как все будет работать, можно будет попробовать из MoP хотя бы одно походное перетащить, Сбор войск, например. AlexSpl писал(а): В общем нашел баг с закраской кол-ва цветом при снятии и наложении заклов. Бывает, что закл еще наложен, картинка в инфо окне существа отображается и кол-во оставшихся раундов также, а цвет уже стандартный как будто на отряде нет никаких заклов. Или наоборот на отряде уже нет никаких заклов, а цвет красный или зеленый как будто на нем высят какие-то заклы. |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2