예제 #1
0
  @TextCommand("manor_menu_select")
  public boolean manorMenu(BypassHandlerParams params) {
    L2PcInstance activeChar = params.getPlayer();
    L2Npc manager = activeChar.getLastFolkNPC();
    if (!activeChar.isInsideRadius(manager, L2Npc.INTERACTION_DISTANCE, true, false)) {
      return false;
    }

    try {
      Castle castle = manager.getCastle();

      if (CastleManorManager.getInstance().isUnderMaintenance()) {
        activeChar.sendActionFailed();
        activeChar.sendPacket(SystemMessageId.THE_MANOR_SYSTEM_IS_CURRENTLY_UNDER_MAINTENANCE);
        return true;
      }

      int ask = Integer.parseInt(params.getQueryArgs().get("ask"));
      int state = Integer.parseInt(params.getQueryArgs().get("state"));
      int time = Integer.parseInt(params.getQueryArgs().get("time"));

      int castleId;
      castleId = state < 0 ? castle.getCastleId() : state;

      switch (ask) {
        case 1: // Seed purchase
          if (castleId == castle.getCastleId()) {
            activeChar.sendPacket(
                new BuyListSeed(
                    activeChar.getAdenaCount(),
                    castleId,
                    castle.getSeedProduction(CastleManorManager.PERIOD_CURRENT)));
          } else {
            activeChar.sendPacket(
                SystemMessage.getSystemMessage(
                        SystemMessageId.HERE_YOU_CAN_BUY_ONLY_SEEDS_OF_S1_MANOR)
                    .addString(manager.getCastle().getName()));
          }
          break;
        case 2: // Crop sales
          activeChar.sendPacket(
              new ExShowSellCropList(
                  activeChar, castleId, castle.getCropProcure(CastleManorManager.PERIOD_CURRENT)));
          break;
        case 3: // Current seeds (Manor info)
          if (time == 1
              && !CastleManager.getInstance().getCastleById(castleId).isNextPeriodApproved()) {
            activeChar.sendPacket(new ExShowSeedInfo(castleId, null));
          } else {
            activeChar.sendPacket(
                new ExShowSeedInfo(
                    castleId,
                    CastleManager.getInstance().getCastleById(castleId).getSeedProduction(time)));
          }
          break;
        case 4: // Current crops (Manor info)
          if (time == 1
              && !CastleManager.getInstance().getCastleById(castleId).isNextPeriodApproved()) {
            activeChar.sendPacket(new ExShowCropInfo(castleId, null));
          } else {
            activeChar.sendPacket(
                new ExShowCropInfo(
                    castleId,
                    CastleManager.getInstance().getCastleById(castleId).getCropProcure(time)));
          }
          break;
        case 5: // Basic info (Manor info)
          activeChar.sendPacket(new ExShowManorDefaultInfo());
          break;
        case 6: // Buy harvester
          manager.showBuyList(activeChar, 0);
          break;
        case 7: // Edit seed setup
          if (castle.isNextPeriodApproved()) {
            activeChar.sendPacket(SystemMessageId.A_MANOR_CANNOT_BE_SET_UP_BETWEEN_6_AM_AND_8_PM);
          } else {
            activeChar.sendPacket(new ExShowSeedSetting(castle.getCastleId()));
          }
          break;
        case 8: // Edit crop setup
          if (castle.isNextPeriodApproved()) {
            activeChar.sendPacket(SystemMessageId.A_MANOR_CANNOT_BE_SET_UP_BETWEEN_6_AM_AND_8_PM);
          } else {
            activeChar.sendPacket(new ExShowCropSetting(castle.getCastleId()));
          }
          break;
        case 9: // Edit sales (Crop sales)
          activeChar.sendPacket(new ExShowProcureCropDetail(state));
          break;
        default:
          return false;
      }
      return true;
    } catch (Exception e) {
      log.log(Level.ERROR, e);
    }
    return false;
  }
예제 #2
0
 @TextCommand
 public boolean worldStatistic(BypassHandlerParams params) {
   params.getTarget().sendPacket(new ExShowStatPage(-2));
   return true;
 }