Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Private Stores Currency - Change Item Private Store

Iniciado por Swarlog, Jul 27, 2025, 12:15 AM

Tema anterior - Siguiente tema

Swarlog

Con este code podremos cambiar la moneda con la que pagar/obtener en las tiendas privadas creadas por los jugadores. Podemos especificar la id del item deseado desde las properties.

    Index: java/com/l2jserver/Config.java
    ===================================================================
    --- java/com/l2jserver/Config.java   (revision 4410)
    +++ java/com/l2jserver/Config.java   (working copy)
    @@ -676,6 +676,8 @@
        public static String L2JMOD_MULTILANG_DEFAULT;
        public static boolean L2JMOD_MULTILANG_VOICED_ALLOW;
        public static boolean L2WALKER_PROTECTION;
    +   public static int STORE_BUY_CURRENCY;
    +   public static int STORE_SELL_CURRENCY;
     
        //--------------------------------------------------
        // NPC Settings
    @@ -2285,6 +2287,8 @@
                    L2JMOD_MULTILANG_VOICED_ALLOW = Boolean.parseBoolean(L2JModSettings.getProperty("MultiLangVoiceCommand", "True"));
                   
                    L2WALKER_PROTECTION = Boolean.parseBoolean(L2JModSettings.getProperty("L2WalkerProtection", "False"));
    +               STORE_BUY_CURRENCY = Integer.parseInt(L2JModSettings.getProperty("PrivateStoreBuyMoneda", "57"));
    +               STORE_SELL_CURRENCY = Integer.parseInt(L2JModSettings.getProperty("PrivateStoreSellMoneda", "57"));
                 }
                 catch (Exception e)
                 {
    Index: java/com/l2jserver/gameserver/model/TradeList.java
    ===================================================================
    --- java/com/l2jserver/gameserver/model/TradeList.java   (revision 4410)
    +++ java/com/l2jserver/gameserver/model/TradeList.java   (working copy)
    @@ -802,9 +802,10 @@
                 slots++;
           }
           
    -      if (totalPrice > playerInventory.getAdena())
    +      if (totalPrice > player.getBuyStoreCurrency())
           {
    -         player.sendPacket(new SystemMessage(SystemMessageId.YOU_NOT_ENOUGH_ADENA));
    +         final String name = ItemTable.getInstance().getTemplate(Config.STORE_BUY_CURRENCY).getName();
    +         player.sendMessage("You dont have enough "+name);
              return 1;
           }
           
    @@ -823,12 +824,12 @@
           // Prepare inventory update packets
           final InventoryUpdate ownerIU = new InventoryUpdate();
           final InventoryUpdate playerIU = new InventoryUpdate();
    -      
    -      final L2ItemInstance adenaItem = playerInventory.getAdenaInstance();
    -      playerInventory.reduceAdena("PrivateStore", totalPrice, player, _owner);
    +      final int moneda = Config.STORE_BUY_CURRENCY;
    +      final L2ItemInstance adenaItem = playerInventory.getItemByItemId(moneda);
    +      player.destroyItemByItemId("PrivateStore", moneda, totalPrice, _owner, true);
           playerIU.addItem(adenaItem);
    -      ownerInventory.addAdena("PrivateStore", totalPrice, _owner, player);
    -      ownerIU.addItem(ownerInventory.getAdenaInstance());
    +      ownerInventory.addItem("PrivateStore", moneda, totalPrice, _owner, player);
    +      ownerIU.addItem(ownerInventory.getItemByItemId(moneda));
           
           boolean ok = true;
           
    @@ -965,7 +966,7 @@
                 break;
              }
             
    -         if (ownerInventory.getAdena() < _totalPrice)
    +         if (_owner.getSellStoreCurrency() < _totalPrice)
                 continue;
             
              // Check if requested item is available for manipulation
    @@ -1043,11 +1044,12 @@
              if (totalPrice > ownerInventory.getAdena())
                 // should not happens, just a precaution
                 return false;
    -         final L2ItemInstance adenaItem = ownerInventory.getAdenaInstance();
    -         ownerInventory.reduceAdena("PrivateStore", totalPrice, _owner, player);
    +         final int moneda = Config.STORE_SELL_CURRENCY;
    +         final L2ItemInstance adenaItem = ownerInventory.getItemByItemId(moneda);
    +         ownerInventory.destroyItemByItemId("PrivateStore", moneda, totalPrice, _owner, player);
              ownerIU.addItem(adenaItem);
    -         playerInventory.addAdena("PrivateStore", totalPrice, player, _owner);
    -         playerIU.addItem(playerInventory.getAdenaInstance());
    +         playerInventory.addItem("PrivateStore", moneda, totalPrice, player, _owner);
    +         playerIU.addItem(playerInventory.getItemByItemId(moneda));
           }
           
           if (ok)
    Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
    ===================================================================
    --- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java   (revision 4410)
    +++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java   (working copy)
    @@ -14889,4 +14889,18 @@
              addSkill(SkillTable.getInstance().getInfo(id, nextLevel), true);
           }
        }
    +  
    +   public synchronized long getBuyStoreCurrency()
    +   {
    +      L2ItemInstance item = this.getInventory().getItemByItemId(Config.STORE_BUY_CURRENCY);
    +      
    +      return item == null? 0 : item.getCount();
    +   }
    +  
    +   public synchronized long getSellStoreCurrency()
    +   {
    +      L2ItemInstance item = this.getInventory().getItemByItemId(Config.STORE_SELL_CURRENCY);
    +      
    +      return item == null? 0 : item.getCount();
    +   }
     }
    Index: java/com/l2jserver/gameserver/model/itemcontainer/PcInventory.java
    ===================================================================
    --- java/com/l2jserver/gameserver/model/itemcontainer/PcInventory.java   (revision 4410)
    +++ java/com/l2jserver/gameserver/model/itemcontainer/PcInventory.java   (working copy)
    @@ -85,11 +85,14 @@
           FastList<L2ItemInstance> list = FastList.newInstance();
           for (L2ItemInstance item : _items)
           {
    -         if ((!allowAdena && item.getItemId() == 57))
    +         final int itemId = item.getItemId();
    +         if ((!allowAdena && itemId == 57))
                 continue;
    -         if ((!allowAncientAdena && item.getItemId() == 5575))
    +         if ((!allowAncientAdena && itemId == 5575))
                 continue;
    -
    +         if(itemId == Config.STORE_BUY_CURRENCY)
    +            continue;
    +        
              boolean isDuplicate = false;
              for (L2ItemInstance litem : list)
              {
    Index: java/com/l2jserver/gameserver/network/clientpackets/SetPrivateStoreListBuy.java
    ===================================================================
    --- java/com/l2jserver/gameserver/network/clientpackets/SetPrivateStoreListBuy.java   (revision 4410)
    +++ java/com/l2jserver/gameserver/network/clientpackets/SetPrivateStoreListBuy.java   (working copy)
    @@ -140,7 +140,7 @@
           }
           
           // Check for available funds
    -      if (totalCost > player.getAdena())
    +      if (totalCost > player.getBuyStoreCurrency())
           {
              player.sendPacket(new PrivateStoreManageListBuy(player));
              player.sendPacket(new SystemMessage(SystemMessageId.THE_PURCHASE_PRICE_IS_HIGHER_THAN_MONEY));
    Index: java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreListBuy.java
    ===================================================================
    --- java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreListBuy.java   (revision 4410)
    +++ java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreListBuy.java   (working copy)
    @@ -33,7 +33,7 @@
        public PrivateStoreListBuy(L2PcInstance player, L2PcInstance storePlayer)
        {
           _objId = storePlayer.getObjectId();
    -      _playerAdena = player.getAdena();
    +      _playerAdena = player.getBuyStoreCurrency();
           storePlayer.getSellList().updateItems(); // Update SellList for case inventory content has changed
           _items = storePlayer.getBuyList().getAvailableItems(player.getInventory());
        }
    Index: java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreListSell.java
    ===================================================================
    --- java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreListSell.java   (revision 4410)
    +++ java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreListSell.java   (working copy)
    @@ -34,7 +34,7 @@
        public PrivateStoreListSell(L2PcInstance player, L2PcInstance storePlayer)
        {
           _objId = storePlayer.getObjectId();
    -      _playerAdena = player.getAdena();
    +      _playerAdena = player.getSellStoreCurrency();
           _items = storePlayer.getSellList().getItems();
           _packageSale = storePlayer.getSellList().isPackaged();
        }
    Index: java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreManageListBuy.java
    ===================================================================
    --- java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreManageListBuy.java   (revision 4410)
    +++ java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreManageListBuy.java   (working copy)
    @@ -34,7 +34,7 @@
        public PrivateStoreManageListBuy(L2PcInstance player)
        {
           _objId = player.getObjectId();
    -      _playerAdena = player.getAdena();
    +      _playerAdena = player.getBuyStoreCurrency();
           _itemList = player.getInventory().getUniqueItems(false, true);
           _buyList = player.getBuyList().getItems();
        }
    Index: java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreManageListSell.java
    ===================================================================
    --- java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreManageListSell.java   (revision 4410)
    +++ java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreManageListSell.java   (working copy)
    @@ -42,7 +42,7 @@
        public PrivateStoreManageListSell(L2PcInstance player, boolean isPackageSale)
        {
           _objId = player.getObjectId();
    -      _playerAdena = player.getAdena();
    +      _playerAdena = player.getSellStoreCurrency();
           player.getSellList().updateItems();
           _packageSale = isPackageSale;
           _itemList = player.getInventory().getAvailableItems(player.getSellList());
    Index: java/config/l2jmods.properties
    ===================================================================
    --- java/config/l2jmods.properties   (revision 4410)
    +++ java/config/l2jmods.properties   (working copy)
    @@ -379,3 +379,14 @@
     # Basic protection against L2Walker.
     # Default: False
     L2WalkerProtection = False
    +
    +# ---------------------------------------------------------------------------
    +# Private Store Buy/Sell - Moneda de cambio
    +# ---------------------------------------------------------------------------
    +# Elige que moneda quieres que se use como pago en los Private Store Buy (amarillos)
    +# Retail: 57, Por Defecto: 57
    +PrivateStoreBuyMoneda = 57
    +
    +# Elige que moneda quieres que se use como pago en los Private Store Sell (morados)
    +# Retail: 57, Por Defecto: 57