Не большой гайд по добавлению дополнений для клиента freya.(Данный гайд был написан для фениксо-подобных сборок, l2j любителям не совсем подойдёт)
Перечислю несколько основных правил,без соблюдения которых дополнение работать не будет:
- Скачайте чистый желательно руофф клиент фреи.
- Скачайте чистый патч с пропатченными файлами.
- Скачайте l2FileEditor . Я вам порекомендую вот такой -
L2_File_Edit__Freya_High_Five_by_Zelan
Некоторые правила по использованию l2FileEditor:
- Запустите программу.
- Выбирите хроники,вверху вы увидите список.
- Выбирите кодировку.
Для любых .dat файлов используется одна единая кодировка -
413
приложение:Для
.ini файлов используется 111 кодировка.
- Откройте нужный вам
.dat файл и начинайте редактировать его.
* При редактировании обязательно соблюдайте табуляцию.В этом вам очень сильно поможет
Notepad++ или же
Excel(я же рекомендую Excel и сам же его и использую).Перед добавлением какой-либой прописи,добавьте её для начала в ваш текстовый редактор и проверьте знаки табуляции,после чего можете вставлять и в
FileEditor-е.
* Предположим мы открыли
itemname-ru.dat . Рекомендуется найти максимальный id последнего предмета и вписывать ваши дополнения начальный id которых будет этот самый максимальный id(не включительно),далее все новые id лучше заносить по порядку и по возрастанию.
* Соблюдайте такой же порядок и при добавлении итема в серверную часть.
Например нам нужно добавить предмет относящийся к типу etcitem.К примеру наш максимальный id (из тех вещей которые уже есть в клиенте) 22333(предмет с этим id находится в \data\stats\items\etcitem\22300-22399.xml)
Зайдите в этот фаил и просто допишите ваш новый предмет id которого будет 22334.(далее id всех новых предметов будут идти по порядку и по возрастанию).
Не забудьте,если файл называется 22300-22399.xml значит и Id вашего предмета в этом файле должен быть из данного диапазона чисел.
Не забывайте,что оружия\щиты относятся к типу weapon,броня\плащи относятся к типу armor,все остальные итэмы\квест итэмы\медальки\агатионы и им подобные относятся к типу etcitem.
Слишком подробно расписывать про серверную часть не буду,есть массы статей по этому делу,всё же вернёмся к клиентской части.
- При сохранении обязательно выбирайте кодировку UTF-8 и желательно нажимать к какому типу относится файл,если это
.dat то при сохранении выбирите "тип файла" -
DAT Files.В имени файла желательно дописывать
.dat (полное имя должно выглядеть так - itemname-ru.dat).
- Сохраняйте в туже папку system от куда вы собственно и брали этот файл,на просьбу заменить отвечайте да!
- Откройте файл localization.ini (естественно программой l2fileeditor).Если у вас рускоязычный клиент и файлы заканчиваются префиком -ru,измените вашу локализацию на
8.
Код:
[LanguageSet]
Language=8
0=Korea
1=English
2=Japan
3=Taiwan
4=China
5=Thailand
6=Philippine
7=Indonesia
8=Russia
EnableEngSelection=false
Очень тщательно проверьте вашу локализацию,всё должно быть под файлы с префиксом -ru.
Если клиент евроофф,значит все должно сводиться к -e файлам.
Ну вот,правила мы расписали.Давайте я для закрепления материала приведу пример того,как нужно добавлять какую-либо вещь.
1) Я выбрал плащи из Goddes of destruction.Разорхивировал архив в удобное для меня место и начал с реализации серверной части.Пользуюсь high five сборкой,соответсвтенно мой клиент настроен на хроники high five.
2) В клиенте я нашёл максимальный id предметов - он равен 22333.
3) Зашёл в папку \data\stats\items\armor и в наглую создал xml файл с именем 22300-22399.xml (если это ваше первое дополнение,лучше делайте так,как делаю сейчас я,не сбивайтесь и повторяйте в точности как делаю я)
По скольку этот плащ,содержание моего файла следующее(предупреждаю,описывать буду на примере одного плаща):
Код:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<armor id="22334" name="Knight Cloak" type="NONE">
<set name="bodypart" val="BACK"/>
<set name="icon" val="vesper_cloack_i00"/>
<set name="weight" val="220"/>
<set name="crystal_type" val="S80"/>
<set name="p_def" val="20"/>
<set name="tradeable" val="false"/>
<set name="dropable" val="false"/>
<for>
<add order="0x40" stat="pDef" val="40"/>
</for>
</armor>
</list>
4) Кодировка данного файла должна быть UTF-8.
И по скольку это плащ обязательная пропись для него должна быть и в файле data\stats\items\cloak.xml
Я решил,что мой плащ должен быть "
такого" содержания,но вы всегда сможете это дело изменить под ваш лад,прочитав лишь немножко статью по изменению статов в xml для l2 серверов.
Код:
</item>
<item id="22334" name="Knight Cloak">
<add order="0x40" stat="maxHp" val="1150"/>
<add order="0x40" stat="maxMp" val="639"/>
<add order="0x40" stat="maxCp" val="1150"/>
<sub order="0x40" stat="unholyRcpt" val="30" />
<sub order="0x40" stat="sacredRcpt" val="30" />
<sub order="0x40" stat="fireRcpt" val="30" />
<sub order="0x40" stat="waterRcpt" val="30" />
<sub order="0x40" stat="windRcpt" val="30" />
<sub order="0x40" stat="earthRcpt" val="30" />
</item>
Со стороны сервера мой плащ уже функционирует,осталось реализовать его визуальную структуру.Переходим к клиентской части.
5) Для начала давайте отредактируем наш
armorgrp.dat .
Для моего плащика дописывается строка с вот таким вот содержанием:
(к данному плащу прилогаются файлы с разширением .utx,это файлы текстуры и должны они в обязательном порядке находится в папке SysTextures, иначе вместо плаща вы увидите нечто непонятное).
Код:
1 22334 0 3 2 5 0 dropitems.drop_MFighter_m014_Hrm_ad11 MFighter.MFighter_m014_Hrm_ad11_t00 MFighter.MFighter_m014_Hsm_ad11_t00 0 0 0 0 0 2 0 0 icon.vesper_cloack_i00 -1 220 17 0 0 0 1 24 1 1 6 Fighter.MFighter_m014_Hrm_ad11 109 114 MFighterSimulation.MFighter_m014_Hsm_ad11 109 115 Fighter.MFighter_m015_Lrm_ad11 109 114 MFighterSimulation.MFighter_m015_Lsm_ad11 109 115 Fighter.MFighter_m015_Lrm_ad11 109 114 MFighterSimulation.MFighter_m015_Lsm_ad11 109 115 6 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 1 1 6 Fighter.FFighter_m014_Hrm_ad11 109 114 FFighterSimulation.FFighter_m014_Hsm_ad11 109 115 Fighter.FFighter_m015_Lrm_ad11 109 114 FFighterSimulation.FFighter_m015_Lsm_ad11 109 115 Fighter.FFighter_m015_Lrm_ad11 109 114 FFighterSimulation.FFighter_m015_Lsm_ad11 109 115 6 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 1 1 6 DarkElf.MDarkElf_m012_Hrm_ad11 109 114 MDarkElfSimulation.MDarkElf_m012_Hsm_ad11 109 115 DarkElf.MDarkElf_m003_Lrm_ad11 109 114 MDarkElfSimulation.MDarkElf_m003_Lsm_ad11 109 115 DarkElf.MDarkElf_m013_Rrm_ad11 109 114 MDarkElfSimulation.MDarkElf_m013_Rsm_ad11 109 115 6 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 1 1 6 DarkElf.FDarkElf_m012_Hrm_ad11 109 114 FDarkElfSimulation.FDarkElf_m012_Hsm_ad11 109 115 DarkElf.FDarkElf_m013_Lrm_ad11 109 114 FDarkElfSimulation.FDarkElf_m013_Lsm_ad11 109 115 DarkElf.FDarkElf_m001_Rrm_ad11 109 114 FDarkElfSimulation.FDarkElf_m008_Rsm_ad11 109 115 6 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 1 1 6 Dwarf.MDwarf_m010_Hrm_ad11 109 114 MDwarfSimulation.MDwarf_m010_Hsm_ad11 109 115 Dwarf.MDwarf_m010_Hrm_ad11 109 114 MDwarfSimulation.MDwarf_m010_Hsm_ad11 109 115 Dwarf.MDwarf_m010_Hrm_ad11 109 114 MDwarfSimulation.MDwarf_m010_Hsm_ad11 109 115 6 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 1 1 6 Dwarf.FDwarf_m010_Hrm_ad11 109 114 FDwarfSimulation.FDwarf_m010_Hsm_ad11 109 115 Dwarf.FDwarf_m010_Hrm_ad11 109 114 FDwarfSimulation.FDwarf_m010_Hsm_ad11 109 115 Dwarf.FDwarf_m010_Hrm_ad11 109 114 FDwarfSimulation.FDwarf_m010_Hsm_ad11 109 115 6 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 1 1 6 Elf.MElf_m013_Hrm_ad11 109 114 MElfSimulation.MElf_m013_Hsm_ad11 109 115 Elf.MElf_m014_Lrm_ad11 109 114 MElfSimulation.MElf_m014_Lsm_ad11 109 115 Elf.MElf_m009_Rrm_ad11 109 114 MElfSimulation.MElf_m009_Rsm_ad11 109 115 6 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 1 1 6 Elf.FElf_m013_Hrm_ad11 109 114 FElfSimulation.FElf_m013_Hsm_ad11 109 115 Elf.FElf_m014_Lrm_ad11 109 114 FElfSimulation.FElf_m014_Lsm_ad11 109 115 Elf.FElf_m006_Rrm_ad11 109 114 FElfSimulation.FElf_m006_Rsm_ad11 109 115 6 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 1 1 6 Magic.MMagic_m015_Rrm_ad11 109 114 MMagicSimulation.MMagic_m015_Rsm_ad11 109 115 Magic.MMagic_m015_Rrm_ad11 109 114 MMagicSimulation.MMagic_m015_Rsm_ad11 109 115 Magic.MMagic_m015_Rrm_ad11 109 114 MMagicSimulation.MMagic_m015_Rsm_ad11 109 115 6 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 1 1 6 Magic.FMagic_m015_Rrm_ad11 109 114 FMagicSimulation.FMagic_m015_Rsm_ad11 109 115 Magic.FMagic_m015_Rrm_ad11 109 114 FMagicSimulation.FMagic_m015_Rsm_ad11 109 115 Magic.FMagic_m015_Rrm_ad11 109 114 FMagicSimulation.FMagic_m015_Rsm_ad11 109 115 6 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 1 1 6 Orc.MOrc_m009_Hrm_ad11 109 114 MOrcSimulation.MOrc_m009_Hsm_ad11 109 115 Orc.MOrc_m010_Lrm_ad11 109 114 MOrcSimulation.MOrc_m010_Lsm_ad11 109 115 Orc.MOrc_m010_Lrm_ad11 109 114 MOrcSimulation.MOrc_m010_Lsm_ad11 109 115 6 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 1 1 6 Orc.FOrc_m009_Hrm_ad11 109 114 FOrcSimulation.FOrc_m009_Hsm_ad11 109 115 Orc.FOrc_m010_Lrm_ad11 109 114 FOrcSimulation.FOrc_m010_Lsm_ad11 109 115 Orc.FOrc_m010_Lrm_ad11 109 114 FOrcSimulation.FOrc_m010_Lsm_ad11 109 115 6 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 Mantelli.knight_t00 Mantelli.knight_t01 1 1 6 Shaman.MShaman_m006_Rrm_ad11 109 114 MShamanSimulation.MShaman_m006_Rsm_ad11 109 115 Shaman.MShaman_m006_Rrm_ad11 109 114 MShamanSimulation.MShaman_m006_Rsm_ad11 109 115 Shaman.MShaman_m006_Rrm_ad11 109 114 MShamanSimulation.MShaman_m006_Rsm_ad11 109 115 6 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 1 1 6 Shaman.FShaman_m006_Rrm_ad11 109 114 FShamanSimulation.FShaman_m006_Rsm_ad11 109 115 Shaman.FShaman_m006_Rrm_ad11 109 114 FShamanSimulation.FShaman_m006_Rsm_ad11 109 115 Shaman.FShaman_m006_Rrm_ad11 109 114 FShamanSimulation.FShaman_m006_Rsm_ad11 109 115 6 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 mdarkelf.MDarkElf_m013_Rrm_ad11_t00 Mantelli.knight_t01 1 1 6 Kamael.MKamael_m008_Lrm_ad11 109 114 MKamaelSimulation.MKamael_m008_Lsm_ad11 109 115 Kamael.MKamael_m008_Lrm_ad11 109 114 MKamaelSimulation.MKamael_m008_Lsm_ad11 109 115 Kamael.MKamael_m008_Lrm_ad11 109 114 MKamaelSimulation.MKamael_m008_Lsm_ad11 109 115 6 Mantelli.kknight_t00 Mantelli.kknight_t01 Mantelli.kknight_t00 Mantelli.kknight_t01 Mantelli.kknight_t00 Mantelli.kknight_t01 1 1 6 Kamael.FKamael_m008_Lrm_ad11 109 114 FKamaelSimulation.FKamael_m008_Lsm_ad11 109 115 Kamael.FKamael_m008_Lrm_ad11 109 114 FKamaelSimulation.FKamael_m008_Lsm_ad11 109 115 Kamael.FKamael_m008_Lrm_ad11 109 114 FKamaelSimulation.FKamael_m008_Lsm_ad11 109 115 6 Mantelli.kknight_t00 Mantelli.kknight_t01 Mantelli.kknight_t00 Mantelli.kknight_t01 Mantelli.kknight_t00 Mantelli.kknight_t01 1 LineageWeapons.cotton_cloak_m00_mt 1 LineageWeaponsTex.cotton_cloak_t00_mt 0 0 LineageEffect.p_u002_a 1 ItemSound.itemdrop_armor_cloak ItemSound.itemequip_armor_cloak 1 0 0 6 0 25 0 0 0
(Очень важно знать,что все новые и последующие предметы добавляются в самый конец).
Запомните,что последней во всех .dat файлах должна быть пустая строка,так что после ваших прописей не забывайте её оставлять.
6) Ну собственно добавил и сохранил,придерживаясь правилам которые я уже описывал выше.
7) Идём дальше.Для того,что бы отображалось имя нашего плаща,мы открываем itemname-ru.dat и так же добавляем нужную пропись в самый низ(напомню,что для каждой вещи всегда используется один единый id,для каждой последующей вещи соответсвенно другой id).
Код:
22334 Knight's Cloak u,Рыцарский плащ.\0 -1 0 0 a, 0 0 a, 0 0 0 0 0 0 0 0 0 0 a, 1
8) Сохранил и закрыл программу...
Итак,я добавил плащ на свой сервер,ничего сложного как вы видите нету,главное придерживаться основных правил и некаких ошибок у вас не возникнет.
Если всё же у вас не отображается имя предмета или моделька,настоятельно рекомендую поменять "клиент и патч",так как все проблемы возникают из-за них.
Мануал был написан мной лично (c)ГлючноГлаз , специально для Revolt-team.com .
п.с:Первый мой мануал,до этого ничего подобного не писал,поэтому строго не судите,но из личного опыта я заметил,что люди не соблюдают элементарых правил и порядков,поэтому в данном мануале я распишу лишь те правила,которыми пользуюсь я,соблюдая их,проблем у меня не возникает.Я надеюсь это поможет и вам!
Мануал составлялся из полученных ранее данных,за некоторые из них хочу поблагодарить
l2CCCP и такие источники как
Zone-Game.info(не реклама), их раздел с мануалами мне очень сильно помог.
Добавлено через 2 минуты
я являюсь автором мануала,поэтому дал себе право скопировать его на ваш портал=) я надеюсь вы не против=)