Дополнения для редактирования статов скилов
Важно знать что любой скилл начинается с открывающего тега и заканчивается закрывающим тегом. В скилах есть 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 разработчики серверов не собираются в связи с универсальностью этого формата.