Interlude альтернатива abnormal effect'ам
Есть задача: создать визуальные эффекты на модельке персонажа на время действия каких-нибудь баффов/дебаффов на нём. Подобное в л2 уже есть, называется abnormal effect (сайленс, стан, корни и т.п.) Но свой abnormal в Interlude добавить довольно сложно (нужно редактировать engine.dll). Можно ли придумать какой-то обходной путь для реализации задачи?
У меня пока только одна идея: через анимацию каста (skill.usk) сделать непрекращающийся эффект на персонаже. Это работает, анимация держится на персонаже столько, сколько ей указываешь в skill.usk, но эта анимация не привязана к эффекту, который висит в строке баффов/дебаффов, т.е. если эффект снять раньше конца анимации - он всё равно будет отображаться, а если скилл скастовать несколько раз на одну цель визуальные эффекты накладываются друг на друга. Решить это видится возможным лишь привязкой анимации к своему эффекту в строке баффов/дебаффов. Для этого уже есть abnormal'ы, но с ними очень трудно работать. Возможно ли выполнить подобную привязку, чтобы не прибегать к abnormal? |
Re: Interlude альтернатива abnormal effect'ам
Цитата:
Код:
public enum AnotherAbnormals { Код:
<effect name="Buff" time="1" count="10" val="0" otherAbnormal="HealEffect"/> Запуск абнормалов в игре. Модифицируем код в родителе L2Effect.java по методу onAction который по дефолту является абстрактным и переделываем по дсебя: Код:
onAction() { effected.broadcastPacket(MagicSkillUse(_template.getOtherAbnormal().getId())) Каждый тик, эффект будет обрабатывать onAction метод, внутри которого будет ваша реализация broadcastPacket(MagicSkillUse) в который ID вы передаёте из otherAbnormal.getId(). Второй вариант, если нужно, чтобы эффекты работали и без тиков (это полная херня, и лучше сделать все эффекты тиковыми лол, если требуется конкретная реализация этой задачи). Вы вызываете при старте эффекта ThreadpoolManager.schedule(magicSkillUse) и устанавливаете время и период, но при отключении эффекта (при его завершении) надо будет обязательно его отменять аля task.cancel(), в противном случае - эффект будет бесконечным. ВАЖНО! Работать корректно будут только те эффекты, которые имеют onActionStartCast анимацию и ВСЁ. Т.е. нельзя будет запихнуть тикающий эффект например виндстрайка, т.к. он состоит из 3-ёх вижов анимации. |
Re: Interlude альтернатива abnormal effect'ам
Цитата:
Я похоу дурачек) Я просто больше по клиент части. Я так и не понял что к чему. точнее цепочку я понял. А вот как, что куда вписывать.... |
Re: Interlude альтернатива abnormal effect'ам
Сначала реши главную задачу - работоспособность.
Тебе понадобиться следующее: 1. Свой абнормал енум для простоты его юза в будущем https://mmo-develop.ru/attachments/s...t_1-png.26628/ 2. Найди код EffectDamOverTime.java и добавь что-то похожее на это https://mmo-develop.ru/attachments/s...t_2-png.26629/ Зайди в игру, и првоерь работспособность используя на цель любой скилл с таким эффектом, например Bleed (ID: 96) Жертва под кровотоком должна будет проигрывать анимацию бафа Might https://mmo-develop.ru/attachments/s...t_3-png.26630/ каждые N секунд установленные в эффекте. Если всё будет работать, дальше я уверен ты найдёшь как сделать так, чтобы такая хрень была автоматической - используя механизм парса эффектов (модифицуруя его собственноручно) Главную роль тут играет ID в енуме: 4365 я его взял не с небес. Это мгновенный эффект от Might бафа, с оффициальным названием: skill.mu.4365 в skillgrp.dat файле в папке system клиента. Оппортунизм в том, чтобы твой шарик летающий вокруг цели в течение всего времени эффекта, имел в исходах следующее говно: Это правильно, так эффект не будет тормозить чара и всё будет проигрываться как у мужика. https://mmo-develop.ru/attachments/s...t_4-png.26631/ А вот это - проигрываться будет только базово + будет тормозить игрока (будет своеобразный ступор происходить визуально) https://mmo-develop.ru/attachments/s...t_5-png.26632/ Смысл в том, что мгновенно эффект будет проигрываться только если установлено хоть 1 хоть 100 анимаций но в колонку CastingActions, никаких ShotActions и других не должно быть, иначе пососать. |
Текущее время: 12:33. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot