Расскажу методику, как создавать предметы для инвентаря.
Допустим, мне требовалось из "ничего" создать доспехи для бога Кетцалькоатля и Миктлантекутли, точнее ботинки и броню для первого и все кроме шлема для второго (без оружия).
Для начала увидим структуру 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.
Вот теперь появляется проблема, - какие параметры у оригинального предмета? Никто бы так и не ответил, если бы мне не попались скрины этих предметов. На них видно, что у наручей Миктлантекутли 837 защиты, 36% сопротивление нокауту, +36% к шансу критического заклинания, +30 ко всем атрибутам, +36% сопротивления тьме, 30% уменьшения требований к весу. Что тут сказать? Из головы выудить как пишутся эти параметры нереально, требуется какая-то "база", нужно чтобы хоть один предмет с таким свойством был у вас где-нибудь, чтобы можно было найти xml код этого свойства. Расскажу как делал я...
Во первых, пусть уже имеются персонажи, с кучей разных предметов, среди которых найдется тот, со свойством, которое нам нужно посмотреть. Известно, что благодаря "кэшу" игры, можно бросить в игре что-либо на землю (тот предмет, с нужным свойством), выйти из игры, удалить (переименовать, переместить) Inventory_Intem.xmd этого персонажа (так чтобы вообще небыло файла инвентаря), вновь зайти в игру (автоматически создастся пустой инвентарь) и подобрать в том месте, где вы его бросили, этот нужный предмет. Вновь выходим из игры и смотрим что написано в этом "маленьком" xml файле, где всего один предмет и легко можно его найти. Ищите таким образом все нужные "свойства" предметов, а пока, вот они уже найденные:
Для "полного счастья" немного расскажу не про инвентарь, а про "параметры" персонажа. Для этого преобразуйте в XML файл Characs.xmd (измените командную строку ярлыка на -d Characs.xmd Characs.xml программа должна лежать в папке с персонажем)
В нем мы видим общую структуру:
Вот собственно и все. Надеюсь было интересно :) Хотя честно сказать, урон в миллион, после всего этого, когда тремя нажатиями ставишь три нолика "тешит" совсем не долго :)