From 56fda7de1eac401658d84680b8814e6c535d684d Mon Sep 17 00:00:00 2001 From: Alexander Bielen Date: Sun, 4 Nov 2018 19:32:01 +0100 Subject: [PATCH 1/3] [FEATURE]Added OSWar pick item random event --- src/main/java/org/parabot/randoms/Core.java | 4 ++ .../org/parabot/randoms/oswar/ItemPicker.java | 66 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 src/main/java/org/parabot/randoms/oswar/ItemPicker.java diff --git a/src/main/java/org/parabot/randoms/Core.java b/src/main/java/org/parabot/randoms/Core.java index 1d45bd9..d51a62f 100755 --- a/src/main/java/org/parabot/randoms/Core.java +++ b/src/main/java/org/parabot/randoms/Core.java @@ -7,6 +7,7 @@ import org.parabot.randoms.elkoy.AntiDetector; import org.parabot.randoms.elkoy.LogoutDisabler; import org.parabot.randoms.elkoy.MouseOnScreen; import org.parabot.randoms.elkoy.QuestionSolver; +import org.parabot.randoms.oswar.ItemPicker; import org.parabot.randoms.pkhonor.*; import org.parabot.randoms.runewild.MacAddressFix; import org.parabot.randoms.soulplay.RandomUUID; @@ -44,6 +45,9 @@ public class Core { // SoulPlay randoms.add(new RandomUUID()); + //OSWar + randoms.add(new ItemPicker()); + StringBuilder sb = new StringBuilder(); sb.append("Possible randoms:\n"); int randomCount = 0; diff --git a/src/main/java/org/parabot/randoms/oswar/ItemPicker.java b/src/main/java/org/parabot/randoms/oswar/ItemPicker.java new file mode 100644 index 0000000..1717aec --- /dev/null +++ b/src/main/java/org/parabot/randoms/oswar/ItemPicker.java @@ -0,0 +1,66 @@ +package org.parabot.randoms.oswar; + +import org.json.simple.JSONObject; +import org.parabot.core.Core; +import org.parabot.environment.api.utils.Time; +import org.parabot.environment.api.utils.WebUtil; +import org.parabot.environment.randoms.Random; +import org.parabot.environment.randoms.RandomType; +import org.rev317.min.api.methods.Game; +import org.rev317.min.api.methods.Interfaces; +import org.rev317.min.api.methods.Menu; + + +/** + * @author AlexanderBielen + */ +public class ItemPicker implements Random { + private final int INTERFACE_ID = 33300; + private final String URL = "http://bdn.parabot.org/api/v2/data/items/"; + + @Override + public boolean activate() { + return Game.isLoggedIn() && Interfaces.getOpenInterfaceId() == INTERFACE_ID; + } + + @Override + public void execute() { + Core.verbose("Item picker random event activated"); + Time.sleep(2000); + + String message = Interfaces.getInterface(INTERFACE_ID + 2).getMessage(); + String itemName = message.substring(message.indexOf("'") + 1, message.indexOf("'", message.indexOf("'") + 1)); + + for(int i = INTERFACE_ID + 11; i <= INTERFACE_ID + 17; i += 3) { + try { + int id = Interfaces.getInterface(i).getItems()[0]; + + String response = WebUtil.getContents(URL.concat("" + id)); + JSONObject json = (JSONObject) WebUtil.getJsonParser().parse(response); + JSONObject result = (JSONObject) WebUtil.getJsonParser().parse(json.get("result").toString()); + + if(result.get("name").equals(itemName)) { + Core.verbose("Attempting solution"); + Menu.sendAction(315,0,0,i+1,2); + break; + } + } catch(Exception ignore) {} + } + Time.sleep(1000); + } + + @Override + public String getName() { + return "Item picker"; + } + + @Override + public String getServer() { + return "OSWar"; + } + + @Override + public RandomType getRandomType() { + return RandomType.SCRIPT; + } +} \ No newline at end of file From cd32d878a443d046066dfdebb3ee4d6092b8a8eb Mon Sep 17 00:00:00 2001 From: Alexander Bielen Date: Tue, 6 Nov 2018 12:14:08 +0100 Subject: [PATCH 2/3] [TASK]Improved solving and implemented usage of Items class --- .../org/parabot/randoms/oswar/ItemPicker.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/parabot/randoms/oswar/ItemPicker.java b/src/main/java/org/parabot/randoms/oswar/ItemPicker.java index 1717aec..ecfb5a7 100644 --- a/src/main/java/org/parabot/randoms/oswar/ItemPicker.java +++ b/src/main/java/org/parabot/randoms/oswar/ItemPicker.java @@ -1,13 +1,12 @@ package org.parabot.randoms.oswar; -import org.json.simple.JSONObject; import org.parabot.core.Core; import org.parabot.environment.api.utils.Time; -import org.parabot.environment.api.utils.WebUtil; import org.parabot.environment.randoms.Random; import org.parabot.environment.randoms.RandomType; import org.rev317.min.api.methods.Game; import org.rev317.min.api.methods.Interfaces; +import org.rev317.min.api.methods.Items; import org.rev317.min.api.methods.Menu; @@ -16,11 +15,12 @@ import org.rev317.min.api.methods.Menu; */ public class ItemPicker implements Random { private final int INTERFACE_ID = 33300; - private final String URL = "http://bdn.parabot.org/api/v2/data/items/"; @Override public boolean activate() { - return Game.isLoggedIn() && Interfaces.getOpenInterfaceId() == INTERFACE_ID; + return Game.isLoggedIn() + && Interfaces.getOpenInterfaceId() == INTERFACE_ID + && !Interfaces.getInterface(INTERFACE_ID + 3).getMessage().contains("0:00"); } @Override @@ -31,16 +31,15 @@ public class ItemPicker implements Random { String message = Interfaces.getInterface(INTERFACE_ID + 2).getMessage(); String itemName = message.substring(message.indexOf("'") + 1, message.indexOf("'", message.indexOf("'") + 1)); + Core.verbose("Have to select item: "+itemName); + for(int i = INTERFACE_ID + 11; i <= INTERFACE_ID + 17; i += 3) { try { int id = Interfaces.getInterface(i).getItems()[0]; + String name = Items.getName(id); - String response = WebUtil.getContents(URL.concat("" + id)); - JSONObject json = (JSONObject) WebUtil.getJsonParser().parse(response); - JSONObject result = (JSONObject) WebUtil.getJsonParser().parse(json.get("result").toString()); - - if(result.get("name").equals(itemName)) { - Core.verbose("Attempting solution"); + if(name != null && name.toLowerCase().startsWith(itemName.toLowerCase())) { + Core.verbose("Attempting solution: "+name); Menu.sendAction(315,0,0,i+1,2); break; } @@ -63,4 +62,4 @@ public class ItemPicker implements Random { public RandomType getRandomType() { return RandomType.SCRIPT; } -} \ No newline at end of file +} From 8f4e48dde4a8f9aea9464936e69b7b0770d7cab0 Mon Sep 17 00:00:00 2001 From: Alexander Bielen Date: Tue, 6 Nov 2018 17:54:47 +0100 Subject: [PATCH 3/3] [TASK]Added null check to activate condition --- src/main/java/org/parabot/randoms/oswar/ItemPicker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/parabot/randoms/oswar/ItemPicker.java b/src/main/java/org/parabot/randoms/oswar/ItemPicker.java index ecfb5a7..dc6d2bd 100644 --- a/src/main/java/org/parabot/randoms/oswar/ItemPicker.java +++ b/src/main/java/org/parabot/randoms/oswar/ItemPicker.java @@ -9,7 +9,6 @@ import org.rev317.min.api.methods.Interfaces; import org.rev317.min.api.methods.Items; import org.rev317.min.api.methods.Menu; - /** * @author AlexanderBielen */ @@ -20,6 +19,7 @@ public class ItemPicker implements Random { public boolean activate() { return Game.isLoggedIn() && Interfaces.getOpenInterfaceId() == INTERFACE_ID + && Interfaces.getInterface(INTERFACE_ID + 3).getMessage() != null && !Interfaces.getInterface(INTERFACE_ID + 3).getMessage().contains("0:00"); }