Запрет на использование скиллов

FreshBread

Путник
Участник
Сообщения
45
Розыгрыши
0
Репутация
0
Реакции
9
Баллы
84
Хроники
  1. Interlude
Исходники
Отсутствуют
Сборка
Pw
Приветствую ребят!

В общем есть:
private L2RaidBossInstance _farmTarget;
_farmTarget подтягивает id из списка.

Подскажите как можно сделать запрет на использование определенных скиллов.
Даже не знаю как будет лучше, в радиусе от _farmTarget, или как-то так. Что бы не трогать зоны.
 
Ну если прям очень костыльно то в reduceCurrentHp (или как там в пв метод обрабатывающий урон по хп зовется) у класса босса проверять, с какого скилла наносят урон и слать лесом если это определенные скиллы.

цивилизованный метод, но к пв скорее всего не применимый по определению, это все же зона, при входе в которую вешается запрет на возможность юза определенных скиллов.

Java:
package listeners.zones;

import java.util.Set;

import l2p.gameserver.listener.zone.OnZoneEnterLeaveListener;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.Zone;
import l2p.gameserver.scripts.ScriptFile;
import l2p.gameserver.utils.ReflectionUtils;

public class BlockSkills implements ScriptFile
{
    private static final Set<Integer> _skills = Set.of(1001, 1002, 1003);

    @Override
    public void onLoad()
    {
        ReflectionUtils.getZone("zone_name").addListener(new ZoneListener());
    }

    private static class ZoneListener implements OnZoneEnterLeaveListener
    {
        @Override
        public void onEnter(Zone zone, Creature cha)
        {
            if (cha.isPlayer())
                cha.getPlayer().addBlockUseSkills(_skills);
        }

        @Override
        public void onLeave(Zone zone, Creature cha)
        {
            if (cha.isPlayer())
                cha.getPlayer().removeBlockUseSkills(_skills);
        }
    }
}
А сама проверка, не входит ли ид запрашиваемого на каст скилла в запретные, производится в RequestMagicSkillUse
Java:
        Skill skill = player.getKnownSkill(_magicId);

        if (skill == null || player.isBlockUseSkill(_magicId))
        {
            player.sendPacket(ActionFail.STATIC);
            return;
        }
 
Последнее редактирование:
Назад
Сверху Снизу