Показать сообщение отдельно
Непрочитано 13.08.2019, 21:06   #3
Пользователь

По умолчанию Re: Interlude альтернатива abnormal effect'ам

Цитата:
Сообщение от 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-ёх вижов анимации.

Я похоу дурачек) Я просто больше по клиент части. Я так и не понял что к чему. точнее цепочку я понял. А вот как, что куда вписывать....
VladislavManukhov вне форума Ответить с цитированием