Перейти к содержанию
Авторизация  

Что Такое Xml


Описание

Автором данного мануала я не являюсь, но думаю он вам пригадится.

Автором данного мануала я не являюсь, но думаю он вам пригадится.

 

 

РРедактирование XML поможет Вам в изменении "статов" скилов, брони, разного вида оружия и прочего.

Так-же она пригодиться тем, кто занимается созданием магазинов и их редактированием.

 

 

Для начала напишем небольшой пример[u] XML кода[/u] + комментарии к нему. ( Данные строчки можете использовать при [u]редактировании [/u]своих[u] xml файлов[/u]. )
<mul order="0x30" stat="mAtk" val="1.40"/> <!-- M atk +40% -->
<mul order="0x30" stat="pDef" val="1.40"/> <!-- P. Def. +40% -->
<mul order="0x30" stat="mDef" val="1.40"/> <!-- M. Def. +40% -->
<mul order="0x30" stat="mAtkSpd" val="1.40"/> <!-- Casting Spd. +40% -->
<mul order="0x30" stat="mCritRate" val="3.00"/> <!-- Magic Crit. Rate +300% -->
<mul order="0x30" stat="gainHp" val="1.20"/> <!-- Heal +20% -->
<mul order="0x30" stat="rShld" val="1.60"/> <!-- Shield Defense +60% -->
<mul order="0x30" stat="regMp" val="2.00"/> <!-- MP Regeneration +200% -->
<mul order="0x30" stat="regHp" val="2.00"/> <!-- HP Regeneration +200% -->
<mul order="0x30" stat="regCp" val="2.00"/> <!-- CP Regeneration +200% -->
<add order="0x40" stat="runSpd" val="50"/> <!-- Speed +50 -->
<add order="0x40" stat="rEvas" val="10"/> <!-- Evasion +10 -->
<add order="0x40" stat="accCombat" val="10"/> <!-- Accuracy +10 -->
<add order="0x40" stat="reflectDam" val="30"/> <!-- Reflect damage by enemy +30% -->
<add order="0x40" stat="maxMp" val="10000"/> <!-- Max MP +10000 -->
<add order="0x40" stat="maxHp" val="10000"/> <!-- Max HP +10000 -->
<add order="0x40" stat="maxCp" val="10000"/> <!-- Max CP +10000 -->
<add order="0x40" stat="WIT" val="7"/> <!-- WIT +7 -->
<add order="0x40" stat="CON" val="7"/> <!-- CON +7 -->
<add order="0x40" stat="STR" val="7"/> <!-- STR +7 -->
<add order="0x40" stat="MEN" val="7"/> <!-- MEN +7 -->
<add order="0x40" stat="INT" val="7"/> <!-- INT +7 -->
<add order="0x40" stat="DEX" val="7"/> <!-- DEX +7 -->
<add order="0x40" stat="rootRes" val="200"/> <!-- Root Resistance +200% -->
<add order="0x40" stat="earthRes" val="200"/> <!-- Earth Resistance +200% -->
<add order="0x40" stat="derangementRes" val="200"/> <!-- Mental Reistance +200% -->
<add order="0x40" stat="fireRes" val="200"/> <!-- Fire Resistance +200% -->
<add order="0x40" stat="paralyzeRes" val="200"/> <!-- Paralysis Resistance +200% -->
<add order="0x40" stat="sleepRes" val="200"/> <!-- Sleep Resistance +200% -->
<add order="0x40" stat="rootRes" val="200"/> <!-- Hold Resistance +200% -->
<add order="0x40" stat="poisonRes" val="200"/> <!-- Poision Resistance +200% -->
<add order="0x40" stat="stunRes" val="200"/> <!-- Stun Resistance +200% -->
<add order="0x40" stat="bleedRes" val="200"/> <!-- Bleed Resistance +200% -->
<add order="0x40" stat="maxLoad" val="99999"/> <!-- Point at which a weight penalty is applied +99999 -->
<add order="0x40" stat="cancel" val="300"/> <!-- Small decrease in chance of spell interruption - TO CHECK -->

 

И так, поехали...

 

1. Введение

Что такое XML?

Этот формат, предназначенный для хранения структурированных данных, для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. Первая строка XML-документа называется объявлением XML — это необязательная строка, указывающая версию стандарта XML (обычно это 1.0), также здесь может быть указана кодировка символов и внешние зависимости.

<?xml version="1.0" encoding="UTF-8"?>

 

 

Спецификация требует, чтобы процессоры XML обязательно поддерживали Юникод-кодировки UTF-8 и UTF-16. Но признаются допустимыми, поддерживаются и широко используются и другие кодировки. Так же в XML есть возможность добавления комментария. Комментарий может быть размещен в любом месте дерева. XML комментарии размещаются внутри пары тегов <!-- и -->. Два знака дефис (--) не могут быть применены ни в какой части внутр. комментария. Вот пример комментария:

<!-- Текст коментария -->

 

 

Не будем углубляться во все особенности XML, нас интересует только часть, которая касается Lineage 2.

XML в сервере Lineage применяется для описания статов оружия, брони, скилов, аргументов, зон, магазинов, зон рестарта чаров и много другого. Для оружия это например параметры физ. и маг. атаки, для брони - защиты, для скилов - продолжительность действия, сила, эффект и т.д. А например в файле "servername.xml" хранятся имена серверов по умолчанию. Эти имена когут быть легко изменены. Но помимо изменений на серверной части необходимы и изменения со стороны клиента (со стороны клиента необходимо изменить файл "servername-e.dat". Изменяться *.dat файлы клиента могут с помощью специальных программ. В XML файлах зон хранятся параметры этих зон. Есть и XML файлы где к определенному предмету приписывается определенный скил(например ошейнику волка привязывается скилы вызова волка).

 

 

2. Основы

 

Что нужно знать как основу для редактирования?

 

1) XML файлы по умолчанию хранятся в папках gameserver\data\ и открываются любым текстовым редактором что работыет с UTF кодировками.

 

2) Имена *.xml файлов даются по диапазону id статов, Например в файле с именем 0800-0899.xml будут статы от id=800 до id=899. Для быстродействия желательно (но не обязательно) в одном файле хранить не больше ста id. Надо сказать что в названиях могут быть исключения, файлы могут называться и без указания диапазона id которые в нем хранятся. Такое характерно для аргументов и зон и файла с итемами петов.

 

3) При использовании текста рекомендовано (но не обезательно) использовать латинские символы.

 

4) Параметр ID должен быть в диапазоне от 1 до 2ккк

 

 

3. Редактирование статов и скилов.

 

В папке stats можно найти несколько папок которые отвечают за параметры брони, оружия, аргументов, скилов и некоторых других предметов (например банок для востоновления хп/цп/мп или свитков с бафовами).

 

Формат записи одного стата следующий:

<item id='числовой_идентификатор' name="Название стата">
<for>
<add val='значение' order="приоритет" stat='название стата'/>
<mul val='значение' order="приоритет" stat='название стата'/>
<sub val='значение' order="приоритет" stat='название стата'/>
<enchant val='значение' order="приоритет" stat='название стата'/>
<set val='значение' order="приоритет" stat='название стата'/>
</for>

 

 

Все изменения в стате должны находится между тегами

 

Теперь рассмотрим главные операции со статами.

<add />

- добавление статов. Стат увеличится на указаную величину.

<mul />

- умножение статов. То есть если вы оденете вещь или используете скил, ваши статы умножатся. Например если

<sub />

- вычетание. То есть если вы оденете вещь(или заюзатете скил), ваши статы (или статы цели) уменьшатся.

<enchant />

- увеличение/снижение при заточке. Роказывает, на сколько увеличится/уменшится стат при заточке еще на +1

<set />

- задание строгого значения. То есть если вы оденете вещь со значением 20, то тот стат, но который это значение влияет будет равен 20. Со скилами также.

 

Главными параметрами этих операций являются:

val="" - значение

order="" - приоритет в формуле (подробно о приоритетах писать в этой статье не буду, это отдельная и сложна тема)

stat="" - что собственно изменять

 

Значения order могут быть следущие:

0x08 - set

0x10 - add/sub (оружие, броня, бижутерия) и (STR, CON, DEX, INT, WIT ,MEN)

0x20 - не используется (опционально)

0x30 - mul/div (masteries, buffs, debuffs, SA (специальные возможности оружия), бонусы брони)

0x40 - add/sub (masteries, buffs, debuffs, SA (специальные возможности оружия))

0x50,0x60 - не используется (опционально)

0x0C - enchant

 

Списки статов доступных для изминения:

Этот список в разных сборках разный, но в большинстве случаев принято использовать следующие названия.

Изменение максимального количества HP - maxHp

Изменение максимального количества CP - maxCp

Изменение максимального количества MP - maxMp

Регенерация НР - regHp

Регенерация СР - regCp

Регенерация МР - regMp

Эффективность хила - gainHp

Умение хила - giveHp

Бонус хила - bonusHp

Физическая защита - pDef

Магическая защита - mDef

Физическая атака - pAtk

Магическая атака - mAtk

Скорость физической атаки - pAtkSpd

Скорость магической атаки - mAtkSpd

Скорость отката - mReuse

Защита щитом- sDef

Угол защиты щитом - shieldDefAngle

Критический удар - cAtk

Прибавка к критическому удару - cAtkAdd

Физ. урон в пвп (например для Duel Might) - pvpPhysDmg

Маг. урон - pvpMagicalDmg

Урон скилом - pvpPhysSkillsDmg

Уворот - rEvas

Уворот от скилов- pSkillEvas

Шанс блокировки щитом - rShld

Шанс крита - rCrit

Шанс Blow - blowRate

Шанс Lethal - lethalRate

Маг. крит. шанс - mCritRate (mCrit doesn't work!!)

EXP,SP шанс - rExp

Cancel - cancel

Точность - accCombat

Зона покрытия физ. атаки - pAtkRange (for fighters)

Зона покрытия маг. атаки- mAtkRange (for mages)

Угол атаки (только для воинов) - pAtkAngle

Количество атакуемых - atkCountMax

Откат физ. скилов - atkReuse

Скорость бега - runSpd

Скорость ходьбы - walkSpd

STR - STR

DEX - DEX

WIT - WIT

INT - INT

MEN - MEN

 

Уязвимости

 

Агрессия - aggressionVuln

Кровотечение - bleedVuln

Яд - poisonVuln

Стан - stunVuln

Парализация - paralyzeVuln

Удерживающие заклинания - rootVuln

Сон - sleepVuln

"Перекидывание" таргета - confusionVuln

Движение - movementVuln

Огонь - fireVuln

Ветер - windVuln

Вода - waterVuln

Земля - earthVuln

Святые атаки - holyVuln

Темные атаки - darkVuln

Резист к cancel - cancelVuln

Дебаффы - debuffVuln

Резист к криту - critVuln

 

Резисты против оружия (тут думаю описание не нужно)

 

noneWpnVuln

swordWpnVuln

bluntWpnVuln

daggerWpnVuln

bowWpnVuln

crossbowWpnVuln

poleWpnVuln

etcWpnVuln

fistWpnVuln

dualWpnVuln

dualFistWpnVuln

bigSwordWpnVuln

 

Отражение

 

Процент отражаемого урона - reflectDam (pay attention! not reflectDmg!! reflectDam)

Процент рассеиваемого урона - absorbDam

Процент переносимого урона- transDam

Отражение маг. скилов - reflectSkillMagic

Отражение физ. скилов - reflectSkillPhysic

 

Другое (для примера):

 

Атака на гигантов - pAtk-giants

Защита на нежить - pDef-undead

Атака на животных - pAtk-animals

Защита на монстрах - pDef-monsters

Лимит инвентаря - inventoryLimit

Лимит ВХ - whLimit

Freight лимит - FreightLimit

Лимит продажи. - PrivateSellLimit

Лимит покупки - PrivateBuyLimit

Лимит гномьего крафта - DwarfRecipeLimit

Лимит common крафта - CommonRecipeLimit

Потребление МР физ. скилами - PhysicalMpConsumeRate

Потребление МР маг. скилами - MagicalMpConsumeRate

Потребление МР дансами - DanceMpConsumeRate

Потребление НР - HpConsumeRate

Потребление МР - MpConsume

Потребление соулшотов - soulShotCount

Skill Мastery - skillMastery

Время пребывания под водой - breath

 

 

Дополнения для редактирования статов скилов

 

Важно знать что любой скилл начинается с открывающего тега и заканчивается закрывающим тегом. В скилах есть 3 обязательных тега, без которых он не будет работать - это target, skilltype и operatetype.

 

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

 

TARGET_SELF - обозначает, что скилл будет использоватся исключительно на его владельца (селф бафф типа Battle Roar или War Cry)

TARGET_NONE - цель неопределена

TARGET_ONE - обозначает, что цель вашего скилла - тот кто в таргете.

TARGET_AREA - обозначает, что скилл будет массовым

TARGET_AGGREMENT - обозначает, что целью будет тот, кто вас атакует

 

2. skilltype - тег, указывающий на тип скилла (бафф, дебафф)

Принимает следующие значения:

BUFF - бафф (оказывает положительное воздействие)

DEBUFF - дебафф (оказывает негативное воздействие)

 

3. operatetype - этот тег служит для определения типа скилла (активный либо пассивный)

OP_ACTIVE - активный скилл, может быть использован игроком

OP_PASSIVE - пассивный скилл, скилл с таким operateType не может быть использован (действует всегда)

 

Это были обязательные переменные, используемые в скилах. Теперь перейдем к остальным:

 

-power - сила скилла

-hitTime - скорость. Для баффа это скорость чтения заклинания, для физ. скилла - скорость атаки

-reuseDelay - откат скилла

-hpconsume , mpconsume - потребление МР, НР

-castRange - это дальность использования того или иного скилла (дистанция)

-isMagic, isDebuff, isBuff - это наводящие теги, могут иметь значение "true" и "false". К примеру, isBuff = true (это значит что скилл является баффом)

-effectRange - радиус действия (для массовых скиллов)

-agro - что такое агр, и что такое сила агра думаю объяснять не нужно.

 

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

 

Тег effect в скиллах Lineage 2 встречается очень часто. Обычно тег используется для "добавления сложных действий" к скиллу. Если скилл имеет сложный вариант реализации то обычно в тег добавляют некоторые отдельные значения, которые реализованы в ядре сервера Lineage. Это самый важный тег для использования в скилах. Приведем пример использования тега :

<for>
<effect name="тип" val="значение" time="время действия" stackOrder="переменная" stackType="переменная ядра">
</effect>
</for>
</skill>

 

 

Что это значит?

name - это тип эффекта

val - значение эффекта. Для дебаффов - шанс прохождения, для боевых скилов - сила.

time - время действия эффекта

StackOrder и stackType - это значения уже описаные в данном скиле и заданы в ядре сервера и в разных сборках могут называться по разному (или даже отсутствовать).

 

 

4. Зоны

 

Довольно важным в игровом мире есть понятие зон. Например в городах мирные зоны в которых запрещены атаки других игроков (и иногда нпц). Или зоны арен где не насчитывается пвп/пк счетчик. Зоны, также как и статы/скилы принято задавать в xml файлах.

Рассмотрим структуру описания зоны:

<zone id="ID зоны" name="Имя зоны" type="Тип зоны">
<settings exitOnDeath="true" buffRepeat="true" affected="single" />
<skill applyEnter="ID эффекта, уровень эффекта" removeExit="ID эффекта" />
<shape type="Форма зоны" zMin="Минимум Z" zMax="максимум Z">
<point x="координата" y="координата"/>
<point x="координата" y="координата"/>
</shape>
</zone>

 

 

Параметры что используются при создании заны:

id - идентификатор зоны.

type - тип зоны (town, arena, jailzone, Boss). Например: Town - мирная зона (город), Arena - боевая зона (PVP). Также могут быть другие типы зон которые описаны в ядре сервера.

shape type - это форма или вид зоны. Может быть двух типов: Poly(многоугольные зоны) и Rect(прямоугольные зоны). В разных сборках названия типов могут отличатся (напрмиер nPoly и Cupoid). Также в некоторых сборках может использоваться и тип Circle (круг), для задания этого типа указываются координаты центра и радиус.

minZ - это минимально допустимая координата высоты (z) в данной зоне .

maxZ - это максимально допустимая координата высоты (z) в зоне.

minZ и maxZ используются для избежания прохождения через текстуры, провалов под них и т.д.

name - зоне можно задать любое имя, но только из допустимых символов, используется для удобства работы с большим количеством зон

point - задает координаты границ зоны.

 

settings - дополнительные параметры зоны. В большинстве случаев не используются, хотя и делают игру чуть интересней. Подробное описание тега settings приводить не буду из за того что в разных сборках довольно большие различия при его использовании. В приведенном примере описания зоны в теге settings указано что после смерти игрок может покинуть зону и что в зоне на всех чаров что находятся без пати накладывается баф applyEnter указанного уровня и при выходе с зоны убирается. Повторюсь еще раз, в разных сборках это реализация этого тега происходит по разному.

 

Так же внутри тегов можно использовать описание точек "респавна" чара в них. При указании нескольких точек "респавна" чар будет появляться в них рандомно.

<stat name="spawnX" val="X координата"/>
<stat name="spawnY" val="Y координата"/>
<stat name="spawnZ" val="Z координата"/>

 

 

5. Магазины

 

 

В линейдж есть особенный тип магазинов под названием multisell, изначально он был задуман для обмена вещей на вещи (впервые использоваться у рыбаков). В наше время этот магазин широко используется в на пвп серверах для создания ГМ шопов, хотя этом круг его использования не ограничивается.

Названия XML файлов для магазинов такие как ID этих магазинов (но тут также есть небольшие исключения, есть магазины где название и id разные). Формат данных в магазине следующий:

<item id="номер по возрастанию">
<production id="id предмета" count="количество"/>
<ingredient id="id предмета" count="количество"/>
</item>

 

 

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

production - предмет который покупается в магазине. в этом теге указывается id предмета и его количество.

ingredient - предмет за который можно купить production в магазине. в этом теге указывается id предмета и его количество. В большинстве случаев используют адену, древнюю адену или колы, но предметом для покупки может быть любая вещь.

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

Также можно указывать дополнительные параметры покупки, например часто используется параметр enchant, который позволит покупать уже заточенную вещь. Например

<production id="7575" count="1" enchant="10" />

- будет куплен драк лук +10. Еще довольно интересно: при задании параметра enchant у ошейников для вызова питомцев питомец будет уже прокачан до указанного в параметре enchant уровня. Кроме enchant можно использовать и параметры для камней стихий и т.п.

  • Upvote 1


Рекомендуемые комментарии

×
×
  • Создать...