Skip 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.

Get Boned [250k xp/hour]

Featured Replies

Edit: Added script source again. Seems like someone edited my post and removed it.

Here we go. Didn't see any other prayer scripts on the first page, so that was enough to just write one out.
Be sure to edit your hosts accordingly. Some code may be ugly and ghetto because I could not get widgets to work. (weird considering they always worked for me before)

Here's a proggy.
Paint was redone after initial testing.
CHG1XRX.png2qXoc7R.png

1rXVRyI.jpg

import org.osbot.rs07.api.map.Position;
import org.osbot.rs07.api.ui.Message;
import org.osbot.rs07.api.ui.Skill;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;

import java.awt.*;

@ScriptManifest(name = "Get Boned", author = "Sony", version = 1.0, info = "", logo = "") 

public class GetBoned extends Script {

	public boolean hasSetHost1 = false, hasSetHost2 = false, hasSetHost3 = false, 
			useHost1 = true, useHost2 = false, useHost3 = false;

	private long startTime, runTime;
	public String 
			bone = "Wyvern bones", coins = "Coins", state, 
			host = "parte", host2 = "jokcy", host3 = "the 420 cc", 
			curHost;

	Position phialsPos = new Position(2949, 3213, 0);
	Position portalPos = new Position(2953, 3224, 0);

	@Override
	public void onStart() {
		experienceTracker.startAll();
		startTime = System.currentTimeMillis();
	}

	public boolean isAnimating() throws InterruptedException{
		for(int i = 0; i < 5; i++){
			if(myPlayer().isAnimating() || players.myPlayer().isMoving())
				return true;
			else
				sleep(100);
		}
		return false;
	}

	public enum State {
		unnoting, entering, praying, exiting, idle, exit
	}

	private State getState() throws InterruptedException {
		if (inventory.contains(inventory.getItem(bone).getNotedId()) && !inventory.contains(inventory.getItem(bone).getUnnotedId()) && npcs.closest("Phials") == null) {
			state = "Exiting";
			return State.exiting;
		}

		if (inventory.contains(inventory.getItem(bone).getNotedId()) && !inventory.contains(inventory.getItem(bone).getUnnotedId()) && npcs.closest("Phials") != null) {
			state = "Unnoting";
			return State.unnoting;
		}

		if (inventory.contains(inventory.getItem(bone).getUnnotedId()) && objects.closest("Incense burner") == null) {
			state = "Entering house";
			return State.entering;
		}

		if (inventory.contains(inventory.getItem(bone).getUnnotedId()) && objects.closest("Incense burner") != null && !isAnimating()) {
			state = "Praying";
			return State.praying;
		}
		if (isAnimating() && inventory.contains(inventory.getItem(bone).getUnnotedId())) {
			state = "Idling...";
			return State.idle;
		}
		state = "Idling...";
		return State.idle;
	}


	@Override
	public int onLoop() throws InterruptedException {
		if (!inventory.contains(bone)) {
			stop();
		}
		switch (getState()) {			
		case unnoting:
			if (map.distance(npcs.closest("Phials")) > 8) {
				walking.webWalk(phialsPos);
				new ConditionalSleep(10000) {
					@Override
					public boolean condition() throws InterruptedException {
						return map.distance(npcs.closest("Phials")) < 8;
					}
				}.sleep();
			}

			if (map.distance(npcs.closest("Phials")) < 8) {
				if (inventory.contains(inventory.getItem(bone).getNotedId())) {
					inventory.getItem(inventory.getItem(bone).getNotedId()).interact("Use");
					if (inventory.isItemSelected()) {
						npcs.closest("Phials").interact("Use");
						new ConditionalSleep(5000) {
							@Override
							public boolean condition() throws InterruptedException {
								return dialogues.isPendingOption();
							}
						}.sleep();
					}
					if (dialogues.isPendingOption()) {
						sleep(random(600, 1800));
						if (inventory.getItem(inventory.getItem(bone).getNotedId()).getAmount() > 1 ) {
							dialogues.selectOption(3);
						} else {
							dialogues.selectOption(1);
						}
						new ConditionalSleep(5000) {
							@Override
							public boolean condition() throws InterruptedException {
								return inventory.contains(inventory.getItem(bone).getUnnotedId());
							}
						}.sleep();
					}
				}
			}

			break;

		case entering:
			if (objects.closest("Portal") != null) {
				if (map.distance(objects.closest("Portal")) > 5) {
					walking.webWalk(portalPos);
					new ConditionalSleep(10000) {
						@Override
						public boolean condition() throws InterruptedException {
							return map.distance(objects.closest("Portal")) < 5;
						}
					}.sleep();
				}

				if (map.distance(objects.closest("Portal")) < 5) {
					if (widgets.get(162, 33, 0) == null) {
						objects.closest("Portal").interact("Friend's house");
						new ConditionalSleep(8000) {
							@Override
							public boolean condition() throws InterruptedException {
								return widgets.get(162, 33, 0) != null;
							}
						}.sleep();
					}
					
					sleep(random(1200, 1500));

					if (useHost1) {
						curHost = host;
						if (!hasSetHost1) {
							keyboard.typeString(host, true);
							hasSetHost1 = true;
						} else {
							keyboard.typeEnter();
						}
					}
					
					if (useHost2) {
						curHost = host2;
						if (!hasSetHost2) {
							keyboard.typeString(host2, true);
							hasSetHost2 = true;
						} else {
							keyboard.typeEnter();
						}
					}
					
					if (useHost3) {
						curHost = host3;
						if (!hasSetHost3) {
							keyboard.typeString(host3, true);
							hasSetHost3 = true;
						} else {
							keyboard.typeEnter();
						}
					}
					
					new ConditionalSleep(15000) {
						@Override
						public boolean condition() throws InterruptedException {
							return objects.closest("Incense burner") != null;
						}
					}.sleep();
				}
			}
			break;

		case exiting:
			if (!isAnimating() && objects.closest("Altar") != null) {
				objects.closest("Portal").interact("Enter");
				new ConditionalSleep(10000) {

					@Override
					public boolean condition() throws InterruptedException {
						return objects.closest("Incense burner") == null;
					}
				}.sleep();
			}
			break;

		case praying:
			if (!isAnimating() && objects.closest("Incense burner") != null) {
				inventory.getItem(inventory.getItem(bone).getUnnotedId()).interact("Use");
				new ConditionalSleep(5000) {
					@Override
					public boolean condition() throws InterruptedException {
						return inventory.isItemSelected();
					}
				}.sleep();
				
				objects.closest("Altar").interact("Use");

				new ConditionalSleep(50000) {
					@Override
					public boolean condition() throws InterruptedException {
						return !inventory.contains(inventory.getItem(bone).getUnnotedId()) || dialogues.isPendingContinuation() || !isAnimating();
					}
				}.sleep();
			}
			break;

		case idle:
			new ConditionalSleep(2500) {
				@Override
				public boolean condition() throws InterruptedException {
					return !isAnimating() || dialogues.isPendingContinuation();
				}
			}.sleep();
			break;

		default:
			break;
		}
		return 600;
	}

	private final RenderingHints antialiasing = new RenderingHints(
			RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    private final Color color1 = new Color(0, 0, 0, 192);
    private final Color color2 = new Color(0, 0, 0);
    private final Color color3 = new Color(255, 255, 255);

    private final BasicStroke stroke1 = new BasicStroke(1);

    private final Font font1 = new Font("Arial", 0, 14);
    private final Font font2 = new Font("Arial", 0, 12);



	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 void onMessage(Message message) throws java.lang.InterruptedException {
			if(message.getType() == Message.MessageType.GAME) {
					if (message.getMessage().contains("player is offline") && useHost1) {
						log("host 1 is offline");
						log("checking if host 2 is online");
						log("");
						useHost1 = false;
						useHost2 = true;
						useHost3 = false;
						return;
					}
					
					if (message.getMessage().contains("player is offline") && useHost2) {
						log("host 2 is offline");
						log("checking if host 3 is online");
						log("");
						useHost1 = false;
						useHost2 = false;
						useHost3 = true;
						return;
					}
					
					if (message.getMessage().contains("player is offline") && useHost3) {
						runTime = System.currentTimeMillis() - startTime;
						log("all three hosts offline, exiting");
						log("");
						log("Runtime: " + formatTime(runTime));
						log("XP Gained: " + experienceTracker.getGainedXP(Skill.PRAYER));
						stop();
					}
				}
		    }

	@Override
	public void onPaint(Graphics2D g) {
		g.setRenderingHints(antialiasing);
		runTime = System.currentTimeMillis() - startTime;
		
		g.setColor(color1);
        g.fillRect(563, 219, 156, 179);
        g.setColor(color2);
        g.setStroke(stroke1);
        g.drawRect(563, 219, 156, 179);
        g.setFont(font1);
        g.setColor(color3);
        g.drawString("Get Boned", 606, 240);
        g.drawLine(575, 246, 700, 246);
        g.setFont(font2);
        g.setColor(color3);
        
		g.drawString("Host: " + curHost, 570, 260);
		g.drawString("State: " + state, 570, 275);
		g.drawString("Runtime: " + formatTime(runTime), 570, 290);
		g.drawString("Exp gained: " + experienceTracker.getGainedXP(Skill.PRAYER), 570, 305);
		g.drawString("Exp/Hour: " + experienceTracker.getGainedXPPerHour(Skill.PRAYER), 570, 320);
		g.drawString("Levels gained: " + experienceTracker.getGainedLevels(Skill.PRAYER), 570, 335);

	}

}

 

Edited by Sonysi

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

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.