PTS script info.

VoicesVoicesVoices

Dreams Blacker than Death
Сообщения
1 257
Лайки
960
Итак. Раз уж 150 тысяч человек написали про то, как верно будет читать ПТС скрипты и где искать нужную инфу - ловите.
Сразу скажу - особо запотевать на 10 страниц я не буду, я лишь дам вводную информацию, что бы вы могли ориентироваться, а дальше - всё в ваших руках.

Для вашего проекта есть 2 пакета скриптов:

High Five - https://yadi.sk/d/lqbYG6DU3M9Zt2

Gracia Final (почти всегда можно сверять с Эпилогом) - https://yadi.sk/d/mtq4zU0S3M9ZsV


Собственно пока что мы пройдёмся по параметрам строки (взял отсюда, но дополнил и подправил):

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 - активный скилл.
  • 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 и делаем следующее:
screenshot_2557.png

После чего кликаем на знакомую иконку и в адресной строке получаем ссылку типа - https://l2kc.ru/skill/358/1

Где:
358 - ID.
1 - Уровень.

Теперь, когда мы знаем как найти скилл, идём обратно в наш текстовик и ищем наиболее простым способом:
Берём вот эту часть из первого попавшегося скилла skill_id = 3 и заменяем 3 на 358 в окне поиска (обычно ctrl+f).

После через переезжаем на нужную строчку:
skill_begin skill_name = [s_bluff1] /* [블러프] */ skill_id = 358 level = 1 operate_type = A2 magic_level = 77 self_effect = {} effect = {{i_align_direction;80};{i_target_cancel;80};{i_delete_hate_of_me;80};{p_block_act}} end_effect = {} operate_cond = {{equip_weapon;{dagger;dualdagger}}} is_magic = 0 mp_consume2 = 35 cast_range = 40 effective_range = 400 skill_hit_time = 1 skill_cool_time = 0 skill_hit_cancel_time = 0.5 reuse_delay = 8 activate_rate = 40 lv_bonus_rate = 1 basic_property = men abnormal_time = 9 abnormal_lv = 1 abnormal_type = stun abnormal_instant = 0 irreplaceable_buff = 0 buff_protect_level = 0 attribute = {attr_none;0} trait = {trait_derangement} effect_point = -1 target_type = enemy_only affect_scope = single affect_limit = {0;0} next_action = none abnormal_visual_effect = {ave_stun} debuff = 1 ride_state = {@ride_none} multi_class = 0 olympiad_use = 1 skill_end

Предположим, вас давно интересовало, как работает Bluff. Ну давайте попробуем узнать.

Обычно, главная часть всей информацией (если вас не интересуют откаты и прочее), содержится после effect =
В нашем случае мы имеем приличный кусок эффектов:
{{i_align_direction;80};{i_target_cancel;80};{i_delete_hate_of_me;80};{p_block_act}}

Теперь немного инфы о том чё и как.

Как правило, все названия эффектов интуитивно понятны даже людям с минимальным знанием английского.

  • Имя эффекта пишется вначале, например: 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уеть можно.
Если вы не понимаете какой-то параметр или момент в том или ином скилле - задавайте вопрос, разберёмся.
 
Последнее редактирование:

Losenok

слабый гнум(
Сообщения
3 122
Лайки
5 249
Ничего не изменится
Столько текста и все зря короч, кто хотел - тот давно все нашел и сделал
 

Thaumaturgy

Твой родственник
Сообщения
2 214
Лайки
667
  • is_magic = 0 - скорость каста скилла и откат зависят от каст спида
  • is_magic = 1 - скорость каста скилла и откат зависят от атак спида
Наоборот, братан. Ща дальше почитаем.
 

lgodzz

Моё почтение, я мастер клинка
Сообщения
2 179
Лайки
1 746
  • affect_limit = {0;0} - минимальное и максимальное количество обрабатываемых целей, если 0;0 то нет ограничения.
Это не минимальное и максимальное количество целей. А количество целей в пвп\пве
 

lgodzz

Моё почтение, я мастер клинка
Сообщения
2 179
Лайки
1 746
Кароче есть че исправить и расписать, но мне впадлу. Спс за скриптых ХФ(есди это хф, а не фрея), может пригодятся.
 

Thaumaturgy

Твой родственник
Сообщения
2 214
Лайки
667
Кароче есть че исправить и расписать, но мне впадлу. Спс за скриптых ХФ(есди это хф, а не фрея), может пригодятся.
ХФ, да, только есть там погрешности некоторые, несоответствия той же версии РПГ клаба или Руоффа.
 

Thaumaturgy

Твой родственник
Сообщения
2 214
Лайки
667
Здарова брат. Да я в курсах, я с ммо-девелопа эту часть скопировал, так шо полехче. Пожру - исправлю.
Короче гайд на троечку, братан.
Правильно описаны и без того очевидные параметры, а там, где не все так прозрачно - инфы либо мало, либо она неправдива. К примеру оп_тайпы, скилл_кул_тайм, скилл_хит_канцел_тайм, может и другие.
Тем, кто уже фиксил что-то по птс скриптам - гайд наверно бесполезен.
Тем, кто умеет только ныть - он бесполезен, они не станут это читать и ваще не поймут почему кого-то волнует ПТС, главное ведь баланс.
Чем-то полезен будет только начинающим, в основном из-за ссылок на скрипты и каким-то пояснениям по параметрам, чтобы им даже извилину напрягать не пришлось. Но и тут играет роль тот момент, что по очевидным параметрам сервера и так давно уже зафикшены на 99%.
 

VoicesVoicesVoices

Dreams Blacker than Death
Сообщения
1 257
Лайки
960
Короче гайд на троечку, братан.
Правильно описаны и без того очевидные параметры, а там, где не все так прозрачно - инфы либо мало, либо она неправдива. К примеру оп_тайпы, скилл_кул_тайм, скилл_хит_канцел_тайм, может и другие.
Тем, кто уже фиксил что-то по птс скриптам - гайд наверно бесполезен.
Тем, кто умеет только ныть - он бесполезен, они не станут это читать и ваще не поймут почему кого-то волнует ПТС, главное ведь баланс.
Чем-то полезен будет только начинающим, в основном из-за ссылок на скрипты и каким-то пояснениям по параметрам, чтобы им даже извилину напрягать не пришлось. Но и тут играет роль тот момент, что по очевидным параметрам сервера и так давно уже зафикшены на 99%.
Да нормально, чё ты начал-то. Когда дохуя пишешь - всегда забываешь дописать что-то. Дополню, наверное.
Но забавно что ты так заботишься про не умных людей.
Спасибо.
 

VoicesVoicesVoices

Dreams Blacker than Death
Сообщения
1 257
Лайки
960
И получили рефлект талик с временем действия 10 сек в зашарке, ага.
Ну это такое, да. Но если знаешь как должно быть - такие мелочи отпадают.


Слыш, у нас тут спор с товарищем выше возник. И раз уж мы все трое тут - давай попробуем.

Вот есть во всяких зеолото-иконо-лайонхёртах - p_resist_dispel_by_category;slot_buff;
А в белом талике - p_resist_dispel_by_category;slot_all

Он мне доказывает, что slot_buff - не селфовый резист, а резист по строчке. И что всякий "зеолото-иконо-лайонхёрт" будет резистить строку.

Может скажешь кто тупой? Может я? Ведь именно ты говорил что все эти эффекты от канцела - селфовые и резистят только сам бафф.
 

Thaumaturgy

Твой родственник
Сообщения
2 214
Лайки
667
Может скажешь кто тупой? Может я? Ведь именно ты говорил что все эти эффекты от канцела - селфовые и резистят только сам бафф.
Четко ты стрелы метнул. Я это говорил в 2012, может в 2013 году. А потом я это дело немного потестил, ФМ-у сообщил как должно быть, а на форумах только кивал в ответ на селфовый резист. Ну чтобы не распространять правильную механику дальше реализаци внутри сборки. И моя политика не изменилась.

Кстати канцелы я полноценно не дотестил, так что распинаться все равно не стал бы, я отвык говорить непроверенные вещи.
 

APXAH

Барон
Сообщения
128
Лайки
26
Ну это такое, да. Но если знаешь как должно быть - такие мелочи отпадают.


Слыш, у нас тут спор с товарищем выше возник. И раз уж мы все трое тут - давай попробуем.

Вот есть во всяких зеолото-иконо-лайонхёртах - p_resist_dispel_by_category;slot_buff;
А в белом талике - p_resist_dispel_by_category;slot_all

Он мне доказывает, что slot_buff - не селфовый резист, а резист по строчке. И что всякий "зеолото-иконо-лайонхёрт" будет резистить строку.
На скрайде, и всех ХФ где я играл, в случае с зеалотом, резист идет только на бафы (те которые 24 ) обращал внимание что по сонгам канцел идет нормально, а на бафах уже слишком сильный разброс (А может и не обратил внимание, сонги так похожи все)
А в случае с таликом, то возможно пашет и на бафы, и на сонги, и на тригерры
 

APXAH

Барон
Сообщения
128
Лайки
26
На скрайде, и всех ХФ где я играл, в случае с зеалотом, резист идет только на бафы (те которые 24 ) обращал внимание что по сонгам канцел идет нормально, а на бафах уже слишком сильный разброс (А может и не обратил внимание, сонги так похожи все)
А в случае с таликом, то возможно пашет и на бафы, и на сонги, и на тригерры
P.S. Исключительно предположение исходя из работы на серверах ( хотя может везде работает криво)
 
Верх