Interlude альтернатива abnormal effect'ам(вечный эффект).

Vladislav

Последний из атеистов
Участник
Сообщения
14
Розыгрыши
0
Репутация
0
Реакции
0
Баллы
833
Хроники - Interlude:

Задача была такова, что бы сделать вечный эффект. Пока висит бафф на персонаже, действует и эффект( к примеру вокруг перса летает зеленый шар. 19 минут длиться бафф - 19 минут летает зеленый шарик). Как сделать?

Знаю, такая система есть, и это абнормал скиллы. Подобиеслипа, сайлэнса, поизона и тд.. Но с абнормалами есть много замарочек. Не каждый его осилит. 100% есть какойто обходной путь.

Есть свои файлы - TestSkill.usx, TestSkill.u, TestSkill.utx, TestSkill.usk. Поправил файл .uc, указал длительность жизни эффекта. Все работает. Бафаю перса, бафф накладываеться, эффект шарика крутиться. Но если кинуть сайлэнс или сбросить бафф!, то сам бафф пропадает, а эффект остается....

Как добиться того, что бы сделать вечный эффект - завязанный на скиле.??
 

Я же вам уже отвечал на ZG форуме, что было непонятно? - спрашивайте.
Единственный выход через код - завязка на Effect.java в onAction методе посредством отсылкой пакета, который дёргает MagicSkillUse с аргументом ID = ID вашего эффекта. При этом сам эффект в вашем usk должен иметь только 1 шотовый экшен.

Второй вариант более правильный: там в эффектах есть херня вроде времени жизни партиклей где вы должны указать свои 19 минут в милисекундах. Минус такого метода, что если баф висит больше или меньше, партикль всё равно будет жить столько, сколько вы указали.
 
Последнее редактирование:
Я похоу дурачек) Я просто больше по клиент части. Я так и не понял что к чему. точнее цепочку я понял. А вот как, что куда вписывать....
 
Сначала реши главную задачу - работоспособность.
Тебе понадобиться следующее:
1. Свой абнормал енум для простоты его юза в будущем
Screenshot_1.png

2. Найди код EffectDamOverTime.java и добавь что-то похожее на это
Screenshot_2.png

Зайди в игру, и првоерь работспособность используя на цель любой скилл с таким эффектом, например Bleed (ID: 96)
Жертва под кровотоком должна будет проигрывать анимацию бафа Might Screenshot_3.png каждые N секунд установленные в эффекте.
Если всё будет работать, дальше я уверен ты найдёшь как сделать так, чтобы такая поебень была автоматической используя механизм парса эффектов (модифицуруя его собственноручно)

Главную роль тут играет ID в енуме: 4365 я его взял не с небес. Это мгновенный эффект от Might бафа, с оффициальным названием: skill.mu.4365 в skillgrp.dat файле в папке system клиента.

Главная оппортунация в том, чтобы твой шарик летающий вокруг цели в течение всего времени эффекта, имел в исходах следующее говно:

Это правильно, так эффект не будет тормозить чара и всё будет проигрываться как у мужика.
Screenshot_4.png

А вот это - проигрываться будет только базово + будет тормозить игрока (будет своеобразный ступор происходить визуально)
Screenshot_5.png

Смысл в том, что мгновенно эффект будет проигрываться только если установлено хоть 1 хоть 100 анимаций но в колонку CastingActions, никаких ShotActions и других не должно быть, иначе пососать.
 
ТОлько это так себе идея, постоянно броадкастить такую фигню...
 
выложите уже интерлюдерам пакетку и адаптированный клиент любой версии что повыше :OnionHead:

старичок ил уже устал, хочет на покой
 
Не помню что в ит по абнормалам, но самый простой способ просто взять не задействованный абнормал и изменить ему эффект на уровне клиента.
 
выложите уже интерлюдерам пакетку и адаптированный клиент любой версии что повыше :OnionHead:

старичок ил уже устал, хочет на покой
Им проще к айону его прикрутить, там свистоперделки из коробки :D
 
Тот вариант с тиком получился. Но конечно самый жирный минус, что при ударе моба блиидом, на мобе появляется моя анимация, появляется кусками. А т.е 1 сек шарик крутиться, пропадает, 1 сек шарик крутиться, пропадает, и так пока не закончится бафф на мобе.

Вопрос, может кто подскажет.. Есть ли этому обход???? В самом эффекте есть строчка жизни эффекта ("LifeTimeRange =...) Возможно ли как-то в яве, сделать запрос или проверку, что пока висит такойто бафф, то LifeTimeRange = времени баффа. Ну или пока висит бафф, и когда он пропадает, то LifeTimeRange удалиться или =false, не очень силен в программинге, а точнее вообше не силен... Как система кансела.
Если у меня бафф = 19 минутам, я ставлю анимацию эффекта LifeTimeRange=19 минутам., но когда бафф пропал, пропадает и эффект.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
По примеру РУТА (рут у сапов) - смотри

Вы пытаетесь запихнуть то что уже есть, такие еффекты есть - их перебрать в девмоде можно
 
Тот вариант с тиком получился. Но конечно самый жирный минус, что при ударе моба блиидом, на мобе появляется моя анимация, появляется кусками. А т.е 1 сек шарик крутиться, пропадает, 1 сек шарик крутиться, пропадает, и так пока не закончится бафф на мобе.

Вопрос, может кто подскажет.. Есть ли этому обход???? В самом эффекте есть строчка жизни эффекта ("LifeTimeRange =...) Возможно ли как-то в яве, сделать запрос или проверку, что пока висит такойто бафф, то LifeTimeRange = времени баффа. Ну или пока висит бафф, и когда он пропадает, то LifeTimeRange удалиться или =false, не очень силен в программинге, а точнее вообше не силен... Как система кансела.
Если у меня бафф = 19 минутам, я ставлю анимацию эффекта LifeTimeRange=19 минутам., но когда бафф пропал, пропадает и эффект.

Сервер не отсылает клиенту пакеты типа: "тут мне партикли надо отключить, возьмись как за дело." Если вы поставите время пратиклей равное времени бафа то партикль исчезнет только через 19 минут и плевать что эффекта уже нет на цели.
Самый правильный вариант это найти клиент девов deMEV или Repsect и узнать у них про введение абнормалов ну и конечно оплатить сразу работу ;D.
 
Большой просто "Эксперт" по слизыванию чужой инфы и наработок и выдаванию за свое .
Вообще л2 и клиентом очень давно не занимается, и за 100$ подобными пустиками заниматься не будет, в принципе и я тоже и любой адекватный разраб.
Тут вообще никого толком не осталось, так что только своими усилиями, берете иду и копайтесь .
Года 3 назад
Делал подобную ерунду, ничего там особенного нету, самый простой способ это взять эффект(из Lineageffect.u) использующийся в каком то не нужном Абнормале, и заменить его на свой( соотвественно перекомпилировать lineageeffect.u), есть еще вариант чуть по проще/Сложнее, в самом Engine.dll или Nwindow( уже не помню) указывается пэкэдж и название эффекта, там можно изменить( с Lineageffect.effect0 , на yourEffect.effect0), но остается одна проблема, список абнормалов там строго прописан, и вообще чтобы правильно его расширить желательно разобрать весь метод, а еще возможно пакетку( но это мало вероятно ), но в идеале вам же нужно чтобы сервак отправлял свободной индекс абнормала( но это геморой), а не уже существующий(это проще) .
В общем ничего особенного ( пару дней или недельку убьете и может получите что хотели) ну либо платите
 
Еще в теории можно постучаться к писателям защит, типа стрикса например, чтобы они через защиту инжектили свой код, позволяющий к примеру расширить список абнормалов. Но это думаю тоже будет стоить нехилых денег :)
Или реально переезжать на хроники свежее - там вобще по идее можно просто и спокойно менять эффекты абнормалов/добавлять свои абнормалы, ибо все расписано в датниках.

пример:
Код:
abnormal_default_effect_begin    id=68    effect_name=[LineageEffect.d_nochat_ave]    is_screen_effect=0    is_attach_to_ground=0    attach_bone_name=[e_bone]    attach_type=1    offset_position={0.0;0.0;10.0}    is_scaling_by_cylinder=0    is_locate_on_foot=0    effect_scale=1.0    posteffect_id=0    abnormal_default_effect_end
abnormal_default_effect_begin    id=69    effect_name=[LineageEffect.d_herb_power_ave]    is_screen_effect=0    is_attach_to_ground=0    attach_bone_name=[None]    attach_type=1    offset_position={0.0;0.0;0.0}    is_scaling_by_cylinder=0    is_locate_on_foot=0    effect_scale=1.0    posteffect_id=0    abnormal_default_effect_end
abnormal_default_effect_begin    id=70    effect_name=[LineageEffect.d_herb_magic_ave]    is_screen_effect=0    is_attach_to_ground=0    attach_bone_name=[None]    attach_type=1    offset_position={0.0;0.0;0.0}    is_scaling_by_cylinder=0    is_locate_on_foot=0    effect_scale=1.0    posteffect_id=0    abnormal_default_effect_end
 
Вот что действительно проблема, это то что видать в dll указанно куда атачить эффект абнормола( /HF
 
ну в старых хрониках да, скорее всего
в новых то как видишь можно явно указать куда в модели прицепить эффект абнормала, а то и вобще просто на землю наложить, а не на саму тушку нпс/перса.

кстати с is_screen_effect=1 по моему ни одного абнормала нет, подобное я видел только в нпс стейтах некоторых невидимых неписей и то вроде только один вид эффекта - когда подходишь достаточно близко к такому неписю, то экран начинает покрываться инеем.
 
Последнее редактирование:
Назад
Сверху Снизу