Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.sf.l2j.gameserver.model.actor.instance;
- import java.util.ArrayList;
- import java.util.Map;
- import java.util.concurrent.ConcurrentHashMap;
- import net.sf.l2j.commons.lang.StringUtil;
- import net.sf.l2j.gameserver.data.sql.AuctionTable;
- import net.sf.l2j.gameserver.data.xml.ItemData;
- import net.sf.l2j.gameserver.model.AuctionItem;
- import net.sf.l2j.gameserver.model.World;
- import net.sf.l2j.gameserver.model.actor.Player;
- import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
- import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;
- import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
- /**
- * @author Anarchy
- *
- */
- public class AuctionManager extends Folk
- {
- public AuctionManager(int objectId, NpcTemplate template)
- {
- super(objectId, template);
- }
- @Override
- public void onBypassFeedback(Player player, String command)
- {
- if (command.startsWith("auction"))
- {
- try
- {
- String[] data = command.substring(8).split(" - ");
- int page = Integer.parseInt(data[0]);
- String search = data[1];
- showAuction(player, page, search);
- }
- catch (Exception e)
- {
- showChatWindow(player);
- player.sendMessage("Invalid input. Please try again.");
- return;
- }
- }
- else if (command.startsWith("buy"))
- {
- int auctionId = Integer.parseInt(command.substring(4));
- AuctionItem item = AuctionTable.getInstance().getItem(auctionId);
- if (item == null)
- {
- showChatWindow(player);
- player.sendMessage("Invalid choice. Please try again.");
- return;
- }
- if (player.getInventory().getItemByItemId(item.getCostId()) == null || player.getInventory().getItemByItemId(item.getCostId()).getCount() < item.getCostCount())
- {
- showChatWindow(player);
- player.sendMessage("Incorrect item count.");
- return;
- }
- player.destroyItemByItemId("auction", item.getCostId(), item.getCostCount(), this, true);
- final Player owner = World.getInstance().getPlayer(item.getOwnerId());
- if (owner != null && owner.isOnline())
- {
- owner.addItem("auction", item.getCostId(), item.getCostCount(), null, true);
- owner.sendMessage("You have sold an item in the Auction Shop.");
- }
- else
- player.addItemToOffline(item.getOwnerId(), item.getCostId(), item.getCostCount());
- ItemInstance i = player.addItem("auction", item.getItemId(), item.getCount(), this, true);
- i.setEnchantLevel(item.getEnchant());
- player.sendPacket(new InventoryUpdate());
- player.sendMessage("You have purchased an item from the Auction Shop.");
- AuctionTable.getInstance().deleteItem(item);
- showChatWindow(player);
- }
- else if (command.startsWith("addpanel"))
- {
- int page = Integer.parseInt(command.substring(9));
- showAddPanel(player, page);
- }
- else if (command.startsWith("additem"))
- {
- int itemId = Integer.parseInt(command.substring(8));
- if (player.getInventory().getItemByObjectId(itemId) == null)
- {
- showChatWindow(player);
- player.sendMessage("Invalid item. Please try again.");
- return;
- }
- showAddPanel2(player, itemId);
- }
- else if (command.startsWith("addit2"))
- {
- try
- {
- String[] data = command.substring(7).split(" ");
- int itemId = Integer.parseInt(data[0]);
- String costitemtype = data[1];
- int costCount = Integer.parseInt(data[2]);
- int itemAmount = Integer.parseInt(data[3]);
- if (player.getInventory().getItemByObjectId(itemId) == null)
- {
- showChatWindow(player);
- player.sendMessage("Invalid item. Please try again.");
- return;
- }
- if (player.getInventory().getItemByObjectId(itemId).getCount() < itemAmount)
- {
- showChatWindow(player);
- player.sendMessage("Invalid item. Please try again.");
- return;
- }
- if (!player.getInventory().getItemByObjectId(itemId).isTradable())
- {
- showChatWindow(player);
- player.sendMessage("Invalid item. Please try again.");
- return;
- }
- int costId = 0;
- if (costitemtype.equals("Adena"))
- costId = 57;
- AuctionTable.getInstance().addItem(new AuctionItem(AuctionTable.getInstance().getNextAuctionId(), player.getObjectId(), player.getInventory().getItemByObjectId(itemId).getItemId(), itemAmount, player.getInventory().getItemByObjectId(itemId).getEnchantLevel(), costId, costCount));
- player.destroyItem("auction", itemId, itemAmount, this, true);
- player.sendPacket(new InventoryUpdate());
- player.sendMessage("You have added an item for sale in the Auction Shop.");
- showChatWindow(player);
- }
- catch (Exception e)
- {
- showChatWindow(player);
- player.sendMessage("Invalid input. Please try again.");
- return;
- }
- }
- else if (command.startsWith("myitems"))
- {
- int page = Integer.parseInt(command.substring(8));
- showMyItems(player, page);
- }
- else if (command.startsWith("remove"))
- {
- int auctionId = Integer.parseInt(command.substring(7));
- AuctionItem item = AuctionTable.getInstance().getItem(auctionId);
- if (item == null)
- {
- showChatWindow(player);
- player.sendMessage("Invalid choice. Please try again.");
- return;
- }
- AuctionTable.getInstance().deleteItem(item);
- ItemInstance i = player.addItem("auction", item.getItemId(), item.getCount(), this, true);
- i.setEnchantLevel(item.getEnchant());
- player.sendPacket(new InventoryUpdate());
- player.sendMessage("You have removed an item from the Auction Shop.");
- showChatWindow(player);
- }
- super.onBypassFeedback(player, command);
- }
- private void showMyItems(Player player, int page)
- {
- Map<Integer, ArrayList<AuctionItem>> items = new ConcurrentHashMap<>();
- int curr = 1;
- int counter = 0;
- ArrayList<AuctionItem> temp = new ArrayList<>();
- for (AuctionItem entry : AuctionTable.getInstance().getItems())
- {
- if (entry.getOwnerId() == player.getObjectId())
- {
- temp.add(entry);
- counter++;
- if (counter == 10)
- {
- items.put(curr, temp);
- temp = new ArrayList<>();
- curr++;
- counter = 0;
- }
- }
- }
- items.put(curr, temp);
- if (!items.containsKey(page))
- {
- showChatWindow(player);
- player.sendMessage("Invalid page. Please try again.");
- return;
- }
- final StringBuilder sb = new StringBuilder();
- StringUtil.append(sb, "<html><title>Auction Shop</title><body><center><br1>");
- StringUtil.append(sb, "<table width=310 bgcolor=000000 border=1>");
- StringUtil.append(sb, "<tr><td>Item</td><td>Cost</td><td></td></tr>");
- for (AuctionItem item : items.get(page))
- {
- StringUtil.append(sb, "<tr>");
- StringUtil.append(sb, "<td><img src=\""+ItemData.getInstance().getTemplate(item.getItemId()).getIcon()+"\" width=32 height=32 align=center></td>");
- StringUtil.append(sb, "<td>Item: "+(item.getEnchant() > 0 ? "+"+item.getEnchant()+" "+ItemData.getInstance().getTemplate(item.getItemId()).getName()+" - "+item.getCount() : ItemData.getInstance().getTemplate(item.getItemId()).getName()+" - "+item.getCount()));
- StringUtil.append(sb, "<br1>Cost: "+StringUtil.formatNumber(item.getCostCount())+" "+ItemData.getInstance().getTemplate(item.getCostId()).getName());
- StringUtil.append(sb, "</td>");
- StringUtil.append(sb, "<td fixwidth=71><button value=\"Remove\" action=\"bypass -h npc_"+getObjectId()+"_remove "+item.getAuctionId()+"\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">");
- StringUtil.append(sb, "</td></tr>");
- }
- StringUtil.append(sb, "</table><br><br>");
- StringUtil.append(sb, "Page: "+page);
- StringUtil.append(sb, "<br1>");
- if (items.keySet().size() > 1)
- {
- if (page > 1)
- StringUtil.append(sb, "<a action=\"bypass -h npc_"+getObjectId()+"_myitems "+(page-1)+"\"><- Prev</a>");
- if (items.keySet().size() > page)
- StringUtil.append(sb, "<a action=\"bypass -h npc_"+getObjectId()+"_myitems "+(page+1)+"\">Next -></a>");
- }
- StringUtil.append(sb, "</center></body></html>");
- NpcHtmlMessage htm = new NpcHtmlMessage(getObjectId());
- htm.setHtml(sb.toString());
- player.sendPacket(htm);
- }
- private void showAddPanel2(Player player, int itemId)
- {
- ItemInstance item = player.getInventory().getItemByObjectId(itemId);
- final StringBuilder sb = new StringBuilder();
- StringUtil.append(sb, "<html><title>Auction Shop</title><body><center><br1>");
- StringUtil.append(sb, "<img src=\""+ItemData.getInstance().getTemplate(item.getItemId()).getIcon() +"\" width=32 height=32 align=center>");
- StringUtil.append(sb, "Item: "+(item.getEnchantLevel() > 0 ? "+"+item.getEnchantLevel()+" "+item.getName() : item.getName()));
- if (item.isStackable())
- {
- StringUtil.append(sb, "<br>Set amount of items to sell:");
- StringUtil.append(sb, "<edit var=amm type=number width=120 height=17>");
- }
- StringUtil.append(sb, "<br>Select price:");
- StringUtil.append(sb, "<br><combobox width=120 height=17 var=ebox list=Adena;>");
- StringUtil.append(sb, "<br><edit var=count type=number width=120 height=17>");
- StringUtil.append(sb, "<br><button value=\"Add item\" action=\"bypass -h npc_"+getObjectId()+"_addit2 "+itemId+" $ebox $count "+(item.isStackable() ? "$amm" : "1")+"\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">");
- StringUtil.append(sb, "</center></body></html>");
- final NpcHtmlMessage htm = new NpcHtmlMessage(getObjectId());
- htm.setHtml(sb.toString());
- player.sendPacket(htm);
- }
- private void showAddPanel(Player player, int page)
- {
- Map<Integer, ArrayList<ItemInstance>> items = new ConcurrentHashMap<>();
- int curr = 1;
- int counter = 0;
- ArrayList<ItemInstance> temp = new ArrayList<>();
- for (ItemInstance item : player.getInventory().getItems())
- {
- if (item.getItemId() != 57 && item.isTradable())
- {
- temp.add(item);
- counter++;
- if (counter == 10)
- {
- items.put(curr, temp);
- temp = new ArrayList<>();
- curr++;
- counter = 0;
- }
- }
- }
- items.put(curr, temp);
- if (!items.containsKey(page))
- {
- showChatWindow(player);
- player.sendMessage("Invalid page. Please try again.");
- return;
- }
- final StringBuilder sb = new StringBuilder();
- StringUtil.append(sb, "<html><title>Auction Shop</title><body><center><br1>");
- StringUtil.append(sb, "Select item:");
- StringUtil.append(sb, "<br><table width=310 bgcolor=000000 border=1>");
- for (ItemInstance item : items.get(page))
- {
- StringUtil.append(sb, "<tr>");
- StringUtil.append(sb, "<td>");
- StringUtil.append(sb, "<img src=\""+ItemData.getInstance().getTemplate(item.getItemId()).getIcon()+"\" width=32 height=32 align=center></td>");
- StringUtil.append(sb, "<td>"+(item.getEnchantLevel() > 0 ? "+"+item.getEnchantLevel()+" "+item.getName() : item.getName()));
- StringUtil.append(sb, "</td>");
- StringUtil.append(sb, "<td><button value=\"Select\" action=\"bypass -h npc_"+getObjectId()+"_additem "+item.getObjectId()+"\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">");
- StringUtil.append(sb, "</td>");
- StringUtil.append(sb, "</tr>");
- }
- StringUtil.append(sb, "</table><br><br>");
- StringUtil.append(sb, "Page: "+page);
- StringUtil.append(sb, "<br1>");
- if (items.keySet().size() > 1)
- {
- if (page > 1)
- StringUtil.append(sb, "<a action=\"bypass -h npc_"+getObjectId()+"_addpanel "+(page-1)+"\"><- Prev</a>");
- if (items.keySet().size() > page)
- StringUtil.append(sb, "<a action=\"bypass -h npc_"+getObjectId()+"_addpanel "+(page+1)+"\">Next -></a>");
- }
- StringUtil.append(sb, "</center></body></html>");
- NpcHtmlMessage htm = new NpcHtmlMessage(getObjectId());
- htm.setHtml(sb.toString());
- player.sendPacket(htm);
- }
- private void showAuction(Player player, int page, String search)
- {
- boolean src = !search.equals("*null*");
- Map<Integer, ArrayList<AuctionItem>> items = new ConcurrentHashMap<>();
- int curr = 1;
- int counter = 0;
- ArrayList<AuctionItem> temp = new ArrayList<>();
- for (AuctionItem entry : AuctionTable.getInstance().getItems())
- {
- if (entry.getOwnerId() != player.getObjectId() && (!src || (src && ItemData.getInstance().getTemplate(entry.getItemId()).getName().contains(search))))
- {
- temp.add(entry);
- counter++;
- if (counter == 10)
- {
- items.put(curr, temp);
- temp = new ArrayList<>();
- curr++;
- counter = 0;
- }
- }
- }
- items.put(curr, temp);
- if (!items.containsKey(page))
- {
- showChatWindow(player);
- player.sendMessage("Invalid page. Please try again.");
- return;
- }
- final StringBuilder sb = new StringBuilder();
- StringUtil.append(sb, "<html><title>Auction Shop</title><body><center><br1>");
- StringUtil.append(sb, "<multiedit var=srch width=150 height=20><br1>");
- StringUtil.append(sb, "<button value=\"Search\" action=\"bypass -h npc_"+getObjectId()+"_auction 1 - $srch\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">");
- StringUtil.append(sb, "<br><table width=310 bgcolor=000000 border=1>");
- StringUtil.append(sb, "<tr><td>Item</td><td>Cost</td><td></td></tr>");
- for (AuctionItem item : items.get(page))
- {
- StringUtil.append(sb, "<tr>");
- StringUtil.append(sb, "<td><img src=\""+ ItemData.getInstance().getTemplate(item.getItemId()).getIcon() +"\" width=32 height=32 align=center></td>");
- StringUtil.append(sb, "<td>Item: "+(item.getEnchant() > 0 ? "+"+item.getEnchant()+" "+ItemData.getInstance().getTemplate(item.getItemId()).getName()+" - "+item.getCount() : ItemData.getInstance().getTemplate(item.getItemId()).getName()+" - "+item.getCount()));
- StringUtil.append(sb, "<br1>Cost: "+StringUtil.formatNumber(item.getCostCount())+" "+ItemData.getInstance().getTemplate(item.getCostId()).getName());
- StringUtil.append(sb, "</td>");
- StringUtil.append(sb, "<td fixwidth=71><button value=\"Buy\" action=\"bypass -h npc_"+getObjectId()+"_buy "+item.getAuctionId()+"\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">");
- StringUtil.append(sb, "</td></tr>");
- }
- StringUtil.append(sb, "</table><br><br>");
- StringUtil.append(sb, "Page: "+ page);
- StringUtil.append(sb, "<br1>");
- if (items.keySet().size() > 1)
- {
- if (page > 1)
- StringUtil.append(sb, "<a action=\"bypass -h npc_"+getObjectId()+"_auction "+(page-1)+" - "+search+"\"><- Prev</a>");
- if (items.keySet().size() > page)
- StringUtil.append(sb, "<a action=\"bypass -h npc_"+getObjectId()+"_auction "+(page+1)+" - "+search+"\">Next -></a>");
- }
- StringUtil.append(sb, "</center></body></html>");
- final NpcHtmlMessage htm = new NpcHtmlMessage(getObjectId());
- htm.setHtml(sb.toString());
- player.sendPacket(htm);
- }
- @Override
- public void showChatWindow(Player player, int val)
- {
- String name = "data/html/mods/auction/" + getNpcId() + ".htm";
- if (val != 0)
- name = "data/html/mods/auction/" + getNpcId() + "-" + val + ".htm";
- final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
- html.setFile(name);
- html.replace("%objectId%", getObjectId());
- html.replace("%npcName%", getName());
- player.sendPacket(html);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement