From 6fff121df2337d521347feeee7cc8418b1927b66 Mon Sep 17 00:00:00 2001 From: JKetelaar Date: Sun, 12 Apr 2015 15:03:46 +0200 Subject: [PATCH] Added new menu --- src/org/rev317/min/api/methods/Bank.java | 88 ++-- .../rev317/min/api/methods/GroundItems.java | 36 +- src/org/rev317/min/api/methods/Inventory.java | 17 +- src/org/rev317/min/api/methods/Items.java | 67 +++ src/org/rev317/min/api/methods/Menu.java | 418 +++++++----------- src/org/rev317/min/api/methods/Npcs.java | 37 +- src/org/rev317/min/api/methods/Players.java | 30 +- .../rev317/min/api/methods/SceneObjects.java | 55 ++- src/org/rev317/min/api/methods/Trading.java | 41 +- .../rev317/min/api/wrappers/Character.java | 10 - .../rev317/min/api/wrappers/GroundItem.java | 10 +- src/org/rev317/min/api/wrappers/Item.java | 21 +- src/org/rev317/min/api/wrappers/Npc.java | 11 + src/org/rev317/min/api/wrappers/Player.java | 12 + .../rev317/min/api/wrappers/SceneObject.java | 7 +- 15 files changed, 451 insertions(+), 409 deletions(-) create mode 100644 src/org/rev317/min/api/methods/Items.java diff --git a/src/org/rev317/min/api/methods/Bank.java b/src/org/rev317/min/api/methods/Bank.java index 33565bf..8325a07 100644 --- a/src/org/rev317/min/api/methods/Bank.java +++ b/src/org/rev317/min/api/methods/Bank.java @@ -13,8 +13,7 @@ import java.util.ArrayList; import java.util.Properties; /** - * @author Everel - * @author Matt123337 + * @author Everel, Matt123337, JKetelaar */ public class Bank { public static final int[] BANKERS = new int[]{44, 45, 494, 495, 498, 499, @@ -25,25 +24,7 @@ public class Bank { 10517, 11402, 11758, 12759, 14367, 19230, 20325, 24914, 25808, 26972, 29085, 52589, 34752, 35647, 36786, 2012, 2015, 2019, 693, 4483, 12308, 20607, 21301, 27663, 42192}; - public static int BANK_INTERFACE = 5292; - public static int ITEM_INTERFACE = 5382; - public static int BUTTON_DEPOSIT_ALL = 5386; - public static int INV_PARENT_ID = 5064; - public static int BANK_OPEN_INDEX = 1; - static { - - Properties p = Context.getInstance().getServerProviderInfo().getProperties(); - if (p.containsKey("bankInterface")) - BANK_INTERFACE = Integer.parseInt(p.getProperty("bankInterface")); - if (p.containsKey("bankItemInterface")) - ITEM_INTERFACE = Integer.parseInt(p.getProperty("bankItemInterface")); - if (p.containsKey("bankDepositAll")) - BUTTON_DEPOSIT_ALL = Integer.parseInt(p.getProperty("bankDepositAll")); - if (p.containsKey("bankInvParent")) - INV_PARENT_ID = Integer.parseInt(p.getProperty("bankInvParent")); - if (p.containsKey("bankOpenIndex")) - BANK_OPEN_INDEX = Integer.parseInt(p.getProperty("bankOpenIndex")); - } + private static Properties settings = Context.getInstance().getServerProviderInfo().getSettings(); /** * Gets nearest banker @@ -90,10 +71,10 @@ public class Bank { Npc banker = getBanker(); if (bank != null) { - bank.interact(BANK_OPEN_INDEX); + bank.interact(SceneObjects.Option.USE); return true; } else if (banker != null) { - banker.interact(BANK_OPEN_INDEX); + banker.interact(Npcs.Option.BANK); return true; } @@ -104,7 +85,7 @@ public class Bank { * Deposits all items */ public static void depositAll() { - Menu.clickButton(BUTTON_DEPOSIT_ALL); + Menu.clickButton(Integer.parseInt(settings.getProperty("button_deposit_all"))); } /** @@ -114,7 +95,6 @@ public class Bank { * @param amount */ public static void withdraw(int id, int amount, int sleep) { - if (!isOpen()) { return; } @@ -126,15 +106,15 @@ public class Bank { } if (amount == 1) { - b.transform(0, ITEM_INTERFACE); + b.transform(Items.Option.TRANSFORM_ONE, Integer.parseInt(settings.getProperty("item_interface_id"))); } else if (amount == 5) { - b.transform(1, ITEM_INTERFACE); + b.transform(Items.Option.TRANSFORM_FIVE, Integer.parseInt(settings.getProperty("item_interface_id"))); } else if (amount == 10) { - b.transform(2, ITEM_INTERFACE); + b.transform(Items.Option.TRANSFORM_TEN, Integer.parseInt(settings.getProperty("item_interface_id"))); } else if (amount == 0) { - b.transform(3, ITEM_INTERFACE); + b.transform(Items.Option.TRANSFORM_ALL, Integer.parseInt(settings.getProperty("item_interface_id"))); } else { - b.transform(4, ITEM_INTERFACE); + b.transform(Items.Option.TRANSFORM_X, Integer.parseInt(settings.getProperty("item_interface_id"))); Time.sleep(1500 + sleep); Keyboard.getInstance().sendKeys("" + amount); } @@ -148,14 +128,16 @@ public class Bank { * @return bank item */ public static Item getItem(int id) { - if (!isOpen()) { return null; } - for (Item i : Bank.getBankItems()) { - if (i.getId() == id) { - return i; + Item[] items; + if ((items = Bank.getBankItems()) != null) { + for (Item i : items) { + if (i.getId() == id) { + return i; + } } } return null; @@ -172,7 +154,8 @@ public class Bank { if (!isOpen()) { return 0; } - return getItem(id).getStackSize(); + Item item; + return ((item = getItem(id)) != null ? item.getStackSize() : 0); } /** @@ -180,17 +163,22 @@ public class Bank { * * @param bank booth */ - public static void open(SceneObject bank) { - + public static void open(final SceneObject bank) { if (isOpen()) { return; } if (bank.getLocation().distanceTo() > 8) { bank.getLocation().walkTo(); + Time.sleep(new SleepCondition() { + @Override + public boolean isValid() { + return bank.distanceTo() < 8; + } + }, 5000); return; } - bank.interact(BANK_OPEN_INDEX); + bank.interact(SceneObjects.Option.USE); } @@ -201,8 +189,7 @@ public class Bank { if (!isOpen()) { return; } - //[index: 1, action1: -1, action2: -1, action3: 5384, id: 200] - Menu.sendAction(200, -1, -1, 5384); + Menu.sendAction(200, -1, -1, Integer.parseInt(settings.getProperty("button_close_bank"))); } /** @@ -220,7 +207,7 @@ public class Bank { for (Item i : Inventory.getItems()) { if (!ignored.contains(i.getId())) { while (Bank.isOpen() && Inventory.getCount(i.getId()) > 0) { - i.transform(3, INV_PARENT_ID); + i.transform(Items.Option.TRANSFORM_ALL, Integer.parseInt(settings.getProperty("inventory_parent_id"))); ignored.add(i.getId()); final int previous = Inventory.getCount(true); Time.sleep(new SleepCondition() { @@ -244,7 +231,7 @@ public class Bank { if (!isOpen()) { return null; } - return Loader.getClient().getInterfaceCache()[5382].getItems(); + return Loader.getClient().getInterfaceCache()[Integer.parseInt(settings.getProperty("item_interface_id"))].getItems(); } /** @@ -256,7 +243,7 @@ public class Bank { if (!isOpen()) { return null; } - return Loader.getClient().getInterfaceCache()[5382].getStackSizes(); + return Loader.getClient().getInterfaceCache()[Integer.parseInt(settings.getProperty("item_interface_id"))].getStackSizes(); } /** @@ -271,12 +258,14 @@ public class Bank { ArrayList items = new ArrayList(); int[] ids = getBankItemIDs(); int[] stacks = getBankStacks(); - for (int i = 0; i < ids.length; i++) { - if (ids[i] > 0) { - items.add(new Item(ids[i], stacks[i], i)); + if (ids != null && stacks != null) { + for (int i = 0; i < ids.length; i++) { + if (ids[i] > 0) { + items.add(new Item(ids[i], stacks[i], i)); + } } } - return (Item[]) items.toArray(new Item[items.size()]); + return items.toArray(new Item[items.size()]); } /** @@ -288,7 +277,8 @@ public class Bank { if (!isOpen()) { return 0; } - return getBankItemIDs().length; + int[] items; + return ((items = getBankItemIDs()) != null ? items.length : 0); } /** @@ -297,7 +287,7 @@ public class Bank { * @return true if bank is open */ public static boolean isOpen() { - return Loader.getClient().getOpenInterfaceId() == BANK_INTERFACE; + return Loader.getClient().getOpenInterfaceId() == Integer.parseInt(settings.getProperty("bank_interface_id")); } } diff --git a/src/org/rev317/min/api/methods/GroundItems.java b/src/org/rev317/min/api/methods/GroundItems.java index a783ae2..ebc4d0a 100644 --- a/src/org/rev317/min/api/methods/GroundItems.java +++ b/src/org/rev317/min/api/methods/GroundItems.java @@ -1,5 +1,6 @@ package org.rev317.min.api.methods; +import org.parabot.core.Context; import org.parabot.environment.api.utils.Filter; import org.rev317.min.Loader; import org.rev317.min.accessors.Client; @@ -10,9 +11,10 @@ import org.rev317.min.api.wrappers.GroundItem; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; +import java.util.Properties; /** - * @author Everel + * @author Everel, JKetelaar */ public class GroundItems { private static final Comparator NEAREST_SORTER = new Comparator() { @@ -32,6 +34,7 @@ public class GroundItems { }; private static Client client; + private static Properties settings = Context.getInstance().getServerProviderInfo().getSettings(); /** * Gets all loaded ground items @@ -43,7 +46,7 @@ public class GroundItems { if (client == null) { client = Loader.getClient(); } - final ArrayList items = new ArrayList(); + final ArrayList items = new ArrayList<>(); for (int x = 0; x < 104; x++) { for (int y = 0; y < 104; y++) { final GroundItem[] groundItemsAtTile = getGroundItemsAt(x, y); @@ -76,14 +79,11 @@ public class GroundItems { if (deque == null) { return null; } - ArrayList list = null; + ArrayList list = new ArrayList<>(); final Node holder = deque.getHead(); Node curNode = holder.getNext(); while (curNode != null && curNode != holder && curNode != deque.getHead()) { - if (list == null) { - list = new ArrayList(); - } final org.rev317.min.accessors.Item groundItem = (org.rev317.min.accessors.Item) curNode; list.add(new GroundItem(groundItem, x, y)); curNode = curNode.getNext(); @@ -149,4 +149,28 @@ public class GroundItems { }); } + public enum Option{ + FIRST(Integer.parseInt(settings.getProperty("menu_ground_item_first_interaction"))), + + SECOND(Integer.parseInt(settings.getProperty("menu_ground_item_second_interaction"))), + + THIRD(Integer.parseInt(settings.getProperty("menu_ground_item_third_interaction"))), + TAKE(Integer.parseInt(settings.getProperty("menu_ground_item_third_interaction"))), + + FOURTH(Integer.parseInt(settings.getProperty("menu_ground_item_fourth_interaction"))), + + FIFTH(Integer.parseInt(settings.getProperty("menu_ground_item_fifth_interaction"))), + + EXAMINE(Integer.parseInt(settings.getProperty("menu_ground_item_examine_interaction"))); + + int actionId; + + Option(int actionId) { + this.actionId = actionId; + } + + public int getActionId() { + return actionId; + } + } } \ No newline at end of file diff --git a/src/org/rev317/min/api/methods/Inventory.java b/src/org/rev317/min/api/methods/Inventory.java index 1d10ccc..e4d45fe 100644 --- a/src/org/rev317/min/api/methods/Inventory.java +++ b/src/org/rev317/min/api/methods/Inventory.java @@ -1,5 +1,6 @@ package org.rev317.min.api.methods; +import org.parabot.core.Context; import org.parabot.environment.api.utils.Filter; import org.parabot.environment.api.utils.Time; import org.parabot.environment.scripts.framework.SleepCondition; @@ -8,13 +9,15 @@ import org.rev317.min.accessors.Interface; import org.rev317.min.api.wrappers.Item; import java.util.ArrayList; +import java.util.Properties; /** * @author Everel, JKetelaar, Fryslan */ public class Inventory { - public static final int INVENTORY_INDEX = 3214; + + private static Properties settings = Context.getInstance().getServerProviderInfo().getSettings(); private static final Filter ALL_FILTER = new Filter() { @@ -56,7 +59,7 @@ public class Inventory { * @return interface of inventory */ public static Interface getInterface() { - return Loader.getClient().getInterfaceCache()[INVENTORY_INDEX]; + return Loader.getClient().getInterfaceCache()[Integer.parseInt(settings.getProperty("inventory_index"))]; } /** @@ -178,7 +181,7 @@ public class Inventory { } final int[] items = inventory.getItems(); final int[] stackSizes = inventory.getStackSizes(); - final ArrayList invItems = new ArrayList(28); + final ArrayList invItems = new ArrayList<>(28); for (int i = 0; i < items.length; i++) { final int itemId = items[i]; if (itemId < 1) { @@ -257,9 +260,9 @@ public class Inventory { if (io != null) { if (it != null) { - Menu.interact(io, "use"); + Menu.interact(io, Items.Option.USE.getActionId()); Time.sleep(50, 100); - Menu.interact(it, "use with"); + Menu.interact(it, Items.Option.USE_WITH.getActionId()); Time.sleep(50, 100); return true; } @@ -282,9 +285,9 @@ public class Inventory { if (io != null) { if (it != null) { - Menu.interact(io, "use"); + Menu.interact(io, Items.Option.USE.getActionId()); Time.sleep(50, 100); - Menu.interact(it, "use with"); + Menu.interact(it, Items.Option.USE_WITH.getActionId()); Time.sleep(50, 100); sleepCondition.isValid(); return true; diff --git a/src/org/rev317/min/api/methods/Items.java b/src/org/rev317/min/api/methods/Items.java new file mode 100644 index 0000000..dfa342d --- /dev/null +++ b/src/org/rev317/min/api/methods/Items.java @@ -0,0 +1,67 @@ +package org.rev317.min.api.methods; + +import org.parabot.core.Context; + +import java.util.Properties; + +/** + * @author JKetelaar + */ +public class Items { + private static Properties settings = Context.getInstance().getServerProviderInfo().getSettings(); + + public enum Option{ + TRANSFORM_FIRST(Integer.parseInt(settings.getProperty("menu_transform_one_interaction"))), + VALUE(Integer.parseInt(settings.getProperty("menu_transform_one_interaction"))), + TRANSFORM_ONE(Integer.parseInt(settings.getProperty("menu_transform_one_interaction"))), + + TRANSFORM_SECOND(Integer.parseInt(settings.getProperty("menu_transform_five_interaction"))), + TRANSFORM_FIVE(Integer.parseInt(settings.getProperty("menu_transform_five_interaction"))), + + TRANSFORM_THIRD(Integer.parseInt(settings.getProperty("menu_transform_ten_interaction"))), + TRANSFORM_TEN(Integer.parseInt(settings.getProperty("menu_transform_ten_interaction"))), + + TRANSFORM_FOURTH(Integer.parseInt(settings.getProperty("menu_transform_all_interaction"))), + TRANSFORM_ALL(Integer.parseInt(settings.getProperty("menu_transform_all_interaction"))), + + TRANSFORM_FIFTH(Integer.parseInt(settings.getProperty("menu_transform_x_interaction"))), + TRANSFORM_X(Integer.parseInt(settings.getProperty("menu_transform_x_interaction"))), + TRANSFORM_HUNDRED(Integer.parseInt(settings.getProperty("menu_transform_x_interaction"))), + + TRANSFORM_SIXTH(Integer.parseInt(settings.getProperty("menu_transform_all_but_one_interaction"))), + TRANSFORM_ALL_BUT_ONE(Integer.parseInt(settings.getProperty("menu_transform_all_but_one_interaction"))), + + TRANSFORM_EXAMINE(Integer.parseInt(settings.getProperty("menu_transform_examine_interaction"))), + + FIRST(Integer.parseInt(settings.getProperty("menu_item_first_interaction"))), + WEAR(Integer.parseInt(settings.getProperty("menu_item_first_interaction"))), + + SECOND(Integer.parseInt(settings.getProperty("menu_item_second_interaction"))), + CONSUME(Integer.parseInt(settings.getProperty("menu_item_second_interaction"))), + + THIRD(Integer.parseInt(settings.getProperty("menu_item_third_interaction"))), + EMPTY(Integer.parseInt(settings.getProperty("menu_item_third_interaction"))), + + FOURTH(Integer.parseInt(settings.getProperty("menu_item_fourth_interaction"))), + USE(Integer.parseInt(settings.getProperty("menu_item_fourth_interaction"))), + + FIFTH(Integer.parseInt(settings.getProperty("menu_item_fifth_interaction"))), + DROP(Integer.parseInt(settings.getProperty("menu_item_fifth_interaction"))), + + SIXTH(Integer.parseInt(settings.getProperty("menu_item_sixth_interaction"))), + EXAMINE(Integer.parseInt(settings.getProperty("menu_item_sixth_interaction"))), + + SEVENTH(Integer.parseInt(settings.getProperty("menu_item_seventh_interaction"))), + USE_WITH(Integer.parseInt(settings.getProperty("menu_item_seventh_interaction"))); + + int actionId; + + Option(int actionId) { + this.actionId = actionId; + } + + public int getActionId() { + return actionId; + } + } +} diff --git a/src/org/rev317/min/api/methods/Menu.java b/src/org/rev317/min/api/methods/Menu.java index 3441d11..a078d1c 100644 --- a/src/org/rev317/min/api/methods/Menu.java +++ b/src/org/rev317/min/api/methods/Menu.java @@ -1,269 +1,149 @@ -package org.rev317.min.api.methods; - -import org.parabot.core.Context; -import org.rev317.min.Loader; -import org.rev317.min.accessors.Client; -import org.rev317.min.api.wrappers.Character; -import org.rev317.min.api.wrappers.GroundItem; -import org.rev317.min.api.wrappers.Item; -import org.rev317.min.api.wrappers.SceneObject; - -import java.util.HashMap; - -/** - * @author Everel - */ -public class Menu { - public static final int ACTION_CLICK_BUTTON = 646; - public static final int ACTION_DROP_ITEM = 847; - public static final int ACTION_TAKE_ITEM = 234; - - private static HashMap constants; - - /** - * Interacts with a sceneobject - * - * @param object - * @param actionIndex - */ - public static void interact(SceneObject object, int actionIndex) { - int actionId = 502; - switch (actionIndex) { - case 0: - actionId = 502; - break; - case 1: - actionId = 900; - break; - case 2: - actionId = 113; - break; - case 3: - actionId = 872; - break; - case 4: - actionId = 1062; - break; - } - if (Game.hasAction4()) { - sendAction(actionId, object.getHash(), object.getLocalRegionX(), object.getLocalRegionY(), object.getId(), 0); - } else { - sendAction(actionId, object.getHash(), object.getLocalRegionX(), object.getLocalRegionY()); - } - } - - /** - * Interacts with a character - * - * @param character - * @param actionIndex - */ - public static void interact(Character character, int actionIndex) { - int actionId = 20; - switch (actionIndex) { - case 0: - actionId = 20; - break; - case 1: - actionId = 412; - break; - case 2: - actionId = 225; - break; - case 3: - actionId = 965; - break; - case 4: - actionId = 478; - break; - } - sendAction(actionId, character.getIndex(), 0, 0); - } - - /** - * Interacts with an item when it has the following menu Transform-1 Transform-5 Transform-10 etc.. - * - * @param item - * @param actionIndex - * @param interfaceParentId - */ - public static void transformItem(Item item, int actionIndex, - int interfaceParentId) { - int actionId = 632; - switch (actionIndex) { - case 0: - actionId = 632; - break; - case 1: - actionId = 78; - break; - case 2: - actionId = 867; - break; - case 3: - actionId = 431; - break; - case 4: - actionId = 53; - break; - } - sendAction(actionId, (int) item.getId() - 1, item.getSlot(), - interfaceParentId); - } - - /** - * Takes grounditem from the ground - * - * @param item - */ - public static void take(GroundItem item) { - sendAction(ACTION_TAKE_ITEM, item.getId(), item.getX(), item.getY()); - } - - /** - * Interacts with a ground item - * - * @param item - * @param action - */ - public static void interact(GroundItem item, int action) { - int actionId = 652; - switch (action) { - case 0: - actionId = 652; - break; - case 1: - actionId = 567; - break; - case 2: - actionId = 234; - break; - case 3: - actionId = 244; - break; - case 4: - actionId = 213; - break; - } - sendAction(actionId, item.getId(), item.getX(), item.getY()); - } - - public static void interact(Item item, int action){ - int actionId = 447; - switch (action){ - case 0: - actionId = 447; - break; - case 1: - actionId = 847; - break; - case 2: - actionId = 1125; - break; - case 3: - actionId = 1107; - break; - } - sendAction(actionId, item.getId() - 1, item.getSlot(), 3214); - } - - public static void interact(Item item, String action){ - int actionId = 447; - switch (action.toLowerCase()){ - case "use": - actionId = 447; - break; - case "drop": - actionId = 847; - break; - case "examine": - actionId = 1125; - break; - case "cancel": - actionId = 1107; - break; - case "wear": - actionId = 454; - break; - case "use with": - actionId = 870; - break; - } - sendAction(actionId, item.getId() - 1, item.getSlot(), 3214); - } - - /** - * Drops an item - * - * @param item - */ - public static void drop(Item item) { - sendAction(ACTION_DROP_ITEM, (int) item.getId() - 1, item.getSlot(), - Inventory.INVENTORY_INDEX); - } - - /** - * Clicks a button - * - * @param id - */ - public static void clickButton(int id) { - sendAction(ACTION_CLICK_BUTTON, 0, 0, id); - } - - /** - * Sends an action to the client - * - * @param action - * @param cmd1 - * @param cmd2 - * @param cmd3 - */ - public static void sendAction(int action, int cmd1, int cmd2, int cmd3) { - sendAction(action, cmd1, cmd2, cmd3, 1); - } - - /** - * Sends an action to the client - * - * @param action - * @param cmd1 - * @param cmd2 - * @param cmd3 - * @param index - */ - public static void sendAction(int action, int cmd1, int cmd2, int cmd3, int index) { - sendAction(action, cmd1, cmd2, cmd3, 0, index); - } - - /** - * Sends an action to the client - * - * @param action - * @param cmd1 - * @param cmd2 - * @param cmd3 - * @param cmd4 - * @param index - */ - public static void sendAction(int action, int cmd1, int cmd2, int cmd3, int cmd4, int index) { - if (constants == null) { - constants = Context.getInstance().getHookParser().getConstants(); - } - - Client client = Loader.getClient(); - - client.getMenuAction1()[index] = cmd1; - client.getMenuAction2()[index] = cmd2; - client.getMenuAction3()[index] = cmd3; - if (Game.hasAction4()) { - client.getMenuAction4()[index] = cmd4; - } - client.getMenuActionId()[index] = action; - - - client.doAction(index); - } - -} - +package org.rev317.min.api.methods; + +import org.parabot.core.Context; +import org.rev317.min.Loader; +import org.rev317.min.accessors.Client; +import org.rev317.min.api.wrappers.Character; +import org.rev317.min.api.wrappers.GroundItem; +import org.rev317.min.api.wrappers.Item; +import org.rev317.min.api.wrappers.SceneObject; + +import java.util.Properties; + +/** + * @author JKetelaar, Everel + */ +public class Menu { + + private static Properties settings = Context.getInstance().getServerProviderInfo().getSettings(); + + /** + * Interacts with a sceneobject + * + * @param object + * @param actionId + */ + public static void interact(SceneObject object, int actionId) { + if (Game.hasAction4()) { + sendAction(actionId, object.getHash(), object.getLocalRegionX(), object.getLocalRegionY(), object.getId(), 0); + } else { + sendAction(actionId, object.getHash(), object.getLocalRegionX(), object.getLocalRegionY()); + } + } + + /** + * Interacts with a character + * + * @param character + * @param actionId + */ + public static void interact(Character character, int actionId) { + sendAction(actionId, character.getIndex(), 0, 0); + } + + /** + * Interacts with an item when it has the following menu Transform-1 Transform-5 Transform-10 etc.. + * + * @param item + * @param actionId + * @param interfaceParentId + */ + public static void transformItem(Item item, int actionId, + int interfaceParentId) { + sendAction(actionId, item.getId() - 1, item.getSlot(), + interfaceParentId); + } + + /** + * Takes grounditem from the ground + * + * @param item + */ + public static void take(GroundItem item) { + sendAction(Integer.parseInt(settings.getProperty("button_take_item")), item.getId(), item.getX(), item.getY()); + } + + /** + * Interacts with a ground item + * + * @param item + * @param actionId + */ + public static void interact(GroundItem item, int actionId) { + sendAction(actionId, item.getId(), item.getX(), item.getY()); + } + + public static void interact(Item item, int actionId){ + sendAction(actionId, item.getId() - 1, item.getSlot(), 3214); + } + + /** + * Drops an item + * + * @param item + */ + public static void drop(Item item) { + sendAction(Integer.parseInt(settings.getProperty("button_drop_item")), item.getId() - 1, item.getSlot(), + Integer.parseInt(settings.getProperty("inventory_index"))); + } + + /** + * Clicks a button + * + * @param id + */ + public static void clickButton(int id) { + sendAction(Integer.parseInt(settings.getProperty("button_action_click")), 0, 0, id); + } + + /** + * Sends an action to the client + * + * @param action + * @param cmd1 + * @param cmd2 + * @param cmd3 + */ + public static void sendAction(int action, int cmd1, int cmd2, int cmd3) { + sendAction(action, cmd1, cmd2, cmd3, 1); + } + + /** + * Sends an action to the client + * + * @param action + * @param cmd1 + * @param cmd2 + * @param cmd3 + * @param index + */ + public static void sendAction(int action, int cmd1, int cmd2, int cmd3, int index) { + sendAction(action, cmd1, cmd2, cmd3, 0, index); + } + + /** + * Sends an action to the client + * + * @param action + * @param cmd1 + * @param cmd2 + * @param cmd3 + * @param cmd4 + * @param index + */ + public static void sendAction(int action, int cmd1, int cmd2, int cmd3, int cmd4, int index) { + + Client client = Loader.getClient(); + + client.getMenuAction1()[index] = cmd1; + client.getMenuAction2()[index] = cmd2; + client.getMenuAction3()[index] = cmd3; + if (Game.hasAction4()) { + client.getMenuAction4()[index] = cmd4; + } + client.getMenuActionId()[index] = action; + + + client.doAction(index); + } +} diff --git a/src/org/rev317/min/api/methods/Npcs.java b/src/org/rev317/min/api/methods/Npcs.java index 6a18e58..9640c73 100644 --- a/src/org/rev317/min/api/methods/Npcs.java +++ b/src/org/rev317/min/api/methods/Npcs.java @@ -1,5 +1,6 @@ package org.rev317.min.api.methods; +import org.parabot.core.Context; import org.parabot.environment.api.utils.Filter; import org.rev317.min.Loader; import org.rev317.min.accessors.Client; @@ -8,9 +9,10 @@ import org.rev317.min.api.wrappers.Npc; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; +import java.util.Properties; /** - * @author Everel + * @author Everel, JKetelaar */ public class Npcs { @@ -31,6 +33,7 @@ public class Npcs { } }; + private static Properties settings = Context.getInstance().getServerProviderInfo().getSettings(); /** * Gets all Npcs except local Npc @@ -41,7 +44,7 @@ public class Npcs { */ public static final Npc[] getNpcs(final Filter filter) { final Client client = Loader.getClient(); - ArrayList npcList = new ArrayList(); + ArrayList npcList = new ArrayList<>(); final org.rev317.min.accessors.Npc[] accNpcs = client.getNpcs(); for (int i = 0; i < accNpcs.length; i++) { if (accNpcs[i] == null) { @@ -141,4 +144,34 @@ public class Npcs { return getNearest(ALL_FILTER); } + public enum Option{ + FIRST(Integer.parseInt(settings.getProperty("menu_character_first_interaction"))), + ATTACK(Integer.parseInt(settings.getProperty("menu_character_first_interaction"))), + + SECOND(Integer.parseInt(settings.getProperty("menu_character_second_interaction"))), + TALK_TO(Integer.parseInt(settings.getProperty("menu_character_second_interaction"))), + INTERACT(Integer.parseInt(settings.getProperty("menu_character_second_interaction"))), + + THIRD(Integer.parseInt(settings.getProperty("menu_character_third_interaction"))), + TRADE(Integer.parseInt(settings.getProperty("menu_character_third_interaction"))), + BANK(Integer.parseInt(settings.getProperty("menu_character_third_interaction"))), + PICKPOCKET(Integer.parseInt(settings.getProperty("menu_character_third_interaction"))), + + FOURTH(Integer.parseInt(settings.getProperty("menu_character_fourth_interaction"))), + COLLECT(Integer.parseInt(settings.getProperty("menu_character_fourth_interaction"))), + + FIFTH(Integer.parseInt(settings.getProperty("menu_character_fifth_interaction"))), + + EXAMINE(Integer.parseInt(settings.getProperty("menu_character_examine"))); + + int actionId; + + Option(int actionId) { + this.actionId = actionId; + } + + public int getActionId() { + return actionId; + } + } } diff --git a/src/org/rev317/min/api/methods/Players.java b/src/org/rev317/min/api/methods/Players.java index 9bb5f55..01a015d 100644 --- a/src/org/rev317/min/api/methods/Players.java +++ b/src/org/rev317/min/api/methods/Players.java @@ -1,5 +1,6 @@ package org.rev317.min.api.methods; +import org.parabot.core.Context; import org.parabot.environment.api.utils.Filter; import org.rev317.min.Loader; import org.rev317.min.accessors.Client; @@ -8,9 +9,10 @@ import org.rev317.min.api.wrappers.Player; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; +import java.util.Properties; /** - * @author Everel + * @author Everel, JKetelaar */ public class Players { @@ -31,6 +33,7 @@ public class Players { } }; + private static Properties settings = Context.getInstance().getServerProviderInfo().getSettings(); /** * Gets all players except local player @@ -95,4 +98,29 @@ public class Players { return new Player(Loader.getClient().getMyPlayer(), -1); } + public enum Option{ + FIRST(Integer.parseInt(settings.getProperty("menu_character_first_interaction"))), + + SECOND(Integer.parseInt(settings.getProperty("menu_character_second_interaction"))), + + THIRD(Integer.parseInt(settings.getProperty("menu_character_third_interaction"))), + + FOURTH(Integer.parseInt(settings.getProperty("menu_character_fourth_interaction"))), + + FIFTH(Integer.parseInt(settings.getProperty("menu_character_fifth_interaction"))), + + TRADE(Integer.parseInt(settings.getProperty("menu_character_trade"))), + ATTACK(Integer.parseInt(settings.getProperty("menu_character_attack"))), + EXAMINE(Integer.parseInt(settings.getProperty("menu_character_examine"))); + + int actionId; + + Option(int actionId) { + this.actionId = actionId; + } + + public int getActionId() { + return actionId; + } + } } \ No newline at end of file diff --git a/src/org/rev317/min/api/methods/SceneObjects.java b/src/org/rev317/min/api/methods/SceneObjects.java index 1b2f25d..84e238c 100644 --- a/src/org/rev317/min/api/methods/SceneObjects.java +++ b/src/org/rev317/min/api/methods/SceneObjects.java @@ -1,18 +1,16 @@ package org.rev317.min.api.methods; +import org.parabot.core.Context; import org.parabot.environment.api.utils.Filter; import org.rev317.min.Loader; import org.rev317.min.accessors.Ground; import org.rev317.min.accessors.SceneObjectTile; import org.rev317.min.api.wrappers.SceneObject; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Comparator; +import java.util.*; /** - * @author Everel + * @author Everel, JKetelaar */ public class SceneObjects { @@ -33,6 +31,7 @@ public class SceneObjects { } }; + private static Properties settings = Context.getInstance().getServerProviderInfo().getSettings(); /** * Gets the most important scene objects in game which can be interacted with, filters out: 'walls, wall @@ -184,7 +183,7 @@ public class SceneObjects { for (final SceneObjectTile interactiveObject : interactiveObjects) { if (interactiveObject != null) { if (sceneObjects == null) { - sceneObjects = new ArrayList(); + sceneObjects = new ArrayList<>(); } sceneObjects.add(new SceneObject(interactiveObject, SceneObject.TYPE_INTERACTIVE)); } @@ -193,7 +192,7 @@ public class SceneObjects { SceneObjectTile sceneObjectTile = sceneTile.getWallObject(); if (sceneObjectTile != null) { if (sceneObjects == null) { - sceneObjects = new ArrayList(); + sceneObjects = new ArrayList<>(); } sceneObjects.add(new SceneObject(sceneObjectTile, SceneObject.TYPE_WALL)); } @@ -201,7 +200,7 @@ public class SceneObjects { sceneObjectTile = sceneTile.getWallDecoration(); if (sceneObjectTile != null) { if (sceneObjects == null) { - sceneObjects = new ArrayList(); + sceneObjects = new ArrayList<>(); } sceneObjects.add(new SceneObject(sceneObjectTile, SceneObject.TYPE_WALLDECORATION)); } @@ -209,7 +208,7 @@ public class SceneObjects { sceneObjectTile = sceneTile.getGroundDecoration(); if (sceneObjectTile != null) { if (sceneObjects == null) { - sceneObjects = new ArrayList(); + sceneObjects = new ArrayList<>(); } sceneObjects.add(new SceneObject(sceneObjectTile, SceneObject.TYPE_GROUNDDECORATION)); } @@ -217,12 +216,48 @@ public class SceneObjects { sceneObjectTile = sceneTile.getGroundItem(); if (sceneObjectTile != null) { if (sceneObjects == null) { - sceneObjects = new ArrayList(); + sceneObjects = new ArrayList<>(); } sceneObjects.add(new SceneObject(sceneObjectTile, SceneObject.TYPE_GROUNDITEM)); } return sceneObjects; } + public enum Option{ + FIRST(Integer.parseInt(settings.getProperty("menu_scene_object_first_interaction"))), + TALK_TO(Integer.parseInt(settings.getProperty("menu_scene_object_first_interaction"))), + CHOP_DOWN(Integer.parseInt(settings.getProperty("menu_scene_object_first_interaction"))), + CRAFT_RUNE(Integer.parseInt(settings.getProperty("menu_scene_object_first_interaction"))), + PRAY_AT(Integer.parseInt(settings.getProperty("menu_scene_object_first_interaction"))), + OPEN(Integer.parseInt(settings.getProperty("menu_scene_object_first_interaction"))), + DEPOSIT(Integer.parseInt(settings.getProperty("menu_scene_object_first_interaction"))), + USE(Integer.parseInt(settings.getProperty("menu_scene_object_first_interaction"))), + SEARCH(Integer.parseInt(settings.getProperty("menu_scene_object_first_interaction"))), + + SECOND(Integer.parseInt(settings.getProperty("menu_scene_object_second_interaction"))), + TELEPORT(Integer.parseInt(settings.getProperty("menu_scene_object_second_interaction"))), + STEAL_FROM(Integer.parseInt(settings.getProperty("menu_scene_object_second_interaction"))), + PRAY(Integer.parseInt(settings.getProperty("menu_scene_object_second_interaction"))), + USE_QUICKLY(Integer.parseInt(settings.getProperty("menu_scene_object_second_interaction"))), + + THIRD(Integer.parseInt(settings.getProperty("menu_scene_object_third_interaction"))), + + FOURTH(Integer.parseInt(settings.getProperty("menu_scene_object_fourth_interaction"))), + + FIFTH(Integer.parseInt(settings.getProperty("menu_scene_object_fifth_interaction"))), + + EXAMINE(Integer.parseInt(settings.getProperty("menu_scene_object_examine"))); + + int actionId; + + Option(int actionId) { + this.actionId = actionId; + } + + public int getActionId() { + return actionId; + } + } + } diff --git a/src/org/rev317/min/api/methods/Trading.java b/src/org/rev317/min/api/methods/Trading.java index c626700..2dc79d6 100644 --- a/src/org/rev317/min/api/methods/Trading.java +++ b/src/org/rev317/min/api/methods/Trading.java @@ -16,30 +16,7 @@ import java.util.Properties; */ public class Trading { - /* - TODO Get the player its offer and implement its features - */ - public static int OPPONENT_OFFER_INTERFACE_ID = 3416; - public static int MY_OFFER_INTERFACE_ID = 3415; - - public static int FIRST_TRADE_INTERFACE_ID = 3323; - public static int SECOND_TRADE_INTERFACE_ID = 3443; - - static { - Properties p = Context.getInstance().getServerProviderInfo().getProperties(); - if (p.containsKey("opponentInterface")) { - OPPONENT_OFFER_INTERFACE_ID = Integer.parseInt(p.getProperty("opponentInterface")); - } - if (p.containsKey("myInterface")) { - OPPONENT_OFFER_INTERFACE_ID = Integer.parseInt(p.getProperty("myInterface")); - } - if (p.containsKey("firstTradeInterface")) { - FIRST_TRADE_INTERFACE_ID = Integer.parseInt(p.getProperty("firstTradeInterface")); - } - if (p.containsKey("secondTradeInterface")) { - SECOND_TRADE_INTERFACE_ID = Integer.parseInt(p.getProperty("secondTradeInterface")); - } - } + private static Properties settings = Context.getInstance().getServerProviderInfo().getSettings(); /** * Checks if the first or the second screen is open, based on the given boolean @@ -47,7 +24,7 @@ public class Trading { * @return True if the requested screen is open */ public static boolean isOpen(boolean first){ - return Loader.getClient().getOpenInterfaceId() == (first ? FIRST_TRADE_INTERFACE_ID : SECOND_TRADE_INTERFACE_ID); + return Loader.getClient().getOpenInterfaceId() == (first ? Integer.parseInt(settings.getProperty("first_trade_interface_id")) : Integer.parseInt(settings.getProperty("second_trade_interface_id"))); } /** @@ -55,7 +32,7 @@ public class Trading { * @return True if open, false if not open */ public static boolean isOpen(){ - return Loader.getClient().getOpenInterfaceId() == FIRST_TRADE_INTERFACE_ID || Loader.getClient().getOpenInterfaceId() == SECOND_TRADE_INTERFACE_ID; + return Loader.getClient().getOpenInterfaceId() == Integer.parseInt(settings.getProperty("first_trade_interface_id")) || Loader.getClient().getOpenInterfaceId() == Integer.parseInt(settings.getProperty("second_trade_interface_id")); } /** @@ -74,8 +51,8 @@ public class Trading { public static Item[] getMyOffer() { ArrayList items = new ArrayList<>(); - int[] ids = getItemIDs(MY_OFFER_INTERFACE_ID); - int[] stacks = getItemStacks(MY_OFFER_INTERFACE_ID); + int[] ids = getItemIDs(Integer.parseInt(settings.getProperty("my_offer_interface_id"))); + int[] stacks = getItemStacks(Integer.parseInt(settings.getProperty("my_offer_interface_id"))); for (int i = 0; i < ids.length; i++) { if (ids[i] > 0) { items.add(new Item(ids[i], stacks[i], i)); @@ -86,8 +63,8 @@ public class Trading { public static Item[] getOpponentsOffer() { ArrayList items = new ArrayList<>(); - int[] ids = getItemIDs(OPPONENT_OFFER_INTERFACE_ID); - int[] stacks = getItemStacks(OPPONENT_OFFER_INTERFACE_ID); + int[] ids = getItemIDs(Integer.parseInt(settings.getProperty("opponent_offer_interface_id"))); + int[] stacks = getItemStacks(Integer.parseInt(settings.getProperty("opponent_offer_interface_id"))); for (int i = 0; i < ids.length; i++) { if (ids[i] > 0) { items.add(new Item(ids[i], stacks[i], i)); @@ -123,7 +100,7 @@ public class Trading { * TODO Figure a way to use packets instead * Accepts the offer and hits the button to continue to the second screen */ - private static void acceptOffer() { + public static void acceptOffer() { Time.sleep(500, 750); Mouse.getInstance().click(260, 190, true); Time.sleep(500, 750); @@ -133,7 +110,7 @@ public class Trading { * TODO Figure a way to use packets instead * Accepts the trade and hits the button to complete the trade */ - private static void acceptTrade() { + public static void acceptTrade() { Time.sleep(500, 750); Mouse.getInstance().click(230, 310, true); Time.sleep(500, 750); diff --git a/src/org/rev317/min/api/wrappers/Character.java b/src/org/rev317/min/api/wrappers/Character.java index e7c3af3..a3afcb3 100644 --- a/src/org/rev317/min/api/wrappers/Character.java +++ b/src/org/rev317/min/api/wrappers/Character.java @@ -5,7 +5,6 @@ import org.rev317.min.Loader; import org.rev317.min.api.interfaces.Locatable; import org.rev317.min.api.methods.Calculations; import org.rev317.min.api.methods.Game; -import org.rev317.min.api.methods.Menu; import org.rev317.min.api.methods.Players; /** @@ -75,15 +74,6 @@ public class Character implements Locatable { return (int) Calculations.distanceTo(getLocation()); } - /** - * Interacts with this character - * - * @param i - */ - public void interact(int i) { - Menu.interact(this, i); - } - /** * Gets current health * diff --git a/src/org/rev317/min/api/wrappers/GroundItem.java b/src/org/rev317/min/api/wrappers/GroundItem.java index 554d029..4197686 100644 --- a/src/org/rev317/min/api/wrappers/GroundItem.java +++ b/src/org/rev317/min/api/wrappers/GroundItem.java @@ -2,9 +2,7 @@ package org.rev317.min.api.wrappers; import org.parabot.core.reflect.RefClass; import org.rev317.min.api.interfaces.Locatable; -import org.rev317.min.api.methods.Calculations; -import org.rev317.min.api.methods.Game; -import org.rev317.min.api.methods.Menu; +import org.rev317.min.api.methods.*; /** * @author Everel @@ -50,10 +48,10 @@ public class GroundItem implements Locatable { /** * Interacts with this ground item * - * @param actionIndex + * @param option */ - public void interact(int actionIndex) { - Menu.interact(this, actionIndex); + public void interact(GroundItems.Option option) { + Menu.interact(this, option.getActionId()); } /** diff --git a/src/org/rev317/min/api/wrappers/Item.java b/src/org/rev317/min/api/wrappers/Item.java index a48cc14..17c623b 100644 --- a/src/org/rev317/min/api/wrappers/Item.java +++ b/src/org/rev317/min/api/wrappers/Item.java @@ -1,5 +1,6 @@ package org.rev317.min.api.wrappers; +import org.rev317.min.api.methods.Items; import org.rev317.min.api.methods.Menu; /** @@ -52,27 +53,19 @@ public class Item { /** * Interacts with this item * - * @param i + * @param option */ - public void interact(int i) { - Menu.interact(this, i); - } - - /** - * Interacts with this item - * @param s - */ - public void interact(String s){ - Menu.interact(this, s); + public void interact(Items.Option option) { + Menu.interact(this, option.getActionId()); } /** * - * @param actionIndex + * @param option * @param interfaceParentId */ - public void transform(int actionIndex, int interfaceParentId) { - Menu.transformItem(this, actionIndex, interfaceParentId); + public void transform(Items.Option option, int interfaceParentId) { + Menu.transformItem(this, option.getActionId(), interfaceParentId); } } diff --git a/src/org/rev317/min/api/wrappers/Npc.java b/src/org/rev317/min/api/wrappers/Npc.java index 93f907e..94bb337 100644 --- a/src/org/rev317/min/api/wrappers/Npc.java +++ b/src/org/rev317/min/api/wrappers/Npc.java @@ -1,6 +1,8 @@ package org.rev317.min.api.wrappers; import org.parabot.core.reflect.RefClass; +import org.rev317.min.api.methods.Menu; +import org.rev317.min.api.methods.Npcs; /** * @author Everel @@ -32,4 +34,13 @@ public final class Npc extends Character { return new RefClass(this.accessor); } + /** + * Interacts with this character + * + * @param option + */ + public void interact(Npcs.Option option) { + Menu.interact(this, option.getActionId()); + } + } diff --git a/src/org/rev317/min/api/wrappers/Player.java b/src/org/rev317/min/api/wrappers/Player.java index 0c1e505..277e1af 100644 --- a/src/org/rev317/min/api/wrappers/Player.java +++ b/src/org/rev317/min/api/wrappers/Player.java @@ -1,5 +1,8 @@ package org.rev317.min.api.wrappers; +import org.rev317.min.api.methods.Menu; +import org.rev317.min.api.methods.Players; + /** * @author Everel */ @@ -12,4 +15,13 @@ public class Player extends Character { public String getName(){ return getAccessor().getName(); } + + /** + * Interacts with this character + * + * @param option + */ + public void interact(Players.Option option) { + Menu.interact(this, option.getActionId()); + } } diff --git a/src/org/rev317/min/api/wrappers/SceneObject.java b/src/org/rev317/min/api/wrappers/SceneObject.java index 8d357eb..a985e6f 100644 --- a/src/org/rev317/min/api/wrappers/SceneObject.java +++ b/src/org/rev317/min/api/wrappers/SceneObject.java @@ -6,6 +6,7 @@ import org.rev317.min.api.interfaces.Locatable; import org.rev317.min.api.methods.Calculations; import org.rev317.min.api.methods.Game; import org.rev317.min.api.methods.Menu; +import org.rev317.min.api.methods.SceneObjects; /** * @author Everel @@ -91,10 +92,10 @@ public class SceneObject implements Locatable { /** * Interacts with this object * - * @param actionIndex + * @param option */ - public void interact(int actionIndex) { - Menu.interact(this, actionIndex); + public void interact(SceneObjects.Option option) { + Menu.interact(this, option.getActionId()); } /**