XML и XML в Lineage 2 Часть 1. Введение: Начнем с того, что же такое XML? Это текстовый формат, предназначенный для хранения структурированных данных, для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. Первая строка XML-документа называется объявлением XML — это необязательная строка, указывающая версию стандарта XML (обычно это 1.0 => Пример:), также здесь может быть указана кодировка символов и внешние зависимости. Пример: " 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 кода: Первая строчка нужна только для самого языка XML, пропустите её. Вторая строка указывает ID вещи и её название (они должны совпадать с такими же в БД). Затем есть некоторые условия (condition) для принятия вещью изменений для статов (когда оружие одето или снято). Таких условий может быть от ноль, один, два, или более. Условие заключено в тэг . Тэг условия состоит из самого условия которое следует проверить на игроке и эффекта на статы игрока. В вышенаписанном примере условие добавление эффекта - это расса людей (если не хуман - эффект не включится). Условие заключено в тэг , и оно не обязательно. Если условия не указаны - все игроки (которые одевают эту броню\оружие) будут получать эффект от него. Эффект - это добавление или умножение статов игрока на заданное количество. В примере стат 'pDef' (power defence) и его значение 36. Это означает, что к power defence игрока будет добавлено значение 36. Я опишу 'order' ниже. В конце, даже если функцию подключена к игроку, необходимо чтобы было условие когда оно будет работать. В нашем примере условие таково: pDef будет увеличен только тогда, когда цель игрока - атака skeleton. И снова: может быть множество условий , они могут иметь условие присоединенное к игроку , и каждый из них может влиять на один или несколько статов игрока ( , , ,
), и каждый стат будет добавлен только в том случае когда условие будет выполнено. Конечно, всё это не обязательно. Для большинства предметов брони и оружия вы будете иметь что-то простое похожее на это: Код : Что всего лишь добавляет 36 пунктов к power defence для каждого игрока который оденет её, без каких-либо условий. Тег означает прибавление и является переменной. На его месте могут так же быть, например, , , , И так. Что же означают эти значения? – прибавление статов. То есть если вы оденете вещь, ваши статы увеличатся. Значение order будет 0?10. Данный код значит что при одевании вещи вам прибавится 100 единиц стата (в данном случае P. Def). 2. –вычитание статов.То есть если вы оденете вещь, ваши статы уменьшатся. order так же – 0?10. . Данный код значит что при одевании вещи у вас отнимется 100 единиц стата (в данном случае M. Def). 3. – назначает вам строгое значение стата. То есть если вы оденете вещь со значением 20, то тот стат, но который это значение влияет будет равен 20. Order 0?08. . Данный код значит что при одевании вещи у вас станет 100 единиц стата (в данном случае P. Def) 4. - умножение статов. То есть если вы оденете вещь, ваши статы умножатся. Order 0x30. Данный код значит что при одевании вещи значение стата умножится на 100 (в данном случае M. Def). 5. - показывает, на сколько увеличится стат при заточке еще на +1. Order 0x0C. Данный код значит что при заточке вещи еще на 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. Самый важный тег для использования здесь - это . Приведем пример использования тега и тега : Что сие значит: name - Это тип эффекта val - Значение эффекта. Для дебаффов - шанс прохождения, для боевых скилов - сила. time - время действия эффекта StackOrder и stackType - это значения уже описаные в данном скиле. order и тип или же значения и переменные с ядра сервера. Думаю со скиллами мы разобрались, теперь перейдем к зонам. Часть 4. Зоны в Lineage 2: Пройдемся по значениям: id - идентификатор зоны. type - тип зоны (town, arena, jailzone). Например: Town - мирная зона (город) Arena - боевая зона (PVP) JailZone - зона. Просто зона (извините за аллегорию:) ). По другому - тюрьма. В ней запрещены разговор и телепорт. shape - это форма или вид зоны. Может быть двух типов : -nPoly -Cupoid. minZ - это минимально допустимая координата высоты (z) в данной зоне . maxZ - это максимально допустимая координата высоты (z) в зоне. minZ и maxZ используются для избежания прохождения через текстуры, провалов под них и т.д. Зоне можно задать имя: Так же внутри тегов используется описание точек "респавна" чара в них. Приведем пример : Смотрите файл zone.xml в своей сборке, для примера. Эти координаты показывают где будет спауниться игрок находящийся в зоне.