Bug report moved to the new portal: Mmore.club
Detailed info: L2-scripts.com
Skype: Urchika

Our portfolio of solved reports: High Five
Our portfolio of solved reports: GOD
Our portfolio of solved reports: Classic

This forum is closed and open for viewing our work on bug reports for a long time. Thank you all !


 
 
Опции темы Опции просмотра
Prev Предыдущее сообщение   Следующее сообщение Next
Старый 30.09.2009, 20:24   #1
Александр
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 52
Сказали 'Спасибо' за это сообщение. :
0 за это сообщение
1 Всего
По умолчанию Урок 2. Основы XML разработки в сфере l2 сервера.

Здесь предоставлен урок по детальному изучению и освоению "XML" для работы с датапаком сервера l2 ява.
Как вы уже поняли, речь пойдет о датапаке, а именно о его части - xml документах.
Для начала, приведу вам мое понимание "xml". XML в сборках ява серверов l2, это набор каких либо заранее установленых переменных, с введением в них ограничений и ряда правил выполнения. Тоесть, xml файлы не описывают процесс, а лиш придают ему численные значения, такие как стоимость(шмот), время, сила, ефект, радиус, скорость и так далее(скилы), координаты и ограничения(зоны) и прочие.

Глава 1. Распространенность файлов в датапаке (xml)

Итак, рассмотрим архитектуру, где же мы можем встретить .xml файлы и за что они отвечают.
1. Мультиселлы. Место расположения - /data/multisell. Файлы, имеют формат .xml.
Основное предназначение - листы магазинов(покупка/обмен). Зачастую приминимы в так называемых "гм шопах" и прочих шалостях.
2. Статы - файлы, распологаются в папке /data/stats, здесь можно выделить несколько типов "статов" :
a) Статы арморов(/data/stats/armor) - предназначены для обозначения параметров того или иного армора (брони в мире lineage2), к примеру - p-def , m-def, и прочие.
b) Статы оружия(/data/stats/weapon) - предназначены для обозначения параметров Weapons(оружия) в мире Lineage2 и ява эмулятора, к примеру - p-atack, m-atack и другие.
c) Статы скилов (/data/stats/skill) - предназначены для описания скилов, придают им совокупность каких то свойств под каким то "id" (номером), к примеру - m-damage, m-def, critical rate, effect.
d) Аугментации (/data/stats/augmentation) - используется для описания лайф стонов и их действия когда находятся "в рабочем состоянии" (тоесть какой скилл или стат юзать).
3. Зоны. Место расположения - /data/zones/ , используются для работы с различными квадратами мира Lineage2, точек возрождения и прочих. Активно сотрудничают с базой данных(аналогичная таблица). Зачастую, помогают при отсутсвии гео-даты (ограничивают зону - по координатам Y к примеру, это удобно).
4. Прочие файлы. Это файлы, одиночно встречающиеся в датапаке ява эмулятора. Вот вам некоторые из них (не все) : /data/ тут файлы : servername.xml (отвечает за имена серверов при их регистрации), recipes.xml(отвечает за рецепты - что заберет и что получим), dimentionalrift.xml (обеспечивает респавн мобов с промежутком в ремени в комнатах дименшин рифта), а так же другие файлы (найти можно руками и подумать над их назначением).

Глава 2. Основные теги и их использование.

В xml, как и в хтмл - есть как контейнерные теги, так и одиночные.
Напомню вам, контейнерные теги, это те теги, которые имеют сначала открывающий тег : <тег1> а после окончания его описания - закрывающий тег </тег1>. Пример :
Код:
<мой_тег параметр1="значение1" параметр2="значение2">
</мой_тег>
Или, может использоватся сокращенная запись :
Код:
<мой_тег параметр1="значение1" параметр2="значение2" />
Одиночные теги - те теги, которые не имеют закрывающего тега после значений. Пример :
Код:
<мой тег параметр="значение">
Основным тегом, принятым почти в каждом файле считается :
Код:
<?xml version="1.0" encoding="UTF-8"?>
Это характеризует - версию документа(version), и тип его языка (encoding=). Это - что то похожее на мета-теги(поясняют его).
Вроде бы это просто, останавливатся не будем.
В каждом документе, обязательно будет "основной контейнерный тег", который обозначит начало документа(открытый тег) и конец документа (закрытый тег). Вот вам пример документа, думаю с выше поясненым вы поймете его :
Код:
<?xml version="1.0" encoding="UTF-8"?>
<начало_документа>

содержимое документа
значения
переменные

</начало_документа>
Таким образом - тело документа, которое будет считыватся и обрабатыватся :
Код:
содержимое документа
значения
переменные
В теле документа, может быть уйма тегов, чаше всего - они однотипны (так как содержимое одного xml документа - однотипно, тоесть описание 1го похоже на другое, кроме значений).
Итак, приступим к описанию по разделам документов.

Глава 3. Описание общепринятых значений в мультиселлах.

Как мы уже выяснили с вами, мультиселы находятся в папке /data/multisell.
Цель использования - листы итемов в магазинах (их покупка, цены и т д).
Рассмотрим употребляемые здесь теги.
1. Тег начала документа :
Код:
<list>
содержание
</list>
Этот контейнерный тег отвечает за начало документа и его конец. При его отсутствии - файл считываться не будет. Обязателен как в начале каждого документа-мультиселла (<list>) так и в его конце ( </list> )
2. Тег описания итема :
Код:
<item id="порядковый номер">
описание
</item>
Данный тег, поясняет начало и конец описания того или иного итема. Заметте, параметр id="порядковый номер", отвечает за место итема в том или ином листе в игре. Важно - id здесь не могут повторятся, и эти id - это НЕ id предмета или чего либо.
Как правило, нумеруются порядково. Тоесть цифрами, 1, 2, 3, и так далее.
Приведу пример :
Код:
<item id="1">
содержание
</item>
<item id="2">
содержание
</item>
...................
<item id="100">
содержание
</item>
3. Теги пояснения цен итемов. Их два.
а) тег который показывает - что мы отдадим за тот или иной итем :
Код:
<ingredient id="ид_предмета" count="кол-во_которое_заберет" />
Другими словами, это то что у вас ЗАБЕРЕТ при покупке того или иного итема. Тоесть что вы должны ОТДАТЬ..
id="ид_предмета" - это предмет, который у вас заберет. Пример : id="57" - значит заберет адену.
count="кол-во_которое_заберет" - ну тут все понятно, кол-во забраных предметов. К примеру при count="100" - заберет 100 штук id=".."
б) тег который показывает, что мы получим за тот или иной итем :
Код:
<production id="ид_предмета" count="кол-во" />
Здесь - аналогично вышесказаному.
Только учитываем - здесь, описывается то что мы ПОЛУЧИМ. Id="ид_предмета" - показывает, какой предмет мы получим, count="кол-во" - показывает сколько мы получим количественно того или иного предмета. Пример : id="57" - получаем адену, count="500" - получаем 500 штук id="..".
Теперь, обьединим наши знания одним примером :
Код:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<item id="1">
<ingredient id="57" count="500" />
<production id="4037" count="1" />
</item>
<item id="2">
<ingredient id="4037" count="1" />
<production id="57" count="500" />
</item>
</list>
В первом случае - мы отдадим магазину 500 итемов с id 57 и получим один итем с id 4037.
Во втором случае - наоборот, мы отдадим магазину 1 итем с id 4037 и получим 500 аден.
Так же, можете эксперементировать с шмотками, банками да всем чем угодно.

Глава 4. Описание общепринятых значений в статах armor и weapon.

Как мы с вами уже выяснили, статы могут быть как у weapon, так и у armor.
Начнем расматривать некоторые значения и как с ними работать.
Код:
<item id="ид_предмета" name="название_предмета>
содержимое
</item>
Данным тегом принято обозначение начала описания того или иного предмета (armor / weapon).
Тег, обязательно должен быть контейнерным - начало <item> и конец </item>
В id - принято указывать "id" предмета. Как мы с вами знаем, все ID фиксируются в базе данных. Так что "от фары" ставить не получится.
Рассмотрим самые распространёные описания итемов.
а) <add ... > - данный тег, означает прибавление того или иного параметра(несет действие "+" в расчетах).
Приведем пример :
Код:
<add val="значение" order="место_в_формуле" stat="что_Добавлять"/>
На указаном примере, мы видим - что в add может быть несколько переменны. Разберемся с ними.
val="значение" - указывает, сколько же нужно добавть. К примеру, если мы поставим "100" - то получим в формуле "+100 единиц".
order="место_в_формуле" - это место расположения данного параметра в формуле расчета. Для параметра "ADD" приняты 2 значения "order" :
-0x10
-0x08(почти не используется)
-0x40(для производных значений - к примеру "regHP", "rootRes" и прочие)
Небуду вам морочить голову этими формулами, приведу лиш небольшой пример расчета функционала того или иного значения.
Припустим, у нашего итема несколько "add" и есть и другие значения "mul" , "sub" и прочие.
В какое место машына должна пихнуть их? Всё очень просто. Это, как арифметика - сначала сложение, потом - умножение / деление. Здесь - аналогично.
Вот наглядный пример :
Код:
((val_1 + val_2) * val3) / val4 = checksum_val
Так вот, за скобки и будет отвечать "order". Если его не будет, или он будет не правильный - догадываемся что получиться (попробуйте убрать скобки и решить уравнение).
stat="что_добавлять" - здесь всё просто. Как вы наверно догадались - здесь должен быть указан тот или иной параметр который будет "увеличен"(+) при использовании данного значения.
Тоесть по простому, здесь должен быть укажен "стат". Примеры : "pDef", "mDef", "evesion", "shield_rate", "pDam", "mDam" и так далее. Более подробно эти значения - можете найти в ДП вашего кода.
Пример готового значения :
Код:
<add val="150" order="0x10" stat="pDef"/>
Здесь - мы добавим "150" (+150) к параметру "pDef". Как работает? Пример - шмотка. Одели бронь - получили бонус "+150" к защите.
Дальше - ваша фантазия.
б) <sub .... > - параметр, обозначающий "вычитание" значений. Принцип работы - аналогично выше изложеному (про добавление) - только работает в обратную сторону - вычитает статы.
Вот небольшой пример и принцип его работы :
Код:
<sub val="8" order="0x10" stat="pDef"/>
При его обработке(одели шмотку/оружее) - будет уменьшена ваша защита на "8" единиц( -8 ).
Описывать не буду, работает как выше изложеное, order - аналогично будет 0x10, так как действие обратно "сложению".
в) <set... > - тег, который "назначает" кол-во того или иного стата. Он - исполняется в формуле до "+" или "-", и поэтому - имеет первое место. Это, как бы назначение того или иного стата для дальнейшей работы. Пример :
Код:
<set val="значение" order="место_в_формуле" stat="стат"/>
Растолкую вам : это назначение "значения" того или иного "стат"`a. Разтолковка "val" и "stat" есть выше.
Order используется "0x08" (то о чем я говорил в "add").
г) <mul ...> - тег, используемый для "умножения" того или иного значения. Приведем пример :
Код:
<mul val="значение" order="место_в_формуле" stat="стат" />
Итак, аналогично val="значение" - это значение на которое нужно умножить ваш "стат".
Возможные order :
-0x30
Приведем пример :
Код:
<mul val="3.5" order="0x30" stat="pDef" />
Это означает, что стат 'pDef' при выполнении умножится на 3.5 (тоесть станет больше в 3.5 раза).
Если использовать грамотно, можно реализовывать и деление, к примеру :
Код:
<mul val="0.5" order="0x30" stat="pDef" />
Это означает, что стат 'pDef' будет умножен на '0.5', а тоесть - станет в 2 раза меньше(тут на любителей).
г) <enchant ...> - тег, показывающий, на сколько при заточке на уровень выше (при каждом +1) будет увеличен тот или иной стат.
Пример :
Код:
<enchant val="значение" order="место_в_формуле" stat="стат"/>
Обычно, order здесь "0x0C".

Глава 5. Описание общепринятых значений в скиллах (skill).

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

Последний раз редактировалось Александр; 07.12.2009 в 23:47.
Александр вне форума  
Сказали 'Спасибо' за это сообщение.
Ответить с цитированием
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:59.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot