/* * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that * it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If * not, see <http://www.gnu.org/licenses/>. */ package silentium.gameserver.model.actor.instance; import java.util.Map; import silentium.gameserver.configs.MainConfig; import silentium.gameserver.configs.PlayersConfig; import silentium.gameserver.data.html.StaticHtmPath; import silentium.gameserver.model.L2Clan; import silentium.gameserver.model.itemcontainer.PcFreight; import silentium.gameserver.network.SystemMessageId; import silentium.gameserver.network.serverpackets.ActionFailed; import silentium.gameserver.network.serverpackets.EnchantResult; import silentium.gameserver.network.serverpackets.PackageToList; import silentium.gameserver.network.serverpackets.WareHouseDepositList; import silentium.gameserver.network.serverpackets.WareHouseWithdrawalList; import silentium.gameserver.templates.chars.L2NpcTemplate; public final class L2WarehouseInstance extends L2NpcInstance { public L2WarehouseInstance(int objectId, L2NpcTemplate template) { super(objectId, template); } @Override public boolean isWarehouse() { return true; } @Override public String getHtmlPath(int npcId, int val) { String pom = ""; if (val == 0) pom = "" + npcId; else pom = npcId + "-" + val; return StaticHtmPath.WarehouseHtmPath + pom + ".htm"; } private static void showRetrieveWindow(L2PcInstance player) { player.sendPacket(ActionFailed.STATIC_PACKET); player.setActiveWarehouse(player.getWarehouse()); if (player.getActiveWarehouse().getSize() == 0) { player.sendPacket(SystemMessageId.NO_ITEM_DEPOSITED_IN_WH); return; } player.sendPacket(new WareHouseWithdrawalList(player, WareHouseWithdrawalList.PRIVATE)); } private static void showDepositWindow(L2PcInstance player) { player.sendPacket(ActionFailed.STATIC_PACKET); player.setActiveWarehouse(player.getWarehouse()); player.tempInventoryDisable(); player.sendPacket(new WareHouseDepositList(player, WareHouseDepositList.PRIVATE)); } private static void showDepositWindowClan(L2PcInstance player) { player.sendPacket(ActionFailed.STATIC_PACKET); if (player.getClan() != null) { if (player.getClan().getLevel() == 0) player.sendPacket(SystemMessageId.ONLY_LEVEL_1_CLAN_OR_HIGHER_CAN_USE_WAREHOUSE); else { player.setActiveWarehouse(player.getClan().getWarehouse()); player.tempInventoryDisable(); player.sendPacket(new WareHouseDepositList(player, WareHouseDepositList.CLAN)); } } } private static void showWithdrawWindowClan(L2PcInstance player) { player.sendPacket(ActionFailed.STATIC_PACKET); if ((player.getClanPrivileges() & L2Clan.CP_CL_VIEW_WAREHOUSE) != L2Clan.CP_CL_VIEW_WAREHOUSE) { player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_USE_CLAN_WAREHOUSE); return; } if (player.getClan().getLevel() == 0) player.sendPacket(SystemMessageId.ONLY_LEVEL_1_CLAN_OR_HIGHER_CAN_USE_WAREHOUSE); else { player.setActiveWarehouse(player.getClan().getWarehouse()); player.sendPacket(new WareHouseWithdrawalList(player, WareHouseWithdrawalList.CLAN)); } } private void showWithdrawWindowFreight(L2PcInstance player) { player.sendPacket(ActionFailed.STATIC_PACKET); PcFreight freight = player.getFreight(); if (freight != null) { if (freight.getSize() > 0) { if (PlayersConfig.ALT_GAME_FREIGHTS) freight.setActiveLocation(0); else freight.setActiveLocation(getWorldRegion().hashCode()); player.setActiveWarehouse(freight); player.sendPacket(new WareHouseWithdrawalList(player, WareHouseWithdrawalList.FREIGHT)); } else player.sendPacket(SystemMessageId.NO_ITEM_DEPOSITED_IN_WH); } } private static void showDepositWindowFreight(L2PcInstance player) { // No other chars in the account of this player if (player.getAccountChars().isEmpty()) player.sendPacket(SystemMessageId.CHARACTER_DOES_NOT_EXIST); // One or more chars other than this player for this account else { Map<Integer, String> chars = player.getAccountChars(); if (chars.size() < 1) { player.sendPacket(ActionFailed.STATIC_PACKET); return; } player.sendPacket(new PackageToList(chars)); } } private void showDepositWindowFreight(L2PcInstance player, int obj_Id) { player.sendPacket(ActionFailed.STATIC_PACKET); PcFreight freight = player.getDepositedFreight(obj_Id); if (PlayersConfig.ALT_GAME_FREIGHTS) freight.setActiveLocation(0); else freight.setActiveLocation(getWorldRegion().hashCode()); player.setActiveWarehouse(freight); player.tempInventoryDisable(); player.sendPacket(new WareHouseDepositList(player, WareHouseDepositList.FREIGHT)); } @Override public void onBypassFeedback(L2PcInstance player, String command) { if (player.isProcessingTransaction()) { player.sendPacket(SystemMessageId.ALREADY_TRADING); return; } if (player.getActiveEnchantItem() != null) { player.setActiveEnchantItem(null); player.sendPacket(EnchantResult.CANCELLED); player.sendPacket(SystemMessageId.ENCHANT_SCROLL_CANCELLED); } if (command.startsWith("WithdrawP")) showRetrieveWindow(player); else if (command.equals("DepositP")) showDepositWindow(player); else if (command.equals("WithdrawC")) showWithdrawWindowClan(player); else if (command.equals("DepositC")) showDepositWindowClan(player); else if (command.startsWith("WithdrawF")) { if (MainConfig.ALLOW_FREIGHT) showWithdrawWindowFreight(player); } else if (command.startsWith("DepositF")) { if (MainConfig.ALLOW_FREIGHT) showDepositWindowFreight(player); } else if (command.startsWith("FreightChar")) { if (MainConfig.ALLOW_FREIGHT) { int startOfId = command.lastIndexOf("_") + 1; String id = command.substring(startOfId); showDepositWindowFreight(player, Integer.parseInt(id)); } } else super.onBypassFeedback(player, command); } }