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.

Bot World RandomSolver

Featured Replies

A simple event to escape bot worlds.

 

Code:

package dependencies.experimental;

import org.osbot.rs07.api.filter.Filter;
import org.osbot.rs07.api.ui.World;
import org.osbot.rs07.script.MethodProvider;
import org.osbot.rs07.script.RandomEvent;
import org.osbot.rs07.script.RandomSolver;

import dependencies.imported.MilliTimer;

/** 
 * @author 		Bjorn Krols (Botre)
 * @version		0.0
 * @since		April 9, 2015
 */

public class BotWorldSolver extends RandomSolver {
	
	/**
	 * The filter used to hop to an appropriate world.
	 */
	private Filter<World> filter;
	
	/**
	 * A timer that records the time elapsed since world detection.
	 */
	private MilliTimer timer;
	
	/**
	 * The amount of time, in seconds, to wait before hopping.
	 */
	private int seconds;
	
	public BotWorldSolver() {
		super(RandomEvent.OTHER);
	}

	/**
	 * Return true if and only if player is in a bot world.
	 */
	@Override
	public boolean shouldActivate() {
		if (filter == null) prepareFilter();
		return inBotWorld();
	}
	
	@Override
	public void onStart() throws InterruptedException {
		super.onStart();
		// Create a new timer instance.
		timer = new MilliTimer();
		// Set the time to wait before hopping is allowed (30 seconds - 20 minutes).
		seconds = MethodProvider.random.nextInt(1200000) + 30;
	}

	@SuppressWarnings("unchecked")
	@Override
	public int onLoop() throws InterruptedException {
		if (!inBotWorld()) stop();
		if (timer.getElapsedSeconds() > seconds) getWorlds().hop(filter);
		return 1000;
	}
	
	@Override
	public void onExit() throws InterruptedException {
		super.onExit();
		// Clear timer instance.
		timer = null;
	}
	
	public void prepareFilter() {
		// Fetch current world.
		World current = getWorlds().getWorld(getClient().getCurrentWorld());
		// Is current world P2P?
		final Boolean members = Boolean.valueOf(current.isMembers());
		// Is current world PVP?
		final Boolean pvp = Boolean.valueOf(current.isPvpWorld());
		// Create filter based on previous results.
		filter = new Filter<World>() {
			@Override
			public boolean match(World world) {
				return world.isMembers() == members && world.isPvpWorld() == pvp && !world.isFull();
			}
		};
	}
	
	public boolean inBotWorld() {
		int myWorld = getClient().getCurrentWorld();
		return myWorld == 385 || myWorld == 386; 
	}
	
}

How to register:

// Register BotWorldSolver.
getBot().getRandomExecutor().registerRandoms(new BotWorldSolver());
Loaded 1 third-party random solvers!

Edited by Botre

  • Author

nice thank you for this biggrin.png. Not too sure about that 30 min timer delay lol

 

It's a random time between 30 seconds and twenty minutes, feel free to mod it to a more appropriate interval :D

It's a random time between 30 seconds and twenty minutes, feel free to mod it to a more appropriate interval biggrin.png

certainly sir

for those that get error with the timer:

 

change a few thing to this

	/**
	 * A timer that records the time elapsed since world detection.
	 */
	private long timer;


	@Override
	public void onStart() throws InterruptedException {
		super.onStart();
		// Create a new timer instance.
		this.timer = System.currentTimeMillis();
		// Set the time to wait before hopping is allowed (30 seconds - 20 minutes).
		seconds = MethodProvider.random.nextInt(1200000) + 30;
	}


	@SuppressWarnings("unchecked")
	@Override
	public int onLoop() throws InterruptedException {
		if (!inBotWorld()) stop();
		if (getTimerElapsedSeconds() > seconds) getWorlds().hop(filter);
		return 1000;
	}

add on:
	public int getTimerElapsedSeconds()	{
		return (int) (System.currentTimeMillis() - this.timer / 1000);
	}

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.