• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Иконка ресурса

Мануал Skilldata.txt - формат и описание параметров

kick

Предвестник
Administrator
За веру и верность форуму
Отец-основатель
Сообщения
7 055
Розыгрыши
21
Решения
1
Репутация
5 927
Реакции
6 633
Баллы
2 688
skill_begin skill_name=[s_silence1] /* [사쁼냰삤] */ skill_id=1064 level=1 operate_type=A2 magic_level=40 effect={{p_block_spell}} is_magic=1 mp_consume1=7 mp_consume2=28 cast_range=600 effective_range=1100 skill_hit_time=4 skill_cool_time=0 skill_hit_cancel_time=0.5 reuse_delay=60 activate_rate=50 lv_bonus_rate=2 basic_property=men abnormal_time=30 abnormal_lv=1 abnormal_type=silence attribute=attr_derangement effect_point=-379 target_type=enemy_only affect_scope=single affect_limit={0;0} next_action=none abnormal_visual_effect=ave_silence debuff=1 ride_state={@ride_none;@ride_wind;@ride_star;@ride_twilight} skill_end
Описание параметров:
  • skill_begin - начало скилла
  • skill_name = [s_wyvern_breath] - название скилла (на которое ссылаются извне, например из itemdata)
  • /* [와이번 브레스] */ - Комментарий на корейском языке
  • skill_id = 4289 - ID Скилла
  • level = 1 - Уровень скилла
  • operate_type = P - пассивный, А1 или А2 - активный скилл.
SKILL_INSTANT=A1
SKILL_DURATION=A2
SKILL_DURATION_LEVEL_UP=A4
SKILL_SELFDURATION=A3
SKILL_PASSIVE=p
SKILL_TOGGLE=T
SKILL_CHANNELLING_INSTANCE=CA1
SKILL_CHANNELLING_DURATION=CA2
SKILL_CHANNELLING_DURATION_LEVEL_UP=CA5
SKILL_CHARGE_INSTANT=DA1
SKILL_CHARGE_DURATION=DA2
SKILL_AURA=AU
SKILL_AURA_ACTIVITY=A5
SKILL_GROUP_TOGGLE=TG
SKILL_BACK_STEP_INSTANT=DA3
SKILL_BACK_STEP_DURATION=DA4
SKILL_AURA_ACTIVITY2=A6
SKILL_PARTY_INSTANT=AP
SKILL_DUAL_PUMP1=DP1
SKILL_RACE_SPECIAL_PASSIVE=RP
SKILL_BLINK_INSTANT=DA5
SKILL_BACK_STEP_DURATION_WITH_TARGET_KNOCKBACK=DA6
  • magic_level = 60 - Уровень с которого персонаж может использовать данный скил
  • effect = - Что умеет скилл. Список эффектов.
  • operate_cond = {{op_wyvern}} - условия использования скилла
  • is_magic = 0 - скорость каста скилла и откат зависят от каст спида
  • is_magic = 1 - скорость каста скилла и откат зависят от атак спида
  • is_magic = 2 - фиксированые скорость каста скилла и откат ни от чего не зависят aka SOE, свиток воскрешения etc.
  • mp_consume2 = 400 - Сколько требует MP
  • cast_range = 700 - Дальность выстрела данным скиллом
  • effective_range = 1200 - Эффективная "дальность" атаки
  • skill_hit_time = 3.6 - Время каста скилла
  • skill_cool_time = 0 - фриз после каста, если поставить параметр "3" это будет значить что после каста скилла чар будет 3 секунды стоять как бы заморожен, нельзя будет двигаться, кастовать
  • skill_hit_cancel_time = 3.6 - в течении которого времени можно отменить каст скилла кнопкой Esc
  • reuse_delay = 6 - Откат скила
  • attribute = attr_fire - тип скилла (водяной, ветряной, темная атака например..)
  • effect_point = -1500 - используется для повышения эффективности аггра у мобов
  • target_type = wyvern_target - тип цели, на которую кастуется скилл. В данном случае только на другую виверну
  • affect_scope = wyvern_scope - как выбирается цель (одиночная, на себя, диапазон, аура)
  • affect_range = 200 - как выбирается цель (одиночная, на себя, диапазон, аура)
  • affect_object = wyvern_object - как выбирается цель (одиночная, на себя, диапазон, аура)
  • affect_limit = {0;0} - минимальное и максимальное количество обрабатываемых целей, если 0;0 то нет ограничения.
  • next_action = none - Выполнение команды после использовании скила
  • ride_state = {@ride_wyvern} - описывает, можно ли юзать скилл сидя на страйдере/виверне и так далее
  • skill_end - окончание скила
 
Последнее редактирование:
У него интерлуде ваганта.
Да, всё верно. Он самый. Так как полагать(или предполагать) его работу при таком сочетании? Дважды хейтит с разными шансами на себя или всё же один раз?
Есть еще Vengeance(id368) с двумя одинаковыми показателями шанса
Effect: [ [ "p_resist_dispel_by_category", "slot_buff", "-60", "per" ], [ "i_target_me_chance", "60" ], [ "i_target_me_chance", "60" ], [ "p_physical_defence", [ "all" ], "5400", "diff" ], [ "p_magical_defence", [ "all" ], "4050", "diff" ], [ "p_block_move" ] ]
 

У него интерлуде ваганта.


А есть ещё ц4 вампира(вроде), там аналогичная ситуация, но с др. цифрами.


Правильно или нет - сложно сказать. Либо вагант с вампиром упарывали некачественный героин, либо это офф-лайк. Третьего не дано.
Ну за ИЛ не скажу, особенно за многократно обкостыленный, но в ХФ и ГФ эффекта i_target_me_chance нет в ДП(и я сильно подозреваю, что в ядре тоже)
Есть третий вариант: Взаимопроникновение идей, методом копипаста.
 
Ну за ИЛ не скажу, особенно за многократно обкостыленный, но в ХФ и ГФ эффекта i_target_me_chance нет в ДП(и я сильно подозреваю, что в ядре тоже)
Есть третий вариант: Взаимопроникновение идей, методом копипаста.
Это самопал или чёто такое. Возможно наследие от с1-с4, углубляться не стал и не хочу.

{i_target_me;%value%} - так +- везде.
 
Подскажите, как расшифровать условие скила или как описать в яве.
Спасибо
Код:
effect={{p_trigger_skill_by_dmg;{enemy_all;1;131};{100;50;diff}

Не совсем понимаю, что из этого урон, а что шанс.
Если по аналогии с умением: Мираж, то тригер при 100 урона с 50% шансом активации?
Но тогда, что значит: {enemy_all;1;131}

Часть нашел..
а - {enemy_all;1;131}, это:
nEnemyType; int nEnemyLevelFrom; int nEnemyLevelTo;
 
Для p_trigger_skill_by_dmg
Пример параметров {enemy_all;1;100};{1;90;diff};[s_npc_trigger_target_cancel1];self;{all}
{{ТИП_ФУНКЦИИ_ТРИГГЕРА;{Условие*;уровень_мин;уровень_макс};{мин_урон;шанс;тип_ордера};{скилл_триггер};цель_триггера;{допкондишен}
Условие* в контексте ХФ может быть одним из трех enemy_all, pk, mob

Подскажите, как расшифровать условие скила или как описать в яве.
Спасибо
Код:
effect={{p_trigger_skill_by_dmg;{enemy_all;1;131};{100;50;diff}

Не совсем понимаю, что из этого урон, а что шанс.
Если по аналогии с умением: Мираж, то тригер при 100 урона с 50% шансом активации?
Но тогда, что значит: {enemy_all;1;131}
В яве можно просто создать общую функцию на триггеры, которая будет обрабатывать дефолтные для всех видов триггеров параметры, а также наследовать от нее персонифицированные функции триггеры.
Также, на каждый тип триггера можно сделать функцию, калькулятор которой будет дергаться в момент когда происходит нужное событие. Например получение урона. Это наиболее простая реализация.
 
  • Мне нравится
Реакции: kick
В яве можно просто создать общую функцию на триггеры, которая будет обрабатывать дефолтные для всех видов триггеров параметры, а также наследовать от нее персонифицированные функции триггеры.
Также, на каждый тип триггера можно сделать функцию, калькулятор которой будет дергаться в момент когда происходит нужное событие. Например получение урона. Это наиболее простая реализация.
Реализация есть, интересует условие.
Что есть урон, а что шанс.
Код:
effect={{p_trigger_skill_by_dmg;{enemy_all;1;131};{100;50;diff}
50% активация при 100 урона
или
100% активация при 50 урона

JavaScript:
        <triggers>
            <trigger id="0000" level="1" type="RECEIVE_DAMAGE" chance="50" increasing="true">
                <player damage="100;0"/>
            </trigger>
        </triggers>
 
Может кому пригодится - от нечего делать расколупал и сохранил простеньким скриптом разные скиллдаты на тему того, какие в них существуют параметры и все такое.
Проанализировал таким образом все варианты скиллдат из недавней утечки и шары птс 287 протокола + скиллдату от хф.

В архивах названия файлов = названиям параметров, а их содержимое - все возможные значения этих параметров.
PHP:
require_once "../../common.php";

$sd = $l2s::loadData("skilldata.txt");

$a = [];

for ($x = 0; $x < count($sd); $x++)
{
    if ($sd[$x][0] != "skill_begin")
        continue;

    foreach ($sd[$x] as $t)
    {
        $t = trim($t);

        if (strpos($t, "=") === false || strpos($t, "/*") !== false)
            continue;

        $t = explode("=", $t, 2);
        $k = trim($t[0]);
        $v = trim($t[1]);

        if (!isset($a[$k]) || !in_array($v, $a[$k]))
            $a[$k][] = $v;
    }
}

if (!file_exists("skilldata"))
    mkdir("skilldata");

foreach ($a as $k => $v)
{
    sort($v);
    file_put_contents("skilldata/{$k}.txt", implode("\n", $v)."\n");
}
 

Вложения

  • skilldata_287_classic.zip
    274,1 КБ · Просмотры: 12
  • skilldata_287_classic_aden.zip
    252,8 КБ · Просмотры: 5
  • skilldata_287_essence.zip
    302,7 КБ · Просмотры: 6
  • skilldata_287_homunculus.zip
    1 МБ · Просмотры: 14
  • skilldata_hf.zip
    366,7 КБ · Просмотры: 19
Может кому пригодится - от нечего делать расколупал и сохранил простеньким скриптом разные скиллдаты на тему того, какие в них существуют параметры и все такое.
Проанализировал таким образом все варианты скиллдат из недавней утечки и шары птс 287 протокола + скиллдату от хф.

В архивах названия файлов = названиям параметров, а их содержимое - все возможные значения этих параметров.
PHP:
require_once "../../common.php";

$sd = $l2s::loadData("skilldata.txt");

$a = [];

for ($x = 0; $x < count($sd); $x++)
{
    if ($sd[$x][0] != "skill_begin")
        continue;

    foreach ($sd[$x] as $t)
    {
        $t = trim($t);

        if (strpos($t, "=") === false || strpos($t, "/*") !== false)
            continue;

        $t = explode("=", $t, 2);
        $k = trim($t[0]);
        $v = trim($t[1]);

        if (!isset($a[$k]) || !in_array($v, $a[$k]))
            $a[$k][] = $v;
    }
}

if (!file_exists("skilldata"))
    mkdir("skilldata");

foreach ($a as $k => $v)
{
    sort($v);
    file_put_contents("skilldata/{$k}.txt", implode("\n", $v)."\n");
}
Дополню немного своим разбором skilldata, которую делал, когда переписывал скилл движок. Тут разобрано по типам данных и эффектам.
 

Вложения

  • skilldata_separate_287_ess.zip
    16 КБ · Просмотры: 18
  • skilldata_separate_hf.zip
    10,4 КБ · Просмотры: 16
  • skilldata_separate_287_hom.zip
    19,2 КБ · Просмотры: 13
  • is_magic = 0 - скорость каста скилла и откат зависят от каст спида
  • is_magic = 1 - скорость каста скилла и откат зависят от атак спида
  • is_magic = 2 - фиксированые скорость каста скилла и откат ни от чего не зависят aka SOE, свиток воскрешения etc.
PHYSICAL_SKILL = 0
MAGIC_SKILL = 1
ETC_SKILL = 2
SONGDANCE_SKILL = 3
TRIGGER_SKILL = 4
SUMMON_SKILL = 5
PHYSICAL_SKILL_NOCANCEL = 6
MAGIC_SKILL_NOCANCEL = 7
MAGIC_SKILL_MAX = 8
PHYSICAL_ATTACK_SKILL = 10
PHYSICAL_DEFENSE_SKILL = 11
PHYSICAL_SHOOT_SKILL = 12
PHYSICAL_ENCHANT_SKILL = 13
MAGIC_ELEMENT_SKILL = 20
MAGIC_DIMENSION_SKILL = 21
MAGIC_ENCHANT_SKILL = 22
MAGIC_HOLY_SKILL = 23
MAGIC_DARKNESS_SKILL = 24
MAGIC_VOODOO_SKILL = 25
MAX = 26
 
  • operate_type = P - пассивный, А1 или А2 - активный скилл.
SKILL_INSTANT=A1
SKILL_DURATION=A2
SKILL_DURATION_LEVEL_UP=A4
SKILL_SELFDURATION=A3
SKILL_PASSIVE=p
SKILL_TOGGLE=T
SKILL_CHANNELLING_INSTANCE=CA1
SKILL_CHANNELLING_DURATION=CA2
SKILL_CHANNELLING_DURATION_LEVEL_UP=CA5
SKILL_CHARGE_INSTANT=DA1
SKILL_CHARGE_DURATION=DA2
SKILL_AURA=AU
SKILL_AURA_ACTIVITY=A5
SKILL_GROUP_TOGGLE=TG
SKILL_BACK_STEP_INSTANT=DA3
SKILL_BACK_STEP_DURATION=DA4
SKILL_AURA_ACTIVITY2=A6
SKILL_PARTY_INSTANT=AP
SKILL_DUAL_PUMP1=DP1
SKILL_RACE_SPECIAL_PASSIVE=RP
SKILL_BLINK_INSTANT=DA5
SKILL_BACK_STEP_DURATION_WITH_TARGET_KNOCKBACK=DA6
 
SKILL_INSTANT=A1
SKILL_DURATION=A2
SKILL_DURATION_LEVEL_UP=A4
SKILL_SELFDURATION=A3
SKILL_PASSIVE=p
SKILL_TOGGLE=T
SKILL_CHANNELLING_INSTANCE=CA1
SKILL_CHANNELLING_DURATION=CA2
SKILL_CHANNELLING_DURATION_LEVEL_UP=CA5
SKILL_CHARGE_INSTANT=DA1
SKILL_CHARGE_DURATION=DA2
SKILL_AURA=AU
SKILL_AURA_ACTIVITY=A5
SKILL_GROUP_TOGGLE=TG
SKILL_BACK_STEP_INSTANT=DA3
SKILL_BACK_STEP_DURATION=DA4
SKILL_AURA_ACTIVITY2=A6
SKILL_PARTY_INSTANT=AP
SKILL_DUAL_PUMP1=DP1
SKILL_RACE_SPECIAL_PASSIVE=RP
SKILL_BLINK_INSTANT=DA5
SKILL_BACK_STEP_DURATION_WITH_TARGET_KNOCKBACK=DA6
Вот я их в сервере в enum видел тоже, но в скилл дате не нашел ничего похожего. Это для каких хроник актуально?
 
Вот я их в сервере в enum видел тоже, но в скилл дате не нашел ничего похожего. Это для каких хроник актуально?
Из этого списка в Glory Days есть до A6 (включительно). Выше хроних нету чтобы глянуть
 
Ааа, действительно. В 287 из шары тоже есть.
Спасибо)
 
Назад
Сверху Снизу