Перейти к содержанию
Авторизация  
TpaMjkee

Баффер Баффает По 2-А Раза.

Рекомендуемые сообщения

Всем добрый день.

 

Собственно пишу своего баффера, и тут появилась проблема.

 

Реализую чтобы при нажатии на кнопку, баффались те иды баффоф, которые я прописал. Собственно сделал, но проблема в другом. В игре жму - баффнуть, баффает, но по 2-а раза.

 

В начале:

    public static final int[] BUFF_ALL = {11520, 11521};

 

Код:

 else if(command.startsWith("allbuff"))
{
for(int skillid : BUFF_ALL)
{
Skill skill = SkillHolder.getInstance().getInfo(skillid, SkillHolder.getInstance().getMaxLevel(skillid));
skill.getEffects(player, player, false, false);

for(EffectTemplate et : skill.getEffectTemplates())
{
Env env = new Env(player, player, skill);
Effect effect = et.getEffect(env);

//Делаем время баффа на 1-н час.
effect.setPeriod(60 * 60 * 1000);
player.getEffectList().addEffect(effect);
player.updateEffectIcons();
}

}
player.sendMessage("Вы баффнули себе все баффы!");
}

 

Прописал 2-а баффа, каждый бафф баффается по 2-а раза, соответственно всего баффается 4-е раза, хотя должно быть 2-а. Т.е каждый по 1-му.

 

Что не так сделал? Сборка L2Phoenix GoD.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну так судя по коду ты сначала все эффекты из скилла накладываешь на цель, а потом пройдясь по списку эффектов в скилле, еще раз добавляешь эти эффекты на ту же цель.

проще говоря - убери это

 

skill.getEffects(player, player, false, false);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну так судя по коду ты сначала все эффекты из скилла накладываешь на цель, а потом пройдясь по списку эффектов в скилле, еще раз добавляешь эти эффекты на ту же цель.

проще говоря - убери это

 

skill.getEffects(player, player, false, false);

 

Если я уберу эту строчку, то вызова не будет. Пробывал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

значит допиши getEffects так, чтобы можно было задавать модификатор времени действия, если хочется чтобы можно былол задавать время

ну и дальше идущий цикл наложения эффектов можешь выкидывать за ненадобностью.

 

вот я к примеру для подобного завел отдельный метод, когда мне потребовалось это в баффере:

 

само наложение баффа на цель

    private static final void buffSkill(final Player player, final Skill skill, final double timeMod, final boolean broadcast)
   {
       skill.getEffectsSelf(player, skill, timeMod);

       if (broadcast)
           player.broadcastPacket(new MagicSkillUse(player, player, skill.getDisplayId(), skill.getDisplayLevel(), 0, 0));

       if (player.getSummonList().getPet() != null)
       {
           PetInstance pet = player.getSummonList().getPet();
           skill.getEffectsSelf(pet, skill, timeMod);

           if (broadcast)
               pet.broadcastPacketToOthers(new MagicSkillUse(pet, pet, skill.getDisplayId(), skill.getDisplayLevel(), 0, 0));
       }

       if (!player.getSummonList().getServitors().isEmpty())
           for (Summon summon : player.getSummonList().getServitors())
           {
               skill.getEffectsSelf(summon, skill, timeMod);

               if (broadcast)
                   summon.broadcastPacketToOthers(new MagicSkillUse(summon, summon, skill.getDisplayId(), skill.getDisplayLevel(), 0, 0));
           }
   }

метод, накладывающий эффект

    public void getEffectsSelf(final Creature effected, Skill skill, double timeMod)
   {
       for (EffectTemplate et : skill.getEffectTemplates())
       {
           Env env = new Env(effected, effected, skill);
           Effect effect = et.getEffect(env);
           effect.setPeriod((long) (effect.getDuration() * timeMod));
           effected.getEffectList().addEffect(effect);
       }
   }

Изменено пользователем Gaikotsu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

значит допиши getEffects так, чтобы можно было задавать модификатор времени действия, если хочется чтобы можно былол задавать время

ну и дальше идущий цикл налоджения эффектов можешь выкидывать за ненадобностью.

 

Пример можете дать если не сложно? А то не вдупляю ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а, вы имеете в виду что цикл for выкинуть? а как я сделаю вместо этого?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У кого ещё есть варианты? Если убрать цикл for то все нормально, но мне надо чтобы баффалось несколько баффов одним запросом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...