Редагування xml в збірках lineage 2

Опис: Редагування XML допоможе Вам у зміні "суттєво" Скіл, броні, різного виду зброї та іншого.
Так-же вона стати в нагоді тим, хто займається створенням магазинів і їх редагуванням.

Не будемо заглиблюватися в усі особливості XML, нас цікавить тільки частина, яка стосується Lineage 2.
XML в сервері Lineage застосовується для опису суттєво зброї, броні, Скіл, аргументів, зон, магазинів, зон рестарту чаров і багато іншого. Для зброї це наприклад параметри фіз. і маг. атаки, для броні - захисту, для Скіл - тривалість дії, сила, ефект і т.д. А наприклад в файлі "servername.xml" зберігаються імена серверів за замовчуванням. Ці імена когут бути легко змінені. Але крім змін на серверної частини необхідні і зміни з боку клієнта (з боку клієнта необхідно змінити файл "servername-e.dat". Змінюватися * .dat файли клієнта можуть за допомогою спеціальних програм. В XML файлах зон зберігаються параметри цих зон. Є й XML файли де до певного предмету приписується певний скил (наприклад нашийника вовка прив'язується Скіл виклику вовка).

Що потрібно знати як основу для редагування?

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

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

4) Параметр ID повинен бути в діапазоні від 1 до 2ккк


3. Редагування суттєво і Скіл.

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

Формат запису одного Мінстату наступний:


Всі зміни в стате повинні знаходитися між тегами

Тепер розглянемо основні операції зі статті.
- додавання суттєво. Стат збільшиться на вказану величину.
- множення суттєво. Тобто якщо ви одягнете річ або використовуєте скил, ваші статті примножиться. наприклад якщо
- вичетаніе. Тобто якщо ви одягнете річ (або заюзатете скил), ваші статті (або статті мети) зменшаться.
- збільшення / зниження при заточуванні. Роказивает, на скільки збільшиться / зменшиться стат при заточуванні ще на +1
- завдання суворого значення. Тобто якщо ви одягнете річ зі значенням 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 does not 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

Резисти проти зброї (тут думаю опис не потрібно)

Відсоток відбиваного шкоди - 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. Це найважливіший тег для використання в Скілом. Наведемо приклад використання тега.


Що це означає?
name - це тип ефекту
val - значення ефекту. Для дебафф - шанс проходження, для бойових Скіл - сила.
time - час дії ефекту
StackOrder і stackType - це значення вже описані в даному Скіла і задані в ядрі сервера і в різних збірках можуть називатися по різному (або навіть сходити нанівець).

Досить важливим в ігровому світі є поняття зон. Наприклад в містах мирні зони в яких заборонені атаки інших гравців (і іноді НВЦ). Або зони арен де не нараховується пвп / пк лічильник. Зони, також як і стати / Скіл прийнято ставити в xml файлах.
Розглянемо структуру опису зони:


Параметри що використовуються при створенні зани:
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 зазначеного рівня і при виході з зони забирається. Повторюся ще раз, в різних збірках це реалізація цього тега відбувається по різному.

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


У лінейдж є особливий тип магазинів під назвою multisell, спочатку він був задуманий для обміну речей на речі (вперше використовуватися у рибалок). У наш час цей магазин широко використовується в на пвп серверах для створення ГМ шопів, хоча це коло його використання не обмежується.
Назви XML файлів для магазинів такі як ID цих магазинів (але тут також є невеликі виключення, є магазини де назва і id різні). Формат даних в магазині наступний:


item id - номер предмета в осередок магазину, використовується для завдання порядку відображення предметів в магазині. Зверніть увагу що цей номер НЕ повинен повтояться і для кожного предмета повинен бути унікальний в рамках одного магазину.
production - предмет який купується в магазині. в цьому тезі вказується id предмета і його кількість.
ingredient - предмет за який можна купити production в магазині. в цьому тезі вказується id предмета і його кількість. У більшості випадків використовують Аден, древню Аден або коли, але предметом для покупки може бути будь-яка річ.
Треба знати що в одному тезі item може бути кілька тегів ingredient, це означатиме що при покупку production вам треба буде кілька зазначених предметів. Напріміер при покупці заточек у мамона треба мати давню Аден і чисті Скрол. Використання декількох production також можливо, але вкрай не рекомендовано творцями збірок.
Також можна вказувати додаткові параметри покупки, наприклад часто використовується параметр enchant, який дозволить купувати вже заточену річ. наприклад

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


6. Висновок
У висновку хотілося б насамперед вибачиться перед людьми, чиї матеріали були використані при написанні цієї статті, за не вказівка ​​їх ників. Матеріалів було багато і просто заплутався з якого ресурсу який був узятий.
Також слід сказати що в збірках серверів XML файли використовуються дуже широко не тільки в описаних вище випадках. Наприклад dimensionalRift.xml описує параметри рифту, а recipes.xml параметри вивчення і використання рецептів, також є summon_items.xml в якому зберігаються параметри нашийників для петов. Коло використання XML досить широкий і в рамках цієї статті описаний в повному обсязі.
Існує багато суперечок на тему чи варто використовувати xml або ж все таки варто в повну використовувати бази даних. Це пов'язано з тим що розмір XML-документа істотно більше бінарного представлення тих же параметрів в базі даних, що впливає на велику потребу в ресурсах і збільшенні часу обробки інформації. Хоча не дивлячись на це повністю відмовляється від XML розробники серверів не збираються в зв'язку з універсальністю цього формату.