Изменение параметров вещей. - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Тех-документация

Тех-документация Статьи по редактированию, компиляции и настройки ява серверов Lineage 2

Ответ
Опции темы
Непрочитано 24.11.2007, 23:41   #1
Аватар для Tonchi
Герой

Автор темы (Топик Стартер) Изменение параметров вещей.

Оружие, броня, параметры скиллов сохранены в 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) для принятия вещью изменений для статов (когда оружие одето или снято).
Таких условий может быть от ноль, один, два, или более. Условие заключено в тэг <for>.

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

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

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

И снова: может быть множество условий <for>, они могут иметь условие присоединенное к игроку <cond>, и каждый из них может влиять на один или несколько статов игрока ( <add>, <sub>, <mul>, <div> ), и каждый стат будет добавлен только в том случае когда условие будет выполнено.

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

Код 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>
В строке <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.

Немного больше о условиях. Вы можете указывать логические операции <and>, <or>, <not>:

Код 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 - 
список типа разделен запятыми -->
Операциями над значениями являются:

Код HTML:
<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, то используем тэг <add>:

Код 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'/>
В итоге наш плащ будет иметь такой вид:

Код HTML:
<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>
Автор тектста: VersuS
Tonchi вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 04.11.2008, 17:50   #2
Пользователь

По умолчанию Ответ: Создание мега вещей.

А после создания этих вещей при обновлении сервера надо будет их переносить дополнительно или они как то пропишутся ?
Zulla вне форума Ответить с цитированием
Непрочитано 07.11.2008, 15:52   #3
Аватар для DarkLoki
Пользователь

По умолчанию Ответ: Создание мега вещей.

Если датапак полностью обновлять то придётся прописывать заново.
__________________
Я не прав? Докажите это тут или тут
* Интересная тема * для новичков *
DarkLoki вне форума Ответить с цитированием
Непрочитано 24.11.2008, 02:35   #4
Аватар для pomoshnik
Пользователь

По умолчанию Ответ: Создание мега вещей.

а как можно добавить новый ресурс (к примеру Quest Item с новым названием)
пробую по методики добавления нового персонажа
таблица etcitem
капирую строку в базе данных
заменяю Item_ID и Name
захожу в игру... при ввоже Item_ID придмет не дабавляется в инвентарь

что я не так делаю и как это можно реализавать?
pomoshnik вне форума Ответить с цитированием
Непрочитано 25.11.2008, 19:13   #5
Пользователь

По умолчанию Ответ: Создание мега вещей.

Цитата:
Сообщение от pomoshnik Посмотреть сообщение
а как можно добавить новый ресурс (к примеру Quest Item с новым названием)
пробую по методики добавления нового персонажа
таблица etcitem
капирую строку в базе данных
заменяю Item_ID и Name
захожу в игру... при ввоже Item_ID придмет не дабавляется в инвентарь

что я не так делаю и как это можно реализавать?
Скорее всего дело в том что клиент просто "не видит" новый предмет, и никак его не отображает т.к. нету никаких иконок, описания и т.п.
Возможно косвенно определить "наличие предмета", добавить итему ВЕС и поглядеть на изменение в рюкзаке.

п.с.
Что за "методика добавления нового персонажа"?
marvellously вне форума Ответить с цитированием
Непрочитано 26.11.2008, 01:18   #6
Аватар для pomoshnik
Пользователь

По умолчанию Ответ: Создание мега вещей.

Цитата:
Сообщение от marvellously Посмотреть сообщение
Скорее всего дело в том что клиент просто "не видит" новый предмет, и никак его не отображает т.к. нету никаких иконок, описания и т.п.
Возможно косвенно определить "наличие предмета", добавить итему ВЕС и поглядеть на изменение в рюкзаке.

п.с.
Что за "методика добавления нового персонажа"?
да всё уже вроде как нашёл как сделать чтоб видно всё было ...

методика добавления новых персонажей NPС
лезим в Navicat открываем там таблицу NPC
копируем строку одного из NPC меняем:
ID - новый номер для добавления спаун точки
Name - имя персонажа
ServerSideName - подленнасть имяни если 0 настоящие имя, 1 то имя которое вы ему дали
ServerSideTitle - подленнасть титула если 0 настоящие имя, 1 то титул которое вы ему дали

если хотите научить говорить его с вами, создайте HTM фаил с номером его нового ID в папке характерной его типу в таблице
(type => L2Merchant - htm/merchant/)
в нём уже по примеру соседних *.HTM файлов пишим деалог

вот такая вот наука ....
ЗЫ: когда окончательно прощупую всю систему добавление новых рецептов и тп напишу FAQ =)
pomoshnik вне форума Ответить с цитированием
Непрочитано 26.11.2008, 09:04   #7
Пользователь

По умолчанию Ответ: Создание мега вещей.

ясненько =) я думал "персонаж" в смысле игрок, меня интересует как можно добавить новый "класс" в игре, но это немного другая тема, наверное стоит создать отдельную..
marvellously вне форума Ответить с цитированием
Непрочитано 15.02.2009, 15:27   #8
Аватар для avemaria
Пользователь

По умолчанию Ответ: Изменение параметров вещей.

А подскажите пожалуйста как сделать чтобы мою новую вещь мог одеть скажем только гном
(как рапира у камаэль)
в каких файлах и какие значения менять. не могу найти
avemaria вне форума Отправить сообщение для avemaria с помощью ICQ Ответить с цитированием
Непрочитано 29.09.2009, 01:53   #9
Аватар для Dizzylight
Пользователь

По умолчанию Ответ: Изменение параметров вещей.

Цитата:
Сообщение от avemaria Посмотреть сообщение
А подскажите пожалуйста как сделать чтобы мою новую вещь мог одеть скажем только гном
(как рапира у камаэль)
в каких файлах и какие значения менять. не могу найти
Смотри в самом верху.
<cond><player race="Human"/></cond>

Если только для гнома, то вместо Human - Dwarf.
Если я в чём то неправ - поправьте.
Dizzylight вне форума Отправить сообщение для Dizzylight с помощью ICQ Отправить сообщение для Dizzylight с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 04.10.2009, 23:58   #10
Аватар для darknesswolf
Пользователь

По умолчанию Ответ: Изменение параметров вещей.

Большое Спасибо.
За столь замечательное описание.
Очень понравилось.
+интересно.
+заинтересовало.
darknesswolf вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 20:41. Часовой пояс GMT +3.

Вверх