Контакты для связи с администрацией ресурса www.saloed.net, skype: sa-lo-ed или Email:sal0ed@yandex.ru

 

Мануал XML в Lineage 2

 

Часть 1. Введение:

Начнем с того, что же такое XML? Это текстовый формат, предназначенный для хранения структурированных данных, для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. 
Первая строка XML-документа называется объявлением XML — это необязательная строка, указывающая версию стандарта XML (обычно это 1.0 => Пример:), также здесь может быть указана кодировка символов и внешние зависимости. Пример: UTF-8" standalone="yes"?>
Спецификация требует, чтобы процессоры XML обязательно поддерживали Юникод-кодировки UTF-8 и UTF-16. Признаются допустимыми, поддерживаются и широко используются и другие кодировки.
Так же в XML есть возможность добавления комментария. Комментарий может быть размещен в любом месте дерева. XML комментарии размещаются внутри пары тегов. Два знака дефис (--) Пример: <!-- это комментарий --> не могут быть применены ни в какой части внутри комментария.
XML в Lineage 2

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


Часть 2.Изменение статов вещей.

Все XML файлы со статами, скилами лежат, в сборках Lineage 2, тут: \gameserver\data\stats

Для наглядного примера возьмем Item(вещь) Shirt(Находится по такому пути: gameserver\data\stats\armor\0000-0099.xml). Это неприметная НГ вещь мира Lineage 2. На ее примере я поясню что, где и когда нужно изменять. Вот фрагмент XML кода:
<item id='21' name="shirt">

<for>
<cond><player race="Human"/></cond>
<add stat='pDef' order='0x10' val='36'>
<target kind="skeleton">
</add>
</for>
</item>

Первая строчка нужна только для самого языка XML, пропустите её.

Вторая строка указывает ID вещи и её название (они должны совпадать с такими же в БД).

Затем есть некоторые условия (condition) для принятия вещью изменений для статов (когда оружие одето или снято).
Таких условий может быть от ноль, один, два, или более. Условие заключено в тэг <for>.

Тэг условия состоит из самого условия которое следует проверить на игроке и эффекта на статы игрока. В вышенаписанном примере условие добавление эффекта - это расса людей (если не хуман - эффект не включится). Условие заключено в тэг <cond>, и оно не обязательно. Если условия не указаны - все игроки (которые одевают эту броню\оружие) будут получать эффект от него.

Эффект - это добавление или умножение статов игрока на заданное количество. В примере стат 'pDef' (power defence) и его значение 36. Это означает, что к power defence игрока будет добавлено значение 36. Я опишу 'order' ниже.

В конце, даже если функцию подключена к игроку, необходимо чтобы было условие когда оно будет работать. В нашем примере условие таково: pDef будет увеличен только тогда, когда цель игрока - атака skeleton.

И снова: может быть множество условий <for>, они могут иметь условие присоединенное к игроку <cond>, и каждый из них может влиять на один или несколько статов игрока ( <add>, <sub>, <mul>, <div> ), и каждый стат будет добавлен только в том случае когда условие будет выполнено.

Конечно, всё это не обязательно. Для большинства предметов брони и оружия вы будете иметь что-то простое похожее на это:
Код :

<item id='21' name="shirt">
<for>
<add stat='pDef' order='0x10' val='36'/>
</for>
</item>
Что всего лишь добавляет 36 пунктов к power defence для каждого игрока который оденет её, без каких-либо условий.
Тег <add />означает прибавление и является переменной. На его месте могут так же быть, например, <sub />, <set />, <mul />, <enchant />

И так. Что же означают эти значения?

<add /> – прибавление статов. То есть если вы оденете вещь, ваши статы увеличатся. Значение order будет 0×10. <add val='100′ order=»0×10″ stat='pDef'/>

Данный код значит что при одевании вещи вам прибавится 100 единиц стата (в данном случае P. Def).


2. <sub /> –вычитание статов.То есть если вы оденете вещь, ваши статы уменьшатся. order так же – 0×10. <sub val='100′ order=»0×10″ stat='mDef'/>.
Данный код значит что при одевании вещи у вас отнимется 100 единиц стата (в данном случае M. Def).

3.<set /> – назначает вам строгое значение стата. То есть если вы оденете вещь со значением 20, то тот стат, но который это значение влияет будет равен 20. Order 0×08. <set val='100′ order=»0×08″ stat='pDef'/>. Данный код значит что при одевании вещи у вас станет 100 единиц стата (в данном случае P. Def)


4. <mul /> - умножение статов. То есть если вы оденете вещь, ваши статы умножатся. Order 0x30.

<mul val='100' order="0x10" stat='mDef'/>

Данный код значит что при одевании вещи значение стата умножится на 100 (в данном случае M. Def).

5. <enchant /> - показывает, на сколько увеличится стат при заточке еще на +1. Order 0x0C.

<enchant val='100' order="0x0C" stat='pDef'/>

Данный код значит что при заточке вещи еще на 1 ваши статы (в данном случае P. Def) увеличатся на 100.
Ниже приведена таблица значений "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
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

Часть 3. Изменение скилов:

Самая большая часть моей статьи :) Начну со значений, ибо вы должны знать что изменяете. 

Изменение максимального количества 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

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 - что такое агр, и что такое сила агра думаю объяснять не нужно.
Это основное что вам понадобится. Теперь расскажу вам о значении тега в скиллах.
Тег
в скиллах Lineage 2 встречается очень часто. Обычно данный тег
используется для "добавления сложных действий" к скиллу. Если скилл
имеет сложный вариант реализации то обычно в тег добавляют некоторые
отдельные значения, которые реализованы в ядре ява сервера Lineage.
Самый важный тег для использования здесь - это .
Приведем пример использования тега и тега :
<for>
<effect name="тип" val="значение" time="время действия" stackOrder="переменная" stackType="переменная ядра">
</effect>
</for>
</skill>

Что сие значит:

name - Это тип эффекта
val - Значение эффекта. Для дебаффов - шанс прохождения, для боевых скилов - сила.
time - время действия эффекта
StackOrder и stackType - это значения уже описаные в данном скиле. order и тип или же значения и переменные с ядра сервера.

Думаю со скиллами мы разобрались, теперь перейдем к зонам.

Часть 4. Зоны в Lineage 2:

<zone id="ID зоны" type="тип" shape="вид" minZ="минимальная Z координата" maxZ="максимальная Z координата">

<!--Комментарий-->

</zone>

Пройдемся по значениям:

id - идентификатор зоны.
type - тип зоны (town, arena, jailzone). Например:
Town - мирная зона (город)
Arena - боевая зона (PVP)
JailZone - зона. Просто зона (извините за аллегорию:) ). По другому - тюрьма. В ней запрещены разговор и телепорт.
shape - это форма или вид зоны. Может быть двух типов :
-nPoly
-Cupoid.
minZ - это минимально допустимая координата высоты (z) в данной зоне .
maxZ - это максимально допустимая координата высоты (z) в зоне.
minZ и maxZ используются для избежания прохождения через текстуры, провалов под них и т.д.
Зоне можно задать имя:

Так же внутри тегов используется описание точек "респавна" чара в них.
Приведем пример : Смотрите файл zone.xml в своей сборке, для примера.

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

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

Связь с автором

Автор: sos96910 от 1-08-2011, 15:57

Своё Спасибо, еще не выражали.
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Комментарии: Оставить комментарий
Наверх
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Дополнения для InstantCMS
 
Copyright © 2009-2015

Дополнения для InstantCMS | Рипы сайтов | Социальные сети