Запрет на использование трансформы в зоне

ツsmile10ツ

Гений мысли
Проверенный
Сообщения
1 426
Розыгрыши
0
Репутация
2 627
Реакции
1 239
Баллы
1 808
Как-то давно было наковыряно с помощью мангола под овероподобные сборки.
Код:
public class QueenAntZone implements OnInitScriptListener
{

   private static ZoneListener _zoneListener;
   private final AttackListener attackListener = new AttackListener();
   private final int[] check_transform_id = { 22205 }; //[TODO] [c] Может стоить сделать конфиг?

   @Override
   public void onInit()
   {
     _zoneListener = new ZoneListener();
     final Zone zone = ReflectionUtils.getZone("[queen_ant_epic]");
     zone.addListener(_zoneListener);

   }

   public class ZoneListener implements OnZoneEnterLeaveListener
   {

     public ZoneListener()
     {}

     @Override
     public void onZoneEnter(final Zone zone, final Creature cha)
     {
       if(zone.getParams() == null || !cha.isPlayable())
         return;
       final Player player = cha.getPlayer();
       if(zone.getParams().getBool("transformprotection"))
         if(player != null)
         {
           player.setTransformation(0);
           player.sendMessage("В данной зоне запрещено находится в трансформации!");
         }
       if(cha.getLevel() > zone.getParams().getInteger("levelLimit"))
         if(player != null)
           if(!player.isGM())
           {
             player.sendMessage("You have been moved to the nearest suitable location. Your level was too high.");
             cha.teleToLocation(Location.parseLoc(zone.getParams().getString("teleport")));
           }
           else
             player.sendMessage("You not teleported because you are GM!");
       player.addListener(attackListener);
     }

     @Override
     public void onZoneLeave(final Zone zone, final Creature cha)
     {
       if(cha.isPlayer())
         cha.removeListener(attackListener);

     }
   }

   private class AttackListener implements OnAttackListener
   {
     @Override
     public void onAttack(final Creature actor, final Creature target)
     {
       if(actor.isPlayer())
       {
         final Player player = actor.getPlayer();
         final int transform_id = player.getTransformation();
         //если увидели ид трансформы которую нужно снять.
         if(ArrayUtils.contains(check_transform_id, transform_id))
         {
           player.setTransformation(0);
           player.sendMessage("Нельзя атаковать в трансформации в данной зоне!");
         }
       }
     }
   }

}
 
Реакции: jonius и kick

    kick

    Баллов: 25
    Спасибо за в клад в развитие форума
так вроде он описал как и что там сделать