ГлавнаяФайлыED2K ФайлыГалереяСсылки

LOKI: описание структуры Inventory Item (инвентаря) - редактирование персонажа

LOKI: описание структуры Inventory Item (инвентаря) - редактирование персонажа

Расскажу методику, как создавать предметы для инвентаря.
Допустим, мне требовалось из "ничего" создать доспехи для бога Кетцалькоатля и Миктлантекутли, точнее ботинки и броню для первого и все кроме шлема для второго (без оружия).
Для начала увидим структуру Inventory_Item.xmd файла. Есть программа, которая конвертирует его в XML файл, с которым можно работать. Как ей пользоваться? Например положите ее в папку с вашим персонажем, создайте ее "ярлык", затем щелкните на нем правой кнопкой мыши и выберите "свойства", в текстовом поле "объект" после строки пути поставьте пробел и напишите: -d Inventory_Item.xmd Inventory_Item.xml (получится типа этого: "D:\games\Loki\Characters\z5z\loki.xmd.exe -d Inventory_Item.xmd Inventory_Item.xml"), запустите этот ярлык, в программе нажмите пробел и в папке появится новый файл Inventory_Item.xml Обратную конвертацию (из xml в xmd) предоставим делать игре - если в папке с персонажем есть только Inventory_Item.xml и нет Inventory_Item.xmd (и если отредактированный xml не содержит ошибок) то, игра при выборе этого персонажа сама сделает из xml-файла xmd-файл. (хотя программа тоже это может, только иногда "не может" - там параметры такие: -e Inventory_Item.xml Inventory_Item.xmd) Откройте Inventory_Item.xml в какой-либо программе ("открыть с помощью" в WordPad-е, блокноте или хоть в Visual Studio, но не в Internet Explorer). Там видим, что инвентарь начинается с и заканчивается . Все что стоит выше или ниже этих строк скорее всего случайно туда попало, и из-за этого игра может не воспринимать файл.
Итак, требовалось выяснить, как игра "определяет" что именно "этот" предмет является например "Ботинками Кетцалькоатля". В xml это определяет строка (Divine предмет для Aztek №12). Требовалось как-то узнать - "пусть ботинки это №12, а какой же номер имеет броня? И какой же номер имеют ботинки, но на другого бога?". В общем, под рукой оказался xml файл для греческой воительницы с уже полными наборами доспехов. На его примере я постарался понять принцип нумерования предметов. Оказалось, что если построить такую таблицу видно:

Div_Gre01 Bracelet
Div_Gre02 Botte
Div_Gre03 Helmet
Div_Gre04 Armor
Div_Gre05 оружие
Div_Gre06 Bracelet
Div_Gre07 Botte
Div_Gre08 Helmet
Div_Gre09 Armor
Div_Gre10 оружие
Div_Gre11 Bracelet
Div_Gre12 Botte
Div_Gre13 Helmet
Div_Gre14 Armor
Div_Gre15 оружие

Названия предметов от 01 до 15, причем 01, 06, 11 это наручи; 02, 07, 12 - ботинки; 03, 08, 13 - шлемы; 04, 09, 14 это броня; а 5, 10 и 15 - оружие. А принадлежность разным божествам видна от 01-05, 06-10, 11-15. Какое именно где, узнаем только на практике (оказалось что первый Миктлантекутли, второй Тецкатлипока, а третий Кетцалькоатль).
Если просто изменяем в xml файле какое либо название (считаем что хоть один божественный предмет у вас уже есть) например было Div_Azt07, изменим на Div_Azt13, зайдем в игру и увидим, что изменилось "название" предмета (т.е. "ботинки тецкатлипоки" стали называться "шлемом кетцалькоатля") и больше ничего не изменилось, даже "картинка" предмета... А мне ведь хотелось именно "картинку" поменять! Ну тогда пришлось сравнивать (у себя на примере той же греческой воительницы) чем еще отличаются именно разные Divine предметы. Выяснилась общая структура "предметов":

Все предметы которые требовалось создать (кажется кроме оружия, которого касаться мне не пришлось) имели этот вид (есть небольшие добавления у колец и т.п. которые мне тоже не требовались). Первая строка - тип предмета (может быть Botte, Bracelet, Armor, Helmet для "одежды", через подчеркивание следует тип персонажа для кого предмет например Botte_Aztek ботинки для ацтека, а Helmet_Nordik - шлем для скандинава)
Вторую строку мы уже знаем - (идентифицирует предмет)
Третья строка Rarete обозначит тип "цвета" предмета - божественный, легендарный, мифический и т.п. (Divin, Legendaire, Mythique...)
Четвертая строка "MountedTime" особо не нужна. Насколько я понял, это время ношения предмета (возможно там какие-то бонусы, если много носить). (Обычно всегда равно 0)
Пятая - "MountCond_Level" это уровень персонажа, с которого "можно" одеть этот предмет (например 180.)(180 с точкой это 180.0 просто некоторые величины измеряются в процентах - меньше чем 0 (например 0.24) (например бонус к защите брони записывается не 24%, а 0.24)(справка на будущее).
Далее идет как говорится "тело" предмета - описание всех его параметров. Условно, каждый (по одному) параметр представлен между . Если у предмета несколько свойств, то следующая пара следует за предшествующей (я их "сжал" для удобства восприятия), а в целом виде они выглядят например так:

В данном случае "SpellSpeed" - это скорость заклинаний, которую устанавливают равной 24%.
Когда закончилось описание свойств я наконец то обнаружил то, что искал - где определяется "картинка" предмета.
В строке видно что "инфо" брони равно 14... Вначале это мало о чем говорило, требовалось узнать "а какие значения вообще бывают?"
Вот первая таблица, но уже с "индексами"
(греческая воительница...)

Div_Gre01 Bracelet 13
Div_Gre02 Botte 13
Div_Gre03 Helmet 13
Div_Gre04 Armor 13
Div_Gre05 оружие
Div_Gre06 Bracelet 15
Div_Gre07 Botte 15
Div_Gre08 Helmet 15
Div_Gre09 Armor 15
Div_Gre10 оружие
Div_Gre11 Bracelet 14
Div_Gre12 Botte 14
Div_Gre13 Helmet 14
Div_Gre14 Armor 14
Div_Gre15 оружие
(у оружия индексы имеют другой тип)

Так вот оно что! "Инфо брони" как-то связано с принадлежностью к тому или иному "богу". Оказалось, что и у ацтекской героини числа совпадают! У Миктлантекутли это числа 13, Тецкатлипоки 15, а Кетцалькоатля 14. т.е. получилось, что тип "картинки" для каждого бога определится этим числом (например №04 предмет (бога Миктлантекутли), по таблице видно, должен иметь индекс картинки 13).
(Оговорюсь, что у мифических и легендарных предметов система другая - там не SetIndex, а например так:
- индекс картинки, тип доспеха, материал из чего сделан, причем есть картинка острия и картинка рукоятки)
Если вернуться к "структуре" и продолжить, то следующей строкой идет "Price" - это стоимость предмета (например 400000)
Далее идет "ProxyScale" - честно, так и не понял, на что влияет (мб на цену?) Значениями являются стандартные и нестандартные индексы. Например у Divine предметов они разные, в зависимоти от типа предмета:

Bracelet 9.
Botte 6.5
Helmet 12.
Armor 4.
Оружие 5.

На этом структура одного предмета заканчивается: Структуру мы выяснили... Впрочем стоит добавить, что в "инвентаре", хранятся сведения о количестве золота. (где count - его количество)
в примерно таком виде:
Вспомним, ради чего было это "исследование" - создание предметов Aztek №01, 02, 04, 12 и 14. Мы уже в состоянии "набросать" их форму. Будем пробовать на №01. Копируем общую структуру и ставим значения требуемого предмета. Смотрим по таблице, что такое 01 - Ботинки? - Нет, наручи (Bracelet). Значит пишем: Затем собственно номер предмета: далее его класс, время ношения и требуемый уровень (знаем что он в оригинале 180-й)

Вот теперь появляется проблема, - какие параметры у оригинального предмета? Никто бы так и не ответил, если бы мне не попались скрины этих предметов. На них видно, что у наручей Миктлантекутли 837 защиты, 36% сопротивление нокауту, +36% к шансу критического заклинания, +30 ко всем атрибутам, +36% сопротивления тьме, 30% уменьшения требований к весу. Что тут сказать? Из головы выудить как пишутся эти параметры нереально, требуется какая-то "база", нужно чтобы хоть один предмет с таким свойством был у вас где-нибудь, чтобы можно было найти xml код этого свойства. Расскажу как делал я...
Во первых, пусть уже имеются персонажи, с кучей разных предметов, среди которых найдется тот, со свойством, которое нам нужно посмотреть. Известно, что благодаря "кэшу" игры, можно бросить в игре что-либо на землю (тот предмет, с нужным свойством), выйти из игры, удалить (переименовать, переместить) Inventory_Intem.xmd этого персонажа (так чтобы вообще небыло файла инвентаря), вновь зайти в игру (автоматически создастся пустой инвентарь) и подобрать в том месте, где вы его бросили, этот нужный предмет. Вновь выходим из игры и смотрим что написано в этом "маленьком" xml файле, где всего один предмет и легко можно его найти. Ищите таким образом все нужные "свойства" предметов, а пока, вот они уже найденные:

Общая защита: Сопротивление нокауту: Шанс критического заклинания: Прибавка ко всем атрибутам: Сопротивление тьме: Уменьшение требований к весу: Когда записаны все свойства можно продолжить - ставим "картинку" брони, уже зная, что у Миктлантекутли она равна 13 Потом цену предмета И значение равное 9. для Bracelet Вот, предмет готов! Приведу его описание целиком: (строка необязательна) Так требовалось составить описания для всех нужных предметов и добавить их в Inventory_Item.xml который потом игра преобразует в xmd, как готовый инвентарь.
Если вам потребуется какой-либо уже преобразованный из XMD XML файл - можете взять здесь.
Полезная информация. Общая структура инвентаря такая: Общая структура оружия: (тут таблица... например если Name="GardeMelee2", то это все двуручные оружия (мечи, топоры, палицы, копья и посохи). Если GardeBow, то луки - ShortBow и LongBow) (для "синих" предметах, она раскрыта: Handle_тип оружия, если так, то потом идут свойства рукояти и цена рукояти)

LOKI: Структура файла Characs.xmd - параметры персонажа

Для "полного счастья" немного расскажу не про инвентарь, а про "параметры" персонажа. Для этого преобразуйте в XML файл Characs.xmd (измените командную строку ярлыка на -d Characs.xmd Characs.xml программа должна лежать в папке с персонажем)
В нем мы видим общую структуру:

Тут написаны типы всех 4 персонажей, только один "раскрыт" и "описан", а остальные "лишние" закрыты символом /> так и не начавшись. В открытом персонаже его характеристики: Первыми идут "сопротивления" чему-либо, например: В данном случае - сопротивление "шоку" от молнии (настоящее сопротивление молнии будет внизу файла). Все сопротивления обычно равны 0.
Затем длинной строкой перечислены значения "навыков" (скиллов) для всех божеств:
Затем идет количество вашего опыта и уровень (лвл): Далее количество "нерастраченных" пойнтов и общее количество всех "затраченных" пойнтов: Потом идет "текущее божество" и перечисляется опыт, общее количество "повышений" навыка (общее число для всех божеств) и пойнты для каждого божества - "неиспользованные" и "имеющиеся":
(причем если на "скиллы" "приписать" больше очков, чем "всего очков" у божества, то при сбросе "скиллов" в игре, "лишние" очки будут потом недоступны)
Затем "акт квеста" и "акт портала" - последние, которыми вы пользовались? (например ActE, ActN) Далее игровое время и сессия (количество заходов за данного персонажа): Далее информация о завершенности квестов на разных уровнях сложности: Далее длинная статистика о пользовании каждым видом оружия, кол-ве убитых боссов, кол-во смертей и т.п. Потом "CompetenceUseFrequency" - насколько я понял "компетенция" в использовании каждого из скиллов: А еще далее более "важные" параметры: Где Strength - сила, Dexterity - ловкость, Intelligence - интеллект, Vitality - выносливость, Energy - энергия.
Далее отмечу некоторые, например:
скорость атаки: скорость заклинаний: критический удар: критическое заклинание: скорость

Вот собственно и все. Надеюсь было интересно :) Хотя честно сказать, урон в миллион, после всего этого, когда тремя нажатиями ставишь три нолика "тешит" совсем не долго :)

LOKI EDITOR 1.1

Скачать (для работы нужна установленная *.NET Framework 2)