Туториал начинающего модмейкера

Составитель: Ярослав Ерёменко ака Горыныч


Содержание:

1. Вещи в Аллодах 2
2. Графика в Аллодах 2
3. Юниты в Аллодах 2 - часть I, NPC
4. Работа с res-архивами
5. Работа с шестнадцатеричными числами

1. Вещи в Аллодах II

Вся информация о вещах и предметах в Аллодах II (далее - просто А2) содержится в архивах world.res и main.res. Чтобы распаковать архив, вам потребуются инструменты. Скачать их можно отсюда. Лично я предпочитаю программу AllResExt.

Когда вы распакуете архив world.res, то увидите несколько файлов, из которых вам понадобятся следующие:
word.res\data\data.bin - пересечение типов, параметры (цена, вес и т.д.)
world.res\data\itemname.bin - заголовки названий (что видно по имени файла ;))
word.res\data\itemname.pkt - параметры, которые видит игрок (но не действюущие)

Из архива main.res вам понадобятся следующие файлы:
main.res\text\itemname.txt - названия предметов, как их видит игрок
main.res\text\itemserv.txt - названия предметов для data.bin, редактора и т.п.

Итак, начинаем процесс добавления вещей! Мы будем делать это на примере материала Bone, который описан в игре, но реально не используется (его шестнадцатеричный номер - 0D). Но аналогичным образом можно добавлять любые вещи к любому материалу. Я опишу этот процесс по порядку. Будем добавлять костяной амулет:

1. Изначально у материала Bone стоят такие же параметры, что и у Iron. Надо бы их заменить на что-нибудь более "костяное", например, от адамантина.
2. Далее мы видим перечисление различных "чертежей" вещей (ничего не напоминает?). Зесь есть параметр Materials, но он не используется. Можно ничего не менять, но можно увеличить массу предметов с припиской Full, Plate и тому подобному. Парметр массы стоит через 15 байт после названия
3. Теперь займемся непосредственным добавлением вещей. Для начала нужно добавить названия предмета в выше упомянутые текстовые файлы из архива main.res. В самый конец файла itemname.txt добавим строку "Редкий костяной амулет" (между прочим, он действительно редкий!), а в файл itemserv.txt - "Very Rare Bone Amulet".
4. Откройте в вашем любимом шестнадцатеричном редакторе файл itemname.bin (из архива world.res), и добавьте в его конец два байта - 62 D5. Более подробно о том, что они означают. Первый байт - ХЗ, а второй - идентификатор материала. Самим можно не думать. Возьмем эти параметры от Very Rare Adamantium Amulet (мы же делаем "кость" аналогичной адамантину?) - 62 65 и заменим материал (вместо 65 пропишите D5 - это, как уже выше упоминалось, "кость").
5. Откройте в hex-редакторе файл itemname.ptk и добавьте в его конец следующую сторку: 62 D5 01 00 06 02 07 01 30 75 00 00 0F 03. Как вы видите, 62 D5 - это наша "кость", а остальное - это немагические параметры, которе высвечиваютс при наведении курсора мыши на предмет (можете недолго думая их откуда-нибудь спереть ;)).
6. В начале этого же файла (itemname.ptk для тех кто забыл :)) есть число после трех пустых байтов. Это общее количество предметов. Увеличьте его на 1.

Осталось добавить картинки вещей в папки в архиве graphics.res. Папки - equipment и inventory. В папке inventory хранятся картинки для инвентаря персонажа, для магазинных полок и т.д., а в папке equipment - картинки для "тела" вашего персонажа в инфоокне. Их название - число, составленное из номера материала, чертежа предмета и т.д. Проще всего не "рожать" эти названия самому, а запустить игру - она сама скажет, какого файла не хватает. Более подробно о создании графики для А2 будет рассказано ниже.

Эти предметы не появляются в магазинах (еще бы они там появлялись). Их можно добавить на карту в редакторе, а также они одеты на стартовом воине.

Ну а для тех, у кого ничего не получилось, вот эта ссылка. В архиве по данному адресу содержится пресловутый костяной амулет, костяная кольчуга, изменены некоторые параметры и многое другое.

Хочу выразить благодарность товарищу Kobik'у за то, что он написал, как это все делать, а также мне, за то, что я перевел эту всю инфу на "туториальный" язык.

2. Графика в Аллодах II

Формат графики в А2 - это файлы с расширением .256 и .16a. Эти файлы могут хранить в себе анимацию и поддерживают прозрачность, нечто среднее между bmp и gif. Для вытаскивания из этих файлов изображений есть несколько утилит. Мне лично по душе Multi Format Converter, который можно взять здесь. Интерфейс программы простой и понятный, так что с ним очень легко разобратся.

А вот для запаковки сущестует специальная утилита, написанная Kobik'ом специально для проекта А2,5 - Bmp_to_256 Converter. Если вы - счастливый участник проекта А2,5, то вы можете взять ее на сектреном форуме.

Подробнее о том, как пользоватся этой утилитой. При запуске программы вы увидите примерно следующее окошко:

Пользоватся программой просто. Итак, что требуется сделать для создания файла с одним кадром:

1. Создать bmp-файл размером не более 256х256.
2. Перевести его в режим 256 цветов или в 16-битный цвет. Это зависит от "назначения" файла. Например, картинки для вещей требуют 256 цветов.
3. Переименовать этот файл в sprites001.bmp. Можно писать и не "sprites", главное, чтобы после названия стояло 001.
4. В поле "Основа названия файлов" введите "sprites" (или что там у вас перед 001), а в поле "Кол-во" - 1.
5. В зависимости от ваших предпочтений, нажмите кнопку "Преобразовать в 256" или "Преобразовать в 16а"

Для того, чтобы создать файл с анимацией, надо сделать следующее:

1. Провести с вашими файлами манипуляции, указанные в предыдущем шаге в пунктах 1 и 2.
2. Переименовать ваши файлы. Например, если у вас 7 кадров, то у вас должны быть такие файлы:
sprites001.bmp
sprites002.bmp
sprites003.bmp
...и так далее...
3. В поле "Основа названия файлов" введите "spites", или что там у вас перед 001. В поле "Кол-во" введите количество всех кадров.
4. Выполняйте пункт 5 из предыдущего шага.

Если что-то не получилось - не расстраивайтесь. Можете написать мне или задать вопрос на форуме.

3. Юниты в Аллодах II - NPC

Тут дорогие читатели могут задать мне вопрос - почему же я не начал с самого "вкусного" - с монсторв. Объясняюсь. Монстров добавлять значительно тяжелее, да и, к тому же, современные средства не позволяют исполнять процесс "добавлять" в полном объеме - можно только модифицировать старых монстров или добавлять новых на основе старых. Но все же добавить монстров можно (да здравствует черное окно вашего любимого hex-редактора). Но об этом будет рассказано в следующей части.

Начнем с того, какие утилиты нам потребуются и какие файлы мы будем изменять:

Утилиты:
Hex-редактор
AllResExt - распаковщик архивов А2
Bmp_to_256 Converter

Файлы, которые мы будем редактировать:
main.res\text\npcnames.txt - внутриигровые имена NPC
world.res\data\data.bin - так сказать, "прописка", "декларация" NPCв игре, все их характеристики, в том числе, и предметы, которые они носят надетыми и в инвентаре
[Каталог игры]\templates.bin - "декларация" NPC для редактора карт

Как обчно, пошагово опишу все действия:

1. В конец файла npcnames.txt добавимим имя юнита, которое мы хотим видеть в игре. Можно писать что угодно - хоть ВВП (для ВВП придется делать соответствующую рожу :))
2. Открываем в hex-редакторе файл data.bin
3. Находим слово Human - второе при поиске сверху. Далее идет список параметров, который оканчивается символом "#". После него стоит число 290 - 22010000h, увеличивате его. Те, кто не обладают вышеназванной утилитой "Some Brains" - могут останавливатся уже на этом шаге.
4. Ищем последнего юнита - это 2MercenaryMage110. Его описание заканчивается за три байта до слова Building. В этом месте вставляете информацию о новом юните. Можно просто взять у другого - но смотрите. Если вы создаете мага, не вставляйте инфу о воине (и т.д., и т.п.).
5. Более подробно о параметрах юнита. Все параметры занимают четыре байта, кроме двух - первого и вещей. Вот список всех параметров:
Human - всегда имеет значение 1A00h. Не знаю, зачем он нужен.
Body - сила
Reaction - ловкость
Mind - интеллект
Spirit - дух
HealthMax - макс. кол\во жизней
ManaMax - макс. кол-во маны. Если HPC - воин, то ставьте FF FF FF FF.
Speed - скорость
RotationSpeed - скорость поворота
ScanRange - ???
Defence - ???
SkillGeneral - главное умение персонажа
Skill Blade (Fire) - умение владения мечом для воина, стихия огня - для мага
Skill Axe (Water) - умение владения топором для воина, стихия воды - для мага
Skill Bludgen (Air) - умение владения дубиной для воина, стихия воздуха - для мага
Skill Pike (Earth) - умение владения копьем для воина, стихия земли -для мага
Skill Shooting (Astral) - умение стрельбы для воина, стихия астрала - для мага
TypeID - внешний вид, определяется через main.res\text\heropicture.txt
Fase - лицо NPC
Gender (is female?) - если мужик то 00 00 00 00, а все остальное - баба.
AttackChargeTime - ???
AttackRelaxTime - ???
TokenSize - ???
MovementType - прикольная вещь, можно приказать юниту бегать только по воде или только по песку и т.п.
DyingTime - ???
ServerId - номер названия в unitname.txt
KnownSpells - 4 байта, 28 заклинаний
EquipItem - 10 вещей, которые в инвентаре персонажа. Писать нужно не hex, а просто - например, Very Rare Bone Amulet
6. Итак, мы кончаем редактировать файл data.bin и приступаем к редактированию templates.bin. Для этого вам нужна программа "Конвертер в обе стороны для templates.bin" или, на худой конец, hex-редактор. Когда вы распакуете templates.bin, в конец файла out1.csv добавьте строку. Надо, чтобы параметры совпадали с аналогиями в data.bin, иначе редактор карт будет глючить. На саму игру это никак не повлияет.

Итак, мы завершили самую сложную часть работы. Теперь надо сделать картинку в инфоокне для HPC. Для этого просто поставьте на карту вашего юнита, запустите игру с этой картой и наведите курсор на юнита. Игра сама скажет вам, какоко файла не хватает и где он должен быть. Как работать с графикой А2, вы уже узнали из предыдущей части статьи.

Когда Vampire вышлет мне одну оччень нужную прогу, я опубликую здесь архив с новыми юнитами. Вобщем, ждите ;). Мой комментарий - пока не ждите. Завален РАБотой по горло.

4. Работа с res-архивами

Работа с архивами А2 очень легка. В этой части статьи будет рассмотрена распаковка архивов с помощью GDI-утилит, а также создание .bat файлов для Нивальской консольной (на самом деле она не консольная, просто другого слова не нашел) "ресальной" утилиты.

Существует множество GDI-программ для _распаковки_ ресов, а вот для _упаковки_ - только "псевдоконсольная" программа от Нивала. Хотя она тоже может распаковывать, зачем нам лишние проблемы :)?

Моя любимая программка - AllResExt. С ней очень просто работать. А вот и ее скриншот:

Итак, последовательность действий:

1. Открываете нужный вам архив
2. Указываете путь, куда вам надо будет распаковать файлы. В программе есть пренеприятный глюк - она не умеет создвать новые директории и требует, чтобы папка, куда надо распаковать архив, существовала
3. В самом нижнем поле выделяете имя архива
4. Жмете кнопку "Распаковать"

Как видите, пользоватся программой очень легко. Ее (как и остальные) можно скачать здесь.

Теперь будем запаковывать. Скачиваете Нивальский паковщик, открываете "Блокнот" и пишите:

res.exe ar graphics.res graphics pakovati\graphics\

Разъясняем:

1. res.exe - исполняемый файл Нивальского паковщика
2. ar - инструкция паковщику, чтобы паковать файлы
3. graphics.res - файл, куда паковать
4. graphics - ХЗ, что это такое, но одно знаю точно - если указать здесь значение, отличное от названия архива (куда паковать), то ничего не упакуется
5. pakovati\graphics\ - каталог, откуда берем файлы для их последующей обработки

Теперь сохраняйте это в .bat файл (имя не имеет значение), записывайте его в папку, где находится паковщик и запускайте.

Внимание - сам исполняемый файл паковщика, а также ресурсы для упаковки должны находится в директории игры. Иначе вы получите совершенно новый res-архив, в котором будут находится ваши файлы.

Если возникли вопросы - создавайте тему на форуме, или пишите на мой электронный ящик.

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

1. Для начала выберите архив, над которым будет идти работа. Я покажу все на примере graphics.res
2. Создайте в каталоге игры директорию с именем архива. Т.е., если архив - graphics.res, то директория должна называтся graphics. Важно - в директории должно сразу лежать содержимое архива. Почему я это пишу? Потому что AllResExt распаковывает архив в диркторию с именем и расширением, отделоенным точкой - как в имени файла. Если у вас так, то переместите все файлы из этой директории в каталог graphics.
3. Удалите архив graphics.res.
4. Откройте "Блокнот" и напишите в нем эти четыре символа - &YA1. Сохраните файл в каталог игры как текстовый, и потом переменуйте его в graphics, расширение - res. Внимание - файл должен занимать только четыре байта! Если больше - проверьте на ошибки или на наличие пробелов. Для чего нужен этот файл? Это - заглушка для игры. Вдаватся в подробности я не буду.
5. Запускайте allods2.exe. Надеюсь, что у вас все получилось. Бывает, что исполняшка "вылетает" в систему - проверьте все свои действия. Может, где-нибудь ошиблись.
6. Сделайте то же самое с другими архивами.

Вот и все!

5. Работа с шестнадцатеричными числами (автор - Олег Калашников)

Нам необходимо разобраться с шестнадцатеричной системой счисления. Ничего сложного в ней нет. Мы используем в жизни десятичную систему. Уверен, что вы все ее знаете, поэтому я постараюсь объяснить шестнадцатеричную систему, проводя аналогию с десятичной.

Итак, в десятичной системе если мы к какому-нибудь числу справа добавим нуль, то это число увеличится в 10 раз. Например:

1 х 10 = 10
10 х 10 = 100
100 х 10 = 1000
и т.д…

В этой системе мы используем цифры от 0 до 9, т.е. десять разных цифр (собственно, поэтому она и называется десятичная).

В шестнадцатеричной системе мы используем, соответственно, шестнадцать "цифр". Я специально написал слово "цифр" в кавычках, т.к. в ней используются не только цифры. Да и в самом деле, как так? Объясняю: от 0 до 9 мы считаем так же, как и в десятичной, а вот дальше будет так: A, B, C, D, E, F. Число F, как не трудно посчитать, будет равно 15 в десятичной системе (см. Таблицу 1).

Десятичное число

Шестнадцатеричное число

Десятичное число

Шестнадцатеричное число

0

1

2

3

4

8

9

10

11

12

13

14

15

16

17

0

1

2

3

4

8

9

A

B

C

D

E

F

10

11

26

27

28

29

30

158

159

160

161

162

254

255

256

257

1A

1B

1C

1D

1E

9E

9F

A0

A1

A2

FE

FF

100

101

Таблица 1. Десятичная и шестнадцатеричная системы.

Т.о., если мы к какому-нибудь числу в шестнадцатеричной системе добавим справа нуль, то это число увеличится в 16 раз.

Пример 1:

1 х 16 = 10
10 х 16 = 100
100 х 16 = 1000
и т.д…


Возможно могут иметь место ошибки и очепятки, заранее извините!