Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Эффект от умения(магии) * закончился (https://forum.zone-game.info/showthread.php?t=14677)

nikitawasa 19.06.2011 15:53

Эффект от умения(магии) * закончился
 
Такой вопрос. Кто может скинуть кусок скрипта метода protected void addEffectFromQueue(L2Effect newEffect)
Код:

*L2Effect*
--------------------------------------

        protected void addEffectFromQueue(L2Effect newEffect)
        {
                if (newEffect == null) return;

                L2Skill newSkill = newEffect.getSkill();

                if (newSkill.isDebuff())
                {
                        if (_debuffs == null) _debuffs = new FastList<L2Effect>().shared();
                        for (L2Effect e : _debuffs)
                        {
                                if (e != null
                                                && e.getSkill().getId() == newEffect.getSkill().getId()
                                                && e.getEffectType() == newEffect.getEffectType()
                                                && e.getStackOrder() == newEffect.getStackOrder()
                                                && e.getStackType().equals(newEffect.getStackType()))
                                {
                                        // Started scheduled timer needs to be canceled.
                                        newEffect.exit(true);
                                        return;
                                }
                        }
                        _debuffs.addLast(newEffect);
                }
                else
                {
                        if (_buffs == null) _buffs = new FastList<L2Effect>().shared();

                        for (L2Effect e : _buffs)
                        {
                                if (e != null
                                                && e.getSkill().getId() == newEffect.getSkill().getId()
                                                && e.getEffectType() == newEffect.getEffectType()
                                                && e.getStackOrder() == newEffect.getStackOrder()
                                                && e.getStackType().equals(newEffect.getStackType()))
                                {
                                        e.exit(true);
                                }
                        }

                        // if max buffs, no herb effects are used, even if they would replace one old
                        if (newEffect.isHerbEffect() && getBuffCount() >= _owner.getMaxBuffCount())
                        {
                                newEffect.stopEffectTask();
                                return;
                        }

                        // Remove first buff when buff list is full
                        if (!doesStack(newSkill) && !newSkill.is7Signs())
                        {
                                int effectsToRemove;
                                if (newSkill.isDance())
                                {
                                        effectsToRemove = getDanceCount() - Config.DANCES_MAX_AMOUNT;
                                        if (effectsToRemove >= 0)
                                        {
                                                for (L2Effect e : _buffs)
                                                {
                                                        if (e == null || !e.getSkill().isDance())
                                                                continue;
                                                       
                                                        // get first dance
                                                        e.exit(true);
                                                        effectsToRemove--;
                                                        if (effectsToRemove < 0)
                                                                break;
                                                }
                                        }
                                }
                                else
                                {
                                        effectsToRemove = getBuffCount() - _owner.getMaxBuffCount();
                                        if (effectsToRemove >= 0)
                                        {
                                                switch (newSkill.getSkillType())
                                                {
                                                        case BUFF:
                                                        case REFLECT:
                                                        case HEAL_PERCENT:
                                                        case MANAHEAL_PERCENT:
                                                                for (L2Effect e : _buffs)
                                                                {
                                                                        if (e == null || e.getSkill().isDance())
                                                                                continue;

                                                                        switch (e.getSkill().getSkillType())
                                                                        {
                                                                                case BUFF:
                                                                                case REFLECT:
                                                                                case HEAL_PERCENT:
                                                                                case MANAHEAL_PERCENT:
                                                                                        e.exit(true);
                                                                                        effectsToRemove--;
                                                                                        break; // break switch()
                                                                                default:
                                                                                        continue; // continue for()
                                                                        }
                                                                        if (effectsToRemove < 0)
                                                                                break; // break for()
                                                                }
                                                }
                                        }
                                }
                        }

У меня такая прабла. Если скил стакающийся(стак ордер != null) и я его перебиваю другим скилом. То через некоторое время (когда 1ый скил который был, заканчивается) выскакивает табличка что скил закончился. Мне надо это убрать...
http://rghost.ru/11567521/thumb.png
http://rghost.ru/11567381/thumb.png
http://rghost.ru/11566851/thumb.png
http://rghost.ru/11566741/thumb.png

m095 22.06.2011 22:24

Re: Эффект от умения(магии) * закончился
 
ковыряйте метод отмены эффекта, у меня это.
Код:

public final void removeEffect(L2Effect effect)
а в выложенном вами коде нет того что вам нужно

extend 26.06.2011 16:20

Re: Эффект от умения(магии) * закончился
 
Офтоп
Скинь сайтег плиз свой я хочю с играть)
В лс)

ANZO 28.06.2011 15:29

Re: Эффект от умения(магии) * закончился
 
Вам нужно не добавление в эффект лист, а наоброт удаление из него.
Класс CharEffectList.java, нужное выделил:

Код:

// Remove the active skill L2effect from _effects of the L2Character
                if (effectList.remove(effect) && _owner instanceof L2PcInstance && effect.getShowIcon())
                {
                        SystemMessage sm;
                        if (effect.getSkill().isToggle())
                                sm = new SystemMessage(SystemMessageId.S1_HAS_BEEN_ABORTED);
                        else if (wornOff)
                                sm = new SystemMessage(SystemMessageId.S1_HAS_WORN_OFF);
                        else
                                sm = new SystemMessage(SystemMessageId.EFFECT_S1_DISAPPEARED);


                        sm.addSkillName(effect);
                        _owner.sendPacket(sm);
                }


Astend 04.07.2011 16:56

Re: Эффект от умения(магии) * закончился
 
BSFG уже давно все забили чувак!


Текущее время: 16:55. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot