Jump to content
  • 0

CODE H5 FOR IL (Auction House)


Question

Posted (edited)

Hi, I need help adapting this code from H5 to IL, it's the "Auction House" system, I've adapted a lot, but I'm having this error when the item returns to its owner when the time that has been stipulated expires , in the H5 he uses the email system thing that is different from IL, could someone help me, any idea, suggestion of what I can do?
 

ReturnItemsToOwnerThread

+	private synchronized void returnItemToOwner(AuctionHouseEntranceItem item)
+	{
+		if (item.isRemoved())
+		{
+			return;
+		}
+		
+		item.setIsRemoved(true);
+		
+		final ItemContainer container = _containersByCharId.get(item.getCharId());
+		if ((container == null) || (container.getSize() == 0))
+		{
+			return;
+		}
+		
+		if (item.getItemInstance().getItemLocation() != ItemLocation.AUCTION)
+		{
+			_log.warn(getClass().getSimpleName() + ": The item " + item.getObjectId() + " that is being returned to the owner doesnt belong to the auction house");
+			return;
+		}
+		
+		ThreadPoolManager.getInstance().scheduleGeneral(new ReturnItemsToOwnerThread(container, item), 100);
+	}
+	
+	private class ReturnItemsToOwnerThread implements Runnable
+	{
+		private final ItemContainer _container;
+		private final AuctionHouseEntranceItem _item;
+		
+		public ReturnItemsToOwnerThread(ItemContainer container, AuctionHouseEntranceItem item)
+		{
+			_container = container;
+			_item = item;
+		}
+		
+		@Override
+		public void run()
+		{
+			synchronized (_entrancesById)
+			{
+				final String message = "Your item couldn't be sold on the set period, so it's now returning to you\nThanks for using our Auction House system";
+				final Message msg = new Message(_item.getCharId(), "Auction House Return", message, Message.SendBySystem.NONE);
+				final Mail attachments = msg.createAttachments();
+				final L2ItemInstance newItem = _container.transferItem("AuctionHouse", _item.getObjectId(), _item.getQuantity(), attachments, null, null);
+				if (newItem == null)
+				{
+					_log.warn(getClass().getSimpleName() + ": Error adding attachment item " + _item.getObjectId() + " for char " + _item.getCharId() + " (newitem == null)");
+					return;
+				}
+				newItem.setItemLocation(newItem.getItemLocation(), msg.getId());
+				
+				MailManager.getInstance().sendMessage(msg);
+				
+				modifyAuctionItemCountToDB(_item, -1);
+			}
+		}
+	}

 

DOWNLOAD CODE FULL FOR H5.

 

Edited by L2shaken

1 answer to this question

Recommended Posts

  • 0
Posted

The best would be to move items to personal warehouse (if not full), and if unsuccessful (via a check slots count) on inventory (if not full).

If both are full, items could be lost.

Freight warehouse could be used, but only if items aren't "bound" to a character (custom "bind on acquisition" system, or "one item per character" scenario - such as custom tutorial or unique quest).

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...