Приветствуем Вас, Прохожий (Guest) | RSS
  • Страница 1 из 1
  • 1
Модератор форума: FairYng, Saltov  
Lands of Nevendaar » Основной Раздел » Моддинг » Brain of Disciples II (Все, что касается изменений в коде игры и ее редакторе)
Brain of Disciples II
Воин Дата: Четверг, 29.03.2018, 10:27 | Сообщение # 1
Группа: Последователь (Disciple)
Сообщений: 907
Репутация: 199
Статус: Offline
Brain of Disciples II! Да, уважаемые пользователи форума, это не название любительского сочинения, игрового сценария или кампании, и даже не новый мод на любимую пошаговую стратегию.
Так я решил озаглавить новую тему этого замечательного форума. Несмотря на то, что с момента выхода первого аддона Disciples II прошло больше 16 лет, интерес к игре все-таки не угас. Более того, за последние несколько лет, усилиями модмэйкеров, создано немало разнообразных и интересных модификаций. Однако, как правило, они не касались изменений непосредственно самого кода игры и ее редактора (проект под названием «Disciples II: Revenge of the Greenskins» в данном случае составляет исключение).
Прочитавшие эти строки, может, и возразят мне в том, что уже есть на форуме специальные темы, посвященные моддингу игры, зачем нужно создавать еще одну? Дело в том, что, как мне кажется, в результате накопления знаний и навыков модмэйкерства, ввиду того, что «стандартные» (здесь я подразумеваю, прежде всего, изменения в текстовых файлах игры) возможности ограничены и, во многом, исчерпали себя, назрела необходимость поиска чего-то нового. К тому же, за последнее время, на форуме, были размещены вопросы и обсуждения, которые выходят за границы «стандартного» моддинга. Спорить и доказывать не стану: некоторым может показаться достаточным и того, что уже есть в игре, а для кого-то вполне хватит и небольших правок в dbf-файлах, чтобы создать свою небольшую любительскую модификацию. Однако если задаваться более серьезными целями, неминуемо столкнешься с «мозгом» игры, т.е. самим «игровым движком». Полагаю, не стоит объяснять что такое исходный и скомпилированный код, реверс-инжиниринг и другие понятия, характерные для любых программ, исходя из других задач темы.
Итак, подводя к сути, подчеркну, что данная тема создана для размещения всевозможных инструкций, руководств и реальных результатов каких-либо изменений в коде Disciples II и игровом редакторе. Нет! (если вам вдруг на ум пришло слово «хакинг», которое чаще всего ассоциируется с незаконным взломом программ, прямым нарушением авторского права, всевозможными мошенническими и вредительскими действиями).
Здесь же хочу привести, в качестве хорошего примера, поэтапное руководство произведенных изменений в коде игры от Lazy Buttons. Кстати, изменения коснулись часто задаваемого вопроса на форуме: почему юниты-маги при абсолютной (100 %) точности все равно промахиваются?

Собственно «Руководство по возвращению героям-магам в Rise of the Elves их былой меткости».
Внимание – ставить с осторожностью, и обязательно сделать резервные копии изменяемых файлов перед их заменой.
Предупреждение – играть магами становится еще скучнее :)

Нам понадобятся:
Hex-editor (шестнадцатеричный редактор) для редактирования exe-файла игры. Я лично пользуюсь программой HxD. Скачать можно бесплатно отсюда: https://mh-nexus.de/en/hxd/
Disciples 2 Rise of the Elves версии 3.01. Если точнее – файл Discipl2.exe.

Пошаговая инструкция

0. Сделать резервную копию.

1. Открыть Discipl2.exe при помощи шестнадцатеричного редактора.

2. Используем функцию поиска в редакторе (поиск по текстовым строкам, datatype: text-string)

3. Ищем в текстовых данных справа (не в HEX-символах слева) следующие последовательности символов
G000UU0097 – Unit ID героя-Носферата
G000UU0098 – то же но для королевы-Личихи
G000UU0072 – Unit ID архидьявола
G000UU0046 – айди дудочника (Хранитель Знаний)
G000UU8010 – айди косоглазой дриады
G000UU0021 – ID архимага хитро спрятано отдельно от остальных
Игра специально обращается к этим ID героев магов (и больше никаких других юнитов). Подозреваю что это какая-то особая проверка во время атаки, которая добавляет перерасчет шанса попаданий ТОЛЬКО для героев-магов. По крайней мере ни для каких больше героев этого найти не удалось.

4. каждому найденному айди соответствует определенная последовательность байтов слева. Если выделить айди в редакторе, то нужные байты должны подсветиться. Чтобы игра перестала накладывать порчу на героев-магов, нужно эту последовательность байтов аккуратно заменить нулями.
Пример: архимагу соответствует следующая цепочка: 47 30 30 30 55 55 30 30 32. Заменяем её на 00 00 00 00 00 00 00 00 00 00. То же самое и для остальных ID.

5. Сохраняем файл, запускаем, тестируем. Если всё сделано правильно, то количество промахов героев-магов падает в разы. Если что-то сделано неправильно, откатываемся к резервной копии.

От себя немного добавлю:
1) изменения* были сделаны в англоязычной версии игрового движка и адреса смещений, необходимых для правки байтов, будут не соответствовать русскоязычной (придется вести самостоятельный поиск);
2) пользоваться можно любым 16-ричным редактором (с т.н. "условно-бесплатными" версиям вроде WinHex, могут быть заморочки, прежде всего, ограничения на объем сохраняемых файлов);
3) для вступления в силу изменений, как утверждает HSerg, достаточным будет правка первого байта;
_____________
* ВНИМАНИЕ: изменения произвóдите на свой страх и риск (заявления насчет некорректной работы антивирусника или вашей ОС предъявлять будет некому и незачем). Если вы ничего не поняли в изложенном выше, лучше, по-видимому, за это не вообще не браться; на крайний случай сделать обязательно bak-копию программы).

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

P.S.: просьба придерживаться сабжа. За неадекватные вопросы, а также спам, флуд, флейм и прочее будут предприняты соответствующие действия.

Бесрезен умирает..., но старички все еще помнят Дисы :)
Gorgar Дата: Пятница, 30.03.2018, 14:24 | Сообщение # 2
Группа: Последователь (Disciple)
Сообщений: 1730
Репутация: 521
Статус: Offline
Я думал это мод на нормальный ИИ. Это куда нужнее.

Gorgar ты вирус. НоД 32 против таких как ты создавался да и он не поможет(с) (неизвестный тролль, впавший в очаяние)
"Креатив ради креатива удел кретинов" (с) Гангрен
Цитата Денисик ()
определение "криворукие и****ы" (с) как мне иногда кажется, соответствует степени моего огорчения.

Тем более покупатель- он все равно же ведь купит. Будет плакать, плеватся и морду отворачивать, но купит...
М. Зощенко
*Этот покупатель -Фанат Disciples
...
" Знаю я вас, олдфагов. Дай вам волю, вы в петиции прямым текстом напишите "Д3 гомно, сделайте Д2 в 3D", а такое, мягко говоря, не очень дипломатично. " (с) Rommel
Кое что об Акелле
norvezskayasemga Дата: Понедельник, 09.04.2018, 15:42 | Сообщение # 3
Группа: Последователь (Disciple)
Сообщений: 69
Репутация: 46
Статус: Offline
Помню, кто-то горячо хотел что-нибудь сделать с ограничением урона

Я сваял небольшую софтину, которая заменяет часть байтов в файле и записывает результат

Таким образом любой желающий может попробовать найти тот файл, где программка угадала, и заменила те самые шестнадцать (или тридцать два) бита, соответствующие числу 300 (папки 300_16bit и 300_32bit), на биты, соответствующие числу 600
Ну а если на самом деле ограничение урона было прописано не в виде if dmg > 300 then , а в виде if dmg < 301 then , то можно еще попытать удачу в папках 301_16bit и 301_32bit

http://my-files.ru/0p8g8r внутри помимо горы пускалок D2 (которые достаточно переместить в папку с игрой без переименования) есть тестовая карта, где на юнита с почти 300 урона накладывается заклинание увеличения урона

Редактировался файл версии 3.01 от Руссобит-М

P.S. И, надеюсь, нашедший поделится с нами номером файла :D

Свой мод с блэкджеком и шлюхами
Арена с куртизанками и преферансом


Сообщение отредактировал norvezskayasemga - Вторник, 10.04.2018, 14:02
Воин Дата: Вторник, 10.04.2018, 09:01 | Сообщение # 4
Группа: Последователь (Disciple)
Сообщений: 907
Репутация: 199
Статус: Offline
Цитата norvezskayasemga ()
Ну а если на самом деле ограничение урона было прописано не в виде if dmg > 300 then , а в виде if dmg < 301 then
Так было изначально в исходном коде (С++). После компиляции там мало что осталось (хотя некоторые сегменты "сишного" кода декомпилятор все же определяет). Кстати, чем ты декомпилировал?

norvezskayasemga, сразу не совсем понятно, эксэшник уже содержит нужное число, или нет? Ладно, я гляну.

Бесрезен умирает..., но старички все еще помнят Дисы :)
norvezskayasemga Дата: Вторник, 10.04.2018, 13:41 | Сообщение # 5
Группа: Последователь (Disciple)
Сообщений: 69
Репутация: 46
Статус: Offline
Цитата Воин ()
Так было изначально в исходном коде

Это было к тому, что, строго говоря, мы даже не знаем точно, какое число нам искать

Цитата Воин ()
Кстати, чем ты декомпилировал?

Ничем. Давно-давно я уже предлагал пробовать заменять часть скомпилированного кода через текстовый редактор (что, по сути, сделал Lazy Buttons, воспользовавшись hex-редактором)

У нас же каждое число соответствует определенной последовательности байтов, которую очень легко найти. Проблема в том, что встречается она во многих местах, и не обязательно соответствует числу (может без проблем соответствовать части команды для процессора). Вот и получается, что мы должны попробовать все варианты (с заменой только одного числа), чтобы узнать в каком именно месте находится заветное число, ограничивающее урон

Цитата Воин ()
сразу не совсем понятно, эксэшник уже содержит нужное число, или нет?

Если вопрос в том, содержит ли он число 300, то не знаю, его, например, могли запихнуть и библиотеку, используемую как Disciples.exe, так и ScenEdit.exe
Если вопрос про то, внесены ли изменения в заархивированные пускалки дисов, то - да, каждая из них отличается от оригинала двумя или четырьмя байтами (название файла соответствует положению первого замененного байта)

Свой мод с блэкджеком и шлюхами
Арена с куртизанками и преферансом


Сообщение отредактировал norvezskayasemga - Вторник, 10.04.2018, 14:04
Воин Дата: Вторник, 10.04.2018, 14:39 | Сообщение # 6
Группа: Последователь (Disciple)
Сообщений: 907
Репутация: 199
Статус: Offline
Цитата norvezskayasemga ()
Это было к тому, что, строго говоря, мы даже не знаем точно, какое число нам искать

Цитата norvezskayasemga ()
Ничем. Давно-давно я уже предлагал пробовать заменять часть скомпилированного кода через текстовый редактор (что, по сути, сделал Lazy Buttons, воспользовавшись hex-редактором)
Если к слову, то "Блокнот", как мне кажется, здесь бесполезен. Нащет Hex editora, то для поиска заранее известных значений и их изменения он пригоден, а вот для того же анализа вряд ли (ибо там сплошь машинный код).

Цитата norvezskayasemga ()
Если вопрос в том, содержит ли он число 300, то не знаю, его, например, могли запихнуть и библиотеку, используемую как Disciples.exe, так и ScenEdit.exe
Я полагаю, что ограничение урона (как и уровня, ини, НР-ы, ХР-ы и др. параметров) должно быть прописано как в редакторе, так и основном игровом движке. В случае с уроном - с бóльшей долей вероятности.

Цитата norvezskayasemga ()
Если вопрос про то, внесены ли изменения в заархивированные пускалки дисов, то - да, каждая из них отличается от оригинала двумя или четырьмя байтами (название файла соответствует положению первого замененного байта)
Если пользоваться именно 16-ричным редактором и искать значение 300 (максимальный урон у большинства юнитов) и 400 (макс. урон для лидера милишника и стрелка, а также некоторые допатаки, напр., яд), то следует искать, соответственно, по данной системе исчисления, значения 12C и 190 (только переставленные местами, и занимать они будут 2 ячейки (2 бита). Но таких, как ты верно сказал, в коде будет ни одна.
А сам ты тестил измененные "эксэшники": есть ли хоть в одном из них требуемое значение?

Бесрезен умирает..., но старички все еще помнят Дисы :)
norvezskayasemga Дата: Вторник, 10.04.2018, 15:02 | Сообщение # 7
Группа: Последователь (Disciple)
Сообщений: 69
Репутация: 46
Статус: Offline
Цитата Воин ()
Если к слову, то "Блокнот", как мне кажется, здесь бесполезен

А я не про блокнот, т.к. это чудо при сохранении заменяет Chr(10) на Chr(13)

Цитата Воин ()
А сам ты тестил измененные "эксэшники": есть ли хоть в одном из них требуемое значение?

Если бы я перебрал их все, то обязательно бы написал о результате
А так потыкался по первым нескольким, какие-то не запустились, какие-то запустились, но без желаемого эффекта, но в одного перебирать все пускалки большого желания нет

Свой мод с блэкджеком и шлюхами
Арена с куртизанками и преферансом
Воин Дата: Вторник, 10.04.2018, 15:33 | Сообщение # 8
Группа: Последователь (Disciple)
Сообщений: 907
Репутация: 199
Статус: Offline
Цитата norvezskayasemga ()
А я не про блокнот, т.к. это чудо при сохранении заменяет Chr(10) на Chr(13)
Ну "Блокнот" может (вообще он для таких операций не предназначен как и все текстовые редакторы в целом). Какой тогда текстовый редактор? Из стандартных: WordPad, Ms Word, что еще?.

Цитата norvezskayasemga ()
А так потыкался по первым нескольким, какие-то не запустились, какие-то запустились, но без желаемого эффекта, но в одного перебирать все пускалки большого желания нет
Гм, надеюсь их запуск не будет столь болезненным для системы. thinkin

Бесрезен умирает..., но старички все еще помнят Дисы :)
norvezskayasemga Дата: Вторник, 10.04.2018, 15:45 | Сообщение # 9
Группа: Последователь (Disciple)
Сообщений: 69
Репутация: 46
Статус: Offline
Цитата Воин ()
Какой тогда текстовый редактор?

AkelPad, например

Цитата Воин ()
Гм, надеюсь их запуск не будет столь болезненным для системы.

сомневаюсь, что замена пары байт превратит безобидный кусок кода во чтоо-то типа "format C:"

Свой мод с блэкджеком и шлюхами
Арена с куртизанками и преферансом
Воин Дата: Понедельник, 16.04.2018, 13:25 | Сообщение # 10
Группа: Последователь (Disciple)
Сообщений: 907
Репутация: 199
Статус: Offline
Цитата norvezskayasemga ()
сомневаюсь, что замена пары байт превратит безобидный кусок кода во чтоо-то типа "format C:"
У меня был один случай, когда неправильное значение в обычном dbf-е привело к ошибке запуска исполняемого файла, в результате чего зависла "Винда". Так что может быть всякое.

Цитата norvezskayasemga ()
AkelPad, например
И все же, несмотря на его достоинства, скомпилированный код полностью он не отобразит. Предпочитаю все таки декомпилятор (он же дизассемблер) или отладчик (по отдельности или вместе).

Добавлено (16.04.2018, 13:25)
---------------------------------------------
norvezskayasemga, на выходных тестил твои эксэшники. В общем, после длительных мучений, желаемой суммы так и не нашел (просто после очередного запуска надоело издеваться над своим процом).
Все таки нужно будет попробовать дизассемблировать движок и покопаться в коде именно по секторам, м.б. удастся определить хоть сектор с предполагаемым значением, а там уже кол-во предполагаемых значений, по идее, должно значительно сократиться. thinkin


Бесрезен умирает..., но старички все еще помнят Дисы :)
norvezskayasemga Дата: Понедельник, 23.04.2018, 20:14 | Сообщение # 11
Группа: Последователь (Disciple)
Сообщений: 69
Репутация: 46
Статус: Offline
Цитата Воин ()
В общем, после длительных мучений, желаемой суммы так и не нашел (просто после очередного запуска надоело издеваться над своим процом).

А какие варианты были испробованы? Чтобы было понятно, какие пускалки можно не перебирать

Цитата Воин ()
Все таки нужно будет попробовать дизассемблировать движок и покопаться в коде именно по секторам,

Могу пожелать удачи)

Свой мод с блэкджеком и шлюхами
Арена с куртизанками и преферансом
Воин Дата: Вторник, 08.05.2018, 10:12 | Сообщение # 12
Группа: Последователь (Disciple)
Сообщений: 907
Репутация: 199
Статус: Offline
Цитата norvezskayasemga ()
А какие варианты были испробованы? Чтобы было понятно, какие пускалки можно не перебирать
Все эксэшники, как уже говорил, я не пробовал запускать (пару из них не запустились). Но значения больше 300 (т.е. заявленные 301) не было. Поэтому попробую противопоставить способу изменять наугад дизассемблинг (хотя опять-таки не факт, что найду значение и это будет не так быстро).

Добавлено (08.05.2018, 10:12)
---------------------------------------------
Так, бурение породы продолжается... Отпишусь о результате предварительного изучения приложения и его последующей декомпиляции.
Логика моих действий в поиске предельной суммы урона исходила из следующего: в файлах TApp.dbf и TAppEdit.dbf есть идентификатор X005TA0811, где написано, что DMG MAX. Просмотрев по соответствующему оффсету декомпилированный код я, кроме промежуточных расчетов, перечислений ассемблерных регистров и локальных ссылок, не обнаружил искомого значения. Сумма значения Size приводит в секцию .rdata, где, по идее, и должно быть число, но там неисследуемый сектор (adress unknown).
Полагаю, что выбранный мною путь оказался ложный, ибо идентификатор X005TA0811, вероятнее всего отвечает за появление надписи (МАХ) при достижении допустимо граничного урона. Об этом свидетельствует сам код тестового сообщения в файлах TApp.dbf и TAppEdit.dbf, определяющий стиль текста. Кстати, кому интересно, последнему посвящена небольшая статья.


Бесрезен умирает..., но старички все еще помнят Дисы :)
dimmonz43 Дата: Суббота, 17.04.2021, 18:56 | Сообщение # 13
Группа: Неофит (Neophyte)
Сообщений: 2
Репутация: 0
Статус: Offline
Приветствую!
Полагаю, ограничение максимального урона в игре никто таки не обошёл?
_Nazar Дата: Суббота, 17.04.2021, 19:37 | Сообщение # 14
Группа: Последователь (Disciple)
Сообщений: 68
Репутация: 45
Статус: Offline
Добрый день. Уже многое в игре обошли. Загляни в описание моего мода.
Lands of Nevendaar » Основной Раздел » Моддинг » Brain of Disciples II (Все, что касается изменений в коде игры и ее редакторе)
  • Страница 1 из 1
  • 1
Поиск: