Thread: Major Help needed!! Items sell for max cash REP++THANKS

Results 1 to 2 of 2
  1. #1 Major Help needed!! Items sell for max cash REP++THANKS 
    Banned
    Join Date
    Feb 2014
    Posts
    132
    Thanks given
    50
    Thanks received
    4
    Rep Power
    0
    So I got runelove source and the prices are just ****ed up... I sell a normal bone to the general store I get 2147m I tired to fix it using the prices and Even ItemDef editor
    but nothing is working.

    Also From the summoning shop if you buy a shard and You sell it back you get 2147m


    someone help me please!!!!

    Btw Note: if it says the shop will buy this certain item for 0 coins it sells for max cash

    Shop.Java
    Code:
    package com.rs.game.player.content;
     
    import java.util.concurrent.CopyOnWriteArrayList;
    
    import com.rs.cache.loaders.ItemDefinitions;
    import com.rs.game.item.Item;
    import com.rs.game.player.Player;
    import com.rs.utils.ItemExamines;
    import com.rs.utils.ItemSetsKeyGenerator;
     
    public class Shop {
     
            private static final int MAIN_STOCK_ITEMS_KEY = ItemSetsKeyGenerator.generateKey();
     
            private static final int MAX_SHOP_ITEMS = 40;
            public static final int COINS = 995;
     
            private String name;
            private Item[] mainStock;
            private int[] defaultQuantity;
            private Item[] generalStock;
            private int money;
            private CopyOnWriteArrayList<Player> viewingPlayers;
     
            public Shop(String name, int money, Item[] mainStock, boolean isGeneralStore) {
                    viewingPlayers = new CopyOnWriteArrayList<Player>();
                    this.name = name;
                    this.money = money;
                    this.mainStock = mainStock;
                    defaultQuantity = new int[mainStock.length];
                    for (int i = 0; i < defaultQuantity.length; i++)
                            defaultQuantity[i] = mainStock[i].getAmount();
                    if (isGeneralStore && mainStock.length < MAX_SHOP_ITEMS)
                            generalStock = new Item[MAX_SHOP_ITEMS - mainStock.length];
            }
     
            public boolean isGeneralStore() {
                    return generalStock != null;
            }
     
            public void addPlayer(final Player player) {
                    viewingPlayers.add(player);
                    player.getTemporaryAttributtes().put("Shop", this);
                    player.setCloseInterfacesEvent(new Runnable() {
                            @Override
                            public void run() {
                                    viewingPlayers.remove(player);
                                    player.getTemporaryAttributtes().remove("Shop");
                                    if ((boolean) player.getTemporaryAttributtes().get("shop_buying") == false) //if in sell tab
                                            player.getTemporaryAttributtes().put("update_shop", false);
                                    player.getTemporaryAttributtes().remove("amount_shop");
                            }
                    });
                    player.getPackets().sendConfig(118, MAIN_STOCK_ITEMS_KEY);
                    player.getPackets().sendConfig(1496, -1);
                    player.getPackets().sendConfig(532, money);
                    sendStore(player);
                    player.getPackets().sendGlobalConfig(199, -1);
                    player.getInterfaceManager().sendInterface(1265);
                    for (int i = 0; i < MAX_SHOP_ITEMS; i++)
                            player.getPackets().sendGlobalConfig(946 + i, i < defaultQuantity.length ? defaultQuantity[i]: generalStock != null ? 0 : -1);// prices
                    player.getPackets().sendGlobalConfig(1241, 16750848);
                    player.getPackets().sendGlobalConfig(1242, 15439903);
                    player.getPackets().sendGlobalConfig(741, -1);
                    player.getPackets().sendGlobalConfig(743, -1);
                    player.getPackets().sendGlobalConfig(744, 0);
                    if (generalStock != null)
                            player.getPackets().sendHideIComponent(1265, 19, false);
                    player.getPackets().sendIComponentSettings(1265, 20, 0, getStoreSize() * 6, 1150);
                    player.getPackets().sendIComponentSettings(1265, 26, 0, getStoreSize() * 6, 82903066);
                    sendInventory(player);
                    player.getPackets().sendIComponentText(1265, 85, name);
                    if (player.getTemporaryAttributtes().get("update_shop") == null)
                            player.getTemporaryAttributtes().put("shop_buying", true);
                    else
                            player.getTemporaryAttributtes().put("shop_buying", false);
                    player.getTemporaryAttributtes().put("amount_shop", 1);
            }
     
            public void sendInventory(Player player) {
                    player.getInterfaceManager().sendInventoryInterface(1266);
                    player.getPackets().sendItems(93, player.getInventory().getItems());
                    player.getPackets().sendUnlockIComponentOptionSlots(1266, 0, 0, 27, 0,
                                    1, 2, 3, 4, 5);
                    player.getPackets().sendInterSetItemsOptionsScript(1266, 0, 93, 4, 7,
                                    "Value", "Sell 1", "Sell 5", "Sell 10", "Sell 50", "Examine");
            }
            //cid 67
            public void buy(Player player, int slotId, int quantity) {
                    if (slotId >= getStoreSize())
                            return;
                    Item item = slotId >= mainStock.length ? generalStock[slotId - mainStock.length] : mainStock[slotId];
                    if (item == null)
                            return;
                    if (item.getAmount() == 0) {
                            player.getPackets().sendGameMessage("There is no stock of that item at the moment.");
                            return;
                    }
                    //int dq = slotId >= mainStock.length ? 0 : defaultQuantity[slotId]; not sure what is this
                    int price = getBuyPrice(item);
                    int amountCoins = player.getInventory().getItems().getNumberOf(money);
                    int maxQuantity = amountCoins / price;
                    int buyQ = item.getAmount() > quantity ? quantity : item.getAmount();
                    boolean enoughCoins = maxQuantity >= buyQ;
                    if (!enoughCoins) {
                            player.getPackets().sendGameMessage("You don't have enough coins.");
                            buyQ = maxQuantity;
                    } else if (quantity > buyQ)
                            player.getPackets().sendGameMessage(
                                            "The shop has run out of stock.");
                    if (item.getDefinitions().isStackable()) {
                            if (player.getInventory().getFreeSlots() < 1) {
                                    player.getPackets().sendGameMessage(
                                                    "Not enough space in your inventory.");
                                    return;
                            }
                    } else {
                            int freeSlots = player.getInventory().getFreeSlots();
                            if (buyQ > freeSlots) {
                                    buyQ = freeSlots;
                                    player.getPackets().sendGameMessage(
                                                    "Not enough space in your inventory.");
                            }
                    }
                    if (buyQ != 0) {
                            int totalPrice = price * buyQ;
                            player.getInventory().deleteItem(money, totalPrice);
                            player.getInventory().addItem(item.getId(), buyQ);
                            item.setAmount(item.getAmount() - buyQ);
                            if (item.getAmount() <= 0 && slotId >= mainStock.length)
                                    generalStock[slotId - mainStock.length] = null;
                            refreshShop();
                            sendInventory(player);
                    }
            }
     
            public void restoreItems() {
                    boolean needRefresh = false;
                    for (int i = 0; i < mainStock.length; i++) {
                            if (mainStock[i].getAmount() < defaultQuantity[i]) {
                                    mainStock[i].setAmount(mainStock[i].getAmount() + 1);
                                    needRefresh = true;
                            } else if (mainStock[i].getAmount() > defaultQuantity[i]) {
                                    mainStock[i].setAmount(mainStock[i].getAmount() + -1);
                                    needRefresh = true;
                            }
                    }
                    if (generalStock != null) {
                            for (int i = 0; i < generalStock.length; i++) {
                                    Item item = generalStock[i];
                                    if (item == null)
                                            continue;
                                    item.setAmount(item.getAmount() - 1);
                                    if (item.getAmount() <= 0)
                                            generalStock[i] = null;
                                    needRefresh = true;
                            }
                    }
                    if (needRefresh)
                            refreshShop();
            }
     
            private boolean addItem(int itemId, int quantity) {
                    for (Item item : mainStock) {
                            if (item.getId() == itemId) {
                                    item.setAmount(item.getAmount() + quantity);
                                    refreshShop();
                                    return true;
                            }
                    }
                    if (generalStock != null) {
                            for (Item item : generalStock) {
                                    if (item == null)
                                            continue;
                                    if (item.getId() == itemId) {
                                            item.setAmount(item.getAmount() + quantity);
                                            refreshShop();
                                            return true;
                                    }
                            }
                            for (int i = 0; i < generalStock.length; i++) {
                                    if (generalStock[i] == null) {
                                            generalStock[i] = new Item(itemId, quantity);
                                            refreshShop();
                                            return true;
                                    }
                            }
                    }
                    return false;
            }
     
            public void sell(Player player, int slotId, int quantity) {
                    if (player.getInventory().getItemsContainerSize() < slotId)
                            return;
                    Item item = player.getInventory().getItem(slotId);
                    if (item == null)
                            return;
                    int originalId = item.getId();
                    if (item.getDefinitions().isNoted())
                            item = new Item(item.getDefinitions().getCertId(), item.getAmount());
                    if (item.getDefinitions().isDestroyItem()
                                    || ItemConstants.getItemDefaultCharges(item.getId()) != -1
                                    || !ItemConstants.isTradeable(item) || item.getId() == money) {
                            player.getPackets().sendGameMessage("You can't sell this item.");
                            return;
                    }
                    int dq = getDefaultQuantity(item.getId());
                    if (dq == -1 && generalStock == null) {
                            player.getPackets().sendGameMessage(
                                            "You can't sell this item to this shop.");
                            return;
                    }
                    int price = getSellPrice(item, dq);
                    int numberOff = player.getInventory().getItems()
                                    .getNumberOf(originalId);
                    if (quantity > numberOff)
                            quantity = numberOff;
                    if (!addItem(item.getId(), quantity)) {
                            player.getPackets().sendGameMessage("Shop is currently full.");
                            return;
                    }
                    player.getInventory().deleteItem(originalId, quantity);
                    player.getInventory().addItem(money, price * quantity);
            }
     
            public void sendValue(Player player, int slotId) {
                    if (player.getInventory().getItemsContainerSize() < slotId)
                            return;
                    Item item = player.getInventory().getItem(slotId);
                    if (item == null)
                            return;
                    if (item.getDefinitions().isNoted())
                            item = new Item(item.getDefinitions().getCertId(), item.getAmount());
                    if (item.getDefinitions().isNoted() || !ItemConstants.isTradeable(item)
                                    || item.getId() == money) {
                            player.getPackets().sendGameMessage("You can't sell this item.");
                            return;
                    }
                    int dq = getDefaultQuantity(item.getId());
                    if (dq == -1 && generalStock == null) {
                            player.getPackets().sendGameMessage(
                                            "You can't sell this item to this shop.");
                            return;
                    }
                    int price = getSellPrice(item, dq);
                    player.getPackets().sendGameMessage(
                                    item.getDefinitions().getName()
                                    + ": shop will buy for: "
                                    + price
                                    + " "
                                    + ItemDefinitions.getItemDefinitions(money).getName()
                                    .toLowerCase()
                                    + ". Right-click the item to sell.");
            }
     
            public int getDefaultQuantity(int itemId) {
                    for (int i = 0; i < mainStock.length; i++)
                            if (mainStock[i].getId() == itemId)
                                    return defaultQuantity[i];
                    return -1;
            }
     
            public void sendInfo(Player player, int slotId, boolean isBuying) {
                    if (slotId >= getStoreSize())
                            return;
                    Item[] stock = isBuying ? mainStock : player.getInventory().getItems().getItems();
                    Item item = slotId >= stock.length ? generalStock[slotId - stock.length] : stock[slotId];
                    if (item == null)
                            return;
                    int price = getBuyPrice(item);
                    player.getPackets().sendGameMessage(item.getDefinitions().getName() + ": shop will " + (isBuying ? "sell" : "buy") +" for " + price + " " + ItemDefinitions.getItemDefinitions(money).getName().toLowerCase() + ".");
            }
     
            public int getBuyPrice(Item item) {
                    int price = item.getDefinitions().getValue();
                    if (price == 0)
                            price = 1;
                    return price; // TODO formula
            }
     
            public int getSellPrice(Item item, int dq) {
                    return item.getDefinitions().getValue() / 2; // TODO formula
            }
     
            public void sendExamine(Player player, int slotId) {
                    if (slotId >= getStoreSize())
                            return;
                    Item item = slotId >= mainStock.length ? generalStock[slotId
                                                                          - mainStock.length] : mainStock[slotId];
                    if (item == null)
                            return;
                    player.getPackets().sendGameMessage(ItemExamines.getExamine(item));
            }
     
            public void refreshShop() {
                    for (Player player : viewingPlayers) {
                            sendStore(player);
                            player.getPackets().sendIComponentSettings(620, 25, 0,
                                            getStoreSize() * 6, 1150);
                    }
            }
     
            public int getStoreSize() {
                    return mainStock.length
                                    + (generalStock != null ? generalStock.length : 0);
            }
     
            public void sendStore(Player player) {
                    Item[] stock = new Item[mainStock.length
                                            + (generalStock != null ? generalStock.length : 0)];
                    System.arraycopy(mainStock, 0, stock, 0, mainStock.length);
                    if (generalStock != null)
                            System.arraycopy(generalStock, 0, stock, mainStock.length,
                                            generalStock.length);
                    player.getPackets().sendItems(MAIN_STOCK_ITEMS_KEY, stock);
            }
     
            public void sendSellStore(Player player, Item[] inventory) {
                    Item[] stock = new Item[inventory.length + (generalStock != null ? generalStock.length : 0)];
                    System.arraycopy(inventory, 0, stock, 0, inventory.length);
                    if (generalStock != null)
                            System.arraycopy(generalStock, 0, stock, inventory.length, generalStock.length);
                    player.getPackets().sendItems(MAIN_STOCK_ITEMS_KEY, stock);
            }
     
            /**
             * Checks if the player is buying an item or selling it.
             * @param player The player
             * @param slotId The slot id
             * @param amount The amount
             */
            public void handleShop(Player player, int slotId, int amount) {
                    boolean isBuying = player.getTemporaryAttributtes().get("shop_buying") != null;
                    if (isBuying)
                            buy(player, slotId, amount);
                    else
                            sell(player, slotId, amount);
            }
     
            public Item[] getMainStock() {
                    return this.mainStock;
            }
     
    }
    Reply With Quote  
     

  2. #2  
    Zodiac Owner.

    Join Date
    Mar 2013
    Age
    27
    Posts
    387
    Thanks given
    46
    Thanks received
    34
    Rep Power
    37
    Max Stack problems Look what Santa Hat said
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. All bones sell for max cash! need help!!
    By CrsBladee in forum Help
    Replies: 18
    Last Post: 03-06-2014, 08:45 AM
  2. Replies: 12
    Last Post: 11-05-2012, 10:01 PM
  3. Replies: 4
    Last Post: 11-05-2012, 08:50 AM
  4. Replies: 2
    Last Post: 03-26-2011, 05:59 PM
  5. major help needed, +rep for helping
    By x0wn4g33x in forum Help
    Replies: 1
    Last Post: 12-22-2009, 01:29 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •