[High Five] Как привязать эффект свечения руки к экипированному талисману?

Arinvint

Путник
Участник
Сообщения
16
Розыгрыши
0
Репутация
11
Реакции
6
Баллы
19
Хроники
  1. Chaotic Throne: High Five
Исходники
Отсутствуют
Сборка
Mobius
Всем привет. Сборка L2J Mobius High Five.


Есть несколько кастомных талисманов, которые надеваются в слоты браслета. Хочу добавить визуальный эффект свечения руки, пока определённый талисман экипирован. После снятия или замены талисмана эффект должен автоматически исчезать.


Подскажите, пожалуйста, где правильнее реализовать такую привязку:


  • через клиентские ItemEffect/DAT-файлы;
  • через пассивный скилл с визуальным эффектом;
  • либо обработкой экипировки на стороне сервера?

Желательно, чтобы эффект видели окружающие игроки, а не только владелец персонажа.


Если это делается через LineageEffect, skill.usk или другой клиентский пакет, подскажите направление и какие строки DAT отвечают за связь предмета с эффектом.


Заранее спасибо.
 
Через абнормалы можешь навешать например.
 
Через абнормалы можешь навешать например.
Спасибо. Правильно понимаю, что эффект нужно добавить в пассивный skill талисмана через abnormal visual effect?
Подскажите, пожалуйста, какой именно параметр используется в High Five/Mobius: abnormalVisualEffect, abnormalType, abnormalEffect или отдельный effect handler?
 
Абнормалы захардкожены в старых клиентах.
Java:
package org.l2jmobius.gameserver.mechanics.skill;

/**
 * Abnormal Visual Effect enumerated.
 * @author DrHouse, Zoey76
 */
public enum AbnormalVisualEffect
{
    NONE(0x0000000, 0),
    DOT_BLEEDING(0x00000001, 0),
    DOT_POISON(0x00000002, 0),
    DOT_FIRE(0x00000004, 0),
    DOT_WATER(0x00000008, 0),
    DOT_WIND(0x00000010, 0),
    DOT_SOIL(0x00000020, 0),
    STUN(0x00000040, 0),
    SLEEP(0x00000080, 0),
    SILENCE(0x00000100, 0),
    ROOT(0x00000200, 0),
    PARALYZE(0x00000400, 0),
    FLESH_STONE(0x00000800, 0),
    DOT_MP(0x00001000, 0),
    BIG_HEAD(0x00002000, 0),
    DOT_FIRE_AREA(0x00004000, 0),
    CHANGE_TEXTURE(0x00008000, 0),
    BIG_BODY(0x00010000, 0),
    FLOATING_ROOT(0x00020000, 0),
    DANCE_ROOT(0x00040000, 0),
    GHOST_STUN(0x00080000, 0),
    STEALTH(0x00100000, 0),
    SEIZURE1(0x00200000, 0),
    SEIZURE2(0x00400000, 0),
    MAGIC_SQUARE(0x00800000, 0),
    FREEZING(0x01000000, 0),
    SHAKE(0x02000000, 0),
    BLIND(0x04000000, 0),
    ULTIMATE_DEFENCE(0x08000000, 0),
    VP_UP(0x10000000, 0),
    REAL_TARGET(0x20000000, 0),
    DEATH_MARK(0x40000000, 0),
    TURN_FLEE(0x80000000, 0),
    VP_KEEP(0x10000000, 0), // TODO: Find.
    // Special
    INVINCIBILITY(0x000001, 1),
    AIR_BATTLE_SLOW(0x000002, 1),
    AIR_BATTLE_ROOT(0x000004, 1),
    CHANGE_WP(0x000008, 1),
    CHANGE_HAIR_G(0x000010, 1),
    CHANGE_HAIR_P(0x000020, 1),
    CHANGE_HAIR_B(0x000040, 1),
    STIGMA_OF_SILEN(0x000100, 1),
    SPEED_DOWN(0x000200, 1),
    FROZEN_PILLAR(0x000400, 1),
    CHANGE_VES_S(0x000800, 1),
    CHANGE_VES_C(0x001000, 1),
    CHANGE_VES_D(0x002000, 1),
    TIME_BOMB(0x004000, 1), // High Five
    MP_SHIELD(0x008000, 1), // High Five
    NAVIT_ADVENT(0x080000, 1), // High Five
  
    // Event
    // TODO: Fix, currently not working.
    BR_NONE(0x000000, 2),
    BR_AFRO_NORMAL(0x000001, 2),
    BR_AFRO_PINK(0x000002, 2),
    BR_AFRO_GOLD(0x000004, 2),
    BR_POWER_OF_EVA(0x000008, 2), // High Five
    BR_HEADPHONE(0x000010, 2), // High Five
    BR_VESPER1(0x000020, 2),
    BR_VESPER2(0x000040, 2),
    BR_VESPER3(0x000080, 2),
    BR_SOUL_AVATAR(0x000100, 2); // High Five
  
    /** Int mask. */
    private final int _mask;
    /** Type: 0 Normal, 1 Special, 2 Event. */
    private final int _type;
  
    private AbnormalVisualEffect(int mask, int type)
    {
        _mask = mask;
        _type = type;
    }
  
    /**
     * Gets the int bitmask for the abnormal visual effect.
     * @return the int bitmask
     */
    public int getMask()
    {
        return _mask;
    }
  
    /**
     * Verify if it's a special abnormal visual effect.
     * @return {@code true} it's a special abnormal visual effect, {@code false} otherwise
     */
    public boolean isSpecial()
    {
        return _type == 1;
    }
  
    /**
     * Verify if it's an event abnormal visual effect.
     * @return {@code true} it's an event abnormal visual effect, {@code false} otherwise
     */
    public boolean isEvent()
    {
        return _type == 2;
    }
}

В современных клиентах всё куда проще, есть датка AbnormalDefaultEffect.
 
На отвали можно и в AdditionalEffect.dat сделать, тогда ефектьі должньі лежать в дефолтном LineageEffect.u, скейла под рассьі не будет, офсетьі тоже на всех один, будет постоянно респавнится и вьіглядеть как залаганое говно. Если так чтобьі нормально вьіглядело - либо екст, либо пакетку до новее клиента апать.
UPD: а, забьіл, там вязать на перчи придется и костьілять в пакетке, ибо браслетьі хф, по-моему, не воспримет и не привяжет туда ничего.
 
Спасибо, теперь понял. То есть в High Five можно использовать только уже захардкоженные клиентом abnormal visual effects из этого списка, а добавить собственный через DAT, как в новых клиентах, не получится.

Подскажите тогда, есть ли среди существующих abnormal-эффектов High Five подходящий вариант именно для постоянного свечения руки? Нужно, чтобы эффект включался пассивным навыком при экипировке талисмана, был виден окружающим игрокам и автоматически исчезал после снятия предмета.

Если подходящего abnormal в клиенте нет, правильно ли понимаю, что тогда потребуется добавлять или заменять эффект непосредственно в клиентских пакетах?
Сообщение объединено:
Спасибо за подробное объяснение. Тогда вариант через AdditionalEffect.dat отпадает — постоянно пересоздающийся эффект без нормального scale и offset мне точно не подходит.

Хотелось бы сохранить обычный клиент High Five без extender и без перехода на более новый протокол. Остаётся ли в таком случае только использование одного из уже захардкоженных AbnormalVisualEffect?

Если среди стандартных abnormal нет подходящего стабильного свечения руки, тогда, видимо, от этой идеи лучше отказаться. Привязка через перчатки и дополнительный костыль в пакетах ради одного талисмана будет слишком сложным решением.
 
Это к любителям колупать трупы старых клиентов. Rolo, Vikos, ◄√i®uS►
 
Arinvint, без екста, без реатача ефекта и на родном 267-273 нет, вариантов нет. Абнормал же не привяжется к руке сам по себе, на хфе нет ничего такого. Нет, ладно, через костьіли можно что угодно сделать, но екст намного адекватнее решение, если хочетя на старом хфе сидеть. )
 
Понял, спасибо всем за подробные ответы. Значит, на чистом клиенте High Five 267–273 корректно привязать такой эффект к руке не получится, а костылить через перчатки и пакеты смысла нет.

Пока оставлю эту идею, а если вернусь к ней в будущем — буду смотреть в сторону extender. Спасибо, вопрос решён.
 
Arinvint, если шо, привяжу что угодно, куда угодно, без лагов, смс и реестрации, но не дешево.
PS: снимал на 10 фпс, чтобьі видео влезло по размеру. )0))
Посмотреть вложение 2026-09-15 21-48-49.mp4

Ефектьі не респавнятся лишний раз настолько, что даже при смене плаща старьій ефект продолжает жить, если он еще уместен. ) Скейл под рассьі, офсетьі, все такое. Ну крч, порекламировались, можно и делом заняться. )
Посмотреть вложение 2026-09-15 21-53-57.mp4
 
Последнее редактирование:
Написал в личку
 
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…