Перейти к содержанию
Авторизация  
Кастиэль

Эффект для скилла Расщепление(Артея Воин)

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

И опять нужна помощь в реализации скилла Расщепление(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 в дп), зы заводил окно для теста
Может кто подсказать где ошибки, может быть логика не та?)
зыы сборка гдв эртея(гдв -> дво)
Изменено пользователем Кастиэль

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


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

Метод getSkillRadius тут вообще ни в какие ворота, так как радиус у скилла 0 (так как он селфовый). Тут надо константа радиуса искажения, которую находишь сам. Вообще, тебе нужно программно нарисовать окружность вокруг кастующего и отбивать рейндж атаки атакующего, когда он находится в данной окружности.

  • Upvote 1

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


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

Метод getSkillRadius тут вообще ни в какие ворота, так как радиус у скилла 0 (так как он селфовый). Тут надо константа радиуса искажения, которую находишь сам. Вообще, тебе нужно программно нарисовать окружность вокруг кастующего и отбивать рейндж атаки атакующего, когда он находится в данной окружности.

Хочу уточнить, я радиус скилла примерно знаю - 90, и да, немного наоборот, когда в кругу - урон кастанувшему идет, а когда атакующий вне круга, урон кастанувшему не идет.

Я вот все бьюсь над вопросом, как же так сделать(ведь может быть еще и такое, что бьют 2 игрока  - один в кругу, другой нет), т.е. как вы сказали - отбивать рейндж атаки...

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


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

тебе в данном случае надо не эффекты ковырять, а лезть в методы calcPhysDam и calcMagicDam (в твоей сборке могут зваться по другому - это названия из овероподобных сборок)

 

заводишь новую стату для скиллов и непосредственно в эффекте скилла 30515 выставляешь в ней нужную дальность действия.

а далее в calcPhysDam и calcMagicDam прверяешь ее наличие и отличие ее значения от нуля и если она есть - высчитываешь расстояние между атакуемым и атакующим и действуешь по обстоятельствам.

 

делов вобщем в реализации по сути на несколько минут.

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

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


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

тебе в данном случае надо не эффекты ковырять, а лезть в методы calcPhysDam и calcMagicDam (в твоей сборке могут зваться по другому - это названия из овероподобных сборок)

 

заводишь новую стату для скиллов и непосредственно в эффекте скилла 30515 выставляешь в ней нужную дальность действия.

а далее в calcPhysDam и calcMagicDam прверяешь ее наличие и отличие ее значения от нуля и если она есть - высчитываешь расстояние между атакуемым и атакующим и действуешь по обстоятельствам.

 

делов вобщем в реализации по сути на несколько минут.

Я так и сделал если честно ))

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


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

еще в getEffects надеюсь не забыл подобные проверки добавить? чтобы и от дебаффов защититься.

  • Upvote 1

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


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

еще в getEffects надеюсь не забыл подобные проверки добавить? чтобы и от дебаффов защититься.

Упс, точно, про дебаффы вообще не подумал

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


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

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

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

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

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

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

Войти

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

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

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

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

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