Итак. Раз уж 150 тысяч человек написали про то, как верно будет читать ПТС скрипты и где искать нужную инфу - ловите.
Сразу скажу - особо запотевать на 10 страниц я не буду, я лишь дам вводную информацию, что бы вы могли ориентироваться, а дальше - всё в ваших руках.
Для вашего проекта есть 2 пакета скриптов:
High Five -
https://yadi.sk/d/lqbYG6DU3M9Zt2
Gracia Final (
почти всегда можно сверять с Эпилогом) -
https://yadi.sk/d/mtq4zU0S3M9ZsV
Собственно пока что мы пройдёмся по параметрам строки (взял
отсюда, но дополнил и подправил):
Описание параметров:
- skill_begin - начало скилла
- skill_name = [s_wyvern_breath] - название скилла (на которое ссылаются извне, например из itemdata)
- /* [와이번 브레스] */ - Комментарий на корейском языке
- skill_id = 4289 - ID Скилла
- level = 1 - Уровень скилла
- operate_type = P - пассивный, А1 или А2 - активный скилл.
- magic_level = 60 - Уровень с которого персонаж может использовать данный скил
- effect = - Что умеет скилл. Список эффектов.
- operate_cond = {{op_wyvern}} - условия использования скилла
- is_magic = 1 - скорость каста скилла и откат зависят от каст спида
- is_magic = 0 - скорость каста скилла и откат зависят от атак спида
- is_magic = 2 - фиксированые скорость каста скилла и откат ни от чего не зависят aka SOE, свиток воскрешения etc.
- mp_consume2 = 400 - Сколько требует MP
- cast_range = 700 - Дальность выстрела данным скиллом
- effective_range = 1200 - Максимальная дальность при касте скилла. Если начал с 900 ренджей, а у скилла предел 1200 - в момент выхода из радиуса каст скилла отменяется.
- skill_hit_time = 3.6 - Время каста скилла
- skill_cool_time = 0 - фриз после каста, если поставить параметр "3" это будет значить что после каста скилла чар будет 3 секунды стоять как бы заморожен, нельзя будет двигаться, кастовать
- skill_hit_cancel_time = 3.6 - То время, за которое можно отменить\спрятаться за стенкой от скилла (около-докаст).
- reuse_delay = 6 - Откат скила
- attribute = attr_fire - тип скилла (водяной, ветряной, темная атака например..)
- effect_point = -1500 - используется для повышения эффективности аггра у мобов
- target_type = wyvern_target - тип цели, на которую кастуется скилл. В данном случае только на другую виверну
- affect_scope = wyvern_scope - как выбирается цель (одиночная, на себя, диапазон, аура)
- affect_object = wyvern_object - как выбирается цель (одиночная, на себя, диапазон, аура)
- affect_limit = {0;0} - число целей в пвп\пве.
- next_action = none - Выполнение команды после использовании скила
- ride_state = {@ride_wyvern} - описывает, можно ли юзать скилл сидя на страйдере/виверне и так далее
- skill_end - окончание скила
Дополненное:
- lv_bonus_rate=2 - Модификатор бонуса шанса от уровня скилла.
- magic_level = ** - Дополнительно является модифицируемым числом, при расчёте шанса.
- reuse_delay_lock = 1 - Статический откат скилла. Используется (к примеру) в Death Shot\Multiple Shot. Флаги D\S используются для сохранения данных скиллов типа банок с откатом в сутки и прочим подобным. Требуется для взаимодействия с сервером.
- buff_protect_level - Предположительно защита баффов от каких-то воздействующих условий (?)
- affect_range = 200 - радиус действия эффекта от цели каста, юзается в массовых скилах.
- activate_rate=50 - Базовый шанс скилла в %, от которого начинается последующий расчёт шанса. Бустится заточкой скилла на шанс (например).
Ну и хватит об этом. Если кто-то хочет дополнить - прошу, внесу инфу который не хватает.
Теперь разберём самое главное - то, как мы ищем и читаем информацию:
Изначально, скачав один из архивов, вы увидите туеву хучу текстовых файлов. На данном этапе понадобится лишь несколько, но сейчас о главном оружиее -
Skilldata.txt.
Советую открывать такие файлы программой
Notepad++ или аналогичными, т.к. вес у них существенный и обычный блокнот может зависнуть на пару минут.
Итак, открыв файл мы видим очень и очень много строк, как разобраться?
Расскажу на примере скилла
Bluff.
Всё что нам нужно знать -
ID скилла.
Следуем в самую удобную для поиск
ID базу -
l2kc.ru и делаем следующее:
После чего кликаем на знакомую иконку и в адресной строке получаем ссылку типа -
https://l2kc.ru/skill/358/1
Где:
358 - ID.
1 - Уровень.
Теперь, когда мы знаем как найти скилл, идём обратно в наш текстовик и ищем наиболее простым способом:
Берём вот эту часть из первого попавшегося скилла
skill_id = 3 и заменяем
3 на
358 в окне поиска (обычно ctrl+f).
После через переезжаем на нужную строчку:
Предположим, вас давно интересовало, как работает
Bluff. Ну давайте попробуем узнать.
Обычно, главная часть всей информацией (если вас не интересуют откаты и прочее), содержится после
effect =
В нашем случае мы имеем приличный кусок эффектов:
Теперь немного инфы о том чё и как.
Как правило, все названия эффектов интуитивно понятны даже людям с минимальным знанием английского.
- Имя эффекта пишется вначале, например: i_align_direction; это разворот цели спиной.
- Цифра после: ;80 - то, с каким шансом цель повернётся спиной. Стоит заметить, что шанс не статичный, об этом ниже.
- Есть и общие для многих скиллов вещи, например: p_block_act - этот товарищ отвечает за потерю контроля над персонажем, когда мы получили Stun.
Если вы наблюдательны, то заметили, что у каждого эффекта шанс содержится в своих скобках, следовательно: Каждый шанс - сам по себе и проходят они независимо друг от друга. Вот таким образом это и узнаётся.
Разберём ещё несколько актуальных параметров из
Bluff'a (почти все актуальны для всех скиллов, которые вам интересны):
- operate_type = A2 - Тип скилла. P - пассивный, А1 - скилы с эффектами однократного(i_), A2 скилы с временными(p_ которые висят на чаре) эффектами, так же возможны в паре и однократные эффекты. DA1 - тоже, что и A1, только в начале каста, чар подлетает к цели, DA2 тоже, что и A2, только в начале каста, чар подлетает к цели.
- operate_cond = {{equip_weapon;{dagger;dualdagger}}} - на этом моменте указывается то, с чем, по PTS условиям, может быть использован Bluff.
- mp_consume2 = 35 - один из интересных моментов. У дагерщиков существует только параметр mp_consume2, но где mp_consume1? А его нет. Для непонимающих - почти все скиллы состоят из двух потреблений в начале каста и в конце. Примера ради - если вы съюзали Maximum Clarity, то начальный mp_consume1 - будет жрать свою капельку маны, что делает Maximum Clarity не 100%-ым. Но в случае с скиллами ножа, у которых нет mp_consume1 - потребление маны становится нулевым.
- basic_property = men - базовый параметр резиста. В нашем случае это параметр MEN. И да, он действительно зависим от этого параметра, а не от CON, как могло показать сначала. Так же зависим от ментальных резистов. Из этого параметра расчитывается шанс.
- abnormal_time = 9 - то время, которое провисит скилл при отсутствии какого-либо резиста. При наличии всех возможных резистов время падает, но не более чем на 50% от максимального.
- activate_rate = 40 - базовый шанс в % (если у эффектов шанс прописан лично - они считаются отдельно).
- abnormal_type = stun - собсна чё он такое по сущности. В нашем случае стан.
- аttribute = {attr_none;0} - завязан ли скилл на атрибуте.
- reuse_delay = 8 - откат. Если откат не статический - разгоняется баффами на откат, в зависимости от пренадлежности (физический\магический).
- trait = {trait_derangement} - один из важных моментов, так называемый трейт. Но что такое трейт? Трейт это резист (дополнительный к basic_property), который идёт от эквипа. Что бы узнать какая вещь даёт тот или иной скилл - нужно найти её ID и провернуть всё то, о чём я говорил выше. К примеру trait_derangement имеют серьги антараса\закена.
- abnormal_visual_effect = {ave_stun} - собсна то, что мы видим над целью. Например тут это стан, значит звёздочки над башкой.
Стоит так же заметить, что все уровни скилла идут последовательно, включая заточку. Сначала идёт скилл от 1 до последнего уровня, а после его ветки заточек. Так что внимательнее к названиям строк, например обычный блафф будет называться
[s_bluff1], а с заточкой на шанс уже
[s_bluff_chance1].
Думаю со Skilldata.txt всё более или менее понятно. Если есть желание - этих данных вам хватит, что бы разобраться и уйти глубже.
Теперь перейдём к побочным текстовикам, о которых я много трепаться не буду, лишь кратко опишу те, на которых стоит заострить внимание.
- CubicData - инфа о кубиках и аггатионах (хрене что висит рядом с головой).
- ArmorEnchantBonusData - бонусы хп от заточки армора. Grade-S - весь армор до S86 включительно.
- expdata - простая таблица опыта на каждый уровень.
- instantzonedata - описание и условия инст-зон.
- itemdata - тоже самое что и Skilldata, только для итемов.
- manordata - манор. Некоторые ловили профит, я даже не открывал.
- multisell - PTS мультиселл.
- npcpos\npcdata - полезно для отладки НПЦ на сервере.
- optiondata - бонусы лсов\ольфов и прочей дряни.
- PC_parameter - таблица хп\цп\мп для всех проф, на каждый уровень.
- petdata - данные петов.
- transform - информация о трасоформах.
- UserBasicAction - взаимодействие.
Я бы написал больше - но если разбирать каждый скил по полочкам - оxуеть можно.
Если вы не понимаете какой-то параметр или момент в том или ином скилле - задавайте вопрос, разберёмся.