diff --git a/src/main/java/org/parabot/randoms/Core.java b/src/main/java/org/parabot/randoms/Core.java index 39ecc74..0e3c5c0 100755 --- a/src/main/java/org/parabot/randoms/Core.java +++ b/src/main/java/org/parabot/randoms/Core.java @@ -3,6 +3,10 @@ package org.parabot.randoms; import org.parabot.core.Context; import org.parabot.environment.randoms.Random; import org.parabot.randoms.dreamscape.SerialBanAvoider; +import org.parabot.randoms.elkoy.AntiDetector; +import org.parabot.randoms.elkoy.LogoutDisabler; +import org.parabot.randoms.elkoy.QuestionSolver; +import org.parabot.randoms.elkoy.MouseOnScreen; import org.parabot.randoms.pkhonor.*; import java.util.ArrayList; @@ -20,11 +24,16 @@ public class Core { randoms.add(new SandwichLady()); randoms.add(new MysteriousOldMan()); randoms.add(new BobsIsland()); - randoms.add(new PacketBlockInterceptor()); // Dreamscape randoms.add(new SerialBanAvoider()); + // Elkoy + //randoms.add(new QuestionSolver()); + randoms.add(new LogoutDisabler()); + randoms.add(new MouseOnScreen()); + randoms.add(new AntiDetector()); + org.parabot.core.Core.verbose("Possible randoms:"); for (Random random : randoms) { if (random.getServer().equalsIgnoreCase(server)) { diff --git a/src/main/java/org/parabot/randoms/elkoy/AntiDetector.java b/src/main/java/org/parabot/randoms/elkoy/AntiDetector.java new file mode 100644 index 0000000..b1d76ab --- /dev/null +++ b/src/main/java/org/parabot/randoms/elkoy/AntiDetector.java @@ -0,0 +1,83 @@ +package org.parabot.randoms.elkoy; + +import org.parabot.core.Context; +import org.parabot.core.reflect.RefClass; +import org.parabot.core.reflect.RefField; +import org.parabot.environment.api.utils.Time; +import org.parabot.environment.randoms.Random; +import org.parabot.environment.randoms.RandomType; + +/** + * @author JKetelaar, Empathy, Ethan + */ +public class AntiDetector implements Random, Runnable { + + private boolean activated; + + private final String[] toBeNull = {"P", "Q", "N"}; + private final String className = "cb"; + + @Override + public boolean activate() { + return !activated; + } + + @Override + public void execute() { + activated = true; + + new Thread(this).start(); + } + + @Override + public String getName() { + return "Anti Bot Detector"; + } + + @Override + public String getServer() { + return "Elkoy"; + } + + @Override + public RandomType getRandomType() { + return RandomType.ON_SERVER_START; + } + + @Override + public void run() { + while (activated) { + try { + final RefClass refClass = new RefClass(Context.getInstance().getASMClassLoader().loadClass(className)); + + for (RefField refField : refClass.getFields()) { + if (refField != null) { + if (refClass.isStatic()) { + if (refField.getType().getName().equalsIgnoreCase("boolean")) { + refField.set(false); + } else if (refField.getType().getName().equalsIgnoreCase("int")) { + int i = (int) refField.asObject(); + if (i >= 0) { + refField.set(-1); + } + } else if (refField.getType().getName().equalsIgnoreCase("string")) { + String str = (String) refField.asObject(); + if (str.length() > 0) { + refField.set(null); + } + } + } + } + } + + for (String s : toBeNull) { + refClass.getField(s).set(null); + } + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + + Time.sleep(25); + } + } +} diff --git a/src/main/java/org/parabot/randoms/elkoy/LogoutDisabler.java b/src/main/java/org/parabot/randoms/elkoy/LogoutDisabler.java new file mode 100644 index 0000000..8fb3681 --- /dev/null +++ b/src/main/java/org/parabot/randoms/elkoy/LogoutDisabler.java @@ -0,0 +1,49 @@ +package org.parabot.randoms.elkoy; + +import org.parabot.environment.api.utils.Time; +import org.parabot.environment.input.Keyboard; +import org.parabot.environment.randoms.RandomType; +import org.rev317.min.api.methods.Game; + +import java.awt.event.KeyEvent; +import java.util.Random; + +/** + * @author EmmaStone + */ +public class LogoutDisabler implements org.parabot.environment.randoms.Random { + + private final int[] KEYS = {KeyEvent.VK_UP, KeyEvent.VK_DOWN, KeyEvent.VK_LEFT, KeyEvent.VK_RIGHT}; + private final Random random = new Random(); + private long ms = System.currentTimeMillis(); + + @Override + public boolean activate() { + return Game.isLoggedIn() && (System.currentTimeMillis() - ms) / 1000 > random.nextInt((50 - 30) + 1) + 30; + } + + @Override + public void execute() { + int keyCode = KEYS[random.nextInt(KEYS.length)]; + Keyboard.getInstance().pressKey(keyCode); + Time.sleep(random.nextInt((20 - 5) + 1) + 5); + Keyboard.getInstance().releaseKey(keyCode); + + ms = System.currentTimeMillis(); + } + + @Override + public String getName() { + return "Logout Disabler"; + } + + @Override + public String getServer() { + return "Elkoy"; + } + + @Override + public RandomType getRandomType() { + return RandomType.SCRIPT; + } +} diff --git a/src/main/java/org/parabot/randoms/elkoy/MouseOnScreen.java b/src/main/java/org/parabot/randoms/elkoy/MouseOnScreen.java new file mode 100644 index 0000000..e3c457b --- /dev/null +++ b/src/main/java/org/parabot/randoms/elkoy/MouseOnScreen.java @@ -0,0 +1,47 @@ +package org.parabot.randoms.elkoy; + +import org.parabot.core.Context; +import org.parabot.environment.input.Mouse; +import org.parabot.environment.randoms.Random; +import org.parabot.environment.randoms.RandomType; + +import java.awt.*; + +/** + * @author JKetelaar, Fryslan + */ +public class MouseOnScreen implements Random { + + @Override + public boolean activate() { + return !onScreen(); + } + + @Override + public void execute() { + int x = org.parabot.environment.api.utils.Random.between(100, Context.getInstance().getApplet().getWidth()); + int y = org.parabot.environment.api.utils.Random.between(100, Context.getInstance().getApplet().getHeight()); + + Mouse.getInstance().moveMouse(x, y); + } + + @Override + public String getName() { + return "Mouse on screen"; + } + + @Override + public String getServer() { + return "Elkoy"; + } + + @Override + public RandomType getRandomType() { + return RandomType.SCRIPT; + } + + private boolean onScreen() { + Point loc = Mouse.getInstance().getPoint(); + return Context.getInstance().getApplet().contains(loc); + } +} diff --git a/src/main/java/org/parabot/randoms/elkoy/QuestionSolver.java b/src/main/java/org/parabot/randoms/elkoy/QuestionSolver.java new file mode 100644 index 0000000..d1eca82 --- /dev/null +++ b/src/main/java/org/parabot/randoms/elkoy/QuestionSolver.java @@ -0,0 +1,101 @@ +package org.parabot.randoms.elkoy; + +import org.json.simple.JSONObject; +import org.json.simple.parser.ParseException; +import org.parabot.api.io.WebUtil; +import org.parabot.core.Context; +import org.parabot.core.ui.Logger; +import org.parabot.environment.api.utils.Time; +import org.parabot.environment.input.Keyboard; +import org.parabot.environment.randoms.Random; +import org.parabot.environment.randoms.RandomType; +import org.parabot.environment.scripts.Script; +import org.parabot.environment.scripts.framework.SleepCondition; +import org.rev317.min.Loader; +import org.rev317.min.api.methods.Game; +import org.rev317.min.api.methods.Interfaces; +import org.rev317.min.api.methods.Menu; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URLEncoder; + +/** + * @author EmmaStone + */ +public class QuestionSolver implements Random { + + @Override + public boolean activate() { + return Game.isLoggedIn() && Interfaces.getBackDialogId() == 368; + } + + @Override + public void execute() { + String message = Loader.getClient().getInterfaceCache()[371].getMessage(); + if (!message.contains("otherwise you will be teleported")) { + message = message.replace("@dre@ ", ""); + + Logger.addMessage("Contacting server to get an answer", false); + String answer = getAnswer(message); + + if (answer == null) { + Logger.addMessage("Could not solve the question, please report this question (and the possible answer) on the forums", true); + Logger.addMessage("Question: " + message, true); + forceRelog(); + Logger.addMessage("Logged account out for security measures", true); + Context.getInstance().getRunningScript().setState(Script.STATE_STOPPED); + } else { + Logger.addMessage("Answer found, now trying: " + answer, false); + Menu.sendAction(679, -1, -1, 373); + Time.sleep(1000); + Keyboard.getInstance().sendKeys(answer); + } + } + Time.sleep(1000); + } + + private String getAnswer(String question) { + try { + JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(WebUtil.getContents("http://bdn.parabot.org/api/v2/data/questions/get", + "server=ikov&question=" + URLEncoder.encode(question, "UTF-8"))); //TODO Implement BDN V3 + JSONObject result; + if ((result = (JSONObject) object.get("result")) != null) { + Object answer; + if ((answer = result.get("answer")) != null) { + return (String) answer; + } + } + } catch (MalformedURLException | UnsupportedEncodingException | ParseException e) { + e.printStackTrace(); + } + + return null; + } + + private void forceRelog() { + Logger.addMessage("Logging out...", false); + Loader.getClient().dropClient(); + Time.sleep(new SleepCondition() { + @Override + public boolean isValid() { + return !Game.isLoggedIn(); + } + }, 5000); + } + + @Override + public String getName() { + return "Question Solver"; + } + + @Override + public String getServer() { + return "Elkoy"; + } + + @Override + public RandomType getRandomType() { + return RandomType.SCRIPT; + } +} diff --git a/src/main/java/org/parabot/randoms/pkhonor/BanFile.java b/src/main/java/org/parabot/randoms/pkhonor/BanFile.java index a080496..56470af 100644 --- a/src/main/java/org/parabot/randoms/pkhonor/BanFile.java +++ b/src/main/java/org/parabot/randoms/pkhonor/BanFile.java @@ -20,6 +20,7 @@ public class BanFile implements Random { return true; } } + return false; } @@ -30,7 +31,6 @@ public class BanFile implements Random { banfile.delete(); } } - } @Override @@ -55,6 +55,7 @@ public class BanFile implements Random { return true; } } + return false; } } diff --git a/src/main/java/org/parabot/randoms/pkhonor/BobsIsland.java b/src/main/java/org/parabot/randoms/pkhonor/BobsIsland.java index db10d44..5fd4c90 100755 --- a/src/main/java/org/parabot/randoms/pkhonor/BobsIsland.java +++ b/src/main/java/org/parabot/randoms/pkhonor/BobsIsland.java @@ -16,9 +16,6 @@ public class BobsIsland implements Random { private static final Tile center = new Tile(2525, 4777); private static final int portalId = 8987; - public BobsIsland() { - } - @Override public boolean activate() { return center.distanceTo() < 25; diff --git a/src/main/java/org/parabot/randoms/pkhonor/Jail.java b/src/main/java/org/parabot/randoms/pkhonor/Jail.java index 1da2501..ca7c8a1 100755 --- a/src/main/java/org/parabot/randoms/pkhonor/Jail.java +++ b/src/main/java/org/parabot/randoms/pkhonor/Jail.java @@ -27,6 +27,7 @@ public class Jail implements Random { this.jailer = getJailer(); return true; } + return false; } catch (Exception e) { return false; @@ -91,6 +92,7 @@ public class Jail implements Random { return jailer; } } + return null; } @@ -100,6 +102,7 @@ public class Jail implements Random { return rock; } } + return null; } diff --git a/src/main/java/org/parabot/randoms/pkhonor/MysteriousOldMan.java b/src/main/java/org/parabot/randoms/pkhonor/MysteriousOldMan.java index 8ea0e87..2f4445a 100755 --- a/src/main/java/org/parabot/randoms/pkhonor/MysteriousOldMan.java +++ b/src/main/java/org/parabot/randoms/pkhonor/MysteriousOldMan.java @@ -41,6 +41,7 @@ public class MysteriousOldMan implements Random { return man; } } + return null; } diff --git a/src/main/java/org/parabot/randoms/pkhonor/PacketBlockInterceptor.java b/src/main/java/org/parabot/randoms/pkhonor/PacketBlockInterceptor.java deleted file mode 100644 index 9fb690e..0000000 --- a/src/main/java/org/parabot/randoms/pkhonor/PacketBlockInterceptor.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.parabot.randoms.pkhonor; - -import org.parabot.core.reflect.RefClass; -import org.parabot.core.reflect.RefField; -import org.parabot.environment.randoms.Random; -import org.parabot.environment.randoms.RandomType; -import org.rev317.min.Loader; - -/** - * @author EmmaStone - */ -public class PacketBlockInterceptor implements Random { - - @Override - public boolean activate() { - return !getField(); - } - - @Override - public void execute() { - setField(); - } - - private boolean getField() { - return new RefClass(Loader.getClient()).getField("PG").asBoolean(); - } - - private void setField() { - RefField refField = new RefClass(Loader.getClient()).getField("PG"); - refField.set(true); - } - - @Override - public String getName() { - return "Packet Block Interceptor"; - } - - @Override - public String getServer() { - return "pkhonor"; - } - - @Override - public RandomType getRandomType() { - return RandomType.SCRIPT; - } -} diff --git a/src/main/java/org/parabot/randoms/pkhonor/SandwichLady.java b/src/main/java/org/parabot/randoms/pkhonor/SandwichLady.java index 8fb676e..009371f 100755 --- a/src/main/java/org/parabot/randoms/pkhonor/SandwichLady.java +++ b/src/main/java/org/parabot/randoms/pkhonor/SandwichLady.java @@ -41,6 +41,7 @@ public class SandwichLady implements Random { return lady; } } + return null; } diff --git a/src/main/java/org/parabot/randoms/pkhonor/TriangleSandwich.java b/src/main/java/org/parabot/randoms/pkhonor/TriangleSandwich.java index 544d6b4..1a25d03 100755 --- a/src/main/java/org/parabot/randoms/pkhonor/TriangleSandwich.java +++ b/src/main/java/org/parabot/randoms/pkhonor/TriangleSandwich.java @@ -17,23 +17,28 @@ public class TriangleSandwich implements Random { @Override public boolean activate() { - for (Item i : Inventory.getItems(id)) { - if (i != null) { - this.item = i; - return true; + if (Inventory.getItems() != null) { + for (Item i : Inventory.getItems(id)) { + if (i != null) { + this.item = i; + return true; + + } } } + return false; } @Override public void execute() { if (this.item != null) { + final int sandwich = Inventory.getCount(id); item.drop(); Time.sleep(new SleepCondition() { @Override public boolean isValid() { - return Inventory.getCount(id) == 0; + return Inventory.getCount(id) != sandwich; } }, 1500); }