|
So i noticed alot of people having problems with the POS noted items dupe along with going over max cash from POS. Here is a quick fix, Just replace your listing.java
Code:package ethos.model.content.tradingpost; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Random; import ethos.Config; import ethos.Server; import ethos.model.items.Item; import ethos.model.items.ItemAssistant; import ethos.model.items.ItemDefinition; import ethos.model.items.ItemList; import ethos.model.players.Player; import ethos.model.players.PlayerHandler; import ethos.model.players.PlayerSave; import ethos.util.Misc; /** * * @author Nighel * @credits Nicholas * */ public class Listing { // make true to preload all sales and keep them all in the cache private static final boolean PRELOAD_ALL = false; // the next ID to be assigned to a sale, increment every time someone makes a new sale private static int NEXT_SALE_ID = 1; // Number of sales to keep in memory, irrelevant if PRELOAD_SALES is true private static int CACHE_SIZE = 100; // recently read sales kept in memory for faster access private static LinkedList<Sale> cache = new LinkedList<Sale>(); /** * Loads the total sales on load of server */ public static void loadNextSale() { getFile("./data/tradingpost/sales/"); //System.out.println("NEXT_SALE_ID: " + NEXT_SALE_ID); } /** * Counts how much sales there are * @Param dirPath */ private static void getFile(String dirPath) { File f = new File(dirPath); File[] files = f.listFiles(); if (files != null) for (int i = 0; i < files.length; i++) { NEXT_SALE_ID = files.length+1; File file = files[i]; if (file.isDirectory()) { getFile(file.getAbsolutePath()); } } } /** * Loads the sales via player name * @Param playerName - player his username * @Return */ public static List<Sale> getSales(String playerName) { String line = ""; LinkedList<Sale> sales = new LinkedList<Sale>(); // read text file at /players/playerName.txt try { BufferedReader br = new BufferedReader(new FileReader("./data/tradingpost/players/"+playerName+".txt")); while((line = br.readLine()) != null) { int id = Integer.parseInt(line); if(sales != null) sales.add(getSale(id)); } br.close(); return sales; } catch(Exception e) { e.printStackTrace(); return new LinkedList<Sale>(); } } /** * Loads the sales via item id * @Param itemId * @Return */ public static List<Sale> getSales(int itemId) { String line = ""; LinkedList<Sale> sales = new LinkedList<Sale>(); // read text file at /players/playerName.txt try { BufferedReader br = new BufferedReader(new FileReader("./data/tradingpost/items/"+itemId+".txt")); while((line = br.readLine()) != null) { int id = Integer.parseInt(line); if(sales != null) sales.add(getSale(id)); } br.close(); return sales; } catch(Exception e) { e.printStackTrace(); return new LinkedList<Sale>(); } } /** * Gets the sale via the id * @Param saleId - id of the sale * @Return */ public static Sale getSale(int saleId) { String[] split; // Check cache for this sale for(Sale sale : cache) if(sale.getSaleId() == saleId) return sale; // read text file at /sale/saleId.txt try { BufferedReader br = new BufferedReader(new FileReader("./data/tradingpost/sales/"+saleId+".txt")); // read information split = br.readLine().split("\t"); Sale sale = new Sale(saleId, split[0], Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Boolean.parseBoolean(split[6])); // If the cache is full, remove the last Sale. Add this one to the beginning either way. if(!PRELOAD_ALL && cache.size() == CACHE_SIZE) cache.removeLast(); cache.addFirst(sale); br.close(); return sale; } catch(Exception e) { e.printStackTrace(); return null; } } /** * Opens up the first interface for the trading post. * And then loading all the data thats needed. * @Param c */ public static void openPost(Player c, boolean soldItem, boolean openFirst) { if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } if (c.getMode().isTradingPermitted()) { resetEverything(c); emptyInterface(c, openFirst); c.getPA().showInterface(48600); if(soldItem) { String each = c.quantity > 1 ? "each" : ""; c.sendMessage("[@red@Trading Post@bla@] You successfully list "+c.quantity+"x "+ItemAssistant.getItemName(c.item)+" for "+Misc.format(c.price)+" GP " + each); c.item = -1; c.uneditItem = -1; c.quantity = -1; c.price = -1; } loadPlayersListings(c); c.insidePost = true; loadHistory(c); } resetEverything(c); } /** * Makes all the listings show up for the player. * @Param c */ public static void loadPlayersListings(Player c) { int start = 48788, id = 0, moneyCollectable = 0; LinkedList<Sale> sales = (LinkedList<Sale>) getSales(c.playerName); for(Sale sale : sales) { c.getPA().sendTradingPost(48847, sale.getId(), id, sale.getQuantity()); id++; c.getPA().sendFrame126(ItemAssistant.getItemName(sale.getId()), start); start++; c.getPA().sendFrame126("" + zerosintomills(sale.getPrice()), start); start++; c.getPA().sendFrame126(sale.getTotalSold() + " / " + sale.getQuantity() , start); start += 2; moneyCollectable += (sale.getPrice() * sale.getLastCollectedAmount()); } c.getPA().sendFrame126(Misc.format(moneyCollectable) + " GP", 48610); for (int k = id; k < 15; k++) { c.getPA().sendTradingPost(48847, -1, k, -1); } for(int i = start; i < 48850; i++) { c.getPA().sendFrame126("", i); } } /** * Shows the last 10 latest sales you have done. * @Param c */ public static void loadHistory(Player c) { for(int i = 0, start1 = 48636, start2 = 48637; i < c.saleItems.size(); i++) { //System.out.println("salesItems - " + c.saleItems.get(i).intValue()); //System.out.println("saleAmount - " + c.saleAmount.get(i).intValue()); //System.out.println("salePrice - " + c.salePrice.get(i).intValue()); if(c.saleItems.get(i).intValue() > 0 && c.saleAmount.get(i).intValue() > 0 && c.salePrice.get(i).intValue() > 0) { String each = c.saleAmount.get(i).intValue() > 1 ? "each" : "coins"; c.getPA().sendFrame126(c.saleAmount.get(i).intValue() + " x " + ItemAssistant.getItemName(c.saleItems.get(i).intValue()), start1); c.getPA().sendFrame126("sold for "+zerosintomills(c.salePrice.get(i).intValue())+" " + each, start2); start1 += 2; start2 += 2; } } } /** * Opens up the selected item using offer 1/5/10/all/x * @Param c * @Param itemId * @Param amount * @Param p */ @suppressWarnings("unused") public static void openSelectedItem(Player c, int itemId, int amount, int p) { //System.out.println(""); if (!c.getItems().playerHasItem(itemId, amount)) { c.sendMessage("[@red@Trading Post@bla@] You don't have that many "+ItemAssistant.getItemName(itemId) + (amount > 1 ? "s" : "")+"."); return; } if (ItemDefinition.forId(itemId) != null) { if (!ItemDefinition.forId(itemId).isTradable()) { c.sendMessage("[@red@Trading Post@bla@] You can't sell that item"); return; } } for(int item : Config.NOT_SHAREABLE) { if(item == itemId) { c.sendMessage("[@red@Trading Post@bla@] You can't sell that item"); return; } } if(itemId == 995) { c.sendMessage("[@red@Trading Post@bla@] You can't sell that item"); return; } //if(c.uneditItem <= 0) - Caused a dupe if you changed items c.uneditItem = itemId; //Config.trade c.item = -1; c.inSelecting = false; c.isListing = true; boolean noted = Item.itemIsNote[itemId]; //boolean noted = ItemDefinition.forId(itemId).isNoteable(); //if(noted) // itemId--; c.item = itemId; c.quantity = amount; ItemList itemList = Server.itemHandler.ItemList[c.item]; //c.price = p >= 1 ? p : (int) itemList.ShopValue; //c.getInventory().getItemshopValue(c.item); c.price = p >= 1 ? p : (int) ItemDefinition.forId(itemId).getValue(); c.getPA().showInterface(48598); c.getPA().sendTradingPost(48962, itemId, 0, amount); c.getPA().sendFrame126(ItemAssistant.getItemName(itemId), 48963); //item name c.getPA().sendFrame126("Price (each): "+Misc.format(c.price)+"", 48964); //price each c.getPA().sendFrame126("Quantity: " + amount, 48965); //quantity //c.getPA().sendFrame(s, 48966); //guide //c.getPA().sendFrame(s, 48967); //listings } /** * Writes every thing the the proper files. * @Param c */ public static void confirmListing(Player c) { if (c.uneditItem == -1) { if (c.debugMessage) c.sendMessage("Stopped"); return; } BufferedWriter sale_id; BufferedWriter item_id; BufferedWriter name; try { sale_id = new BufferedWriter(new FileWriter("./data/tradingpost/sales/"+NEXT_SALE_ID+".txt", true)); item_id = new BufferedWriter(new FileWriter("./data/tradingpost/items/"+c.item+".txt", true)); name = new BufferedWriter(new FileWriter("./data/tradingpost/players/"+c.playerName+".txt", true)); sale_id.write(c.playerName + "\t" + c.item + "\t" + c.quantity + "\t0\t" + c.price + "\t0\t" + "false"); sale_id.newLine(); item_id.write("" + NEXT_SALE_ID); item_id.newLine(); name.write("" + NEXT_SALE_ID); name.newLine(); //try { //CreateListing.getSingleton().createListing(NEXT_SALE_ID, c.item, c.getPA().getItemName(c.item), c.quantity, c.price, c.playerName, 0); //} catch (Exception e) { // e.printStackTrace(); //} Sale sale = new Sale(NEXT_SALE_ID, c.playerName, c.item, c.quantity, 0, c.price, 0, false); ++NEXT_SALE_ID; if(!PRELOAD_ALL && cache.size() == CACHE_SIZE) cache.removeLast(); cache.addFirst(sale); sale_id.close(); item_id.close(); name.close(); } catch (IOException e) { e.printStackTrace(); } if (c.debugMessage) c.sendMessage("uneditItem "+c.uneditItem+" - c.item "+c.item+" - quanity: "+c.quantity); c.getItems().deleteItem2(c.uneditItem, c.quantity); openPost(c, true, false); PlayerSave.save(c); } /** * Cancel a listing via its sale id * @Param c * @Param //saleId */ public static void cancelListing(Player c, int id, int itemId) { if (id < 0 || itemId < 0) return; Sale sales = getSales(c.playerName).get(id); int leftOver = sales.getQuantity() - sales.getTotalSold(), saleItem = sales.getId(); boolean stackable = Item.itemStackable[saleItem]; boolean isNoted = Item.itemIsNote[saleItem]; if(!stackable && !isNoted && leftOver > 1) { saleItem++; } if(sales.getId() == itemId) { //gg sales.setHasSold(true); save(sales); updateHistory(c, sales.getId(), sales.getTotalSold(), sales.getPrice()); if(leftOver > 0) { if ((((c.getItems().freeSlots() >= 1) || c.getItems().playerHasItem(saleItem, 1)) && Item.itemIsNote[saleItem]) || ((c.getItems().freeSlots() > 0) && !Item.itemStackable[saleItem])) { c.getItems().addItem(saleItem, leftOver); c.sendMessage("[@red@Trading Post@bla@] You succesfully cancel the offer for "+leftOver+"x "+ItemAssistant.getItemName(sales.getId())+"."); } else {// If inventory is full! c.getItems().addItemToBank(saleItem, leftOver); c.sendMessage("[@red@Trading Post@bla@] You succesfully cancel the offer for "+leftOver+"x "+ItemAssistant.getItemName(sales.getId())+"."); c.sendMessage("[@red@Trading Post@bla@] You had no room so your "+leftOver+"x "+ItemAssistant.getItemName(sales.getId())+" was sent to your bank."); } } loadPlayersListings(c); PlayerSave.save(c); } } /** * Collecting your money via the button * @Param c */ public static void collectMoney(Player c) { LinkedList<Sale> sales = (LinkedList<Sale>) getSales(c.playerName); int moneyCollectable = 0; for(Sale sale : sales) { moneyCollectable += (sale.getPrice() * sale.getLastCollectedAmount()); sale.setLastCollectedSold(0); save(sale); } if (moneyCollectable <= -1) { return; } else { c.getItems().addItem(995, moneyCollectable); c.sendMessage("[@red@Trading Post@bla@] You successfully collect "+Misc.format(moneyCollectable)+" coins from your coffer."); moneyCollectable = 0; c.getPA().sendFrame126(Misc.format(moneyCollectable) + " GP", 48610); PlayerSave.save(c); } } public static void save(Sale sale) { String line; String newLine = ""; try { BufferedWriter writer = new BufferedWriter(new FileWriter("./data/tradingpost/sales/"+sale.getSaleId()+".txt")); writer.write(sale.getName() + "\t" + sale.getId() + "\t" + sale.getQuantity() + "\t" + sale.getTotalSold() + "\t" + sale.getPrice() + "\t" + sale.getLastCollectedAmount() + "\t" + sale.hasSold()); writer.close(); } catch (IOException e) { e.printStackTrace(); } if(sale.hasSold()) { if(sale.getLastCollectedAmount() > 0) { Player c = (Player) PlayerHandler.players[PlayerHandler.getPlayerID(sale.getName())]; c.getItems().addItem(995, sale.getLastCollectedAmount() * sale.getPrice()); sale.setLastCollectedSold(0); } try { /*try { if(sale.getTotalSold() != sale.getQuantity()) CreateListing.getSingleton().updateListing(sale.getSaleId(), sale.getQuantity(), false); else CreateListing.getSingleton().updateListing(sale.getSaleId(), sale.getQuantity(), true); } catch (SQLException e) { e.printStackTrace(); }*/ BufferedReader read = new BufferedReader(new FileReader("./data/tradingpost/players/"+sale.getName()+".txt")); while((line = read.readLine()) != null) { if(line.equals(Integer.toString(sale.getSaleId()))) continue; newLine += line + System.getProperty("line.separator"); } read.close(); BufferedWriter write = new BufferedWriter(new FileWriter("./data/tradingpost/players/"+sale.getName()+".txt")); write.write(newLine); write.close(); newLine = ""; read = new BufferedReader(new FileReader("./data/tradingpost/items/"+sale.getId()+".txt")); while((line = read.readLine()) != null) { if(line.equals(Integer.toString(sale.getSaleId()))) continue; newLine += line + System.getProperty("line.separator"); } read.close(); write = new BufferedWriter(new FileWriter("./data/tradingpost/items/"+sale.getId()+".txt")); write.write(newLine); write.close(); newLine = ""; write = new BufferedWriter(new FileWriter("./data/tradingpost/sales/"+sale.getSaleId()+".txt")); newLine = sale.getName() + "\t" + sale.getId() + "\t" + sale.getQuantity() + "\t" + sale.getTotalSold() + "\t" + sale.getPrice() + "\t" + sale.getLastCollectedAmount() + "\t" + sale.hasSold(); write.write(newLine); write.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * Displays the 6 sales based on pages and item name/player name and recent * @Param sales * @Param c */ public static void displayResults(List<Sale> sales, Player c) { List<Integer> result = new ArrayList<Integer>(); int total = 0, skipped = 0, start = 48022; for(Sale sale : sales) { if(sale.hasSold() || sale.getTotalSold() == sale.getQuantity()) continue; if(skipped < (c.pageId - 1) * 6) { skipped++; continue; } result.add(sale.getSaleId()); c.getPA().sendTradingPost(48021, sale.getId(), total, sale.getQuantity() - sale.getTotalSold()); c.getPA().sendFrame126(ItemAssistant.getItemName(sale.getId()), start); start++; String each = sale.getQuantity() - sale.getTotalSold() > 1 ? " each" : ""; c.getPA().sendFrame126(Misc.format(sale.getPrice()) + each, start); start++; c.getPA().sendFrame126(sale.getName(), start); start++; c.getPA().sendFrame126(Integer.toString(sale.getTotalSold()), start); start++; total++; if(total == 6) { //System.out.println("Reached 6 recent sales"); break; } } for (int k = total; k < 6; k++) { c.getPA().sendTradingPost(48021, -1, k, -1); } for(int i = start; i < 48046; i++) { c.getPA().sendFrame126("", i); } c.saleResults = result; } /** * Loads the recent sales * @Param c */ public static void loadRecent(Player c) { c.pageId = 0; c.searchId = 3; c.getPA().sendFrame126("Trading Post - Recent listings", 48019); c.getPA().showInterface(48000); List<Sale> sales = new LinkedList<Sale>(); int total = 0; resetEverything(c); for(int i = NEXT_SALE_ID - 1; i > 0; i--) { Sale sale = getSale(i); if(sale.hasSold()) continue; total++; sales.add(sale); if(total == 60) break; } displayResults(sales, c); } public static void loadRecentPageTwo(Player c) { c.pageId = 0; c.searchId = 3; c.getPA().sendFrame126("Trading Post - Recent listings", 48019); c.getPA().showInterface(48000); List<Sale> sales = new LinkedList<Sale>(); int total = 0; resetEverything(c); for(int i = NEXT_SALE_ID - 7; i > 0; i--) { Sale sale = getSale(i); if(sale.hasSold()) continue; total++; sales.add(sale); if(total == 60) break; } displayResults(sales, c); } public static void buyListing(Player c, int slot, int amount) { if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } Sale sales = getSale(c.saleResults.get(slot)); if(sales.hasSold() || sales.getTotalSold() == sales.getQuantity()) { c.sendMessage("Item removed."); return; } if(sales.getQuantity() == sales.getTotalSold()) return; if(sales.getName().equalsIgnoreCase(c.playerName)) { c.sendMessage("[@red@Trading Post@bla@] You cannot buy your own listings."); return; } if(amount > sales.getQuantity()) amount = sales.getQuantity(); if(!c.getItems().playerHasItem(995, sales.getPrice() * amount)) { c.sendMessage("[@red@Trading Post@bla@] You need atleast "+Misc.format(sales.getPrice() * amount)+" coins to buy the "+amount+"x "+ItemAssistant.getItemName(sales.getId())+"."); return; } int slotsNeeded = amount; int saleItem = sales.getId(); if(amount > 1 && Item.itemIsNote[sales.getId()+1]) { saleItem++; } if(c.getItems().freeSlots() < slotsNeeded && (!Item.itemIsNote[sales.getId()+1] && !Item.itemStackable[sales.getId()])) { c.sendMessage("[@red@Trading Post@bla@] You need atleast "+ slotsNeeded +" free slots to buy this."); return; } c.getItems().deleteItem(995, sales.getPrice() * amount); c.getItems().addItem(saleItem, amount); c.sendMessage("[@red@Trading Post@bla@] You succesfully purchase "+ amount +"x "+ItemAssistant.getItemName(sales.getId())+"."); c.getItems().resetItems(3214); PlayerSave.save(c); c.sendMessage("saleId: " + sales.getSaleId()); c.sendMessage("collect: " + sales.getLastCollectedAmount()); c.sendMessage("total sold: " + sales.getTotalSold()); sales.setLastCollectedSold(sales.getLastCollectedAmount() + amount); sales.setTotalSold(sales.getTotalSold() + amount); c.sendMessage("collect 2: " + sales.getLastCollectedAmount()); c.sendMessage("total sold 2: " + sales.getTotalSold()); save(sales); if(PlayerHandler.getPlayerID(sales.getName()) != -1) { Player seller = (Player) PlayerHandler.players[PlayerHandler.getPlayerID(sales.getName())]; if(seller != null) { if(seller.playerName.equalsIgnoreCase(sales.getName())) { if(sales.getTotalSold() < sales.getQuantity()) seller.sendMessage("[@red@Trading Post@bla@] You succesfully sold "+ amount +"x of your "+ItemAssistant.getItemName(sales.getId())+"."); else seller.sendMessage("[@red@Trading Post@bla@] Finished selling your "+ItemAssistant.getItemName(sales.getId())+"."); PlayerSave.save(seller); if(seller.isListing) { loadPlayersListings(seller); } } } } } /** * Loads the sales via playerName * @Param c * @Param playerName */ public static void loadPlayerName(Player c, String playerName) { c.lookup = playerName; c.searchId = 2; c.getPA().showInterface(48000); c.getPA().sendFrame126("Trading Post - Searching for player: " + playerName, 48019); List<Sale> sales = new LinkedList<Sale>(); for(String s : new File("./data/tradingpost/players/").list()) { Collections.shuffle(sales); s = s.substring(0, s.indexOf(".")).toLowerCase(); if(s.contains(playerName.toLowerCase())) sales.addAll(getSales(s)); } displayResults(sales, c); } /** * Loads the sales via itemName * @Param c * @Param itemName */ public static void loadItemName(Player c, String itemName) { c.lookup = itemName; itemName = itemName.replace("_"," "); c.searchId = 1; c.getPA().showInterface(48000); c.getPA().sendFrame126("Trading Post - Searching for item: " + itemName, 48019); List<Integer> items = new LinkedList<Integer>(); List<Sale> sales = new LinkedList<Sale>(); for(String s : new File("./data/tradingpost/items/").list()) items.add(Integer.parseInt(s.substring(0, s.indexOf(".")))); for(int item : items) { Collections.shuffle(sales); //System.out.println("item: "+ItemAssistant.getItemName(item)+", itemName: " + itemName); if(ItemAssistant.getItemName(item).toLowerCase().contains(itemName.toLowerCase())) { sales.addAll(getSales(item)); } } displayResults(sales, c); } /** * Resets all the necessary stuff; * @Param c */ public static void resetEverything(Player c) { c.inSelecting = false; c.isListing = true; c.insidePost = false; c.setSidebarInterface(3, 3213); } /** * Handles the opening of the interface for offering an item * @Param c */ public static void openNewListing(Player c) { c.getPA().showInterface(48599); c.setSidebarInterface(3, 48500); // backpack tab for (int k = 0; k < 28; k++) { c.getPA().sendTradingPost(48501, c.playerItems[k]-1, k, c.playerItemsN[k]); } } /* * * Handles the buttons of the interfaces * */ public static void postButtons(Player c, int button) { switch(button) { case 189237: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } int total = 0; LinkedList<Sale> sales = (LinkedList<Sale>) getSales(c.playerName); for @suppressWarnings("unused") Sale sale : sales) total++; if(c.amDonated <= 9 && total >= 6) { c.sendMessage("[@red@Trading Post@bla@] You cannot have more then 6 listings as a regular player."); return; } else if(c.amDonated >= 10 && c.amDonated <= 149 && total >= 10) { c.sendMessage("[@red@Trading Post@bla@] You cannot have more then 10 listings as a low tier donator."); return; } else if(c.amDonated >= 150 && total >= 15) { c.sendMessage("[@red@Trading Post@bla@] You cannot have more then 15 listings."); return; } if(!c.inSelecting) { openNewListing(c); c.inSelecting = true; c.getPA().sendFrame106(3); } else { resetEverything(c); c.getPA().showInterface(48600); c.getPA().sendFrame106(3); } break; case 59229: //Close select item c.getPA().closeAllWindows(); resetEverything(c); break; case 191072: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } synchronized (c) { c.outStream.createFrame(191); } c.xInterfaceId = 191072; break; case 191075: // Removed quantity button if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } synchronized (c) { c.outStream.createFrame(192); } c.xInterfaceId = 191075; break; case 191078: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } if (c.quantity * c.price <= -1) { c.sendMessage("@red@Please do not exceed the max cash value!"); return; } else { confirmListing(c); break; } case 189223: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } collectMoney(c); break; case 189234: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } loadRecent(c); break; case 187133: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } openPost(c, false, false); break; case 187136: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } if(c.pageId > 1) c.pageId--; //System.out.println("id: "+c.searchId+" lookup: " + c.lookup); switch(c.searchId) { case 1: loadItemName(c, c.lookup); break; case 2: loadPlayerName(c, c.lookup); break; case 3: loadRecent(c); break; } break; case 187139: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } loadRecentPageTwo(c); break; } } /* * * This method makes it so it cleans out the history and my offers. * Incase you had a diffrent account with more listings. * */ public static void emptyInterface(Player c, boolean b) { for(int i = 0; i < 15; i++) { c.getPA().sendTradingPost(48847, -1, i, -1); } if(b) { for(int i = 48636; i < 48656; i++) { c.getPA().sendFrame126("", i); } } for(int i = 48787; i < 48847; i++) { c.getPA().sendFrame126("", i); } } /* * * Turns the 100,000,000 into 100m etc. * */ private static String zerosintomills(int j) { if(j >= 0 && j < 1000) return String.valueOf(j); if(j >= 1000 && j < 10000000) return j / 1000 + "K"; if(j >= 10000000 && j < 2147483647) return j / 1000000 + "M"; return String.valueOf(j); } private static void updateHistory(Player c, int itemId, int amount, int price) { //System.out.println("itemId - " + itemId); //System.out.println("amount - " + amount); //System.out.println("price - " + price); c.saleItems.add(0, itemId); c.saleItems.remove(c.saleItems.size()-1); c.saleAmount.add(0, amount); c.saleAmount.remove(c.saleAmount.size()-1); c.salePrice.add(0, price); c.salePrice.remove(c.salePrice.size()-1); loadHistory(c); } }
can someone help me with this please! discord : vividmods#8251
Based on your post in the help section, try following this guide from the original post, lol.
Spoiler for Fix Project errors related to libs:
Code:in eclipse: File -> import -> Existing Projects into Workspace -> select root directory -> browse -> click on the Hs-Source-dev-fixed file and click finish right click on the file -> build path -> add external archives -> CTRL+A -> open
Somebody around who can help me setting up this rsps on my computer locally i tried everything and i am a complete computer noob really need all the help i can get
Description Resource Path Location Type
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\c3p0-0.9.5.1.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\c3p0-0.9.5-pre10.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\commons-io-2.4.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\commons-lang3-3.3.2.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\everythingrs-api.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\gson-2.2.4.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\GTLVote.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\guava-18.0.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\guava-18.0-javadoc.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\jna.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\json-lib-2.4-jdk15.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\json-simple-1.1.1.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\jsoup-1.9.2.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\jsoup-1.9.2-sources.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\jython.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\log4j-1.2.15.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\mchange-commons-java-0.2.8.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\Motivote-server.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\mvgate3.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\mysql.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\netty.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\oshi-core.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\platform.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\poi.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\slf4j.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\slf4j-nop.jar' server Build path Build Path Problem
Project 'server' is missing required library: 'C:\Users\kenny\Desktop\Dragonstone Package\Project51 Package\Project51 Server\bin\deps\xstream.jar' server Build path Build Path Problem
The project cannot be built until build path errors are resolved server Unknown Java Problem
i get these errors can someone help please?
Hi,
Your method outputs:
\P51\Project51 Server\src\ethos\model\content\tradingpost\Listing .java:766:20
java: '(' expected
For people getting
useCode:\P51\Project51 Server\src\ethos\model\content\tradingpost\Listing .java:766:20 java: '(' expected
Does anyone know how to use crystal weapon seed?Code:package ethos.model.content.tradingpost; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import ethos.Config; import ethos.Server; import ethos.model.items.Item; import ethos.model.items.ItemAssistant; import ethos.model.items.ItemDefinition; import ethos.model.items.ItemList; import ethos.model.players.Player; import ethos.model.players.PlayerHandler; import ethos.model.players.PlayerSave; import ethos.util.Misc; /** * * @author Nighel * @credits Nicholas * */ public class Listing { // make true to preload all sales and keep them all in the cache private static final boolean PRELOAD_ALL = false; // the next ID to be assigned to a sale, increment every time someone makes a new sale private static int NEXT_SALE_ID = 1; // Number of sales to keep in memory, irrelevant if PRELOAD_SALES is true private static int CACHE_SIZE = 100; // recently read sales kept in memory for faster access private static LinkedList<Sale> cache = new LinkedList<Sale>(); /** * Loads the total sales on load of server */ public static void loadNextSale() { getFile("./data/tradingpost/sales/"); } /** * Counts how much sales there are * @Param dirPath */ private static void getFile(String dirPath) { File f = new File(dirPath); File[] files = f.listFiles(); if (files != null) for (int i = 0; i < files.length; i++) { NEXT_SALE_ID = files.length+1; File file = files[i]; if (file.isDirectory()) { getFile(file.getAbsolutePath()); } } } /** * Loads the sales via player name * @Param playerName - player his username * @Return */ public static List<Sale> getSales(String playerName) { String line = ""; LinkedList<Sale> sales = new LinkedList<Sale>(); // read text file at /players/playerName.txt try { BufferedReader br = new BufferedReader(new FileReader("./Data/tradingpost/players/"+playerName+".txt")); while((line = br.readLine()) != null) { int id = Integer.parseInt(line); if(sales != null) sales.add(getSale(id)); } br.close(); return sales; } catch(Exception e) { e.printStackTrace(); return new LinkedList<Sale>(); } } /** * Loads the sales via item id * @Param itemId * @Return */ public static List<Sale> getSales(int itemId) { String line = ""; LinkedList<Sale> sales = new LinkedList<Sale>(); // read text file at /players/playerName.txt try { BufferedReader br = new BufferedReader(new FileReader("./Data/tradingpost/items/"+itemId+".txt")); while((line = br.readLine()) != null) { int id = Integer.parseInt(line); if(sales != null) sales.add(getSale(id)); } br.close(); return sales; } catch(Exception e) { e.printStackTrace(); return new LinkedList<Sale>(); } } /** * Gets the sale via the id * @Param saleId - id of the sale * @Return */ public static Sale getSale(int saleId) { String[] split; // Check cache for this sale for(Sale sale : cache) if(sale.getSaleId() == saleId) return sale; // read text file at /sale/saleId.txt try { BufferedReader br = new BufferedReader(new FileReader("./data/tradingpost/sales/"+saleId+".txt")); // read information split = br.readLine().split("\t"); Sale sale = new Sale(saleId, split[0], Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Boolean.parseBoolean(split[6])); // If the cache is full, remove the last Sale. Add this one to the beginning either way. if(!PRELOAD_ALL && cache.size() == CACHE_SIZE) cache.removeLast(); cache.addFirst(sale); br.close(); return sale; } catch(Exception e) { e.printStackTrace(); return null; } } /** * Opens up the first interface for the trading post. * And then loading all the data thats needed. * @Param c */ public static void openPost(Player c, boolean soldItem, boolean openFirst) { if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } resetEverything(c); emptyInterface(c, openFirst); c.getPA().showInterface(48600); if(soldItem) { String each = c.quantity > 1 ? "each" : ""; c.sendMessage("[@red@Trading Post@bla@] You successfully list "+c.quantity+"x "+ItemAssistant.getItemName(c.item)+" for "+Misc.format(c.price)+" GP " + each); c.item = -1; c.uneditItem = -1; c.quantity = -1; c.price = -1; } loadPlayersListings(c); c.insidePost = true; loadHistory(c); } /** * Makes all the listings show up for the player. * @Param c */ public static void loadPlayersListings(Player c) { int start = 48788, id = 0, moneyCollectable = 0; LinkedList<Sale> sales = (LinkedList<Sale>) getSales(c.playerName); for(Sale sale : sales) { c.getPA().sendTradingPost(48847, sale.getId(), id, sale.getQuantity()-sale.getTotalSold()); id++; c.getPA().sendFrame126(ItemAssistant.getItemName(sale.getId()), start); start++; c.getPA().sendFrame126("" + zerosintomills(sale.getPrice()), start); start++; c.getPA().sendFrame126(sale.getTotalSold() + " / " + sale.getQuantity() , start); start += 2; moneyCollectable += (sale.getPrice() * sale.getLastCollectedAmount()); } c.getPA().sendFrame126(Misc.format(moneyCollectable) + " GP", 48610); for (int k = id; k < 15; k++) { c.getPA().sendTradingPost(48847, -1, k, -1); } for(int i = start; i < 48850; i++) { c.getPA().sendFrame126("", i); } } /** * Shows the last 10 latest sales you have done. * @Param c */ public static void loadHistory(Player c) { for(int i = 0, start1 = 48636, start2 = 48637; i < c.saleItems.size(); i++) { //System.out.println("salesItems - " + c.saleItems.get(i).intValue()); //System.out.println("saleAmount - " + c.saleAmount.get(i).intValue()); //System.out.println("salePrice - " + c.salePrice.get(i).intValue()); if(c.saleItems.get(i).intValue() > 0 && c.saleAmount.get(i).intValue() > 0 && c.salePrice.get(i).intValue() > 0) { String each = c.saleAmount.get(i).intValue() > 1 ? "each" : "coins"; c.getPA().sendFrame126(c.saleAmount.get(i).intValue() + " x " + ItemAssistant.getItemName(c.saleItems.get(i).intValue()), start1); c.getPA().sendFrame126("sold for "+zerosintomills(c.salePrice.get(i).intValue())+" " + each, start2); start1 += 2; start2 += 2; } } } /** * Opens up the selected item using offer 1/5/10/all/x * @Param c * @Param itemId * @Param amount * @Param p */ @suppressWarnings("unused") public static void openSelectedItem(Player c, int itemId, int amount, int p) { //System.out.println(""); if (!c.getItems().playerHasItem(itemId, amount) && !c.getItems().playerHasItem(itemId + 1, amount)) { c.sendMessage("[@red@Trading Post@bla@] You don't have that many "+ItemAssistant.getItemName(itemId) + (amount > 1 ? "s" : "")+"."); return; } if (ItemDefinition.forId(itemId) != null) { if (!ItemDefinition.forId(itemId).isTradable()) { c.sendMessage("[@red@Trading Post@bla@] You can't sell that item"); return; } } for(int item : Config.NOT_SHAREABLE) { if(item == itemId) { c.sendMessage("[@red@Trading Post@bla@] You can't sell that item"); return; } } if(itemId == 995) { c.sendMessage("[@red@Trading Post@bla@] You can't sell that item"); return; } //if(c.uneditItem <= 0) - Caused a dupe if you changed items c.uneditItem = itemId; //Config.trade c.item = -1; int[] itemAmounts = new int[3]; c.inSelecting = false; c.isListing = true; boolean noted = Item.itemIsNote[itemId]; //boolean noted = ItemDefinition.forId(itemId).isNoteable(); if(noted) itemId--; c.item = itemId; itemAmounts[0] = c.getItems().getItemCount(itemId); itemAmounts[1] = c.getItems().getItemCount(itemId + 1); if (itemAmounts[0] > itemAmounts[1]) { if (amount > itemAmounts[0]) { amount = itemAmounts[0]; } } else if (itemAmounts[1] > itemAmounts[0]) { if (amount > itemAmounts[1]) { amount = itemAmounts[1]; } } else { amount = 0; } c.quantity = amount; ItemList itemList = Server.itemHandler.ItemList[c.item]; //c.price = p >= 1 ? p : (int) itemList.ShopValue; //c.getInventory().getItemshopValue(c.item); c.price = p >= 1 ? p : (int) ItemDefinition.forId(itemId).getValue(); c.getPA().showInterface(48598); c.getPA().sendTradingPost(48962, itemId, 0, amount); c.getPA().sendFrame126(ItemAssistant.getItemName(itemId), 48963); //item name c.getPA().sendFrame126("Price (each): "+Misc.format(c.price)+"", 48964); //price each c.getPA().sendFrame126("Quantity: " + amount, 48965); //quantity //c.getPA().sendFrame(s, 48966); //guide //c.getPA().sendFrame(s, 48967); //listings } /** * Writes every thing the the proper files. * @Param c */ public static void confirmListing(Player c) { if (c.uneditItem == -1) { if (c.debugMessage) c.sendMessage("Stopped"); return; } BufferedWriter sale_id; BufferedWriter item_id; BufferedWriter name; try { sale_id = new BufferedWriter(new FileWriter("./Data/tradingpost/sales/"+NEXT_SALE_ID+".txt", true)); item_id = new BufferedWriter(new FileWriter("./Data/tradingpost/items/"+c.item+".txt", true)); name = new BufferedWriter(new FileWriter("./Data/tradingpost/players/"+c.playerName+".txt", true)); sale_id.write(c.playerName + "\t" + c.item + "\t" + c.quantity + "\t0\t" + c.price + "\t0\t" + "false"); sale_id.newLine(); item_id.write("" + NEXT_SALE_ID); item_id.newLine(); name.write("" + NEXT_SALE_ID); name.newLine(); //try { //CreateListing.getSingleton().createListing(NEXT_SALE_ID, c.item, c.getPA().getItemName(c.item), c.quantity, c.price, c.playerName, 0); //} catch (Exception e) { // e.printStackTrace(); //} Sale sale = new Sale(NEXT_SALE_ID, c.playerName, c.item, c.quantity, 0, c.price, 0, false); ++NEXT_SALE_ID; if(!PRELOAD_ALL && cache.size() == CACHE_SIZE) cache.removeLast(); cache.addFirst(sale); sale_id.close(); item_id.close(); name.close(); } catch (IOException e) { e.printStackTrace(); } if (c.debugMessage) c.sendMessage("uneditedItem "+c.uneditItem+" - c.item "+c.item+" - quantity: "+c.quantity); if (c.getItems().playerHasItem(c.uneditItem, c.quantity)) { c.getItems().deleteItem2(c.uneditItem, c.quantity); } else { c.getItems().deleteItem2(c.uneditItem + 1, c.quantity); } openPost(c, true, false); PlayerSave.save(c); } /** * Cancel a listing via its sale id * @Param c * @Param saleId */ public static void cancelListing(Player c, int id, int itemId) { if (id < 0 || itemId < 0) return; Sale sales = getSales(c.playerName).get(id); int leftOver = sales.getQuantity() - sales.getTotalSold(), saleItem = sales.getId(); boolean stackable = Item.itemStackable[saleItem]; boolean isNoted = Item.itemIsNote[saleItem]; if(!stackable && !isNoted && leftOver > 1) { saleItem++; } if(sales.getId() == itemId) { //gg sales.setHasSold(true); save(sales); updateHistory(c, sales.getId(), sales.getTotalSold(), sales.getPrice()); if(leftOver > 0) { if ((((c.getItems().freeSlots() >= 1) || c.getItems().playerHasItem(saleItem, 1)) && Item.itemIsNote[saleItem]) || ((c.getItems().freeSlots() > 0) && !Item.itemStackable[saleItem])) { c.getItems().addItem(saleItem, leftOver); c.sendMessage("[@red@Trading Post@bla@] You successfully cancel the offer for "+leftOver+"x "+ItemAssistant.getItemName(sales.getId())+"."); } else {// If inventory is full! c.getItems().addItemToBank(saleItem, leftOver); c.sendMessage("[@red@Trading Post@bla@] You successfully cancel the offer for "+leftOver+"x "+ItemAssistant.getItemName(sales.getId())+"."); c.sendMessage("[@red@Trading Post@bla@] You had no room so your "+leftOver+"x "+ItemAssistant.getItemName(sales.getId())+" was sent to your bank."); } } loadPlayersListings(c); PlayerSave.save(c); } } /** * Collecting your money via the button * @Param c */ public static void collectMoney(Player c) { LinkedList<Sale> sales = (LinkedList<Sale>) getSales(c.playerName); int moneyCollectable = 0; for(Sale sale : sales) { moneyCollectable += (sale.getPrice() * sale.getLastCollectedAmount()); sale.setLastCollectedSold(0); save(sale); } c.getItems().addItem(995, moneyCollectable); if(moneyCollectable == 0) { c.sendMessage("[@red@Trading Post@bla@] The coffer is empty."); return; } else { c.sendMessage("[@red@Trading Post@bla@] You successfully collect "+Misc.format(moneyCollectable)+" coins from your coffer."); } //c.sendMessage("[@red@Trading Post@bla@] You successfully collect "+Misc.format(moneyCollectable)+" coins from your coffer."); moneyCollectable = 0; c.getPA().sendFrame126(Misc.format(moneyCollectable) + " GP", 48610); PlayerSave.save(c); } public static void save(Sale sale) { String line; String newLine = ""; try { BufferedWriter writer = new BufferedWriter(new FileWriter("./data/tradingpost/sales/"+sale.getSaleId()+".txt")); writer.write(sale.getName() + "\t" + sale.getId() + "\t" + sale.getQuantity() + "\t" + sale.getTotalSold() + "\t" + sale.getPrice() + "\t" + sale.getLastCollectedAmount() + "\t" + sale.hasSold()); writer.close(); } catch (IOException e) { e.printStackTrace(); } if(sale.hasSold()) { if(sale.getLastCollectedAmount() > 0) { Player c = (Player) PlayerHandler.players[PlayerHandler.getPlayerID(sale.getName())]; c.getItems().addItem(995, sale.getLastCollectedAmount() * sale.getPrice()); sale.setLastCollectedSold(0); } try { /*try { if(sale.getTotalSold() != sale.getQuantity()) CreateListing.getSingleton().updateListing(sale.getSaleId(), sale.getQuantity(), false); else CreateListing.getSingleton().updateListing(sale.getSaleId(), sale.getQuantity(), true); } catch (SQLException e) { e.printStackTrace(); }*/ BufferedReader read = new BufferedReader(new FileReader("./Data/tradingpost/players/"+sale.getName()+".txt")); while((line = read.readLine()) != null) { if(line.equals(Integer.toString(sale.getSaleId()))) continue; newLine += line + System.getProperty("line.separator"); } read.close(); BufferedWriter write = new BufferedWriter(new FileWriter("./Data/tradingpost/players/"+sale.getName()+".txt")); write.write(newLine); write.close(); newLine = ""; read = new BufferedReader(new FileReader("./Data/tradingpost/items/"+sale.getId()+".txt")); while((line = read.readLine()) != null) { if(line.equals(Integer.toString(sale.getSaleId()))) continue; newLine += line + System.getProperty("line.separator"); } read.close(); write = new BufferedWriter(new FileWriter("./data/tradingpost/items/"+sale.getId()+".txt")); write.write(newLine); write.close(); newLine = ""; write = new BufferedWriter(new FileWriter("./data/tradingpost/sales/"+sale.getSaleId()+".txt")); newLine = sale.getName() + "\t" + sale.getId() + "\t" + sale.getQuantity() + "\t" + sale.getTotalSold() + "\t" + sale.getPrice() + "\t" + sale.getLastCollectedAmount() + "\t" + sale.hasSold(); write.write(newLine); write.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * Displays the 6 sales based on pages and item name/player name and recent * @Param sales * @Param c */ public static void displayResults(List<Sale> sales, Player c) { List<Integer> result = new ArrayList<Integer>(); int total = 0, skipped = 0, start = 48022; for(Sale sale : sales) { if(sale.hasSold() || sale.getTotalSold() == sale.getQuantity()) continue; if(skipped < (c.pageId - 1) * 6) { skipped++; continue; } result.add(sale.getSaleId()); c.getPA().sendTradingPost(48021, sale.getId(), total, sale.getQuantity() - sale.getTotalSold()); c.getPA().sendFrame126(ItemAssistant.getItemName(sale.getId()), start); start++; String each = sale.getQuantity() - sale.getTotalSold() > 1 ? " each" : ""; c.getPA().sendFrame126(Misc.format(sale.getPrice()) + each, start); start++; c.getPA().sendFrame126(sale.getName(), start); start++; c.getPA().sendFrame126(Integer.toString(sale.getTotalSold()), start); start++; total++; if(total == 6) { //System.out.println("Reached 6 recent sales"); break; } } for (int k = total; k < 6; k++) { c.getPA().sendTradingPost(48021, -1, k, -1); } for(int i = start; i < 48046; i++) { c.getPA().sendFrame126("", i); } c.saleResults = result; } /** * Loads the recent sales * @Param c */ public static void loadRecent(Player c, int pageId) { c.pageId = pageId; c.searchId = 3; c.getPA().sendFrame126("Trading Post - Recent listings", 48019); c.getPA().showInterface(48000); List<Sale> sales = new LinkedList<Sale>(); int total = 0; for(int i = NEXT_SALE_ID - 1; i > 0; i--) { Sale sale = getSale(i); if(sale.hasSold()) continue; total++; sales.add(sale); if(total == 60) break; } displayResults(sales, c); } public static void buyListing(Player c, int slot, int amount) { Sale sales = getSale(c.saleResults.get(slot)); if(sales.hasSold() || sales.getQuantity() == sales.getTotalSold()){ c.sendMessage("Item is no longer available."); loadRecent(c, 0); return; } if((amount > sales.getQuantity() - sales.getTotalSold())) { c.sendMessage("[@red@Trading Post@bla@] There is only "+(sales.getQuantity() - sales.getTotalSold())+"x "+ItemAssistant.getItemName(sales.getId())+" available."); return; } if(sales.getName().equalsIgnoreCase(c.playerName)) { c.sendMessage("[@red@Trading Post@bla@] You cannot buy your own listings."); return; } if(!c.getItems().playerHasItem(995, sales.getPrice() * amount)) { c.sendMessage("[@red@Trading Post@bla@] You need at least "+Misc.format(sales.getPrice() * amount)+" coins to buy the "+amount+"x "+ItemAssistant.getItemName(sales.getId())+"."); return; } int slotsNeeded = amount; int saleItem = sales.getId(); if(amount > 1 && Item.itemIsNote[sales.getId()+1]) { saleItem++; } if(amount == 1 && Item.itemIsNote[sales.getId()+1] && c.getItems().freeSlots() < slotsNeeded ) { //saleItem++; c.sendMessage("[@red@Trading Post@bla@] You need atleast "+ slotsNeeded +" free slots to buy this."); return; } if(c.getItems().freeSlots() < slotsNeeded && (!Item.itemIsNote[sales.getId()+1] && !Item.itemStackable[sales.getId()])) { c.sendMessage("[@red@Trading Post@bla@] You need atleast "+ slotsNeeded +" free slots to buy this."); return; } //c.getItems().playerHasItem(sales.getId()+1); c.getItems().deleteItem(995, sales.getPrice() * amount); c.getItems().addItem(saleItem, amount); c.sendMessage("[@red@Trading Post@bla@] You successfully purchase "+ amount +"x "+ItemAssistant.getItemName(sales.getId())+"."); c.getItems().resetItems(3214); PlayerSave.save(c); c.sendMessage("saleId: " + sales.getSaleId()); c.sendMessage("collect: " + sales.getLastCollectedAmount()); c.sendMessage("total sold: " + sales.getTotalSold()); sales.setLastCollectedSold(sales.getLastCollectedAmount() + amount); sales.setTotalSold(sales.getTotalSold() + amount); c.sendMessage("collect 2: " + sales.getLastCollectedAmount()); c.sendMessage("total sold 2: " + sales.getTotalSold()); save(sales); if(PlayerHandler.getPlayerID(sales.getName()) != -1) { Player seller = (Player) PlayerHandler.players[PlayerHandler.getPlayerID(sales.getName())]; if(seller != null) { if(seller.playerName.equalsIgnoreCase(sales.getName())) { if(sales.getTotalSold() < sales.getQuantity()) seller.sendMessage("[@red@Trading Post@bla@] You successfully sold "+ amount +"x of your "+ItemAssistant.getItemName(sales.getId())+"."); else seller.sendMessage("[@red@Trading Post@bla@] Finished selling your "+ItemAssistant.getItemName(sales.getId())+"."); PlayerSave.save(seller); if(seller.isListing) { loadPlayersListings(seller); } } } } loadRecent(c, c.pageId); } /** * Loads the sales via playerName * @Param c * @Param playerName */ public static void loadPlayerName(Player c, String playerName) { c.lookup = playerName; c.searchId = 2; c.getPA().showInterface(48000); c.getPA().sendFrame126("Trading Post - Searching for player: " + playerName, 48019); List<Sale> sales = new LinkedList<Sale>(); for(String s : new File("./Data/tradingpost/players/").list()) { s = s.substring(0, s.indexOf(".")).toLowerCase(); if(s.contains(playerName.toLowerCase())) sales.addAll(getSales(s)); } displayResults(sales, c); } /** * Loads the sales via itemName * @Param c * @Param itemName */ public static void loadItemName(Player c, String itemName) { c.lookup = itemName; itemName = itemName.replace("_"," "); c.searchId = 1; c.getPA().showInterface(48000); c.getPA().sendFrame126("Trading Post - Searching for item: " + itemName, 48019); List<Integer> items = new LinkedList<Integer>(); List<Sale> sales = new LinkedList<Sale>(); for(String s : new File("./data/tradingpost/items/").list()) items.add(Integer.parseInt(s.substring(0, s.indexOf(".")))); for(int item : items) { //System.out.println("item: "+ItemAssistant.getItemName(item)+", itemName: " + itemName); if(ItemAssistant.getItemName(item).toLowerCase().contains(itemName.toLowerCase())) { sales.addAll(getSales(item)); } } displayResults(sales, c); } /** * Resets all the necessary stuff; * @Param c */ public static void resetEverything(Player c) { c.inSelecting = false; c.isListing = true; c.insidePost = false; c.setSidebarInterface(3, 3213); } /** * Handles the opening of the interface for offering an item * @Param c */ public static void openNewListing(Player c) { c.getPA().showInterface(48599); c.setSidebarInterface(3, 48500); // backpack tab for (int k = 0; k < 28; k++) { c.getPA().sendTradingPost(48501, c.playerItems[k]-1, k, c.playerItemsN[k]); } } /* * * Handles the buttons of the interfaces * */ public static void postButtons(Player c, int button) { switch(button) { case 189237: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } int total = 0; LinkedList<Sale> sales = (LinkedList<Sale>) getSales(c.playerName); for @suppressWarnings("unused") Sale sale : sales) total++; /* if(c.amDonated <= 9 && total >= 6) { c.sendMessage("[@red@Trading Post@bla@] You cannot have more then 6 listings as a regular player."); return; } else if(c.amDonated >= 10 && c.amDonated <= 149 && total >= 10) { c.sendMessage("[@red@Trading Post@bla@] You cannot have more then 10 listings as a low tier donator."); return; } else if(c.amDonated >= 150 && total >= 15) { c.sendMessage("[@red@Trading Post@bla@] You cannot have more then 15 listings."); return; }*/ if(!c.inSelecting) { openNewListing(c); c.inSelecting = true; c.getPA().sendFrame106(3); } else { resetEverything(c); c.getPA().showInterface(48600); c.getPA().sendFrame106(3); } break; case 59229: //Close case 187130: case 189218: c.getPA().closeAllWindows(); resetEverything(c); break; case 187227: //refresh loadRecent(c, 0); break; case 191072: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } synchronized (c) { c.outStream.createFrame(191); } c.xInterfaceId = 191072; break; case 191075: // Removed quantity button if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } synchronized (c) { c.outStream.createFrame(192); } c.xInterfaceId = 191075; break; case 191078: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } confirmListing(c); break; case 189223: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } collectMoney(c); break; case 189234: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } loadRecent(c, c.pageId); break; case 187133: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } openPost(c, false, false); break; case 187136: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } if(c.pageId > 1) c.pageId--; //System.out.println("id: "+c.searchId+" lookup: " + c.lookup); switch(c.searchId) { case 1: loadItemName(c, c.lookup); break; case 2: loadPlayerName(c, c.lookup); break; case 3: loadRecent(c, c.pageId); break; } break; case 187139: if (!c.getMode().isTradingPermitted()) { c.sendMessage("You are not permitted to make use of this."); return; } c.pageId++; //System.out.println("id: "+c.searchId+" lookup: " + c.lookup); switch(c.searchId) { case 1: loadItemName(c, c.lookup); break; case 2: loadPlayerName(c, c.lookup); break; case 3: loadRecent(c, c.pageId); break; } break; } } /* * * This method makes it so it cleans out the history and my offers. * Incase you had a diffrent account with more listings. * */ public static void emptyInterface(Player c, boolean b) { for(int i = 0; i < 15; i++) { c.getPA().sendTradingPost(48847, -1, i, -1); } if(b) { for(int i = 48636; i < 48656; i++) { c.getPA().sendFrame126("", i); } } for(int i = 48787; i < 48847; i++) { c.getPA().sendFrame126("", i); } } /* * * Turns the 100,000,000 into 100m etc. * */ private static String zerosintomills(int j) { if(j >= 0 && j < 1000) return String.valueOf(j); if(j >= 1000 && j < 10000000) return j / 1000 + "K"; if(j >= 10000000 && j < 2147483647) return j / 1000000 + "M"; return String.valueOf(j); } private static void updateHistory(Player c, int itemId, int amount, int price) { //System.out.println("itemId - " + itemId); //System.out.println("amount - " + amount); //System.out.println("price - " + price); c.saleItems.add(0, itemId); c.saleItems.remove(c.saleItems.size()-1); c.saleAmount.add(0, amount); c.saleAmount.remove(c.saleAmount.size()-1); c.salePrice.add(0, price); c.salePrice.remove(c.salePrice.size()-1); loadHistory(c); } }
« Previous Thread | Next Thread » |
Thread Information |
Users Browsing this ThreadThere are currently 1 users browsing this thread. (0 members and 1 guests) |