02-09-2014, 08:49 PM
Добрый вечер, есть нужна в создании эффекта который будет агрить всех окружающих монстров вокруг в то время пока эффект находится на персонаже накидал собственно такой вот эффект
Всё в принципе работает, как только эффект появляется на персонаже то вокруг нпц сразу кидаются давать ему заслуженных люлей, но вот проблема что в тот момент пока эффект висит и персонаж передвигается по локации другие мобы которые не попали в дистанцию агра которая указана в эффекте тупо не агрятся, а надо бы чтобы агрились :-) Всем спасибо, за меня писать ничего не надо просто подскажите как это сделать, подозреваю что можно сотворить таск который будет через определённый промежуток времени агрить мобов вокруг, но хочется узнать может есть куда более целесообразный метод для решения данной задачи :-)
Чуть не забыл, сорсы овера :-)
Код:
package l2p.gameserver.skills.effects;
import l2p.commons.collections.GArray;
import l2p.gameserver.ai.CtrlEvent;
import l2p.gameserver.ai.CtrlIntention;
import l2p.gameserver.model.Effect;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.World;
import l2p.gameserver.model.instances.NpcInstance;
import l2p.gameserver.stats.Env;
import l2p.gameserver.stats.Stats;
public class EffectAggressionDebuff extends Effect {
public EffectAggressionDebuff (Env env, EffectTemplate template) {
super(env, template);
}
@Override
public void onStart() {
super.onStart();
onActionTime();
}
@Override
public boolean onActionTime() {
if (_effected.isDead()) {
return false;
}
GArray<NpcInstance> around = _effected.getAroundNpc(1500, 300);
if ((around != null) && !around.isEmpty())
{
for (NpcInstance npc : around)
{
if ((npc.getNpcId() >= тут айди нпцов) && (npc.getNpcId() <= тут тоже айди нпцов))
{
npc.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, _effected, 100);
}
}
}
return true;
}
@Override
public void onExit() {
super.onExit();
}
}
Чуть не забыл, сорсы овера :-)