dominys | Дата: Вторник, 31.07.2012, 19:22 | Сообщение # 1 |
Admin
Группа: Администраторы
Сообщений: 137
Статус: Offline
| Часть 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 dualWpn Vuln 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 координата"/>
Эти координаты показывают где будет спауниться игрок находящийся в зоне.
помог вот этот мануал,мануал СКОПИРОВАН с другого ресурса.
В жизни есть большие вещи, чем компьютер.
|
|
| |