Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Interlude альтернатива abnormal effect'ам
#1
Есть задача: создать визуальные эффекты на модельке персонажа на время действия каких-нибудь баффов/дебаффов на нём. Подобное в л2 уже есть, называется abnormal effect (сайленс, стан, корни и т.п.) Но свой abnormal в Interlude добавить довольно сложно (нужно редактировать engine.dll). Можно ли придумать какой-то обходной путь для реализации задачи?
У меня пока только одна идея: через анимацию каста (skill.usk) сделать непрекращающийся эффект на персонаже. Это работает, анимация держится на персонаже столько, сколько ей указываешь в skill.usk, но эта анимация не привязана к эффекту, который висит в строке баффов/дебаффов, т.е. если эффект снять раньше конца анимации - он всё равно будет отображаться, а если скилл скастовать несколько раз на одну цель визуальные эффекты накладываются друг на друга. Решить это видится возможным лишь привязкой анимации к своему эффекту в строке баффов/дебаффов. Для этого уже есть abnormal'ы, но с ними очень трудно работать.

Возможно ли выполнить подобную привязку, чтобы не прибегать к abnormal?
Ответ
#2
Sharper Написал:Есть задача: создать визуальные эффекты на модельке персонажа на время действия каких-нибудь баффов/дебаффов на нём. Подобное в л2 уже есть, называется abnormal effect (сайленс, стан, корни и т.п.) Но свой abnormal в Interlude добавить довольно сложно (нужно редактировать engine.dll). Можно ли придумать какой-то обходной путь для реализации задачи?
У меня пока только одна идея: через анимацию каста (skill.usk) сделать непрекращающийся эффект на персонаже. Это работает, анимация держится на персонаже столько, сколько ей указываешь в skill.usk, но эта анимация не привязана к эффекту, который висит в строке баффов/дебаффов, т.е. если эффект снять раньше конца анимации - он всё равно будет отображаться, а если скилл скастовать несколько раз на одну цель визуальные эффекты накладываются друг на друга. Решить это видится возможным лишь привязкой анимации к своему эффекту в строке баффов/дебаффов. Для этого уже есть abnormal'ы, но с ними очень трудно работать.

Возможно ли выполнить подобную привязку, чтобы не прибегать к abnormal?

Abnormal данные для новых "аля эффектов".
Код:
public enum AnotherAbnormals {
    HealEffect(9999)
}

private final int id;

public AnotherAbnormals(int id) {
    this.id = id;
}

Модернизируем DocumentBase или то дерьмо которое отвечает за распарс effects в скилах, чтобы получить эффекты следующей (примерной) записью:
Код:
<effect name="Buff" time="1" count="10" val="0" otherAbnormal="HealEffect"/>

Теперь у нас есть возможность добавлять свои абнормалы и автоматом за счёт дерьмовой системы распарса - распаршивать их правильно.

Запуск абнормалов в игре.
Модифицируем код в родителе L2Effect.java по методу onAction который по дефолту является абстрактным и переделываем по дсебя:

Код:
onAction() {    effected.broadcastPacket(MagicSkillUse(_template.getOtherAbnormal().getId()))
}
Либо модифицировать эффекты с onAction, и в каждой реализации эффекта вроде EffectDamOverTime.java добавлять туда отсыл broadcast (или sendPacket если надо только чтобы цель видела данный эффект визуально (что снизит нагрузон)) пакета MagicSkillUse. Получим следующий механизм:

Каждый тик, эффект будет обрабатывать onAction метод, внутри которого будет ваша реализация broadcastPacket(MagicSkillUse) в который ID вы передаёте из otherAbnormal.getId().

Второй вариант, если нужно, чтобы эффекты работали и без тиков (это полная херня, и лучше сделать все эффекты тиковыми лол, если требуется конкретная реализация этой задачи). Вы вызываете при старте эффекта ThreadpoolManager.schedule(magicSkillUse) и устанавливаете время и период, но при отключении эффекта (при его завершении) надо будет обязательно его отменять аля task.cancel(), в противном случае - эффект будет бесконечным.

ВАЖНО!
Работать корректно будут только те эффекты, которые имеют onActionStartCast анимацию и ВСЁ. Т.е. нельзя будет запихнуть тикающий эффект например виндстрайка, т.к. он состоит из 3-ёх вижов анимации.
Ответ
#3
finfan Написал:Abnormal данные для новых "аля эффектов".
Код:
public enum AnotherAbnormals {
    HealEffect(9999)
}

private final int id;

public AnotherAbnormals(int id) {
    this.id = id;
}

Модернизируем DocumentBase или то дерьмо которое отвечает за распарс effects в скилах, чтобы получить эффекты следующей (примерной) записью:
Код:
<effect name="Buff" time="1" count="10" val="0" otherAbnormal="HealEffect"/>

Теперь у нас есть возможность добавлять свои абнормалы и автоматом за счёт дерьмовой системы распарса - распаршивать их правильно.

Запуск абнормалов в игре.
Модифицируем код в родителе L2Effect.java по методу onAction который по дефолту является абстрактным и переделываем по дсебя:

Код:
onAction() {    effected.broadcastPacket(MagicSkillUse(_template.getOtherAbnormal().getId()))
}
Либо модифицировать эффекты с onAction, и в каждой реализации эффекта вроде EffectDamOverTime.java добавлять туда отсыл broadcast (или sendPacket если надо только чтобы цель видела данный эффект визуально (что снизит нагрузон)) пакета MagicSkillUse. Получим следующий механизм:

Каждый тик, эффект будет обрабатывать onAction метод, внутри которого будет ваша реализация broadcastPacket(MagicSkillUse) в который ID вы передаёте из otherAbnormal.getId().

Второй вариант, если нужно, чтобы эффекты работали и без тиков (это полная херня, и лучше сделать все эффекты тиковыми лол, если требуется конкретная реализация этой задачи). Вы вызываете при старте эффекта ThreadpoolManager.schedule(magicSkillUse) и устанавливаете время и период, но при отключении эффекта (при его завершении) надо будет обязательно его отменять аля task.cancel(), в противном случае - эффект будет бесконечным.

ВАЖНО!
Работать корректно будут только те эффекты, которые имеют onActionStartCast анимацию и ВСЁ. Т.е. нельзя будет запихнуть тикающий эффект например виндстрайка, т.к. он состоит из 3-ёх вижов анимации.


Я похоу дурачек) Я просто больше по клиент части. Я так и не понял что к чему. точнее цепочку я понял. А вот как, что куда вписывать....
Ответ
#4
Сначала реши главную задачу - работоспособность.

Тебе понадобиться следующее:

1. Свой абнормал енум для простоты его юза в будущем
[Изображение: screenshot_1-png.26628]

2. Найди код EffectDamOverTime.java и добавь что-то похожее на это
[Изображение: screenshot_2-png.26629]

Зайди в игру, и првоерь работспособность используя на цель любой скилл с таким эффектом, например Bleed (ID: 96)

Жертва под кровотоком должна будет проигрывать анимацию бафа Might [Изображение: screenshot_3-png.26630] каждые N секунд установленные в эффекте.

Если всё будет работать, дальше я уверен ты найдёшь как сделать так, чтобы такая хрень была автоматической - используя механизм парса эффектов (модифицуруя его собственноручно)

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

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

Это правильно, так эффект не будет тормозить чара и всё будет проигрываться как у мужика.
[Изображение: screenshot_4-png.26631]

А вот это - проигрываться будет только базово + будет тормозить игрока (будет своеобразный ступор происходить визуально)
[Изображение: screenshot_5-png.26632]

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


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Интерфейс и анимация Chronicle 1 на Interlude/Chronicle 4 Exsender 5 3,913 07-06-2023, 03:06 PM
Последний пост: Exsender
  High Silenos монстры со звуками и атаками для Interlude и High Five L2jm 1 1,516 01-14-2022, 08:48 AM
Последний пост: L2jm
  (Шара) Ant Queen Hole Skill для Lineage 2 Interlude от NevesOma L2jm 0 1,387 01-16-2021, 11:00 PM
Последний пост: L2jm
  (Шара) Меч с эффектом реального Сердцебиения для Lineage 2 Interlude от NevesOma L2jm 1 1,561 01-08-2021, 08:05 AM
Последний пост: Howli
  [Шара] Blue Hero Aura визуал эффект для Interlude от NevesOma L2jm 0 1,600 12-24-2020, 10:30 PM
Последний пост: L2jm
  NPC с Эффектом Огненный стенд от NevesOma для Interlude, High Five, Gracia L2jm 0 1,110 11-05-2020, 12:32 AM
Последний пост: L2jm
  Scarlet Van Halisha - исправленный стандартный баг с эффектом на Interlude L2jm 0 1,168 10-22-2020, 02:58 PM
Последний пост: L2jm
  [Шара]Хиро визуал эффект для Interlude L2jm 1 2,014 10-22-2020, 12:15 PM
Последний пост: Raspiro
  C1 Hydro Blast skill для Interlude FREE от NevesOma L2jm 1 1,866 09-19-2020, 02:08 PM
Последний пост: ivashk
  interface.xdat Interlude 2 строки Tiger7th 1 2,446 08-20-2020, 06:41 PM
Последний пост: Pandorum

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)