Asterix 4 Опубликовано 24 января, 2014 Доброй ночи. Сейчас думаю как реализовать, стартовый баф у вызванных суммонов. Кто нибудь это уже делал? У кого нибудь есть предположения по этому поводу? Я думаю это сделать через L2SkillSpawn , либо через doSpawn(boolean isSummonSpawn). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
kanutoiiika 17 Опубликовано 24 января, 2014 я ничего не понял, что вы хотите сдела... Вам нужно что бы начальный баф давался и самонам? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 24 января, 2014 Всегда нравятся такие посты. Хотя бы под какую сборку и с описанием поподробней. З.Ы. Реализовывал уже. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Asterix 4 Опубликовано 24 января, 2014 Извиняюсь, сборка Acis Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Asterix 4 Опубликовано 24 января, 2014 (изменено) Примерно так ? if (Config.NEW_PET_BUFFS) { for (Integer skillid : Config.PET_BUFF_LIST.keySet()) { int skilllvl = Config.PET_BUFF_LIST.get(skillid); L2Skill skill = SkillTable.getInstance().getInfo(skillid, skilllvl); if (skill != null) { skill.getEffects(caster.getPet(), caster.getPet()); } } } } Изменено 24 января, 2014 пользователем Asterix Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 24 января, 2014 А, сорри, не о том подумал, я думал передача баффа хозяин<->пет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Asterix 4 Опубликовано 24 января, 2014 Если при появление пет принимает баф чара? Такое то же бы мне подошло Был бы очень признателен Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 24 января, 2014 Всё равно переделать надо будет. Effect[] effects = _owner.getEffectList().getAllFirstEffects();// Получаем массив эффектов хозяина. for(Effect ef : effects)//Используем foreach для инициализации каждого эффекта из массива { getEffectList().addEffect(ef);//Добавляем, с использованием foreach, каждый баф из массива хозяина, в новый лист эффектов питомца. } _owner.sendPacket(new PetInfo(summon));//До кучи обновляем информацию о питомце. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Asterix 4 Опубликовано 25 января, 2014 (изменено) и все это в public L2Npc doSpawn(boolean isSummonSpawn) ? Большое спасибо Изменено 25 января, 2014 пользователем Asterix Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 25 января, 2014 именно. ну саму механику описал, надо только адаптировать под свою сборку. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Asterix 4 Опубликовано 25 января, 2014 Да ,еще раз спасибо. Думаю разберусь Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 25 января, 2014 (изменено) Всё равно переделать надо будет. Effect[] effects = _owner.getEffectList().getAllFirstEffects();// Получаем массив эффектов хозяина. for(Effect ef : effects)//Используем foreach для инициализации каждого эффекта из массива { getEffectList().addEffect(ef);//Добавляем, с использованием foreach, каждый баф из массива хозяина, в новый лист эффектов питомца. } _owner.sendPacket(new PetInfo(summon));//До кучи обновляем информацию о питомце. не совсем корректно 1. скопируются только первые эффекты из скиллов. 2. скопируются не только баффы, но и к примеру дебаффы. 3. при копировании у эффекта выставится полная продолжительность, а не текущая. Изменено 25 января, 2014 пользователем Gaikotsu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 25 января, 2014 более корректное private void cloneOwnerEffect(Effect ef) { Skill skill = ef.getSkill(); if (skill.isOffensive() || skill.isToggle() || skill.isCubicSkill()) return; for (EffectTemplate et : skill.getEffectTemplates()) { if (!et._applyOnSummon || et._applyOnCaster || et.isOffensive(skill.isOffensive())) continue; Effect effect = et.getEffect(new Env(this, this, skill)); if (effect != null) { effect.setCount(ef.getCount()); effect.setPeriod(ef.getCount() == 1 ? ef.getPeriod() - ef.getTime() : ef.getPeriod()); getEffectList().addEffect(effect); } } } а в onSpawn класса Summon добавить if (owner != null) for (Effect ef : owner.getEffectList().getAllEffects()) cloneOwnerEffect(ef); 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Asterix 4 Опубликовано 25 января, 2014 более корректное private void cloneOwnerEffect(Effect ef) { Skill skill = ef.getSkill(); if (skill.isOffensive() || skill.isToggle() || skill.isCubicSkill()) return; for (EffectTemplate et : skill.getEffectTemplates()) { if (!et._applyOnSummon || et._applyOnCaster || et.isOffensive(skill.isOffensive())) continue; Effect effect = et.getEffect(new Env(this, this, skill)); if (effect != null) { effect.setCount(ef.getCount()); effect.setPeriod(ef.getCount() == 1 ? ef.getPeriod() - ef.getTime() : ef.getPeriod()); getEffectList().addEffect(effect); } } } а в onSpawn класса Summon добавить if (owner != null) for (Effect ef : owner.getEffectList().getAllEffects()) cloneOwnerEffect(ef); Спасибо. Но я уже реализовал, как и хотел ранее. Что бы при появление пет получал список бафов Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 25 января, 2014 не совсем корректно 1. скопируются только первые эффекты из скиллов. 2. скопируются не только баффы, но и к примеру дебаффы. 3. при копировании у эффекта выставится полная продолжительность, а не текущая. Я очень ивиняъсь, но : 1) Я дал саму идею для реализации. 2)Я не говорил списывать 1 в 1 как у меня. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты