Rolex писал(а):
Наверно, чтобы уменьшить влияние случайности на ход/исход битв. В HotA же постоянно этим занимаются - Сопротивление, например, им не нравилось.
Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаRolex писал(а): Наверно, чтобы уменьшить влияние случайности на ход/исход битв. В HotA же постоянно этим занимаются - Сопротивление, например, им не нравилось. |
Re: Как создать плагин для HD модаЦитата: С Моралью во всех трёх частях всё в порядке. Цитата: Обе версии - в теме с готовыми плагинами. |
Re: Как создать плагин для HD модаAlexSpl писал(а): Может я что-то путаю, но в теме с готовыми плагинами только отрицательная удача. Я же говорил за положительную, которая работает в оригинале, только с прибавкой. |
Re: Как создать плагин для HD модаУдача с уполовиниванием/удваиванием базового урона:
|
Re: Как создать плагин для HD мода
Сравнивал новый код с вашим старым. Заметил, что HexPatch фикса для нейтралов сменился на CodePatch. И адреса немного изменились. Кстати, а почему другие адреса? Вижу вы ставите лоухук в место установки патча уже по новым адресам. А что делает вот этот новый Хекс патч: _PI->WriteHexPatch(0x4430A3, "EB 10") ? Кстати, а изменить описание специализации героя из плагина сложно будет? Надо бы адрес на таблицу с описаниями специализаций отыскать. Это вроде бы файл HEROSPEC.TXT. |
Re: Как создать плагин для HD модаЦитата: Вижу вы ставите лоухук в место установки патча уже по новым адресам. А что делает вот этот новый Хекс патч: _PI->WriteHexPatch(0x4430A3, "EB 10") ? Все три команды делают почти одно и то же: убирают ненужный код. _PI->WriteCodePatch(0x43F635, "%n", 13); эквивалентен _PI->WriteHexPatch(0x43F635, "90 90 90 90 90 90 90 90 90 90 90 90 90"); _PI->WriteHexPatch(0x4430A3, "EB 10"); эквивалентен _PI->WriteHexPatch(0x4430A3, "90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90"; или WriteCodePatch(0x4430A3, "%n", 18); "EB 10" удобнее тем, что при просмотре дизассеблированного кода в режиме блок-схем у нас будет красивый jmp, а не 18 nop'ов. Изменение названия и описания специализации:
|
Re: Как создать плагин для HD мода1) Есть код (модифицированный и дополненный), который вы писали для Ben80 более 3 лет назад. Суть была вот в чем:
Там нужно было сделать Слабость, Забывчивость, Радость, Удачу, Печаль, Неудачу масс. спеллами на любом уровне магии, даже на основном. Я убрал Слабость и Забывчивость и поставил Ускорение и Медлительность. Айдишки взял с гайда, ссылку на который вы бросали. Так вот задача сейчас состоит в том, чтобы написать лоухук(и) (или, если возможно, через WriteDword/WriteHexPatch), который эффект Радости и Удачи подымет до +3, а Печали и Неудачи опустит до -3 на Экспертном уровне. Ускорение нужно увеличить с 5 до 7 на Эксперте. А вот Медлительность хотелось бы подправить на всех уровнях вместо 25%/25%/50%/50% ---> 20%/20%/40%/60%. Нужна ваша помощь. С описанием заклов разобрался. Помогло опять же ваше сообщение 3-летней давности.
2) И еще хочу прокачать бесполезный вторичный навык - "Первая помощь". _PI->WriteDword закоментил, оно не работает. С Имуществом и Разветкой подобное работает, но там фиксированные значения, а здесь диапазон. Хотелось бы убрать этот рандом, увеличить и зафиксировать верхнее значение. То есть, чтобы Палатка Первой Помощи восст. без навыка Первая помощь фиксированные 50 ед. (вместо случайных от 1 до 25 ед), а с навыком Первая Помощь фиксированные 100/200/300 соответственно (в оригинале случайное число от 1 до 50/75/100). Контроля Палатки нет. Игрок не управляет палаткой, все идет автоматически как и без навыка Первая помощь, только Палатка лечит не один случайно выбранный отряд, а сразу все отряды героя. Плюс увеличить здоровье Палатки до 300. И еще так подумал, надо бы сделать, чтобы Палатка восст. еще и свое здоровье (в кол-ве соотв развитию навыка), а также здоровье всех орудий (Баллисты, Тележки, Катапульты). В оригинале можно восстановить только здоровье существ. В гайде нашел кое-что: Of course, the First Aid skill is going to be pretty bad no matter how high we set it unless we remove the random dice roll and have it always heal for the maximum amount. To do this, set 07852C~D to EB 0A. 0x07852C + 0x400000 = 0x47852C Но вот это мне не совсем понятно "~D". Что в данном случае значит тильда D? В математике это, вроде как, подобие. В плюсах "Побитовое НЕ". Через Хекс Патч ничего из закоментированного не работает. Либо краш, либо без изменений.
3) Есть еще такой малополезный навык, как Артиллерия. В нем бы всего один параметр изменить, а все отсальное оставить как есть. Базовый урон Баллисты составляет 8-12 ед, его бы поднять в 2 раза, то есть сделать 16-24 ед. Но сделать это нужно не правкой и перепаковкой TXT, а именно посредством подключаемого плагина к моду. Последний раз редактировалось Rolex 27 окт 2020, 16:10, всего редактировалось 1 раз.
|
Re: Как создать плагин для HD модаЦитата: Там нужно было сделать Слабость, Забывчивость, Радость, Удачу, Печаль, Неудачу масс. спеллами на любом уровне магии, даже на основном. Этот код, как оказалось, работает только для игроков-людей, но не для AI. См. следующий пост с правильной реализацией: https://handbookhmm.ru/forum/viewtopic.php?f=56&t=518&start=930#p18872 Цитата: Автор так обозначил диапазон адресов: 07852C~D = 07852C - 07852D. Вот это:
должно работать. Убирает рандом и ставит максимальный хил. |
Re: Как создать плагин для HD модаAlexSpl писал(а): Переписал с HiHook:
Rolex писал(а): Ускорение нужно увеличить с 5 до 7 на Эксперте. А вот Медлительность хотелось бы подправить на всех уровнях вместо 25%/25%/50%/50% ---> 20%/20%/40%/60%. Нужна ваша помощь. AlexSpl писал(а):
должно работать. Убирает рандом и ставит максимальный хил. _PI->WriteHexPatch(0x47852C, "EB 0A") - да, действительно, так работает, видимо я криво потестил. Кстати, а зачем тогда нужен вот этот адрес: 0x47852D, если по первому работает? Я так понимаю, что патчить можно по любому адресу из диапазона и результат будет один и тот же. И все адреса из диапазона патчить ненужно, а достаточно взять какой-то один, верно? Но вот повысить макс хил не выходит. Вот так почему-то не работает:
Rolex писал(а): Контроля Палатки нет. Игрок не управляет палаткой, все идет автоматически как и без навыка Первая помощь, только Палатка лечит не один случайно выбранный отряд, а сразу все отряды героя. Плюс увеличить здоровье Палатки до 300. И еще так подумал, надо бы сделать, чтобы Палатка восст. еще и свое здоровье (в кол-ве соотв развитию навыка), а также здоровье всех орудий (Баллисты, Тележки, Катапульты). В оригинале можно восстановить только здоровье существ. |
Re: Как создать плагин для HD модаЦитата: Нет. Длина патча 2 байта (EB 0A), байт EB прописывается по адресу 0x47852С, а байт 0A - по следующему за ним адресу 0x47852С + 1 = 0x47852D. Указывать диапазон почти всегда не имеет смысла, т.к. известен размер (длина) патча в байтах. Достаточно указать начальный адрес. Цитата: Чтобы изменить эффект First Aid, Вам потребуется изменить базовый хил и коэффициенты. Базовый хил (25.0f) здесь: 0x63B76C, коэффициенты (0.0f, 1.0f, 2.0f, 3.0f) здесь: 0x63EA98. Базовый хил просто так менять нельзя (константа 25.0f используется в других алгоритмах), но мы уже обсуждали, что нужно делать в таких случаях. Базовый хил и коэффициенты - вещественные числа с плавающей точкой типа float (ссылку на конвертер float to hex я давал выше). Можно и без конвертера обойтись. Тоже пример выше был. |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1