Вход

Просмотр полной версии : Создаём Уникальные Вещи своими руками


EmL
20.10.2011, 20:27
Оружие, броня, параметры скиллов сохранены в XML файлах и в базе данных. В скором времени использование базы данных для скиллов будет удалено. В XML файлах сохранено описание как вещи и скиллы должны влиять на статы (которые используются для подсчета повреждений, шансов и т.д.).

Вот пример XML файла для оружия и брони:
Код HTML:

Код:
<?xml version='1.0' encoding='utf-8'?>
<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) для принятия вещью изменений для статов (когда оружие одето или снято).
Таких условий может быть от ноль, один, два, или более. Условие заключено в тэг .

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

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

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

И снова: может быть множество условий , они могут иметь условие присоединенное к игроку , и каждый из них может влиять на один или несколько статов игрока ( , , ,

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

Код:
<?xml version='1.0' encoding='utf-8'?>
<item id='21' name="shirt">
<for>
<add stat='pDef' order='0x10' val='36'/>
</for>
</item>которое всего лишь добавляет 36 пунктов к power defence для каждого игрока который оденет её, без каких-либо условий.
Скиллы описаны практически так же, но с одним дополнением - у скиллов есть уровни. По-этому значение для увеличения\уменьшения стата будет зависеть от уровня скилла. Для этих целей мы имеем таблицы:
Код HTML:

Код:
<?xml version='1.0' encoding='utf-8'?>
<skill id='113' levels='2' name="Long Shot">
<table name="#dist"> 200 400 </table>
<for>
<add stat='rAtk' order='0x10' val='#dist'>
<using kind="Bow"/>
</add>
</for>
</skill>В строке вы выборочно указываете количество уровней. Затем вы провозглашаете таблицу (вы можете провозгласить много *04 ), каждый из них будет иметь 'level' значения отделенные друг от друга пробелами. Название таблицы может быть любым, но должно начинаться с символа #. В значениях вы указываете название вашей таблицы.
Сейчас я опишу "order" параметр. "Order" это порядок проведения расчетов. Давайте представим что мы имеем base power defence игрока: basePDef
защита одетого доспеха: armourPDef
level modifier of the player: lvl
passive skill of power defence которое надо добавить: skillPDef1
buff of power defence которое надо умножить: skillPDef2

Получаем такую формулу:
((basePDef + armorPDef)*lvl + skillPDef1)*skillPDef2

Знаки умножение\суммы в этой формуле указаны 'order'ом расчета. Получается:
basePDef будеть иметь order 0x10
armorPDef будеть иметь order 0x10
lvl будеть иметь order 0x30
skillPDef1 будеть иметь order 0x40
skillPDef2 будеть иметь order 0x50

Значения с одинаковыми 'order'ами расчета будут рассчитаны в не предсказуемом порядке. По-этому, никогда не указывай одинаковый order параметрам add/substiture и multiplay/divide.

Немного больше о условиях. Вы можете указывать логические операции , , :
Код HTML:

Код:
<and><player race="Human"/><player level="11"/></and>
<or><player race="Human"/><player race="Orc"/></or>
<not><player race="Human"/></not>

<and>
<not>
<player race="Human"/>
</not>
<or>
<player level="11"/>
<not>
<player level=40>
</not>
</or>
</and>Условиями являются:
Код HTML:

Код:
<player race="..."/> <!-- проверяет рассу игрока -->
<player level="..."/> <!-- проверяет является ли уровень игрока таким, или выше указанного здесь -->
<player state="..."/> <!-- Делает проверку игрока на выполнение действий: sit, walk, run, swim, etc -->
<target level="..."> <!-- проверяет является ли уровень цели таким, или выше указанного здесь -->
<using kind="..."/> <!-- игроков одета броня указанного типа, или оружие указанного вида.Броня бывает Light, Heavy, Magic,
оружие: Shield, Sword, Blunt, Dagger, Bow, Pole, Etc, Fist, Dual Sword, Dual Fist -
список типа разделен запятыми -->
Операциями над значениями являются:

Код:
<add stat='...' val='...'/> <!-- add a value -->
<sub stat='...' val='...'/> <!-- значение подстановки -->
<mul stat='...' val='...'/> <!-- умножить на значение -->
<div stat='...' val='...'/> <!-- разделить на значение -->Операция для "случайных" чисел и корней и других математический функций возможно будут добавлены позже, в случае необходимости.
Вы должны указать значение не как константу, а как выражение:
Код HTML:

Код:
<?xml version='1.0' encoding='utf-8'?>
<skill id='256' levels='1' name="Accuracy">
<table name="#acc"> 10 </table>
<table name="#mana"> 0.2 </table>
<for>
<add val='#acc' order='0x10' stat='accCombat'/>
<effect name="ManaDamOverTime" time="5" count="0x7fffffff">
<val>
<add val="$player_level"/>
<mul val="#mana"/>
</val>
</effect>
</for>
</skill>Такое выражение начинает расчитывать со значение 0, и для примера вверху мы имеем уровень игрока умноженный на значение с таблицы, и это значение будет использовано для для расчета повреждений манны для каждого периода эффекта. Итого, в результате мы имеем - повышеную точность (accuracy) в бою плюс отнимание за это манны (МР).
Возможные значения для рассчетов:
Код HTML:

Код:
$player_level
$target_level
$player_max_hp
$player_max_mpПродолжительными эффектами скиллов являются:
Код HTML:

Код:
<effect name="Buff"> <!-- buff/debuff, для debuff исользуйте отрицательные значения -->
<effect name="DamOverTime"> <!-- единоразовое отнятие HP -->
<effect name="ManaDamOverTime"> <!-- единоразовое отнятие MP -->
<effect name="HealOverTime"> <!-- единоразовое увеличение HP -->
<effect name="Charge"> <!-- "заряжает" игрока, подготавливает его для использования другого скилла -->
<effect name="Relaxing"> <!-- relaxing skill -->--------------------------------------------------------------------------------------------------------------------------------------- ---------
Вот некоторые статы для редактирования.
Код HTML:

Код:
'rEvas'
'cAtk'
'pAtkSpd'
'mAtkSpd'
'maxНp'
'maxMp'
'pAtk'
'mAtk'
'regMp'
'mDef'
'pDef'
'runSpd'
'reflectDam'
'sleepRes'
' rootRes'
'stunRes'
'poisonRes'
'bleedRes'Это не все, это всего лишь часть статов, которые мне пришли в голову, но могут вам быть полезными для редактирование шмота и т.д.
-------------------------------------------------------------------------------------------------------------------------------------- -------------
Теперь рассмотрим как сделать какой-либо шмот уникальным.
И так, выбираем шмотик который хотим усовершенствовать: я для себя выбрал:
Код HTML:

Код:
<item id='616' name="cloak_of_magic">
<for>
<add val='11' order='0x10' stat='pDef' />
<enchant val='0' order='0x0C' stat='pDef' />
</for>
</item>Открываем data\stats\armor600-0699.xml, находим строчку с нашим "плащом магии".
Так как он плащ магии, неплохо было бы сделать его для магов. А что надо магам? Правильно МР, реген МР, скорость каста, сила каста. Но давать всё это сразу - слишком много, по-этому сделаем какие-нибудь три изменения, например увеличим интеллект на +1, regMp, ну и скорость каста (mAtkSpd).

Хм, с бонусами вроде определились, теперь надо определится в количестве этого бонуса, будет ли оно просто добавлять какое-то заданное число (константу) либо проценты от уже имеющегося стата (тобишь был mdef 100, добавили 10% - получили 110).

Для себя я выбираю так:
INTу добавляю 1.
Регенерацию МР - повышаю на 20%.
Скорость каста на 25%.

Теперь что касается соответсвующего кода:

Так как мы добавляем (знак +) INT, то используем тэг :
Код HTML:

Код:
<add val='1' order='0x10' stat='INT'/>С интом разобрались, теперь что касающееся regMp (знак *, умножение):
Код HTML:

Код:
<mul val='1.20' order='0x20' stat='regMp'/>Обратите внимание на order!
Теперь скорость каста на 25%:
Код HTML:

Код:
<mul val='1.20' order='0x20' stat='mAtkSpd'/>В итоге наш плащ будет иметь такой вид:

Код:
<item id='616' name="cloak_of_magic">
<for>
<add val='11' order='0x10' stat='pDef' />
<add val='1' order='0x10' stat='INT'/>
<mul val='1.20' order='0x20' stat='regMp'/>
<mul val='1.20' order='0x20' stat='mAtkSpd'/>
<enchant val='0' order='0x0C' stat='pDef' />
</for>
</item>На этом всё.

MyGarant.net
20.10.2011, 20:32
Отлично. Теперь бегаю с фул эпик сетом!

alexteam
20.10.2011, 20:34
MyGarant.net, это для джава серверов.
там все статы/эффекты шмота (и не только) в хмлках.

EmL
20.10.2011, 20:55
Отлично. Теперь бегаю с фул эпик сетом!

a gde spasibo? ;)

goodvin1709
20.10.2011, 21:06
Все это уже очень давно знал ну и тыкну спасибку за труд

alexteam
20.10.2011, 21:16
1. копипаста (http://www.google.com/search?q=%22%D0%97%D0%B0%D1%82%D0%B5%D0%BC+%D0%B5% D1%81%D1%82%D1%8C+%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D 0%BE%D1%80%D1%8B%D0%B5+%D1%83%D1%81%D0%BB%D0%BE%D0 %B2%D0%B8%D1%8F+%28condition%29%22+&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox)
2. каким боком относиться к разделу ?

EmL
20.10.2011, 21:21
1. копипаста (http://www.google.com/search?q=%22%D0%97%D0%B0%D1%82%D0%B5%D0%BC+%D0%B5% D1%81%D1%82%D1%8C+%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D 0%BE%D1%80%D1%8B%D0%B5+%D1%83%D1%81%D0%BB%D0%BE%D0 %B2%D0%B8%D1%8F+%28condition%29%22+&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox)
2. каким боком относиться к разделу ?

везде своя копия,я выложил на наш сайт а именно кодеркс,если не подходит к разделу то прошу перенести по разделу =)

alexteam
20.10.2011, 21:26
тут нет разделов посвященных "настройке джавасервера".
в курилку.

Yegor
21.10.2011, 01:53
EmL, большое спасибо. Нормальных мануалов по настройке Java серверов почти нет. Приходится все познавать методом проб, ошибок и изучением исходников..

supernewbie
21.10.2011, 13:38
да какие нах мануалы, палите сорцы, там же по факту тот же мануал тока на яве

Yegor
21.10.2011, 13:42
supernewbie, Ага мануал. Это аналогично чтению книги в которой каждый новый абзац идет на другой странице и не по порядку.

EmL
21.10.2011, 13:59
EmL, большое спасибо. Нормальных мануалов по настройке Java серверов почти нет. Приходится все познавать методом проб, ошибок и изучением исходников..

Незачто,спасибо за спасибку ^^,

supernewbie
21.10.2011, 14:54
supernewbie, Ага мануал. Это аналогично чтению книги в которой каждый новый абзац идет на другой странице и не по порядку.
там 2 страницы епт, DocumentSkill.java и DocumentBase.java

Yegor
21.10.2011, 15:48
В Delphi ты тоже по его исходникам разбираешься? Мне например проще загуглить интересующий вопрос. Не люблю "изобретать велосипеды".

supernewbie
21.10.2011, 17:05
когда как, иногда лучше смотреть сорцы чем гуглить

J-Fobos
21.10.2011, 21:13
Перенес в курилку, к другим разделам эта тема никак не подходит.

Если тема кому-то интересна, то вот моя очень старая статья.


===================================
Для написания статьи использовалась википедия, форумы разработчиков сборок emu и base, а также пара статьей с портала вампиров. Авторские права использованных материалов принадлежат исключительно авторам этих материалов.
При копировании статьи прошу не удалять этот текст. (c) j-Fobos
===================================


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>
Все изменения в стате должны находится между тегами <for></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

J-Fobos
21.10.2011, 21:13
Дополнения для редактирования статов скилов

Важно знать что любой скилл начинается с открывающего тега и заканчивается закрывающим тегом. В скилах есть 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="5количество"/>
</item>

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

Надо знать что в одном теге item может быть несколько тегов ingredient, это будет значить что при покупку production вам надо будет несколько указанных предметов. Напримиер при покупке заточек у мамона надо иметь древнюю адену и чистые скролы. Использование нескольких production также возможно, но крайне не рекомендовано создателями сборок.
Также можно указывать дополнительные параметры покупки, например часто используется параметр enchant, который позволит покупать уже заточенную вещь. Например <production id="7575" count="1" enchant="10"/> - будет куплен драк лук +10. Еще довольно интересно: при задании параметра enchant у ошейников для вызова питомцев питомец будет уже прокачан до указанного в параметре enchant уровня. Кроме enchant можно использовать и параметры для камней стихий и т.п.


6. Заключение
В заключении хотелось бы первым делом извинится перед людьми, чьи материалы были использованы при написании этой статьи, за не указание их ников. Материалов было много и просто запутался с какого ресурса какой был взят.
Также следует сказать что в сборках серверов XML файлы используются очень широко не только в описанных выше случаях. Например dimensionalRift.xml описывает параметры рифта, а recipes.xml параметры изучения и использования рецептов, также есть summon_items.xml в котором хранятся параметры ошейников для петов. Круг использования XML довольно широк и в рамках этой статьи описан не полностью.
Существует много споров на тему стоит ли использовать xml или же все таки стоит в полную использовать базы данных. Это связано с тем что размер XML-документа существенно больше бинарного представления тех же параметров в базе данных, что влияет на большую потребность в ресурсах и увеличении времени обработки информации. Хотя не смотря на это полностью отказывается от XML разработчики серверов не собираются в связи с универсальностью этого формата.

supernewbie
22.10.2011, 13:50
это под какую сборку всё?

J-Fobos
22.10.2011, 20:09
это под какую сборку всё?
Под большинство сборок сойдет.

Yegor
22.10.2011, 23:43
Раз уже зашел вопрос о сборках. Кто то в курсе вообще откуда они первоначально появились? Да сейчас есть команды разработчиков которые перерабатывают сборки под новые хроники и на этом неплохо зарабатывают, но они обычно берут за основу сборки от предыдущих хроник. А откуда взялись самые первые? Например изучив исходники сборки феникс я увидел что изначальный код был написан очень профессионально с комментариями на английском языке и программа имеет колоссальную сложность. Для новых хроник видно как поверх сделаны фиксы, уже с комментариями на русском. Фиксы часто с ошибками, с избыточностью, иногда без дополнительных проверок с несоблюдением придерживания одного стиля форматирования текста кода и.т.п.

J-Fobos
23.10.2011, 00:55
Если мне не изменяет память, то сборка фениксов основана на сборке от команды ребелион (или как-то так). Они распались летом 2009 года вроде и исходники своей сборки выдали в шару.
Сборка команды ла2бейс основана на сборках команды л2ему ентерпрайс, которая начала свое существование с нуля в 2008 году (с интерлюда), а во времена хелбонда (или грации парт 1) развалилась и создалась заново, но из других людей.
Ну еще есть отдельная ветка сборок команды джейсервер, но они столько изменений пережили, что я запутался с ними :)

Также есть отдельная история с сборками на основе украденного в 2006 году птс сервера хроник С3 и С4. А еще в 2010 году вроде как украли птс сборку, но я в то время был в армии и не знаю правда ли это.

Yegor
23.10.2011, 01:28
J-Fobos, а ПТС сборка тоже существует с исходным кодом? На чем она написана?

SeregaZ
23.10.2011, 01:40
тема очень интересная :) когда уже наконец жаву сервер WoT напишут? :)

J-Fobos
23.10.2011, 14:57
J-Fobos, а ПТС сборка тоже существует с исходным кодом? На чем она написана?
Я не очень интересовался ПТС сборками, на чем написана не знаю и насколько мне известно исходного кода нету. Разработчики пишут свои длл-ки и заменяют/дополняют ими оригинальные файлы.

EmL
23.10.2011, 15:03
есть у каво либо l2phx под грацию финал,такая чтобы ловила и отправляла пакеты со скриптами и невыбивало... для сервера l2rx.comи если есть у кого скрипты,положите в хлапу,заранее спс,)

kakashonog111
26.10.2011, 01:11
ПТС есть только С4,её доделали до ИТ и продают по 600 вмз.
ПТС грации финал,хз откуда,недавно рпг-клуб выложил в шару и перешёл на яву Хай Фай.
Я всегда хотел открыть свой серв,надеюсь через пару недель не выйдет фейлом,т.к. без денег не поднимешься в этом деле.

EmL
26.10.2011, 16:43
ПТС есть только С4,её доделали до ИТ и продают по 600 вмз.
ПТС грации финал,хз откуда,недавно рпг-клуб выложил в шару и перешёл на яву Хай Фай.
Я всегда хотел открыть свой серв,надеюсь через пару недель не выйдет фейлом,т.к. без денег не поднимешься в этом деле.

всё это конечно же хорошо,но 600 вмз ты перегнул палки и ризину :D

J-Fobos
26.10.2011, 16:55
ПТС есть только С4,её доделали до ИТ и продают по 600 вмз.
Тоесть в 2010 кражи птс сборки небыло?

kakashonog111
27.10.2011, 14:23
Нет.

J-Fobos
27.10.2011, 16:52
Прошло уже много времени после попадания «в шару» официальной сборки сервера Lineage 2 C4, с тех пор многие уже забыли о этом проколе NcSoft. Однако это не единственный прокол компании, и у них с под носа была слита сборка европейского сервера Lineage 2 Gracia Final (83 протокол). Именно эта сборка официального сервера была установлена на RPG-Club. И вот на днях, начались массовые продажи сабжа с последней ценой в 2к долларов, но Deazer перекрыл последним кислород — выложив эту сборку в шару.


kakashonog111, что на это скажите?

kakashonog111
28.10.2011, 18:22
Финал ещё давнее украли как мне кажется.Шара в этом случае совсем не означает халявность,т.к. тем у кого нет свободных 5-10к лучше открыть на java.

J-Fobos
29.10.2011, 02:12
Финал ещё давнее украли как мне кажется.Шара в этом случае совсем не означает халявность,т.к. тем у кого нет свободных 5-10к лучше открыть на java.
Я не говорил о халявности, вы же ранее написали "ПТС есть только С4,её доделали до ИТ", откуда тогда финал птс? ;)

kakashonog111
31.10.2011, 14:06
http://www.youtube.com/watch?v=4JfeZ3Yg1Qs

EmL
31.10.2011, 14:14
http://www.youtube.com/watch?v=4JfeZ3Yg1Qs

жэсть) ты отправил письмо?)

SeregaZ
01.11.2011, 15:46
кто-нить объяснит кому нахрен понадобилась эта целая серия якобы "срывов покровов"? :) несут всякую чушь... про айфоны, валяющиеся на дне окийяна, про макдональдсы-бомбоубежища, про срыв выборов премьерами наикрутейших блокбастеров голливуда...

EmL
01.11.2011, 16:28
кто-нить объяснит кому нахрен понадобилась эта целая серия якобы "срывов покровов"? :) несут всякую чушь... про айфоны, валяющиеся на дне окийяна, про макдональдсы-бомбоубежища, про срыв выборов премьерами наикрутейших блокбастеров голливуда...

zakin' na forum mne script na enchant skill pts gracia final) ok da?)