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 int amount;
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");
player.getTemporaryAttributtes().remove("shop_buying");
player.getTemporaryAttributtes().remove("amount_shop");
}
});
player.getPackets().sendConfig(118, MAIN_STOCK_ITEMS_KEY);
player.getPackets().sendConfig(1496, -1);
player.getPackets().sendConfig(532, money);
player.getPackets().sendConfig(2565, 0);
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);
player.getTemporaryAttributtes().put("shop_buying", true);
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;
switch(item.getId()) {
case 10551:
price = 50000000;
break;
case 10548:
price = 50000000;
break;
case 22358:
price = 200000000;
break;
case 22359:
price = 200000000;
break;
case 22360:
price = 200000000;
break;
case 22361:
price = 200000000;
break;
case 22362:
price = 200000000;
break;
case 22363:
price = 200000000;
break;
case 22364:
price = 200000000;
break;
case 22365:
price = 200000000;
break;
case 15444:
price = 150000000;
break;
case 15443:
price = 200000000;
break;
case 15442:
price = 250000000;
break;
case 15441:
price = 300000000;
break;
case 18349:
price = 800000000;
break;
case 18353:
price = 750000000;
break;
case 18351:
price = 500000000;
break;
case 18357:
price = 350000000;
break;
case 18359:
price = 100000000;
break;
case 19784:
price = 1200000000;
break;
case 18355:
price = 250000000;
break;
}
return price; // TODO formula
}
public int getSellPrice(Item item, int dq) {
return item.getDefinitions().getValue() / 2;
}
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;
}
public int getAmount() {
return this.amount;
}
public void setAmount(Player player, int amount) {
this.amount = amount;
player.getPackets().sendIComponentText(1265, 67, String.valueOf(amount)); //just update it here
}
}
and your objecthandler.java with
Code:
package com.rs.net.decoders.handlers;
import java.util.HashMap;
import java.util.TimerTask;
import com.rs.Settings;
import com.rs.cache.loaders.ItemDefinitions;
import com.rs.content.exchange.ExchangeHandler;
import com.rs.cores.CoresManager;
import com.rs.game.WorldTile;
import com.rs.game.item.Item;
import com.rs.game.player.content.SquealOfFortune;
import com.rs.game.minigames.Crucible;
import com.rs.game.minigames.duel.DuelControler;
import com.rs.game.minigames.soulwars.SoulWarsButtons;
import com.rs.game.npc.familiar.Familiar;
import com.rs.game.npc.familiar.Familiar.SpecialAttack;
import com.rs.game.player.CombatDefinitions;
import com.rs.game.player.EmotesManager;
import com.rs.game.player.Equipment;
import com.rs.game.player.Inventory;
import com.rs.game.player.Player;
import com.rs.game.player.Skills;
import com.rs.game.player.actions.Construction;
import com.rs.game.player.actions.FightPitsViewingOrb;
import com.rs.game.player.actions.HomeTeleport;
import com.rs.game.player.actions.Rest;
import com.rs.game.player.actions.Smithing.ForgingInterface;
import com.rs.game.player.actions.Summoning;
import com.rs.game.player.content.AdventurersLog;
import com.rs.game.player.content.ItemConstants;
import com.rs.game.player.content.Magic;
import com.rs.game.player.content.PlayerLook;
import com.rs.game.player.content.Runecrafting;
import com.rs.game.player.content.Shop;
import com.rs.game.player.content.SkillCapeCustomizer;
import com.rs.game.player.content.SkillsDialogue;
import com.rs.game.player.dialogues.LevelUp;
import com.rs.game.player.dialogues.Transportation;
import com.rs.game.tasks.WorldTask;
import com.rs.game.tasks.WorldTasksManager;
import com.rs.io.InputStream;
import com.rs.net.decoders.WorldPacketsDecoder;
import com.rs.utils.ItemExamines;
import com.rs.utils.Logger;
import com.rs.utils.Utils;
public class ButtonHandler {
public static void handleButtons(final Player player, InputStream stream,
int packetId) {
int interfaceHash = stream.readIntV2();
int interfaceId = interfaceHash >> 16;
if (Utils.getInterfaceDefinitionsSize() <= interfaceId) {
// hack, or server error or client error
// player.getSession().getChannel().close();
return;
}
if (player.isDead()
|| !player.getInterfaceManager().containsInterface(interfaceId))
return;
final int componentId = interfaceHash - (interfaceId << 16);
if (componentId != 65535
&& Utils.getInterfaceDefinitionsComponentsSize(interfaceId) <= componentId) {
// hack, or server error or client error
// player.getSession().getChannel().close();
return;
}
final int slotId2 = stream.readUnsignedShort128();
final int slotId = stream.readUnsignedShortLE128();
if (!player.getControlerManager().processButtonClick(interfaceId,
componentId, slotId, packetId))
return;
// squeal
if (interfaceId == 1253) {
if (componentId == 93) {
SquealOfFortune.spin(player);
} else if (componentId == 7) {
player.getPackets().sendOpenURL("http://google.com/");
} else if (componentId == 239) {
SquealOfFortune.closeSOF(player);
} else if (componentId == 192) {
SquealOfFortune.claimItem(player);
player.closeInterfaces();
} else if (componentId == 273){
SquealOfFortune.openSOF(player);
} else if (componentId == 258){
SquealOfFortune.claimItem(player);
SquealOfFortune.closeSOF(player);
} else if (componentId == 106)
SquealOfFortune.closeSOF(player);
}
if (interfaceId == 1139) {
if (componentId == 18) {
SquealOfFortune.openSOF(player);
} else if (componentId == 23) {
player.getPackets().sendOpenURL("http://google.com/");
player.getPackets().sendGameMessage("Link is opening!");
}
}
if (interfaceId == 1252) {
if (componentId == 3) {
SquealOfFortune.openSOF(player);
} else if (componentId == 5) {
player.closeInterfaces();
player.getPackets().sendGameMessage("The icon will appear the next time you log in");
}
}
if (interfaceId == 548 || interfaceId == 746) {
if ((interfaceId == 548 && componentId == 148)
|| (interfaceId == 746 && componentId == 199)) {
if (player.getInterfaceManager().containsScreenInter()
|| player.getInterfaceManager()
.containsInventoryInter()) {
// TODO cant open sound
player.getPackets()
.sendGameMessage(
"Please finish what you're doing before opening the world map.");
return;
}
// world map open
player.getPackets().sendWindowsPane(755, 0);
int posHash = player.getX() << 14 | player.getY();
player.getPackets().sendGlobalConfig(622, posHash); // map open
// center
// pos
player.getPackets().sendGlobalConfig(674, posHash); // player
// position
} else if ((interfaceId == 548 && componentId == 17)
|| (interfaceId == 746 && componentId == 54)) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getSkills().switchXPDisplay();
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getSkills().switchXPPopup();
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getSkills().setupXPCounter();
}else if ((interfaceId == 746 && componentId == 207) || (interfaceId == 548 && componentId == 159)) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET) {
if (player.getInterfaceManager().containsScreenInter()) {
player.getPackets()
.sendGameMessage(
"Please finish what you're doing before opening the price checker.");
return;
}
player.stopAll();
player.getPriceCheckManager().openPriceCheck();
}
}
if (ExchangeHandler.handleButtons(player, interfaceId, componentId)) {
return;
}
} else if (interfaceId == 107) {
ExchangeHandler.sendSellItem(player, slotId2, slotId, componentId);
return;
}
if (ExchangeHandler.handleButtons(player, interfaceId, componentId)) {
return;
} else if (interfaceId == 34) {// notes interface
/* switch(componentId) {
case 35:
case 37:
case 39:
case 41:
Note current = (Note) player.getTemporaryAttributtes().get("curNote");
current.setColour(componentId - (34 + (componentId == 35 ? 0 : componentId + 1)));
player.getNotes().refresh();
player.getPackets().sendHideIComponent(34, 16, true);
break;
case 3:
player.getPackets().sendRunScript(109, new Object[] { "Please enter the note text." });
player.getTemporaryAttributtes().put("entering_note", Boolean.TRUE);
break;
case 9:
switch(packetId) {
case WorldPacketsDecoder.ACTION_BUTTON1_PACKET:
Note note = player.getNotes().getNotes().get(slotId);
if (player.getTemporaryAttributtes().get("curNote") == note) {
player.getTemporaryAttributtes().remove("curNote");
player.getPackets().sendConfig(1439, -1);
return;
} else {
player.getTemporaryAttributtes().put("curNote", note);
player.getPackets().sendConfig(1439, slotId);
}
break;
case WorldPacketsDecoder.ACTION_BUTTON2_PACKET:
player.getTemporaryAttributtes().put("curNote", player.getNotes().getNotes().get(slotId));
player.getPackets().sendRunScript(109, new Object[] { "Please edit the note text." });
player.getTemporaryAttributtes().put("editing_note", Boolean.TRUE);
player.getPackets().sendConfig(1439, slotId);
break;
case WorldPacketsDecoder.ACTION_BUTTON3_PACKET:
player.getTemporaryAttributtes().put("curNote", player.getNotes().getNotes().get(slotId));
player.getPackets().sendHideIComponent(34, 16, false);
player.getPackets().sendConfig(1439, slotId);
break;
}
break;
case 8:
Note note = (Note) player.getTemporaryAttributtes().get("curNote");
player.getNotes().remove(note);
break;
}*/
/**
* Money Pouch
*/
} else if (interfaceId == 746) {
if (componentId == 207) {
if (packetId == 14) {
player.getPackets().sendRunScript(5557, 1);
player.getPackets().sendRunScript(5560, player.getCoins(), "n");
} else if (packetId == 67){
player.getTemporaryAttributtes().put("money_remove", Boolean.TRUE);
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
}
}
} else if (interfaceId == 548) {
if (componentId == 159) {
if (packetId == 14) {
player.getPackets().sendRunScript(5557, 1);
player.getPackets().sendRunScript(5560, player.getCoins(), "n");
} else if (packetId == 67){
player.out("hi");
player.getTemporaryAttributtes().put("money_remove", Boolean.TRUE);
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
}
}
} else if (interfaceId == 182) {
if (player.getInterfaceManager().containsInventoryInter())
return;
if (componentId == 6 || componentId == 13)
if (!player.hasFinished())
player.logout(componentId == 6);
} else if (interfaceId == 1165) {
//if (componentId == 22)
//Summoning.closeDreadnipInterface(player);
} else if (interfaceId == 880) {
if (componentId >= 7 && componentId <= 19)
Familiar.setLeftclickOption(player, (componentId - 7) / 2);
else if (componentId == 21)
Familiar.confirmLeftOption(player);
else if (componentId == 25)
Familiar.setLeftclickOption(player, 7);
} else if (interfaceId == 1265) {
Shop shop = (Shop) player.getTemporaryAttributtes().get("Shop");
if (shop == null)
return;
Integer slot = (Integer) player.getTemporaryAttributtes().get("ShopSelectedSlot");
boolean isBuying = player.getTemporaryAttributtes().get("shop_buying") != null;
if (componentId == 20) {
player.getTemporaryAttributtes().put("ShopSelectedSlot", slotId);
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
shop.sendInfo(player, slotId, isBuying);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
shop.buy(player, slotId, 1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
shop.buy(player, slotId, 5);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
shop.buy(player, slotId, 10);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET)
shop.buy(player, slotId, 50);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET)
shop.buy(player, slotId, 500);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
shop.sendExamine(player, slotId);
}
} else if (interfaceId == 751) {
if (componentId == 14) {
player.getInterfaceManager().sendInterface(594);
}
} else if (interfaceId == 1266) {
if (componentId == 0) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET)
player.getInventory().sendExamine(slotId);
else {
Shop shop = (Shop) player.getTemporaryAttributtes().get(
"Shop");
if (shop == null)
return;
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
shop.sendValue(player, slotId);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
shop.sell(player, slotId, 1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
shop.sell(player, slotId, 5);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
shop.sell(player, slotId, 10);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET)
shop.sell(player, slotId, 50);
}
}
} else if (interfaceId == 662) {
if (player.getFamiliar() == null) {
if (player.getPet() == null) {
return;
}
if (componentId == 49)
player.getPet().call();
else if (componentId == 51)
player.getDialogueManager().startDialogue("DismissD");
return;
}
if (componentId == 49)
player.getFamiliar().call();
else if (componentId == 51)
player.getDialogueManager().startDialogue("DismissD");
else if (componentId == 67)
player.getFamiliar().takeBob();
else if (componentId == 69)
player.getFamiliar().renewFamiliar();
else if (componentId == 74) {
if (player.getFamiliar().getSpecialAttack() == SpecialAttack.CLICK)
player.getFamiliar().setSpecial(true);
if (player.getFamiliar().hasSpecialOn())
player.getFamiliar().submitSpecial(player);
}
} else if (interfaceId == 747) {
if (componentId == 8) {
Familiar.selectLeftOption(player);
} else if (player.getPet() != null) {
if (componentId == 11 || componentId == 20) {
player.getPet().call();
} else if (componentId == 12 || componentId == 21) {
player.getDialogueManager().startDialogue("DismissD");
} else if (componentId == 10 || componentId == 19) {
player.getPet().sendFollowerDetails();
}
} else if (player.getFamiliar() != null) {
if (componentId == 11 || componentId == 20)
player.getFamiliar().call();
else if (componentId == 12 || componentId == 21)
player.getDialogueManager().startDialogue("DismissD");
else if (componentId == 13 || componentId == 22)
player.getFamiliar().takeBob();
else if (componentId == 14 || componentId == 23)
player.getFamiliar().renewFamiliar();
else if (componentId == 19 || componentId == 10)
player.getFamiliar().sendFollowerDetails();
else if (componentId == 18) {
if (player.getFamiliar().getSpecialAttack() == SpecialAttack.CLICK)
player.getFamiliar().setSpecial(true);
if (player.getFamiliar().hasSpecialOn())
player.getFamiliar().submitSpecial(player);
}
}
}else if (interfaceId == 309)
PlayerLook.handleHairdresserSalonButtons(player, componentId, slotId);
else if (interfaceId == 729)
PlayerLook.handleThessaliasMakeOverButtons(player, componentId, slotId);
else if (interfaceId == 187) {
if (componentId == 1) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getMusicsManager().playAnotherMusic(slotId / 2);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getMusicsManager().sendHint(slotId / 2);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getMusicsManager().addToPlayList(slotId / 2);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getMusicsManager().removeFromPlayList(slotId / 2);
} else if (componentId == 4)
player.getMusicsManager().addPlayingMusicToPlayList();
else if (componentId == 10)
player.getMusicsManager().switchPlayListOn();
else if (componentId == 11)
player.getMusicsManager().clearPlayList();
else if (componentId == 13)
player.getMusicsManager().switchShuffleOn();
} else if (interfaceId == 275) {
if (componentId == 14) {
player.getPackets().sendOpenURL(Settings.WEBSITE_LINK);
}
} else if ((interfaceId == 590 && componentId == 8) || interfaceId == 464) {
player.getEmotesManager().useBookEmote(interfaceId == 464 ? componentId : EmotesManager.getId(slotId, packetId));
} else if (interfaceId == 192) {
if (componentId == 2)
player.getCombatDefinitions().switchDefensiveCasting();
else if (componentId == 7)
player.getCombatDefinitions().switchShowCombatSpells();
else if (componentId == 9)
player.getCombatDefinitions().switchShowTeleportSkillSpells();
else if (componentId == 11)
player.getCombatDefinitions().switchShowMiscallaneousSpells();
else if (componentId == 13)
player.getCombatDefinitions().switchShowSkillSpells();
else if (componentId >= 15 & componentId <= 17)
player.getCombatDefinitions()
.setSortSpellBook(componentId - 15);
else
Magic.processNormalSpell(player, componentId, packetId);
} else if (interfaceId == 334) {
if(componentId == 22)
player.closeInterfaces();
else if (componentId == 21)
player.getTrade().accept(false);
} else if (interfaceId == 335) {
if(componentId == 18)
player.getTrade().accept(true);
else if(componentId == 20)
player.closeInterfaces();
else if(componentId == 32) {
if(packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getTrade().removeItem(slotId, 1);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getTrade().removeItem(slotId, 5);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getTrade().removeItem(slotId, 10);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getTrade().removeItem(slotId, Integer.MAX_VALUE);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
player.getTemporaryAttributtes().put("trade_item_X_Slot",
slotId);
player.getTemporaryAttributtes().put("trade_isRemove", Boolean.TRUE);
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
}else if(packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET)
player.getTrade().sendValue(slotId, false);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
player.getTrade().sendExamine(slotId, false);
}else if(componentId == 35) {
if(packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getTrade().sendValue(slotId, true);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
player.getTrade().sendExamine(slotId, true);
}
} else if (interfaceId == 336) {
if(componentId == 0) {
if(packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getTrade().addItem(slotId, 1);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getTrade().addItem(slotId, 5);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getTrade().addItem(slotId, 10);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getTrade().addItem(slotId, Integer.MAX_VALUE);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
player.getTemporaryAttributtes().put("trade_item_X_Slot", slotId);
player.getTemporaryAttributtes().remove("trade_isRemove");
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
}else if(packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET)
player.getTrade().sendValue(slotId);
else if(packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
player.getInventory().sendExamine(slotId);
}
} else if (interfaceId == 300) {
ForgingInterface.handleIComponents(player, componentId);
} else if (interfaceId == 206) {
if (componentId == 15) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getPriceCheckManager().removeItem(slotId, 1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getPriceCheckManager().removeItem(slotId, 5);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getPriceCheckManager().removeItem(slotId, 10);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getPriceCheckManager().removeItem(slotId,
Integer.MAX_VALUE);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
player.getTemporaryAttributtes().put("pc_item_X_Slot",
slotId);
player.getTemporaryAttributtes().put("pc_isRemove",
Boolean.TRUE);
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
}
}
} else if (interfaceId == 672) {
if (componentId == 16) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
Summoning.createPouch(player, slotId2, 1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
Summoning.createPouch(player, slotId2, 5);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
Summoning.createPouch(player, slotId2, 10);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
Summoning.createPouch(player, slotId2, Integer.MAX_VALUE);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET)
Summoning.createPouch(player, slotId2, 28);// x
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON6_PACKET) {
player.getPackets().sendGameMessage(
"You currently need "
+ ItemDefinitions.getItemDefinitions(
slotId2)
.getCreateItemRequirements());
}
}
} else if (interfaceId == 207) {
if (componentId == 0) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getPriceCheckManager().addItem(slotId, 1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getPriceCheckManager().addItem(slotId, 5);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getPriceCheckManager().addItem(slotId, 10);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getPriceCheckManager().addItem(slotId,
Integer.MAX_VALUE);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
player.getTemporaryAttributtes().put("pc_item_X_Slot",
slotId);
player.getTemporaryAttributtes().remove("pc_isRemove");
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET)
player.getInventory().sendExamine(slotId);
}
} else if (interfaceId == 665) {
if (player.getFamiliar() == null
|| player.getFamiliar().getBob() == null)
return;
if (componentId == 0) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getFamiliar().getBob().addItem(slotId, 1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getFamiliar().getBob().addItem(slotId, 5);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getFamiliar().getBob().addItem(slotId, 10);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getFamiliar().getBob()
.addItem(slotId, Integer.MAX_VALUE);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
player.getTemporaryAttributtes().put("bob_item_X_Slot",
slotId);
player.getTemporaryAttributtes().remove("bob_isRemove");
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET)
player.getInventory().sendExamine(slotId);
}
} else if (interfaceId == 671) {
if (player.getFamiliar() == null
|| player.getFamiliar().getBob() == null)
return;
if (componentId == 27) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getFamiliar().getBob().removeItem(slotId, 1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getFamiliar().getBob().removeItem(slotId, 5);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getFamiliar().getBob().removeItem(slotId, 10);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getFamiliar().getBob()
.removeItem(slotId, Integer.MAX_VALUE);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
player.getTemporaryAttributtes().put("bob_item_X_Slot",
slotId);
player.getTemporaryAttributtes().put("bob_isRemove",
Boolean.TRUE);
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
}
} else if (componentId == 29)
player.getFamiliar().takeBob();
} else if (interfaceId == 916) {
SkillsDialogue.handleSetQuantityButtons(player, componentId);
} else if (interfaceId == 193) {
if (componentId == 5)
player.getCombatDefinitions().switchShowCombatSpells();
else if (componentId == 7)
player.getCombatDefinitions().switchShowTeleportSkillSpells();
else if (componentId >= 9 && componentId <= 11)
player.getCombatDefinitions().setSortSpellBook(componentId - 9);
else if (componentId == 18)
player.getCombatDefinitions().switchDefensiveCasting();
else
Magic.processAncientSpell(player, componentId, packetId);
} else if (interfaceId == 430) {
if (componentId == 5)
player.getCombatDefinitions().switchShowCombatSpells();
else if (componentId == 7)
player.getCombatDefinitions().switchShowTeleportSkillSpells();
else if (componentId == 9)
player.getCombatDefinitions().switchShowMiscallaneousSpells();
else if (componentId >= 11 & componentId <= 13)
player.getCombatDefinitions()
.setSortSpellBook(componentId - 11);
else if (componentId == 20)
player.getCombatDefinitions().switchDefensiveCasting();
else
Magic.processLunarSpell(player, componentId, packetId);
} else if (interfaceId == 261) {
if (player.getInterfaceManager().containsInventoryInter())
return;
if (componentId == 22) {
if (player.getInterfaceManager().containsScreenInter()) {
player.getPackets()
.sendGameMessage(
"Please close the interface you have open before setting your graphic options.");
return;
}
player.stopAll();
player.getInterfaceManager().sendInterface(742);
} else if (componentId == 12)
player.switchAllowChatEffects();
else if (componentId == 13) { //chat setup
player.getInterfaceManager().sendSettings(982);
} else if (componentId == 14)
player.switchMouseButtons();
else if (componentId == 24) //audio options
player.getInterfaceManager().sendSettings(429);
else if (componentId == 26)
AdventurersLog.open(player);
}else if (interfaceId == 429) {
if (componentId == 18)
player.getInterfaceManager().sendSettings();
} else if (interfaceId == 982) {
if (componentId == 5)
player.getInterfaceManager().sendSettings();
else if (componentId == 41)
player.setPrivateChatSetup(player.getPrivateChatSetup() == 0 ? 1
: 0);
else if (componentId >= 49 && componentId <= 66)
player.setPrivateChatSetup(componentId - 48);
else if (componentId >= 72 && componentId <= 91)
player.setFriendChatSetup(componentId - 72);
} else if (interfaceId == 271) {
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
if (componentId == 8 || componentId == 42)
player.getPrayer().switchPrayer(slotId);
else if (componentId == 43
&& player.getPrayer().isUsingQuickPrayer())
player.getPrayer().switchSettingQuickPrayer();
}
});
} else if (interfaceId == 320) {
player.stopAll();
int lvlupSkill = -1;
int skillMenu = -1;
switch (componentId) {
case 150: // Attack
skillMenu = 1;
if (player.getTemporaryAttributtes().remove("leveledUp[0]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 1);
} else {
lvlupSkill = 0;
player.getPackets().sendConfig(1230, 10);
}
break;
case 9: // Strength
skillMenu = 2;
if (player.getTemporaryAttributtes().remove("leveledUp[2]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 2);
} else {
lvlupSkill = 2;
player.getPackets().sendConfig(1230, 20);
}
break;
case 22: // Defence
skillMenu = 5;
if (player.getTemporaryAttributtes().remove("leveledUp[1]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 5);
} else {
lvlupSkill = 1;
player.getPackets().sendConfig(1230, 40);
}
break;
case 40: // Ranged
skillMenu = 3;
if (player.getTemporaryAttributtes().remove("leveledUp[4]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 3);
} else {
lvlupSkill = 4;
player.getPackets().sendConfig(1230, 30);
}
break;
case 58: // Prayer
if (player.getTemporaryAttributtes().remove("leveledUp[5]") != Boolean.TRUE) {
skillMenu = 7;
player.getPackets().sendConfig(965, 7);
} else {
lvlupSkill = 5;
player.getPackets().sendConfig(1230, 60);
}
break;
case 71: // Magic
if (player.getTemporaryAttributtes().remove("leveledUp[6]") != Boolean.TRUE) {
skillMenu = 4;
player.getPackets().sendConfig(965, 4);
} else {
lvlupSkill = 6;
player.getPackets().sendConfig(1230, 33);
}
break;
case 84: // Runecrafting
if (player.getTemporaryAttributtes().remove("leveledUp[20]") != Boolean.TRUE) {
skillMenu = 12;
player.getPackets().sendConfig(965, 12);
} else {
lvlupSkill = 20;
player.getPackets().sendConfig(1230, 100);
}
break;
case 102: // Construction
skillMenu = 22;
if (player.getTemporaryAttributtes().remove("leveledUp[21]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 22);
} else {
lvlupSkill = 21;
player.getPackets().sendConfig(1230, 698);
}
break;
case 145: // Hitpoints
skillMenu = 6;
if (player.getTemporaryAttributtes().remove("leveledUp[3]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 6);
} else {
lvlupSkill = 3;
player.getPackets().sendConfig(1230, 50);
}
break;
case 15: // Agility
skillMenu = 8;
if (player.getTemporaryAttributtes().remove("leveledUp[16]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 8);
} else {
lvlupSkill = 16;
player.getPackets().sendConfig(1230, 65);
}
break;
case 28: // Herblore
skillMenu = 9;
if (player.getTemporaryAttributtes().remove("leveledUp[15]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 9);
} else {
lvlupSkill = 15;
player.getPackets().sendConfig(1230, 75);
}
break;
case 46: // Thieving
skillMenu = 10;
if (player.getTemporaryAttributtes().remove("leveledUp[17]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 10);
} else {
lvlupSkill = 17;
player.getPackets().sendConfig(1230, 80);
}
break;
case 64: // Crafting
skillMenu = 11;
if (player.getTemporaryAttributtes().remove("leveledUp[12]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 11);
} else {
lvlupSkill = 12;
player.getPackets().sendConfig(1230, 90);
}
break;
case 77: // Fletching
skillMenu = 19;
if (player.getTemporaryAttributtes().remove("leveledUp[9]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 19);
} else {
lvlupSkill = 9;
player.getPackets().sendConfig(1230, 665);
}
break;
case 90: // Slayer
skillMenu = 20;
if (player.getTemporaryAttributtes().remove("leveledUp[18]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 20);
} else {
lvlupSkill = 18;
player.getPackets().sendConfig(1230, 673);
}
break;
case 108: // Hunter
skillMenu = 23;
if (player.getTemporaryAttributtes().remove("leveledUp[22]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 23);
} else {
lvlupSkill = 22;
player.getPackets().sendConfig(1230, 689);
}
break;
case 140: // Mining
skillMenu = 13;
if (player.getTemporaryAttributtes().remove("leveledUp[14]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 13);
} else {
lvlupSkill = 14;
player.getPackets().sendConfig(1230, 110);
}
break;
case 135: // Smithing
skillMenu = 14;
if (player.getTemporaryAttributtes().remove("leveledUp[13]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 14);
} else {
lvlupSkill = 13;
player.getPackets().sendConfig(1230, 115);
}
break;
case 34: // Fishing
skillMenu = 15;
if (player.getTemporaryAttributtes().remove("leveledUp[10]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 15);
} else {
lvlupSkill = 10;
player.getPackets().sendConfig(1230, 120);
}
break;
case 52: // Cooking
skillMenu = 16;
if (player.getTemporaryAttributtes().remove("leveledUp[7]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 16);
} else {
lvlupSkill = 7;
player.getPackets().sendConfig(1230, 641);
}
break;
case 130: // Firemaking
skillMenu = 17;
if (player.getTemporaryAttributtes().remove("leveledUp[11]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 17);
} else {
lvlupSkill = 11;
player.getPackets().sendConfig(1230, 649);
}
break;
case 125: // Woodcutting
skillMenu = 18;
if (player.getTemporaryAttributtes().remove("leveledUp[8]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 18);
} else {
lvlupSkill = 8;
player.getPackets().sendConfig(1230, 660);
}
break;
case 96: // Farming
skillMenu = 21;
if (player.getTemporaryAttributtes().remove("leveledUp[19]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 21);
} else {
lvlupSkill = 19;
player.getPackets().sendConfig(1230, 681);
}
break;
case 114: // Summoning
skillMenu = 24;
if (player.getTemporaryAttributtes().remove("leveledUp[23]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 24);
} else {
lvlupSkill = 23;
player.getPackets().sendConfig(1230, 705);
}
break;
case 120: // Dung
skillMenu = 25;
if (player.getTemporaryAttributtes().remove("leveledUp[24]") != Boolean.TRUE) {
player.getPackets().sendConfig(965, 25);
} else {
lvlupSkill = 24;
player.getPackets().sendConfig(1230, 705);
}
break;
}
/* player.getInterfaceManager().sendInterface(
lvlupSkill != -1 ? 741 : 499);*/
player.getInterfaceManager().sendScreenInterface(317, 1218);
player.getPackets().sendInterface(false, 1218, 1, 1217); //seems to fix
if (lvlupSkill != -1)
LevelUp.switchFlash(player, lvlupSkill, false);
if (skillMenu != -1)
player.getTemporaryAttributtes().put("skillMenu", skillMenu);
} else if (interfaceId == 1218) {
if((componentId >= 33 && componentId <= 55) || componentId == 120 || componentId == 151 || componentId == 189)
player.getPackets().sendInterface(false, 1218, 1, 1217); //seems to fix
} else if (interfaceId == 499) {
int skillMenu = -1;
if (player.getTemporaryAttributtes().get("skillMenu") != null)
skillMenu = (Integer) player.getTemporaryAttributtes().get(
"skillMenu");
if(componentId >= 10 && componentId <= 25)
player.getPackets().sendConfig(965, ((componentId - 10) * 1024) + skillMenu);
else if (componentId == 29)
// close inter
player.stopAll();
} else if (interfaceId == 387) {
if (player.getInterfaceManager().containsInventoryInter())
return;
if (componentId == 6) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) {
int hatId = player.getEquipment().getHatId();
if(hatId == 24437 || hatId == 24439 || hatId == 24440 || hatId == 24441) {
player.getDialogueManager().startDialogue("FlamingSkull", player.getEquipment().getItem(Equipment.SLOT_HAT), -1);
return;
}
}else if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
ButtonHandler.sendRemove(player, Equipment.SLOT_HAT);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
player.getEquipment().sendExamine(Equipment.SLOT_HAT);
} else if (componentId == 9) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
int capeId = player.getEquipment().getCapeId();
if (capeId == 20769 || capeId == 20771)
SkillCapeCustomizer.startCustomizing(player, capeId);
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) {
int capeId = player.getEquipment().getCapeId();
if (capeId == 20767)
SkillCapeCustomizer.startCustomizing(player, capeId);
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
ButtonHandler.sendRemove(player, Equipment.SLOT_CAPE);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
player.getEquipment().sendExamine(Equipment.SLOT_CAPE);
} else if (componentId == 12) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) {
int amuletId = player.getEquipment().getAmuletId();
if (amuletId <= 1712 && amuletId >= 1706
|| amuletId >= 10354 && amuletId <= 10361) {
if (Magic.sendItemTeleportSpell(player, true,
Transportation.EMOTE, Transportation.GFX, 4,
new WorldTile(3087, 3496, 0))) {
Item amulet = player.getEquipment().getItem(
Equipment.SLOT_AMULET);
if (amulet != null) {
amulet.setId(amulet.getId() - 2);
player.getEquipment().refresh(
Equipment.SLOT_AMULET);
}
}
} else if (amuletId == 1704 || amuletId == 10352)
player.getPackets()
.sendGameMessage(
"The amulet has ran out of charges. You need to recharge it if you wish it use it once more.");
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET) {
int amuletId = player.getEquipment().getAmuletId();
if (amuletId <= 1712 && amuletId >= 1706
|| amuletId >= 10354 && amuletId <= 10361) {
if (Magic.sendItemTeleportSpell(player, true,
Transportation.EMOTE, Transportation.GFX, 4,
new WorldTile(2918, 3176, 0))) {
Item amulet = player.getEquipment().getItem(
Equipment.SLOT_AMULET);
if (amulet != null) {
amulet.setId(amulet.getId() - 2);
player.getEquipment().refresh(
Equipment.SLOT_AMULET);
}
}
}
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET) {
int amuletId = player.getEquipment().getAmuletId();
if (amuletId <= 1712 && amuletId >= 1706
|| amuletId >= 10354 && amuletId <= 10361) {
if (Magic.sendItemTeleportSpell(player, true,
Transportation.EMOTE, Transportation.GFX, 4,
new WorldTile(3105, 3251, 0))) {
Item amulet = player.getEquipment().getItem(
Equipment.SLOT_AMULET);
if (amulet != null) {
amulet.setId(amulet.getId() - 2);
player.getEquipment().refresh(
Equipment.SLOT_AMULET);
}
}
}
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
int amuletId = player.getEquipment().getAmuletId();
if (amuletId <= 1712 && amuletId >= 1706
|| amuletId >= 10354 && amuletId <= 10361) {
if (Magic.sendItemTeleportSpell(player, true,
Transportation.EMOTE, Transportation.GFX, 4,
new WorldTile(3293, 3163, 0))) {
Item amulet = player.getEquipment().getItem(
Equipment.SLOT_AMULET);
if (amulet != null) {
amulet.setId(amulet.getId() - 2);
player.getEquipment().refresh(
Equipment.SLOT_AMULET);
}
}
}
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
ButtonHandler.sendRemove(player, Equipment.SLOT_AMULET);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
player.getEquipment().sendExamine(Equipment.SLOT_AMULET);
} else if (componentId == 15) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) {
int weaponId = player.getEquipment().getWeaponId();
if(weaponId == 15484)
player.getInterfaceManager().gazeOrbOfOculus();
}else if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
ButtonHandler.sendRemove(player, Equipment.SLOT_WEAPON);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
player.getEquipment().sendExamine(Equipment.SLOT_WEAPON);
} else if (componentId == 18)
ButtonHandler.sendRemove(player, Equipment.SLOT_CHEST);
else if (componentId == 21)
ButtonHandler.sendRemove(player, Equipment.SLOT_SHIELD);
else if (componentId == 24)
ButtonHandler.sendRemove(player, Equipment.SLOT_LEGS);
else if (componentId == 27)
ButtonHandler.sendRemove(player, Equipment.SLOT_HANDS);
else if (componentId == 30)
ButtonHandler.sendRemove(player, Equipment.SLOT_FEET);
else if (componentId == 33)
ButtonHandler.sendRemove(player, Equipment.SLOT_RING);
else if (componentId == 36)
ButtonHandler.sendRemove(player, Equipment.SLOT_ARROWS);
else if (componentId == 45) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET) {
ButtonHandler.sendRemove(player, Equipment.SLOT_AURA);
player.getAuraManager().removeAura();
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
player.getEquipment().sendExamine(Equipment.SLOT_AURA);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getAuraManager().activate();
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getAuraManager().sendAuraRemainingTime();
} else if (componentId == 40) {
player.stopAll();
player.getInterfaceManager().sendInterface(17);
} else if (componentId == 37) {
openEquipmentBonuses(player, false);
}
} else if (interfaceId == 640) {
if (componentId == 18 || componentId == 22) {
player.getTemporaryAttributtes().put("WillDuelFriendly", true);
player.getPackets().sendConfig(283, 67108864);
} else if (componentId == 19 || componentId == 21) {
player.getTemporaryAttributtes().put("WillDuelFriendly", false);
player.getPackets().sendConfig(283, 134217728);
} else if (componentId == 20) {
DuelControler.challenge(player);
}
} else if (interfaceId == 650) {
if (componentId == 15) {
player.stopAll();
player.setNextWorldTile(new WorldTile(2974, 4384, player.getPlane()));
player.getControlerManager().startControler(
"CorpBeastControler");
} else if (componentId == 16)
player.closeInterfaces();
} else if (interfaceId == 667) {
if (componentId == 14) {
if (slotId >= 14)
return;
Item item = player.getEquipment().getItem(slotId);
if (item == null)
return;
if (packetId == 3)
player.getPackets().sendGameMessage(
ItemExamines.getExamine(item));
else if (packetId == 216) {
sendRemove(player, slotId);
ButtonHandler.refreshEquipBonuses(player);
}
} else if (componentId == 46 && player.getTemporaryAttributtes().remove("Banking") != null) {
player.getBank().openBank();
}
} else if (interfaceId == 670) {
if (componentId == 0) {
if (slotId >= player.getInventory().getItemsContainerSize())
return;
Item item = player.getInventory().getItem(slotId);
if (item == null)
return;
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET) {
if (sendWear(player, slotId, item.getId()))
ButtonHandler.refreshEquipBonuses(player);
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getInventory().sendExamine(slotId);
}
} else if (interfaceId == Inventory.INVENTORY_INTERFACE) { // inventory
if (componentId == 0) {
if (slotId > 27
|| player.getInterfaceManager()
.containsInventoryInter())
return;
Item item = player.getInventory().getItem(slotId);
if (item == null || item.getId() != slotId2)
return;
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
InventoryOptionsHandler.handleItemOption1(player, slotId,
slotId2, item);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
InventoryOptionsHandler.handleItemOption2(player, slotId,
slotId2, item);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
InventoryOptionsHandler.handleItemOption3(player, slotId,
slotId2, item);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
InventoryOptionsHandler.handleItemOption4(player, slotId,
slotId2, item);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET)
InventoryOptionsHandler.handleItemOption5(player, slotId,
slotId2, item);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON6_PACKET)
InventoryOptionsHandler.handleItemOption6(player, slotId,
slotId2, item);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON7_PACKET)
InventoryOptionsHandler.handleItemOption7(player, slotId,
slotId2, item);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
InventoryOptionsHandler.handleItemOption8(player, slotId,
slotId2, item);
}
} else if (interfaceId == 742) {
if (componentId == 46) // close
player.stopAll();
} else if (interfaceId == 743) {
if (componentId == 20) // close
player.stopAll();
} else if (interfaceId == 741) {
if (componentId == 9) // close
player.stopAll();
} else if (interfaceId == 749) {
if (componentId == 4) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET) // activate
player.getPrayer().switchQuickPrayers();
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) // switch
player.getPrayer().switchSettingQuickPrayer();
}
} else if (interfaceId == 750) {
if (componentId == 4) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET) {
player.toogleRun(player.isResting() ? false : true);
if (player.isResting())
player.stopAll();
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) {
if (player.isResting()) {
player.stopAll();
return;
}
long currentTime = Utils.currentTimeMillis();
if (player.getEmotesManager().getNextEmoteEnd() >= currentTime) {
player.getPackets().sendGameMessage(
"You can't rest while perfoming an emote.");
return;
}
if (player.getLockDelay() >= currentTime) {
player.getPackets().sendGameMessage(
"You can't rest while perfoming an action.");
return;
}
player.stopAll();
player.getActionManager().setAction(new Rest());
}
}
} else if (interfaceId == 11) {
if (componentId == 17) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getBank().depositItem(slotId, 1, false);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getBank().depositItem(slotId, 5, false);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getBank().depositItem(slotId, 10, false);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getBank().depositItem(slotId, Integer.MAX_VALUE,
false);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
player.getTemporaryAttributtes().put("bank_item_X_Slot",
slotId);
player.getTemporaryAttributtes().remove("bank_isWithdraw");
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET)
player.getInventory().sendExamine(slotId);
} else if (componentId == 18)
player.getBank().depositAllInventory(false);
else if (componentId == 20)
player.getBank().depositAllEquipment(false);
} else if (interfaceId == 762) {
if (componentId == 15)
player.getBank().switchInsertItems();
else if (componentId == 19)
player.getBank().switchWithdrawNotes();
else if (componentId == 33)
player.getBank().depositAllInventory(true);
else if (componentId == 37)
player.getBank().depositAllEquipment(true);
else if (componentId == 35)
player.getBank().emptyPouch(true);
else if (componentId == 46) {
player.closeInterfaces();
player.getInterfaceManager().sendInterface(767);
player.setCloseInterfacesEvent(new Runnable() {
@Override
public void run() {
player.getBank().openBank();
}
});
} else if (componentId >= 46 && componentId <= 64) {
int tabId = 9 - ((componentId - 46) / 2);
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getBank().setCurrentTab(tabId);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getBank().collapse(tabId);
} else if (componentId == 95) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getBank().withdrawItem(slotId, 1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getBank().withdrawItem(slotId, 5);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getBank().withdrawItem(slotId, 10);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getBank().withdrawLastAmount(slotId);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
player.getTemporaryAttributtes().put("bank_item_X_Slot",
slotId);
player.getTemporaryAttributtes().put("bank_isWithdraw",
Boolean.TRUE);
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET)
player.getBank().withdrawItem(slotId, Integer.MAX_VALUE);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON6_PACKET)
player.getBank().withdrawItemButOne(slotId);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
player.getBank().sendExamine(slotId);
} else if (componentId == 119) {
openEquipmentBonuses(player, true);
}
} else if (interfaceId == 763) {
if (componentId == 0) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
player.getBank().depositItem(slotId, 1, true);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getBank().depositItem(slotId, 5, true);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getBank().depositItem(slotId, 10, true);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getBank().depositLastAmount(slotId);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET) {
player.getTemporaryAttributtes().put("bank_item_X_Slot",
slotId);
player.getTemporaryAttributtes().remove("bank_isWithdraw");
player.getPackets().sendRunScript(108,
new Object[] { "Enter Amount:" });
} else if (packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET)
player.getBank().depositItem(slotId, Integer.MAX_VALUE,
true);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET)
player.getInventory().sendExamine(slotId);
}
} else if (interfaceId == 767) {
if (componentId == 10)
player.getBank().openBank();
} else if (interfaceId == 884) {
if (componentId == 4) {
int weaponId = player.getEquipment().getWeaponId();
if (player.hasInstantSpecial(weaponId)) {
player.performInstantSpecial(weaponId);
return;
}
submitSpecialRequest(player);
} else if (componentId >= 7 && componentId <= 10)
player.getCombatDefinitions().setAttackStyle(componentId - 7);
else if (componentId == 11)
player.getCombatDefinitions().switchAutoRelatie();
} else if (interfaceId == 755) {
if (componentId == 44)
player.getPackets().sendWindowsPane(
player.getInterfaceManager().hasRezizableScreen() ? 746
: 548, 2);
else if (componentId == 42) {
player.getHintIconsManager().removeAll();//TODO find hintIcon index
player.getPackets().sendConfig(1159, 1);
}
} else if (interfaceId == 20)
SkillCapeCustomizer.handleSkillCapeCustomizer(player, componentId);
else if (interfaceId == 1056) {
if (componentId == 173)
player.getInterfaceManager().sendInterface(917);
} else if (interfaceId == 751) {
if (componentId == 26) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getFriendsIgnores().setPrivateStatus(0);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getFriendsIgnores().setPrivateStatus(1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getFriendsIgnores().setPrivateStatus(2);
} else if (componentId == 32) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.setFilterGame(false);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.setFilterGame(true);
} else if (componentId == 29) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.setPublicStatus(0);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.setPublicStatus(1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.setPublicStatus(2);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET)
player.setPublicStatus(3);
}else if (componentId == 0) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.getFriendsIgnores().setFriendsChatStatus(0);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.getFriendsIgnores().setFriendsChatStatus(1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.getFriendsIgnores().setFriendsChatStatus(2);
} else if (componentId == 23) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.setClanStatus(0);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.setClanStatus(1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.setClanStatus(2);
} else if (componentId == 20) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.setTradeStatus(0);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.setTradeStatus(1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.setTradeStatus(2);
} else if (componentId == 17) {
if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET)
player.setAssistStatus(0);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
player.setAssistStatus(1);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET)
player.setAssistStatus(2);
else if (packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET) {
//ASSIST XP Earned/Time
}
}
}/* else if(interfaceId == 105) {
GrandExchange.handleButtons(player, componentId);
} */else if (interfaceId == 1163 || interfaceId == 1164
|| interfaceId == 1168 || interfaceId == 1170
|| interfaceId == 1173)
player.getDominionTower().handleButtons(interfaceId, componentId);
else if (interfaceId == 900)
PlayerLook.handleMageMakeOverButtons(player, componentId);
else if (interfaceId == 1028)
PlayerLook.handleCharacterCustomizingButtons(player, componentId);
else if (interfaceId == 1108 || interfaceId == 1109)
player.getFriendsIgnores().handleFriendChatButtons(interfaceId,
componentId, packetId);
else if (interfaceId == 1079)
player.closeInterfaces();
else if (interfaceId == 374) {
if(componentId >= 5 && componentId <= 9)
player.setNextWorldTile(new WorldTile(FightPitsViewingOrb.ORB_TELEPORTS[componentId-5]));
else if (componentId == 15)
player.stopAll();
}else if (interfaceId == 1092) {
player.stopAll();
WorldTile destTile = null;
switch(componentId) {
case 47:
destTile = HomeTeleport.LUMBRIDGE_LODE_STONE;
break;
case 42:
destTile = HomeTeleport.BURTHORPE_LODE_STONE;
break;
case 39:
destTile = HomeTeleport.LUNAR_ISLE_LODE_STONE;
break;
case 7:
destTile = HomeTeleport.BANDIT_CAMP_LODE_STONE;
break;
case 50:
destTile = HomeTeleport.TAVERLY_LODE_STONE;
break;
case 40:
destTile = HomeTeleport.ALKARID_LODE_STONE;
break;
case 51:
destTile = HomeTeleport.VARROCK_LODE_STONE;
break;
case 45:
destTile = HomeTeleport.EDGEVILLE_LODE_STONE;
break;
case 46:
destTile = HomeTeleport.FALADOR_LODE_STONE;
break;
case 48:
destTile = HomeTeleport.PORT_SARIM_LODE_STONE;
break;
case 44:
destTile = HomeTeleport.DRAYNOR_VILLAGE_LODE_STONE;
break;
case 41:
destTile = HomeTeleport.ARDOUGNE_LODE_STONE;
break;
case 43:
destTile = HomeTeleport.CATHERBAY_LODE_STONE;
break;
case 52:
destTile = HomeTeleport.YANILLE_LODE_STONE;
break;
case 49:
destTile = HomeTeleport.SEERS_VILLAGE_LODE_STONE;
break;
}
if(destTile != null)
player.getActionManager().setAction(new HomeTeleport(destTile));
}else if (interfaceId == 1214)
player.getSkills().handleSetupXPCounter(componentId);
else if (interfaceId == 1292) {
if(componentId == 12)
Crucible.enterArena(player);
else if (componentId == 13)
player.closeInterfaces();
}
if (Settings.DEBUG)
Logger.log("ButtonHandler", "InterfaceId " + interfaceId
+ ", componentId " + componentId + ", slotId " + slotId
+ ", slotId2 " + slotId2 + ", PacketId: " + packetId);
}
public static void sendRemove(Player player, int slotId) {
if (slotId >= 15)
return;
player.stopAll(false, false);
Item item = player.getEquipment().getItem(slotId);
if (item == null
|| !player.getInventory().addItem(item.getId(),
item.getAmount()))
return;
player.getEquipment().getItems().set(slotId, null);
player.getEquipment().refresh(slotId);
player.getAppearence().generateAppearenceData();
if (Runecrafting.isTiara(item.getId()))
player.getPackets().sendConfig(491, 0);
if (slotId == 3)
player.getCombatDefinitions().desecreaseSpecialAttack(0);
}
public static boolean sendWear(Player player, int slotId, int itemId) {
if (player.hasFinished() || player.isDead())
return false;
player.stopAll(false, false);
Item item = player.getInventory().getItem(slotId);
String itemName = item.getDefinitions() == null ? "" : item
.getDefinitions().getName().toLowerCase();
if (item == null || item.getId() != itemId)
return false;
if (item.getDefinitions().isNoted()
|| !item.getDefinitions().isWearItem(player.getAppearence().isMale())) {
player.getPackets().sendGameMessage("You can't wear that.");
return true;
}
for (String strings : Settings.DONATOR_ITEMS) {
if (itemName.contains(strings) && !player.isDonator()) {
player.getPackets().sendGameMessage(
"You need to be a donator to equip " + itemName + ".");
return true;
}
}
for (String strings : Settings.EXTREME_DONATOR_ITEMS) {
if (itemName.contains(strings) && !player.isExtremeDonator()) {
player.getPackets().sendGameMessage(
"You need to be a extreme donator to equip " + itemName + ".");
return true;
}
}
for (String strings : Settings.EARNED_ITEMS) {
if (itemName.contains(strings) && player.getRights() <= 1) {
player.getPackets().sendGameMessage(
"You must earn " + itemName + ".");
return true;
}
}
for (String strings : Settings.VOTE_REQUIRED_ITEMS) {
if (itemName.toLowerCase().contains(strings) && !player.hasVoted()) {
player.getPackets().sendGameMessage("You need to vote to wear the prod item "+itemName+" for 24 hours, type ::vote to vote.");
return true;
}
}
int targetSlot = Equipment.getItemSlot(itemId);
if (targetSlot == -1) {
player.getPackets().sendGameMessage("You can't wear that.");
return true;
}
if(!ItemConstants.canWear(item, player))
return true;
boolean isTwoHandedWeapon = targetSlot == 3
&& Equipment.isTwoHandedWeapon(item);
if (isTwoHandedWeapon && !player.getInventory().hasFreeSlots()
&& player.getEquipment().hasShield()) {
player.getPackets().sendGameMessage(
"Not enough free space in your inventory.");
return true;
}
HashMap<Integer, Integer> requiriments = item.getDefinitions()
.getWearingSkillRequiriments();
boolean hasRequiriments = true;
if (requiriments != null) {
for (int skillId : requiriments.keySet()) {
if (skillId > 24 || skillId < 0)
continue;
int level = requiriments.get(skillId);
if (level < 0 || level > 120)
continue;
if (player.getSkills().getLevelForXp(skillId) < level) {
if (hasRequiriments) {
player.getPackets()
.sendGameMessage(
"You are not high enough level to use this item.");
}
hasRequiriments = false;
String name = Skills.SKILL_NAME[skillId].toLowerCase();
player.getPackets().sendGameMessage(
"You need to have a"
+ (name.startsWith("a") ? "n" : "") + " "
+ name + " level of " + level + ".");
}
}
}
if (!hasRequiriments)
return true;
if (!player.getControlerManager().canEquip(targetSlot, itemId))
return false;
player.stopAll(false, false);
player.getInventory().deleteItem(slotId, item);
if (targetSlot == 3) {
if (isTwoHandedWeapon && player.getEquipment().getItem(5) != null) {
if (!player.getInventory().addItem(
player.getEquipment().getItem(5).getId(),
player.getEquipment().getItem(5).getAmount())) {
player.getInventory().getItems().set(slotId, item);
player.getInventory().refresh(slotId);
return true;
}
player.getEquipment().getItems().set(5, null);
}
} else if (targetSlot == 5) {
if (player.getEquipment().getItem(3) != null
&& Equipment.isTwoHandedWeapon(player.getEquipment()
.getItem(3))) {
if (!player.getInventory().addItem(
player.getEquipment().getItem(3).getId(),
player.getEquipment().getItem(3).getAmount())) {
player.getInventory().getItems().set(slotId, item);
player.getInventory().refresh(slotId);
return true;
}
player.getEquipment().getItems().set(3, null);
}
}
if (player.getEquipment().getItem(targetSlot) != null
&& (itemId != player.getEquipment().getItem(targetSlot).getId() || !item
.getDefinitions().isStackable())) {
if (player.getInventory().getItems().get(slotId) == null) {
player.getInventory()
.getItems()
.set(slotId,
new Item(player.getEquipment()
.getItem(targetSlot).getId(), player
.getEquipment().getItem(targetSlot)
.getAmount()));
player.getInventory().refresh(slotId);
} else
player.getInventory().addItem(
new Item(player.getEquipment().getItem(targetSlot)
.getId(), player.getEquipment()
.getItem(targetSlot).getAmount()));
player.getEquipment().getItems().set(targetSlot, null);
}
if(targetSlot == Equipment.SLOT_AURA)
player.getAuraManager().removeAura();
int oldAmt = 0;
if (player.getEquipment().getItem(targetSlot) != null) {
oldAmt = player.getEquipment().getItem(targetSlot).getAmount();
}
Item item2 = new Item(itemId, oldAmt + item.getAmount());
player.getEquipment().getItems().set(targetSlot, item2);
player.getEquipment().refresh(targetSlot,
targetSlot == 3 ? 5 : targetSlot == 3 ? 0 : 3);
player.getAppearence().generateAppearenceData();
player.getPackets().sendSound(2240, 0, 1);
if (targetSlot == 3)
player.getCombatDefinitions().desecreaseSpecialAttack(0);
player.getCharges().wear(targetSlot);
return true;
}
public static boolean sendWear2(Player player, int slotId, int itemId) {
if (player.hasFinished() || player.isDead())
return false;
player.stopAll(false, false);
Item item = player.getInventory().getItem(slotId);
if (item == null || item.getId() != itemId)
return false;
if((itemId == 4565 || itemId == 4084) && player.getRights() != 2) {
player.getPackets().sendGameMessage("You've to be a administrator to wear this item.");
return true;
}
if (item.getDefinitions().isNoted()
|| !item.getDefinitions().isWearItem(player.getAppearence().isMale()) && itemId != 4084) {
player.getPackets().sendGameMessage("You can't wear that.");
return false;
}
String itemName = item.getDefinitions() == null ? "" : item
.getDefinitions().getName().toLowerCase();
for (String strings : Settings.DONATOR_ITEMS) {
if (itemName.contains(strings) && !player.isDonator()) {
player.getPackets().sendGameMessage(
"You need to be a donator to equip " + itemName + ".");
return false;
}
}
for (String strings : Settings.EXTREME_DONATOR_ITEMS) {
if (itemName.contains(strings) && !player.isExtremeDonator()) {
player.getPackets().sendGameMessage(
"You need to be a extreme donator to equip " + itemName + ".");
return true;
}
}
for (String strings : Settings.EARNED_ITEMS) {
if (itemName.contains(strings) && player.getRights() <= 1) {
player.getPackets().sendGameMessage(
"You must earn " + itemName + ".");
return true;
}
}
for (String strings : Settings.VOTE_REQUIRED_ITEMS) {
if (itemName.toLowerCase().contains(strings) && !player.hasVoted()) {
player.getPackets().sendGameMessage("You need to vote to wear the prod item "+itemName+" for 24 hours, type ::vote to vote.");
return true;
}
}
int targetSlot = Equipment.getItemSlot(itemId);
if(itemId == 4084)
targetSlot = 3;
if (targetSlot == -1) {
player.getPackets().sendGameMessage("You can't wear that.");
return false;
}
if(!ItemConstants.canWear(item, player))
return false;
boolean isTwoHandedWeapon = targetSlot == 3
&& Equipment.isTwoHandedWeapon(item);
if (isTwoHandedWeapon && !player.getInventory().hasFreeSlots()
&& player.getEquipment().hasShield()) {
player.getPackets().sendGameMessage(
"Not enough free space in your inventory.");
return false;
}
HashMap<Integer, Integer> requiriments = item.getDefinitions()
.getWearingSkillRequiriments();
boolean hasRequiriments = true;
if (requiriments != null) {
for (int skillId : requiriments.keySet()) {
if (skillId > 24 || skillId < 0)
continue;
int level = requiriments.get(skillId);
if (level < 0 || level > 120)
continue;
if (player.getSkills().getLevelForXp(skillId) < level) {
if (hasRequiriments)
player.getPackets()
.sendGameMessage(
"You are not high enough level to use this item.");
hasRequiriments = false;
String name = Skills.SKILL_NAME[skillId].toLowerCase();
player.getPackets().sendGameMessage(
"You need to have a"
+ (name.startsWith("a") ? "n" : "") + " "
+ name + " level of " + level + ".");
}
}
}
if (!hasRequiriments)
return false;
if (!player.getControlerManager().canEquip(targetSlot, itemId))
return false;
player.getInventory().getItems().remove(slotId, item);
if (targetSlot == 3) {
if (isTwoHandedWeapon && player.getEquipment().getItem(5) != null) {
if (!player.getInventory().getItems()
.add(player.getEquipment().getItem(5))) {
player.getInventory().getItems().set(slotId, item);
return false;
}
player.getEquipment().getItems().set(5, null);
}
} else if (targetSlot == 5) {
if (player.getEquipment().getItem(3) != null
&& Equipment.isTwoHandedWeapon(player.getEquipment()
.getItem(3))) {
if (!player.getInventory().getItems()
.add(player.getEquipment().getItem(3))) {
player.getInventory().getItems().set(slotId, item);
return false;
}
player.getEquipment().getItems().set(3, null);
}
}
if (player.getEquipment().getItem(targetSlot) != null
&& (itemId != player.getEquipment().getItem(targetSlot).getId() || !item
.getDefinitions().isStackable())) {
if (player.getInventory().getItems().get(slotId) == null) {
player.getInventory()
.getItems()
.set(slotId,
new Item(player.getEquipment()
.getItem(targetSlot).getId(), player
.getEquipment().getItem(targetSlot)
.getAmount()));
} else
player.getInventory()
.getItems()
.add(new Item(player.getEquipment().getItem(targetSlot)
.getId(), player.getEquipment()
.getItem(targetSlot).getAmount()));
player.getEquipment().getItems().set(targetSlot, null);
}
if(targetSlot == Equipment.SLOT_AURA)
player.getAuraManager().removeAura();
int oldAmt = 0;
if (player.getEquipment().getItem(targetSlot) != null) {
oldAmt = player.getEquipment().getItem(targetSlot).getAmount();
}
Item item2 = new Item(itemId, oldAmt + item.getAmount());
player.getEquipment().getItems().set(targetSlot, item2);
player.getEquipment().refresh(targetSlot,
targetSlot == 3 ? 5 : targetSlot == 3 ? 0 : 3);
if (targetSlot == 3)
player.getCombatDefinitions().desecreaseSpecialAttack(0);
player.getCharges().wear(targetSlot);
return true;
}
public static void submitSpecialRequest(final Player player) {
CoresManager.fastExecutor.schedule(new TimerTask() {
@Override
public void run() {
try {
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.getCombatDefinitions().switchUsingSpecialAttack();
}
}, 0);
} catch (Throwable e) {
Logger.handle(e);
}
}
}, 200);
}
public static void sendWear(Player player, int[] slotIds) {
if (player.hasFinished() || player.isDead())
return;
boolean worn = false;
Item[] copy = player.getInventory().getItems().getItemsCopy();
for (int slotId : slotIds) {
Item item = player.getInventory().getItem(slotId);
if (item == null)
continue;
if (sendWear2(player, slotId, item.getId()))
worn = true;
}
player.getInventory().refreshItems(copy);
if (worn) {
player.getAppearence().generateAppearenceData();
player.getPackets().sendSound(2240, 0, 1);
}
}
public static void openEquipmentBonuses(final Player player, boolean banking) {
player.stopAll();
player.getInterfaceManager().sendInventoryInterface(670);
player.getInterfaceManager().sendInterface(667);
player.getPackets().sendConfigByFile(4894, banking ? 1 : 0);
player.getPackets().sendItems(93,
player.getInventory().getItems());
player.getPackets().sendInterSetItemsOptionsScript(670, 0, 93,
4, 7, "Equip", "Compare", "Stats", "Examine");
player.getPackets().sendUnlockIComponentOptionSlots(670, 0, 0,
27, 0, 1, 2, 3);
player.getPackets().sendIComponentSettings(667, 14, 0, 13, 1030);
refreshEquipBonuses(player);
if(banking) {
player.getTemporaryAttributtes().put("Banking", Boolean.TRUE);
player.setCloseInterfacesEvent(new Runnable() {
@Override
public void run() {
player.getTemporaryAttributtes().remove("Banking");
}
});
}
}
public static void refreshEquipBonuses(Player player) {
player.getPackets().sendIComponentText(667, 28,
"Stab: +" + player.getCombatDefinitions().getBonuses()[0]);
player.getPackets().sendIComponentText(667, 29,
"Slash: +" + player.getCombatDefinitions().getBonuses()[1]);
player.getPackets().sendIComponentText(667, 30,
"Crush: +" + player.getCombatDefinitions().getBonuses()[2]);
player.getPackets().sendIComponentText(667, 31,
"Magic: +" + player.getCombatDefinitions().getBonuses()[3]);
player.getPackets().sendIComponentText(667, 32,
"Range: +" + player.getCombatDefinitions().getBonuses()[4]);
player.getPackets().sendIComponentText(667, 33,
"Stab: +" + player.getCombatDefinitions().getBonuses()[5]);
player.getPackets().sendIComponentText(667, 34,
"Slash: +" + player.getCombatDefinitions().getBonuses()[6]);
player.getPackets().sendIComponentText(667, 35,
"Crush: +" + player.getCombatDefinitions().getBonuses()[7]);
player.getPackets().sendIComponentText(667, 36,
"Magic: +" + player.getCombatDefinitions().getBonuses()[8]);
player.getPackets().sendIComponentText(667, 37,
"Range: +" + player.getCombatDefinitions().getBonuses()[9]);
player.getPackets().sendIComponentText(667, 38,
"Summoning: +" + player.getCombatDefinitions().getBonuses()[10]);
player.getPackets().sendIComponentText(667, 39,
"Absorb Melee: +" + player.getCombatDefinitions().getBonuses()[CombatDefinitions.ABSORVE_MELEE_BONUS] + "%");
player.getPackets().sendIComponentText(667, 40,
"Absorb Magic: +" + player.getCombatDefinitions().getBonuses()[CombatDefinitions.ABSORVE_MAGE_BONUS] + "%");
player.getPackets().sendIComponentText(667, 41,
"Absorb Ranged: +" + player.getCombatDefinitions().getBonuses()[CombatDefinitions.ABSORVE_RANGE_BONUS]+ "%");
player.getPackets().sendIComponentText(667, 42,
"Strength: " + player.getCombatDefinitions().getBonuses()[14]);
player.getPackets().sendIComponentText(667, 43,
"Ranged Str: " + player.getCombatDefinitions().getBonuses()[15]);
player.getPackets().sendIComponentText(667, 44,
"Prayer: +" + player.getCombatDefinitions().getBonuses()[16]);
player.getPackets().sendIComponentText(667,45,"Magic Damage: +" + player.getCombatDefinitions().getBonuses()[17] + "%");
}
}