package scripts.randoms.PinBallRandomSolver; import java.util.ArrayList; import java.util.Iterator; import org.tribot.api.DynamicClicking; import org.tribot.api.General; import org.tribot.api.input.Mouse; import org.tribot.api2007.Camera; import org.tribot.api2007.Game; import org.tribot.api2007.Interfaces; import org.tribot.api2007.Objects; import org.tribot.api2007.Walking; import org.tribot.api2007.types.RSObject; import org.tribot.script.Script; import org.tribot.script.ScriptManifest; import scripts.randoms.RandomUtils; @ScriptManifest(authors = { "Bradsta" }, category = "Randoms", name = "PinballRandomSolver") public class PinBallRandomSolver extends Script { private static final int AIR_TOWER = 15001; private static final int EARTH_TOWER = 15003; private static final int FIRE_TOWER = 15005; private static final int NATURE_TOWER = 15007; private static final int WATER_TOWER = 15009; private static final int CAVE_EXIT = 15010; private static final int[] TOWER_TILES = { AIR_TOWER, EARTH_TOWER, FIRE_TOWER, NATURE_TOWER, WATER_TOWER }; private static int towerTarget; private boolean completedTask = false; private static ArrayList towerSettings = new ArrayList<>(); private static int ourScore = 0; private static final int constantVar = 512; private static final int[] TOWER_SETTINGS_BASE = { 512, 546, 580, 614, 648 }; private static final int[] SCORE_AMOUNT_INTERFACE = { 263, 1 }; @Override public void run() { setRandomSolverState(false); println("Starting Pinball Random Solver by Bradsta"); while (RandomUtils.isInterfaceTextAtIndexValid(263, 1, "Score: ")) { Mouse.setSpeed(General.random(170, 190)); if (!completedTask) { sleep(solvePinballRandom()); } else if (completedTask) { clickTower(CAVE_EXIT, 20, 45, "Exit"); sleep(3000); println("Pinball Random solved by Bradsta."); } } } private int solvePinballRandom() { if (towerTarget == 0) { getTowerSettings(); determineTarget(Game.getSetting(727)); towerSettings.clear(); } else if (towerTarget != 0) { clickTower(towerTarget, 20, 50, ""); RandomUtils.waitForAnimation(832); sleep(2500); towerTarget = 0; } return 500; } private void exitPinballRandom() { clickTower(CAVE_EXIT, 20, 45, "Exit"); sleep(3000); println("Pinball Random solved by Bradsta."); } private void clickTower(int objId, int distance, int clickHeight, String action) { System.out.println("Attempting to click Tower Target: " + objId); RSObject[] objectToInteract = Objects.findNearest(distance, objId); clickHeight = clickHeight + General.random(-10, 10); if (objectToInteract.length > 0) { if (objectToInteract[0].getID() == CAVE_EXIT) { Camera.turnToTile(objectToInteract[0].getPosition()); } if (objectToInteract[0].isOnScreen()) { objectToInteract[0].setClickHeight(clickHeight); DynamicClicking.clickRSTile(objectToInteract[0].getPosition(), action); } else if (!objectToInteract[0].isOnScreen()) { Walking.walkScreenPath(Walking .generateStraightScreenPath(objectToInteract[0] .getPosition())); } } } private void determineTarget(int gameSetting) { System.out.println("Our score: " + ourScore); System.out.println("Game Setting: " + gameSetting); Iterator itr = towerSettings.iterator(); while (itr.hasNext()) { if (towerSettings.contains(gameSetting)) { System.out.println("Target found.."); towerTarget = TOWER_TILES[towerSettings.indexOf(gameSetting)]; break; } else { System.out.println("Target not found.."); sleep(1500); break; } } System.out.println("Tower Target: " + towerTarget); } private void getTowerSettings() { switch (Interfaces.get(SCORE_AMOUNT_INTERFACE[0], SCORE_AMOUNT_INTERFACE[1]).getText()) { case "Score: 0": ourScore = 0; towerSettings.add(TOWER_SETTINGS_BASE[0] - constantVar); towerSettings.add(TOWER_SETTINGS_BASE[1] - constantVar); towerSettings.add(TOWER_SETTINGS_BASE[2] - constantVar); towerSettings.add(TOWER_SETTINGS_BASE[3] - constantVar); towerSettings.add(TOWER_SETTINGS_BASE[4] - constantVar); break; case "Score: 1": ourScore = 1; towerSettings.add(TOWER_SETTINGS_BASE[0]); towerSettings.add(TOWER_SETTINGS_BASE[1]); towerSettings.add(TOWER_SETTINGS_BASE[2]); towerSettings.add(TOWER_SETTINGS_BASE[3]); towerSettings.add(TOWER_SETTINGS_BASE[4]); break; case "Score: 2": ourScore = 2; towerSettings.add(TOWER_SETTINGS_BASE[0] + constantVar); towerSettings.add(TOWER_SETTINGS_BASE[1] + constantVar); towerSettings.add(TOWER_SETTINGS_BASE[2] + constantVar); towerSettings.add(TOWER_SETTINGS_BASE[3] + constantVar); towerSettings.add(TOWER_SETTINGS_BASE[4] + constantVar); break; case "Score: 3": ourScore = 3 - 1; towerSettings.add(TOWER_SETTINGS_BASE[0] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[1] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[2] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[3] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[4] + constantVar * ourScore); break; case "Score: 4": ourScore = 4 - 1; towerSettings.add(TOWER_SETTINGS_BASE[0] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[1] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[2] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[3] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[4] + constantVar * ourScore); break; case "Score: 5": ourScore = 5 - 1; towerSettings.add(TOWER_SETTINGS_BASE[0] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[1] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[2] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[3] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[4] + constantVar * ourScore); break; case "Score: 6": ourScore = 6 - 1; towerSettings.add(TOWER_SETTINGS_BASE[0] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[1] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[2] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[3] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[4] + constantVar * ourScore); break; case "Score: 7": ourScore = 7 - 1; towerSettings.add(TOWER_SETTINGS_BASE[0] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[1] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[2] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[3] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[4] + constantVar * ourScore); break; case "Score: 8": ourScore = 8 - 1; towerSettings.add(TOWER_SETTINGS_BASE[0] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[1] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[2] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[3] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[4] + constantVar * ourScore); break; case "Score: 9": ourScore = 9 - 1; towerSettings.add(TOWER_SETTINGS_BASE[0] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[1] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[2] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[3] + constantVar * ourScore); towerSettings.add(TOWER_SETTINGS_BASE[4] + constantVar * ourScore); break; case "Score: 10": ourScore = 10; completedTask = true; break; } System.out.println(towerSettings); } }