Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.osbot.rs07.api.Objects;
- import org.osbot.rs07.listener.MessageListener;
- import org.osbot.rs07.script.Script;
- import org.osbot.rs07.script.ScriptManifest;
- import org.osbot.rs07.api.map.Area;
- import org.osbot.rs07.api.model.GroundItem;
- import org.osbot.rs07.api.model.Player;
- import org.osbot.rs07.api.GroundItems;
- import org.osbot.rs07.api.Walking;
- import org.osbot.rs07.api.Settings;
- import org.osbot.rs07.api.Bank;
- import org.osbot.rs07.api.model.Item;
- import org.osbot.rs07.api.Inventory;
- import org.osbot.rs07.api.Players;
- import org.osbot.rs07.api.model.NPC;
- import org.osbot.rs07.api.ui.RS2Widget;
- import org.osbot.rs07.api.Dialogues;
- import org.osbot.rs07.api.Worlds;
- import org.osbot.rs07.api.Widgets;
- import java.awt.*;
- import java.awt.event.ItemListener;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.io.IOException;
- import java.net.URL;
- import java.sql.Date;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.time.Duration;
- import java.time.Instant;
- import javax.imageio.ImageIO;
- @ScriptManifest(name = "OS BoneBot", author = "Beefsteak", version = 1.0, info = "benis", logo = "")
- public class OSBoneBot extends Script implements MessageListener, MouseListener {
- private static long startTime = System.currentTimeMillis();
- private String currentState;
- private final Image bg = getImage("https://i.imgur.com/AelFPby.png");
- private final Image eye = getImage("https://i.imgur.com/gAdhzaC.png");
- private final Image coins = getImage("https://i.imgur.com/LL2qDvN.png");
- private Boolean hidePaint = false;
- private boolean shouldHop = false;
- private boolean runGE = false;
- private boolean hasSorted = false;
- private boolean inCombat = false;
- private Rectangle rect = new Rectangle(496, 346, 16, 16);
- private Rectangle rect2 = new Rectangle(535, 469, 30, 33);
- private Rectangle closePaint = rect;
- private Rectangle openPaint = rect;
- private Rectangle geButton = rect2;
- private Point p;
- private int bankRuns;
- private int bonePrice;
- private int boneNum;
- private Instant start;
- Area nonwild = new Area(2900, 3521, 3423, 3041);
- Area escape1 = new Area(3131, 3615, 3137, 3612);
- Area wildy = new Area(2945, 3522, 3339, 3894);
- Area lootArea = new Area(3156, 3603, 3181, 3585);
- Area bankArea = new Area(3132, 3630, 3136, 3627);
- Area refArea = new Area(3131, 3637, 3127, 3635);
- Area GE = new Area(3161, 3487, 3168, 3485);
- Area edge = new Area(3136, 3520, 3141, 3521);
- GroundItem loot = groundItems.closest("Bones");
- Area near = myPlayer().getArea(3);
- Object pool = objects.closest("Pool of Refreshment");
- Object ditch = objects.closest("Wilderness Ditch");
- public String format(long time) {
- StringBuilder string = new StringBuilder();
- long totalSeconds = time / 1000L;
- long totalMinutes = totalSeconds / 60L;
- long totalHours = totalMinutes / 60L;
- int seconds = (int) totalSeconds % 60;
- int minutes = (int) totalMinutes % 60;
- int hours = (int) totalHours % 24;
- if (hours > 0) {
- string.append((new StringBuilder(String.valueOf(hours))).append(
- ":").toString());
- }
- if (minutes > 0) {
- string.append((new StringBuilder(String.valueOf(minutes))).append(
- ":").toString());
- }
- string.append((new StringBuilder(String.valueOf(seconds))).append(":")
- .toString());
- return string.toString();
- }
- private Image getImage(String url){
- try {
- return ImageIO.read(new URL(url));
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
- private RS2Widget getMyWidget() {
- //Replace ids with your ids
- RS2Widget storedWidget = getWidgets().getWidgets().getWidgetContainingText("Enter Wilderness");
- return storedWidget;
- }
- private boolean isMyWidgetWorking() {
- return getMyWidget() != null && getMyWidget().isVisible();
- }
- @Override
- public void mouseClicked(MouseEvent e) {
- p = e.getPoint();
- if (closePaint.contains(p) && !hidePaint) {
- hidePaint = true;
- } else if (openPaint.contains(p) && hidePaint) {
- hidePaint = false;
- }
- if (geButton.contains(p)){
- runGE = true;
- log("runGE = true");
- }
- }
- @Override
- public void mousePressed(MouseEvent e) {
- }
- @Override
- public void mouseReleased(MouseEvent e) {
- }
- @Override
- public void mouseEntered(MouseEvent e) {
- }
- @Override
- public void mouseExited(MouseEvent e) {
- }
- // ----------------------------------------------------------------------------------
- @Override
- public void onStart() {
- log("Welcome to BoneBot");
- startTime = System.currentTimeMillis();
- }
- private enum State {
- LOOT, WILDY, WALKING, BANKING,RUNAWAY1,
- WORLDHOP, GE, REFILL, IDLE
- }
- private State getState() {
- if(bankArea.contains(myPlayer()) && settings.getRunEnergy()< 25)
- if(!getInventory().isFull())
- return State.REFILL;
- if(lootArea.contains(myPlayer()) && !getInventory().isFull())
- if(inCombat == false && shouldHop == false && runGE == false)
- return State.LOOT;
- if(getInventory().isFull() && runGE == false)
- return State.BANKING;
- if(shouldHop == true)
- return State.WORLDHOP;
- if(runGE == true)
- return State.GE;
- if(nonwild.contains(myPlayer()))
- return State.WILDY;
- if(!lootArea.contains(myPlayer()) && wildy.contains(myPlayer()))
- if(!getInventory().isFull() && runGE == false)
- return State.WALKING;
- if(myPlayer().isUnderAttack() && myPlayer().isHitBarVisible())
- return State.RUNAWAY1;
- return State.IDLE;
- }
- @Override
- public int onLoop() throws InterruptedException {
- if (isMyWidgetWorking()) {
- log(getMyWidget().getMessage());
- getMyWidget().interact();
- } else {
- log("(Error) - Can't use any action for getMyWidget(). Returning as null or invisible.");
- }
- // return 300;
- // bonePrice = LivePrices.get("Bones");
- // NPC banker = npcs.closest(w -> w != null && w.getName().equals("Banker") && w.hasAction("Bank"));
- // ----------------------------------------------------------- //
- switch (getState()) {
- case BANKING:
- currentState = "Banking";
- if (!bankArea.contains(myPlayer())) {
- getWalking().walk(bankArea.getRandomPosition());
- sleep(random(1000,1500));
- }
- // if(bankArea.contains(myPlayer()) && banker.isVisible()){
- // banker.interact("Bank");
- sleep(random(600, 1000));
- bank.depositAll();
- sleep(random(1000,1500));
- bank.close();
- bankRuns++;
- if(settings.getRunEnergy() < 25){
- getWalking().walk(refArea.getRandomPosition());
- sleep(random(500,1000));
- objects.closest("Pool of Refreshment").interact();
- sleep(500);
- objects.closest("Pool of Refreshment").interact();
- sleep(random(2000,3000));
- }
- break;
- }
- switch (getState()) {
- case LOOT:
- currentState = "Looting";
- // GroundItem loot = groundItems.closest("Bones");
- if(lootArea.contains(loot) && loot != null){
- if(myPlayer().getArea(12).contains(loot)){
- loot.interact();
- sleep(random(1000,1850));
- }
- if(!myPlayer().getArea(12).contains(loot)){
- getWalking().walk(lootArea.getCentralPosition());
- sleep(random(1000,2000));
- }
- }
- if(!lootArea.contains(loot) && !myPlayer().isMoving()){
- shouldHop = true;
- log("shouldHop is true.");
- }
- break;
- }
- switch (getState()) {
- case WILDY:
- currentState = "Walking to Wilderness";
- if(!near.contains(objects.closest("Wilderness Ditch"))){
- getWalking().walk(edge.getRandomPosition());
- sleep(random(1000,1500));
- }
- if(near.contains(objects.closest("Wilderness Ditch")) && nonwild.contains(myPlayer())){
- sleep(random(1000,2000));
- objects.closest("Wilderness Ditch").interact("Cross");
- sleep(random(1000,2000));
- if(getWidgets().getWidgetContainingText("Enter Wilderness") != null){
- log("Closing wildy warning");
- sleep(random(1500,2000));
- sleep(random(1500,2000));
- objects.closest("Wilderness Ditch").interact("Cross");
- sleep(random(3500,5000));
- }
- }
- break;
- }
- switch (getState()) {
- case WALKING:
- currentState = "Walking to Graveyard";
- if(!dialogues.inDialogue() && !lootArea.contains(myPlayer())){
- getWalking().walk(lootArea.getRandomPosition());
- sleep(random(1000,1500));
- }
- if(dialogues.inDialogue() == true){
- sleep(random(500,1000));
- dialogues.clickContinue();
- sleep(random(500,1000));
- dialogues.selectOption(2);
- sleep(random(500,1000));
- }
- break;
- }
- switch (getState()) {
- case RUNAWAY1:
- }
- switch (getState()) {
- case WORLDHOP:
- if(shouldHop == true){
- currentState = "Hopping worlds";
- worlds.hopToF2PWorld();
- sleep(random(10000,15000));
- shouldHop = false;
- }
- break;
- }
- switch (getState()) {
- case REFILL:
- currentState = "Recharging energy";
- if(!refArea.contains(myPlayer())){
- getWalking().walk(refArea.getRandomPosition());
- sleep(random(1000,1500));
- objects.closest("Pool of Refreshment").interact();
- sleep(random(1000,3000));
- }
- break;
- }
- switch (getState()) {
- case GE:
- }
- switch (getState()) {
- case IDLE:
- }
- return 300;
- }
- @Override
- public void onPaint(Graphics2D g) {
- long elapsed = System.currentTimeMillis() - startTime;
- g.drawString((new StringBuilder("Time: ")).append(format(elapsed)).toString(), 50, 50);
- //This is where you will put your code for paint(s)
- }
- @Override
- public void onExit() {
- //Code here will execute after the script ends
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment