Jump to content
Sign in to follow this  
Кастиэль

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

Edited by Gaikotsu
  • Upvote 1

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...