Jump to content
View in the app

A better way to browse. Learn more.

OSBot :: 2007 OSRS Botting

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

mRoguesDen | get Rogue's Outfit

Featured Replies

Made this Rogue's den script a couple weeks ago when I was starting to make scripts, and haven't changed since because I got the outfit, so it's not as good as it could be. It completes the minigame but there are some things that I haven't implemented.

The requirements for the minigame are 50 agility and 50 thieving.

Instructions: start the bot in rogue's den bank area.

The bot will try to drink stamina potions before going into the game, if you have in the bank.

 

It's not 100% afk. It sometimes fails and you need to restart the script. I coded the whole game so it's not checking if it failed an obstacle. I think diving the code into sections/states and having checks in between might do it. If someone has a better idea I would like to know.

Source:

 

import org.osbot.rs07.api.Skills;
import org.osbot.rs07.api.Widgets;
import org.osbot.rs07.api.map.Area;
import org.osbot.rs07.api.map.Position;
import org.osbot.rs07.api.model.*;
import org.osbot.rs07.api.ui.RS2Widget;
import org.osbot.rs07.api.ui.Skill;
import org.osbot.rs07.input.mouse.MainScreenTileDestination;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;

import java.awt.*;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

@ScriptManifest(author = "Mateogon", info = "", logo = "", version = 1.0, name = "mRoguesDen")
public class mRoguesDen extends Script {
    LinkedList<MousePathPoint> mousePath = new LinkedList<MousePathPoint>();
    int y;//paint y position
    private long startTime;
    int laps;
    int lapsph;
    boolean started;
    List<Skill> skillList = Arrays.asList(Skill.AGILITY, Skill.THIEVING);
    Skill skill;
    int debug;
    Position pos;
    RS2Object obj;
    Area bank = new Area(3040, 4974, 3045, 4969).setPlane(1); //rogues den bank

    @Override
    public void onStart() {
        started = false;
        startTime = System.currentTimeMillis();
        getExperienceTracker().start(Skill.THIEVING);
        getExperienceTracker().start(Skill.AGILITY);
        laps = 0;
        debug = 4;
    }

    @Override
    public int onLoop() throws InterruptedException {
        checkRunning(10, 12);
        Area beforeFirstGate = new Area(3056, 4991, 3056, 4986).setPlane(1);
        getWalking().walk(beforeFirstGate);
        new ConditionalSleep(8000) {
            public boolean condition() throws InterruptedException {
                return beforeFirstGate.contains(myPlayer());
            }
        }.sleep();

        objInteract(getObjects().closest(obj -> obj.getId() == 7256), "Open", false);
        started = true;
        exactWalk(new Position(3053, 4995, 1));
        objInteract(getObjects().closest("Contortion Bars"), "Enter", false);
        sleep(random(1000, 1200));

        exactWalk(new Position(3042, 4997, 1));//pendulum

        exactWalk(new Position(3037, 4999, 1));//trap floor
        exactWalk(new Position(3033, 4999, 1));
        exactWalk(new Position(3032, 4999, 1));
        exactWalk(new Position(3028, 4999, 1));

        objInteract(getObjects().closest(obj -> obj.getId() == 7255), "Open", false);

        exactWalk(new Position(3018, 5002, 1));//diagonal traps
        exactWalk(new Position(3014, 5003, 1));
        exactWalk(new Position(3012, 5001, 1));
        exactWalk(new Position(3009, 5003, 1));
        exactWalk(new Position(3008, 5003, 1));
        exactWalk(new Position(3004, 5003, 1));

        normalWalk(new Position(2994, 5004, 1));
        objInteract(getObjects().closest(obj -> obj.getId() == 7240), "Climb", true);


        normalWalk(new Position(2978, 5005, 1));

        normalWalk(new Position(2971, 5018, 1));
        exactWalk(new Position(2970, 5018, 1));

        exactWalk(new Position(2969, 5018, 1));


        normalWalk(new Position(2962, 5024, 1));
        exactWalk(new Position(2962, 5028, 1));
        sleep(random(1000, 1200));

        objInteract(getObjects().closest(obj -> obj.getId() == 7239 && obj.getPosition().equals(new Position(2958, 5031, 1))), "Climb", true);
        normalWalk(new Position(2963, 5046, 1));
        exactWalk(new Position(2963, 5050, 1));
        objInteract(getObjects().closest(obj -> obj.getId() == 7227 && obj.getPosition().equals(new Position(2963, 5051, 1))), "Search", false);
        //exactWalk(new Position(2963, 5055, 1));

        normalWalk(new Position(2957, 5065, 1));

        objInteract(getObjects().closest(obj -> obj.getId() == 7219), "Enter", false);
        exactWalk(new Position(2957, 5076, 1));


        normalWalk(new Position(2956, 5087, 1));
        //normalWalk(new Position(2955, 5092, 1));
        objInteract(getObjects().closest(obj -> obj.getId() == 7219), "Enter", false);

        normalWalk(new Position(2955, 5107, 1));
        normalWalk(new Position(2961, 5107, 1));
        exactWalk(new Position(2963, 5103, 1));
        exactWalk(new Position(2963, 5101, 1));
        exactWalk(new Position(2964, 5101, 1));
        exactWalk(new Position(2966, 5101, 1));
        exactWalk(new Position(2967, 5100, 1));
        exactWalk(new Position(2972, 5099, 1));
        objInteract(getObjects().closest(obj -> obj.getId() == 7219), "Enter", false);
        objInteract(getObjects().closest(obj -> obj.getId() == 7255), "Open", false);
        normalWalk(new Position(2972, 5087, 1));

        if (myPlayer().getPosition() != new Position(2972, 5087, 1)) {
            exactWalk(new Position(2972, 5087, 1));
        }
        ;
        exactWalk(new Position(2975, 5087, 1));
        exactWalk(new Position(2980, 5087, 1));
        sleep(random(1100, 2100));

            objInteract(getObjects().closest(obj -> obj.getId() == 7240 && getMap().canReach(obj)), "Climb", true); //obj.getPosition().equals(new Position(2983, 5087, 1))

        sleep(random(2567, 3898));
        exactWalk(new Position(2992, 5088, 1));

            objInteract(getObjects().closest(obj -> obj.getId() == 7249 && obj.getPosition().equals(new Position(2993, 5087, 1))), "Search", false);
            sleep(random(1100, 2100));

            exactWalk(new Position(2997, 5088, 1));
            exactWalk(new Position(3000, 5087, 1));
            exactWalk(new Position(3001, 5087, 1));
            exactWalk(new Position(3005, 5087, 1));
            normalWalk(new Position(3017, 5081, 1));
            takeItem(getGroundItems().closest(item -> item.getId() == 5568));

            tileWidget(getObjects().closest(obj -> obj.getId() == 7234));//TODO not working yet
            normalWalk(new Position(3030, 5079, 1));
            int a = 800;
            int b = 1200;
            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3030, 5079, 1))), "Open", false);
            sleep(random(a, b));
            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3032, 5078, 1))), "Open", false);
            sleep(random(a, b));
            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3036, 5076, 1))), "Open", false);
            sleep(random(a, b));
            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3039, 5079, 1))), "Open", false);
            sleep(random(a, b));
            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3042, 5076, 1))), "Open", false);
            sleep(random(a, b));
            exactWalk(new Position(3044, 5071, 1));
            sleep(random(1500, 2000));
            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3044, 5069, 1))), "Open", false);
            sleep(random(a, b));
            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3041, 5068, 1))), "Open", false);
            sleep(random(a, b));
            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3040, 5070, 1))), "Open", false);
            sleep(random(a, b));

            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3038, 5069, 1))), "Open", false);
            sleep(random(a, b));
            normalWalk(new Position(3039, 5049, 1));
            normalWalk(new Position(3031, 5033, 1));
            exactWalk(new Position(3028, 5033, 1));
            exactWalk(new Position(3024, 5033, 1));
            normalWalk(new Position(3016, 5033, 1));

            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3015, 5033, 1))), "Open", false);
            exactWalk(new Position(3010, 5033, 1));
            objInteract(getObjects().closest(obj -> obj.getId() == 7255 && obj.getPosition().equals(new Position(3010, 5033, 1))), "Open", false);
            exactWalk(new Position(3008, 5033, 1));
            exactWalk(new Position(3004, 5033, 1));
            exactWalk(new Position(3000, 5033, 1));
            normalWalk(new Position(2994, 5044, 1));
            exactWalk(new Position(2992, 5045, 1));
            exactWalk(new Position(2992, 5049, 1));
            exactWalk(new Position(2992, 5053, 1));

            normalWalk(new Position(2992, 5064, 1));
            exactWalk(new Position(2992, 5067, 1));
            exactWalk(new Position(2992, 5071, 1));
            exactWalk(new Position(2992, 5075, 1));

            normalWalk(new Position(3006, 5066, 1));
            //exactWalk(new Position(3009, 5063, 1));

            takeItem(getGroundItems().closest("Flash powder"));
            //takeItem(getGroundItems().closest(item -> item. && item.getPosition() == (new Position(3009,5063,1))));

            new ConditionalSleep(4000) {
                public boolean condition() throws InterruptedException {
                    return (getInventory().contains(5559));
                }
            }.sleep();

            long count = getInventory().getAmount(5559);
            NPC guard = getNpcs().closest(npc -> npc.getId() == (3191));
            while (guard == null) {
                guard = getNpcs().closest(npc -> npc.getId() == (3191));
                log("guard is null,waiting");
                sleep(random(300, 600));
            }checkRunning(10,12);

            getInventory().getItem(5559).interact("Use");
            while (myPlayer().getPosition().distance(guard.getPosition()) > 8) {
                sleep(random(500, 800));
            }
            guard.interact("Use");
            new ConditionalSleep(4000) {
                public boolean condition() throws InterruptedException {
                    return (getInventory().getAmount(5559) < count);
                }
            }.sleep();
            normalWalk(new Position(3025, 5060, 1));

            exactWalk(new Position(3028, 5054, 1));
            if (myPlayer().getPosition() != new Position(3028, 5051, 1)){
                exactWalk(new Position(3028, 5051, 1));
            }

            exactWalk(new Position(3028, 5048, 1));

            normalWalk(new Position(3019, 5047, 1));

            objInteract(getObjects().closest(obj -> obj.getId() == 7237), "Crack", false);
            new ConditionalSleep(4000) {
                public boolean condition() throws InterruptedException {
                    return (dialogues.isPendingContinuation());
                }
            }.sleep();
            dialogues.clickContinue();
            new ConditionalSleep(4000) {
                public boolean condition() throws InterruptedException {
                    return (dialogues.isPendingContinuation());
                }
            }.sleep();
            dialogues.clickContinue();

            laps += 1;
            getWalking().walk(bank.getRandomPosition());
            new ConditionalSleep(4000) {
                public boolean condition() throws InterruptedException {
                    return (bank.contains(myPlayer()));
                }
            }.sleep();

        NPC banker = getNpcs().closest("Emerald Benedict");
        banker.interact("Bank");
        new ConditionalSleep(4000) {
            public boolean condition() throws InterruptedException {
                return (getBank().isOpen());
            }
        }.sleep();
        if (getInventory().getEmptySlots() < 28) {
            getBank().depositAll();
        }
        String staminaname;
            if (getSettings().getRunEnergy() <= 95){
                Item stamina = getBank().getItem(item -> item.getName().contains("Stamina") && item.getName().contains("1"));
                if (stamina == null){
                    for (int i = 2; i < 5; i ++){
                        int n = i;
                        stamina = getBank().getItem(item -> item.getName().contains("Stamina") && item.getName().contains(Integer.toString(n)));
                    if (stamina != null){break;}
                    }
                }
                if (stamina != null){
                getBank().withdraw(stamina.getName(),1);}
                getBank().close();
                staminaname = stamina.getName();
                new ConditionalSleep(4000) {
                    public boolean condition() throws InterruptedException {
                        return (!getBank().isOpen());
                    }
                }.sleep();
                int energy = getSettings().getRunEnergy();
                getInventory().getItem(item-> item.getName().equals(staminaname)).interact("Drink");
            }
        if (getInventory().getEmptySlots() < 28){
            banker.interact("Bank");
        new ConditionalSleep(4000) {
            public boolean condition() throws InterruptedException {
                return (getBank().isOpen());
            }
        }.sleep();

            getBank().depositAll();
        }
        getBank().close();
        new ConditionalSleep(4000) {
            public boolean condition() throws InterruptedException {
                return (!getBank().isOpen());
            }
        }.sleep();
        started = false;
        checkRunning(10,12);


        //exactWalk(new Position(3053,4995,1));

        return (random(181, 285));

    }
    private Void tileWidget(RS2Object tiledoor) throws InterruptedException{
        tiledoor.interact( "Open");

        RS2Widget widget = getWidgets().get(293, 3);
        while(widget == null){
            widget = getWidgets().get(293, 3);
            sleep(random(1200,1800));}


        if (widget != null) {
            log("widget detected");
        widget.interact("Ok");}
        else{log("widget not detected");}
        sleep(random(2500,3000));
        return null;
    }
    private Void moveCamera() throws InterruptedException{
        if (getCamera().getPitchAngle() <= 53){
            log("moving camera");
            sleep(random(300,800));
            getCamera().movePitch(random(55,67));
            sleep(random(300,800));
        }
        return null;
    }
    private Void takeItem(GroundItem item) throws InterruptedException{
        moveCamera();
        item.interact("Take");
        new ConditionalSleep(4000) {
            public boolean condition() throws InterruptedException {
                return (getInventory().contains(item.getId()));
            }
        }.sleep();
        sleep(random(1500,1800));
        return null;
    }
    private Void objInteract(RS2Object obj,String action,boolean extrasleep) throws InterruptedException{
        moveCamera();

        if (obj != null) {
            obj.interact(action);
        }

        if (extrasleep){sleep(random(1810,2100));}
        new ConditionalSleep(obj.getId() == 7240 ? 12000:8000) {
            public boolean condition() throws InterruptedException {
                return (!myPlayer().isMoving() && !myPlayer().isAnimating());
            }
        }.sleep();
        sleep(random(1810,2100));
        return null;
    }
    private Void exactWalk(Position pos) throws InterruptedException{
        moveCamera();
        pos.interact(this.bot, new String[]{"Walk here"});
        new ConditionalSleep(5000) {
            public boolean condition() throws InterruptedException {
                return (myPlayer().getPosition().equals(pos) && !myPlayer().isMoving());
            }
        }.sleep();
        sleep(random(1400,1800)); //1800 2100
        return null;
    }

    private Void normalWalk(Position pos) throws InterruptedException{
        moveCamera();
        getWalking().walk(pos);
        new ConditionalSleep(5000) {
            public boolean condition() throws InterruptedException {
                return (myPlayer().getPosition().distance(pos)<=2 && !myPlayer().isMoving());
            }
        }.sleep();
        sleep(random(1400,1800)); //1800 2100
        return null;
    }
    private void checkRunning(int a,int b){
        if ((getSettings().getRunEnergy() >= random(a,b)) && !getSettings().isRunning())
        {getSettings().setRunning(true);
        }
    }
    
    public final String formatTime(final long ms){
        long s = ms / 1000, m = s / 60, h = m / 60;
        s %= 60; m %= 60; h %= 24;
        return String.format("%02d:%02d:%02d", h, m, s);
    }
    public final String formatValue(final long l) {
        return (l > 1_000_000) ? String.format("%.2fm", ((double) l / 1_000_000))
                : (l > 1000) ? String.format("%.1fk", ((double) l / 1000))
                : l + "";
    }
    public void onPaint(Graphics2D g) {

        Font font = new Font("Open Sans", Font.BOLD, 15);
        g.setFont(font);
        g.setColor(Color.black);
        // Changing the size of the current font to size 18
        g.drawString("mRoguesDen", 15, 323);
        //for (Skill skill : skills) {
        for (int i = 0; i < skillList.size(); i ++){
            skill = skillList.get(i);
            y =420+((i-1)*20);
            String tlvl = formatValue(getSkills().getStatic(skill));
            String tglvl = formatValue(getExperienceTracker().getGainedLevels(skill));
            String texp = formatValue(getExperienceTracker().getGainedXP(skill));
            String texph = formatValue(getExperienceTracker().getGainedXPPerHour(skill));
            String ttlvl = formatTime(getExperienceTracker().getTimeToLevel(skill));

            g.drawString((skill.toString().toUpperCase()+":"+tlvl+"("+tglvl+")" +" EXP/H:" +texph+ "  EXP GAINED: "+texp + " TTL: "+ttlvl), 15, y);
        }
        g.drawString((formatTime(System.currentTimeMillis() - startTime)), 15, 355);
        lapsph= (int)(laps / ((System.currentTimeMillis() - this.startTime) / 3600000.0D));
        g.drawString("Laps p/h: " + lapsph+"("+laps+")", 15, 370);

        while (!mousePath.isEmpty() && mousePath.peek().isUp())
            mousePath.remove();
        Point clientCursor = mouse.getPosition();
        MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, 500);
        if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp))
            mousePath.add(mpp);
        MousePathPoint lastPoint = null;
        for (MousePathPoint a : mousePath) {
            if (lastPoint != null) {
                g.setColor(Color.RED);
                g.drawLine(a.x, a.y, lastPoint.x, lastPoint.y);
            }
            lastPoint = a;
        }
    }


    public class MousePathPoint extends Point {

        private long finishTime;
        private double lastingTime;

        public MousePathPoint(int x, int y, int lastingTime) {
            super(x, y);
            this.lastingTime = lastingTime;
            finishTime = System.currentTimeMillis() + lastingTime;
        }

        public boolean isUp() {
            return System.currentTimeMillis() > finishTime;
        }
    }
}

 

 

mRoguesDen.jar

Edited by mateogon

Bro. Why are you stealing my script names. mScriptName is trademarked by me bro...

On 1/16/2020 at 1:01 AM, Medusa said:

Bro. Why are you stealing my script names. mScriptName is trademarked by me bro...

 

On 1/16/2020 at 9:01 AM, Medusa said:

Bro. Why are you stealing my script names. mScriptName is trademarked by me bro...

He only got two posts, maybe someone is being a troll :D 

7 hours ago, Kramnik said:

He only got two posts, maybe someone is being a troll :D 

Still angry as fuck (Jokes btw). Renaming any script I push to sdn in the future.

  • 2 months later...
  • 1 month later...
  • 1 month later...
  • 1 year later...

Anyone know if it’s still good? 
 

  • 1 year later...

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.