Кастиэль 0 Опубликовано 25 марта, 2015 (изменено) И опять нужна помощь в реализации скилла Расщепление(30515). Я попытался сделать скилл на основе и вот, что у меня получилось: public class ErtheiaFighterAura extends L2Effect { public ErtheiaFighterAura(Env env, EffectTemplate template) { super(env, template); } @Override public L2EffectType getEffectType() { return L2EffectType.BUFF; } @Override public boolean onStart() { L2PcInstance caster = (L2PcInstance) getEffector(); for(L2Character cha1 : caster.getKnownList().getKnownCharactersInRadius(1200)) { for(L2Character cha : caster.getKnownList().getKnownCharactersInRadius(getSkill().getSkillRadius())) { if(cha == cha1) { getEffector().setIsInvul(false); } else { if(cha != cha1) { getEffector().setIsInvul(true); } } } } return true; } } В итоге - неуязвимость дается определенный промежутки времени, не зависимо от того, где находится персонаж(скилл радиус ради теста указал 400 в дп), зы заводил окно для теста Может кто подсказать где ошибки, может быть логика не та?) зыы сборка гдв эртея(гдв -> дво) Изменено 25 марта, 2015 пользователем Кастиэль Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mizuwokiru 181 Опубликовано 25 марта, 2015 Метод getSkillRadius тут вообще ни в какие ворота, так как радиус у скилла 0 (так как он селфовый). Тут надо константа радиуса искажения, которую находишь сам. Вообще, тебе нужно программно нарисовать окружность вокруг кастующего и отбивать рейндж атаки атакующего, когда он находится в данной окружности. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кастиэль 0 Опубликовано 26 марта, 2015 Метод getSkillRadius тут вообще ни в какие ворота, так как радиус у скилла 0 (так как он селфовый). Тут надо константа радиуса искажения, которую находишь сам. Вообще, тебе нужно программно нарисовать окружность вокруг кастующего и отбивать рейндж атаки атакующего, когда он находится в данной окружности. Хочу уточнить, я радиус скилла примерно знаю - 90, и да, немного наоборот, когда в кругу - урон кастанувшему идет, а когда атакующий вне круга, урон кастанувшему не идет. Я вот все бьюсь над вопросом, как же так сделать(ведь может быть еще и такое, что бьют 2 игрока - один в кругу, другой нет), т.е. как вы сказали - отбивать рейндж атаки... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 2 апреля, 2015 (изменено) тебе в данном случае надо не эффекты ковырять, а лезть в методы calcPhysDam и calcMagicDam (в твоей сборке могут зваться по другому - это названия из овероподобных сборок) заводишь новую стату для скиллов и непосредственно в эффекте скилла 30515 выставляешь в ней нужную дальность действия. а далее в calcPhysDam и calcMagicDam прверяешь ее наличие и отличие ее значения от нуля и если она есть - высчитываешь расстояние между атакуемым и атакующим и действуешь по обстоятельствам. делов вобщем в реализации по сути на несколько минут. Изменено 2 апреля, 2015 пользователем Gaikotsu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кастиэль 0 Опубликовано 2 апреля, 2015 тебе в данном случае надо не эффекты ковырять, а лезть в методы calcPhysDam и calcMagicDam (в твоей сборке могут зваться по другому - это названия из овероподобных сборок) заводишь новую стату для скиллов и непосредственно в эффекте скилла 30515 выставляешь в ней нужную дальность действия. а далее в calcPhysDam и calcMagicDam прверяешь ее наличие и отличие ее значения от нуля и если она есть - высчитываешь расстояние между атакуемым и атакующим и действуешь по обстоятельствам. делов вобщем в реализации по сути на несколько минут. Я так и сделал если честно )) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 3 апреля, 2015 еще в getEffects надеюсь не забыл подобные проверки добавить? чтобы и от дебаффов защититься. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кастиэль 0 Опубликовано 3 апреля, 2015 еще в getEffects надеюсь не забыл подобные проверки добавить? чтобы и от дебаффов защититься. Упс, точно, про дебаффы вообще не подумал Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты