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.

[Amazing] RangingGuild script [30k+ xp/hour]

Featured Replies

Rapidz' RangingGuilder - Version 1.0

VERSION 1.1 RELEASED

 

Rapidz' RangingGuilder provides:

Nice paint

Fast clicking & fast rounds

increased xp per hour

I would not hesitate to say its the best RangingGuild script for OSBot.

And its almost flawless! Atleast I haven't found any bugs yet so if you find any please contact me on here.

 

Changelog / bugs.


 

Next version bug fixes / additions: 

Version 1.1 - Better paint - xp till next level fixed - time till next level fixed - minor bug fixes.

 

Notice:

To run this script you must start with 100k+ at ranging guild

have 100 bronze arrows equipped (recommended)

Have the warning for tower toggled OFF

Have a Ring of life equipped.

 

Images:

b621ph.png

8 hour proggy - and still going.

 

 

2moy3gl.png

 

 

GREAT!

 

 

31k xp/hr, no error codes. 1.1 is legit.

DO NOT USE INPUT WITH MOUSE IT MAKES BOT FUNKY! let it do its own work.

Grab ring of life, get best range bonus possible w/armor.

Get about 250k to start with and about 1k bronze arrows (the more the better)

go into world 1 or 2 (less likely of ban)

Sit with bot for about 15 minutes through 1 or 2 randoms to ensure you can depend on it.

Make sure client and script is ALWAYS updated.

He doesn't lie when he says best range guild script. 10/10. I can't even get Dat Range Guild to work lol

Although talking to random could be helped, it is slow if random appears during target interface.

 

 

P.S. This bot DOES have anti-ban. has all randoms figured out to my knowledge, does not spam click 1 spot, and changes camera every now and then. I am thoroughly enjoying this bot.

 

Thank you!!!

http://osbot.org/forum/uploads/monthly_07_2013/post-19919-0-41754600-1373308491.png

 

 

 

my proggy, it did equip after it used my 1000 arrows, silly me .. 

attachicon.gif 54f06c269fa52f810b1c3f251a96cfe1.png

still running btw

 

 

Scan (incase anybody wants it):

https://www.virustotal.com/da/file/36585bf2f38d71d9d15aa4ff57b5c7ccad0a3847558d053d5cea627b89fb6522/analysis/1373137485/

0/47 Virustotal

 

 

Please post your proggies below for thread.

 

 

My computer is currently at a factory getting fixed so 1.2 is going to be released when it gets back, apparently Jagex changed id of the judge npc so theres a quick hotfix here though. Thanks Ibotfishingxp

 

 

If this doesn't work for you, then Jagex has changed how ID's work for all players. Click the cog in the top right and choose "advanced" followed by "object info" Stand next to the targets and find the white number next to them. Replace "2513" with that number. Also check the judges npc ID.

 

I can supply a hotfix until the scriptor can fix his script.

I've also fixed the issue with the judge.

 

This is a hotfix, I highly recommend you babysit your bot.

import java.io.IOException;
import java.net.URL;
import org.osbot.script.ScriptManifest;
import org.osbot.script.rs2.map.Position;
import org.osbot.script.rs2.model.NPC;
import org.osbot.script.rs2.model.RS2Object;
import org.osbot.script.rs2.ui.RS2Interface;
import org.osbot.script.rs2.ui.RS2InterfaceChild;
import org.osbot.script.rs2.utility.Area;
import org.osbot.script.rs2.Client;

import javax.imageio.ImageIO;

import java.awt.*;

@ScriptManifest(name = "RangeGuilder", author = "Rapidz", version = 1.1D, info = "Next generation 07 RuneScape RangeGuilding script, stable and almost flawless.")

public class RangeGuilder extends Script {

Image background = getImage("http://i.imgur.com/Or2kp76.png");
    public long startTime; // Bot starting time
private final static int JUDGE = 693;
private final static int TARGET = 15545;
private final static int BRONZE_ARROW = 882;
private final static int LADDER_UP = 2511;
private final static int LADDER_DOWN = 2512;
private final static int CAMELOT_TELEPORT = 8010;
private final static Position RETURN_POSITION = new Position(2670, 3418, 0);
public int startRangedExp;
public int lastRangedExpPerHour;
public int rangedExpToLvl;
    public long lastExpCheck;

private enum State {
SHOOT, EQUIP_ARROWS, TALK_TO_JUDGE, RETURNING, ESCAPE
}

private State state = State.SHOOT;
    
    private int xpToLvl(int level, int currentExp) {
        return Math.round(Math.round((((level+1)*(level)/8)+75*((Math.pow(2, (level+1)/7)-Math.pow(2, 1/7))/(Math.pow(2, 1/7)-1)))-currentExp));
    }
    
    private int xpPerHour(int currentExp, int startExp) {
        return Math.round((((currentExp-startExp)*3600)/((System.currentTimeMillis()-this.startTime)/1000)));
    }

public void onStart() {
    positionScreen();
log("Rapidz RangeGuilder - Version 1.1 Running");
int rangedLvl = this.client.getSkills().getLevel(Skill.RANGED);
        int rangedExp = this.client.getSkills().getExperience(Skill.RANGED);
this.startRangedExp = this.client.getSkills().getExperience(Skill.RANGED);
        this.startTime = System.currentTimeMillis();
        this.rangedExpToLvl = xpToLvl(rangedLvl, rangedExp);
this.lastRangedExpPerHour = 0;
this.lastExpCheck = System.currentTimeMillis();
}

public int onLoop() {
switch(state) {
case State.SHOOT:
onShoot();
break;
case State.EQUIP_ARROWS:
onEquip();
break;
case State.TALK_TO_JUDGE:
onTalk();
break;
case State.ESCAPE:
onEscape();
break;
case State.RETURNING:
onReturning();
break;
}
return 0;
}

public void onMessage(String message) {
if (message == "You should probably be behind the hay bales." || message == "You've fired all your arrows, maybe you should talk to the Judge." || message == "Maybe you should ask before using those.") {
state = State.RETURNING;
}
}

private void onShoot() {
if (searchInterfacesForText("Sorry, you may").isEmpty() && searchInterfacesForText("I suggest").isEmpty() && searchInterfacesForText("Well done").isEmpty()) {
if (client.getMyPlayer().isUnderAttack()) {
state = State.ESCAPE;
return;
} else if (client.getInterface(325) == null) {
selectEntityOption(closestObject(TARGET), "Fire-at", true, false);
sleep(1 + random(5));
} else {
selectInterfaceOption(325, 88, "Close", true);
}
}
if (searchInterfacesForText("Sorry, you may").size() >= 1 || searchInterfacesForText("Well done").size() >= 1 ) {
state = State.TALK_TO_JUDGE;
} else if (searchInterfacesForText("I suggest").size() >= 1) {
state = State.EQUIP_ARROWS;
}
}

private void onTalk() {
selectEntityOption(closestNPC(JUDGE), "Talk-to", false);
sleep(300 + random(50));
waitForClickContinue();
sleep(600 + random(100));
waitForAccept();
sleep(600 + random(100));
waitForClickContinue();
sleep(600 + random(100));
waitForClickContinue();
sleep(500 + random(50))
if (searchInterfacesForText("Oops,").size() >= 1) {
log("Ran out of coins, stopped the script.")
stop();
}
state = State.SHOOT;
}

private void onEquip() {
selectInventoryOption(client.getInventory().getSlotForId(BRONZE_ARROW),"Wield");
state = State.SHOOT;
}

private void onEscape() {
selectEntityOption(closestObject(LADDER_UP), "Climb-up");
while (client.getMyPlayer().getZ() == 0) {
selectEntityOption(closestObject(LADDER_UP), "Climb-up");
sleep(3000);
}
sleep(6000);
while (client.getMyPlayer().getZ() == 2) {
selectEntityOption(closestObject(LADDER_DOWN), "Climb-down")
sleep(2000);
}
state = State.RETURNING;
}

private void onReturning() {
while (walkExact(RETURN_POSITION, 0) == false) {
sleep(6000);
}
state = State.SHOOT;
}

private void waitForClickContinue() {
int i = 0;
sleep(300);
while (searchInterfacesForText("Click here to continue").isEmpty()) {
if (client.getMyPlayer().isUnderAttack()) {
state = State.ESCAPE;
return;
}
if (i >= 20) {
return;
}
sleep(100);
i++;
}
while (clickContinue() == false) {
if (client.getMyPlayer().isUnderAttack()) {
state = State.ESCAPE;
return;
}
if (i > 25) {
return;
}
sleep(500);
i++
}
}

private void waitForAccept() {
int i = 0;
sleep(300);
while (searchInterfacesForText("Sure, I'll give it a go").isEmpty()) {
if (client.getMyPlayer().isUnderAttack()) {
state = State.ESCAPE;
return;
}
if (i >= 20) {
return;
}
sleep(100);
i++;
}
while (accept() == false) {
if (client.getMyPlayer().isUnderAttack()) {
state = State.ESCAPE;
return;
}
if (i >= 25) {
return;
}
sleep(600);
i++
}
}

private boolean clickContinue() {
return searchInterfacesForText("Click here to continue").get(0).interact("Continue");
}

private boolean accept() {
return searchInterfacesForText("Sure, I'll give it a go").get(0).interact("Continue");
}

private void positionScreen() {
while (!walkExact(RETURN_POSITION)) {
sleep(500);
}
client.rotateCameraToAngle(330);
client.rotateCameraPitch(22);
}
        
        private Image getImage(String url) {
            try { return ImageIO.read(new URL(url)); }
catch(IOException e) { return null; }
}
    private String format(long totalSeconds) {
        long hours = totalSeconds/3600;
        long minutes = (totalSeconds-hours*3600)/60;
        long seconds = totalSeconds-(hours*3600+minutes*60);
        
        String hoursS = String.valueOf(hours);
        if (hours < 10)
            hoursS = "0" + hoursS;
        
        String minutesS = String.valueOf(minutes);
        if (minutes < 10)
            minutesS = "0" + minutesS;
        
        String secondsS = String.valueOf(seconds);
        if (seconds < 10)
            secondsS = "0" + secondsS;
        
        return hoursS+":"+minutesS+":"+secondsS;
    }
        
    public void onPaint(Graphics g) {
        g.drawImage(background, 8, 345, null);
int rangedLvl = this.client.getSkills().getLevel(Skill.RANGED);
int rangedExp = this.client.getSkills().getExperience(Skill.RANGED);        
        
if ((System.currentTimeMillis()-this.lastExpCheck)>2000) {
this.lastRangedExpPerHour = xpPerHour(rangedExp, this.startRangedExp);
}
            if ((System.currentTimeMillis()-this.lastExpCheck)>2000) {
this.rangedExpToLvl = xpToLvl(rangedLvl, rangedExp);
}
        long runing = (System.currentTimeMillis()-this.startTime)/1000;
long timeToRangedLevel = 0;
            if (this.lastRangedExpPerHour>0)
                timeToRangedLevel = (this.rangedExpToLvl/this.lastRangedExpPerHour)*3600;
g.setColor(Color.WHITE);
g.setFont(g.getFont().deriveFont(10.0f));
g.drawString("Rapidz' RangingGuilder - Version 1.1", 25, 365);
                 g.drawString("Ranged level: " + rangedLvl, 25, 395);
                 g.drawString("Time till next level: " + format(timeToRangedLevel), 25, 410);
                 g.drawString("Exp til next level: " + this.rangedExpToLvl, 25, 425);
                 g.drawString("XP/Hour: " + this.lastRangedExpPerHour, 25, 440);
                 g.drawString("Script has been running for: " + format(runing), 25, 455);
        }
        public void onExit() {
        long totalSeconds = (System.currentTimeMillis()-this.startTime)/1000;
        int hours = (int) (totalSeconds/360);
        int minutes = (int) ((totalSeconds-(hours*360))/60);
        int seconds = (int) (totalSeconds-((hours*360)+(minutes*60)));
        log("Thank you for using Rapidz' RangingGuilder!");
    }
}

 

 

 

Download:

Version 1.1 (NEWEST)

Download

 

Version 1.0

Download

 

Donations are appreiciated, if you want to donate some money please PM me smile.png

 

Please stay tuned for updates. Thread design will be made nicer soon.

Edited by Rapidz

Trying it out now.

edit: So far so good. Will post proggy.

Edited by stunning

  • Author

Trying it out now.

 

Hope you enjoy it bro :) I'm also trying to get a proggy right now myself, so if you could send me a pic of yours too that would be nice.

  • Author

cool we have on already tho tongue.png

 

The others are very slow, buggy and has no paint lol. :D

 

This is a very big improvement to anybody who wanted an upgrade.

Going 20k+ right now on a test account with 44 ranged. Tried Aero's and the SDN and they give approx 12-16k.

Hello, I was getting 33k / hr at 90 range! amazing. One little problem so far: I got a talking random while that bulls eye interface was up and it was stuck there until i manually closed the interface., then the client was able to handle the random properly. I dont know if you can implement a way to tell the client to not solve the random UNTIL the interface is closed, if you could that could be one solution to the problem.

Edited by stunning

  • Author

Aren't the ban rates here VERY high?

 

Well its different from person to person, I've botted Ranging Guild since 08 on EOC (never been banned) and I've botted ranging guild on 07 for some weeks and not banned (botting 10 hours a day) but I've heard about people who gets banned in 1 day (don't know if its true, but very unlikely) this bot has a small antiban though so you shouldn't be scared to be banned from it.

  • Author

Hello, I was getting 33k / hr at 90 range! amazing. One little problem so far: I got a talking random while that bulls eye interface was up and it was stuck there until i manually closed the interface., then the client was able to handle the random properly. I dont know if you can implement a way to tell the client to not solve the random UNTIL the interface is closed, if you could that could be one solution to the problem.

Thank you for submitting this problem, I will look into it and add it into next version. I think its a problem with the bot though since the randoms only get detected if they can get seen on the screen, correct me if I'm wrong.

yep got banned 5 days ago xs

 

As mentioned, it depends on script and on where you bot etc, its less likely to be banned in high populated worlds as world 1 / 2.

so after it uses up all the arrows equipped, it requips all the arrows in my inv and bugs out. and i just stand there.

getting this 

[ERROR][07/06/13 03:35:01 PM]: Error on executing script worker!
java.lang.ArrayIndexOutOfBoundsException: -1
at org.osbot.script.rs2.ui.Inventory.interactWithSlot(pi:1012)
at org.osbot.script.MethodProvider.selectInventoryOption(ki:933)
at org.osbot.script.MethodProvider$selectInventoryOption.callCurrent(Unknown Source)
at RangeGuilder.onEquip(RangerGuilder.groovy:125)
at RangeGuilder.onLoop(RangerGuilder.groovy:66)
at org.osbot.x.run(qm:182)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
  • Author

 

so after it uses up all the arrows equipped, it requips all the arrows in my inv and bugs out. and i just stand there.

getting this 

[ERROR][07/06/13 03:35:01 PM]: Error on executing script worker!
java.lang.ArrayIndexOutOfBoundsException: -1
at org.osbot.script.rs2.ui.Inventory.interactWithSlot(pi:1012)
at org.osbot.script.MethodProvider.selectInventoryOption(ki:933)
at org.osbot.script.MethodProvider$selectInventoryOption.callCurrent(Unknown Source)
at RangeGuilder.onEquip(RangerGuilder.groovy:125)
at RangeGuilder.onLoop(RangerGuilder.groovy:66)
at org.osbot.x.run(qm:182)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)

 

 

I will also look into this thank you, I'll update the script tomorrow when I have time guys, please bare with it though as this is the first release! I've been botting for 1 hour now though and it re-equips arrows and continues just fine, hmm.

 

Also again this is still probably the most stable RangeGuilding script atm so don't be scared of these small bugs, I've studied the code of all the other available rangingguild scripts and they're way less stable.

 

Okay so I just double-tested the re-equip feature and it worked completely fine, I don't know why it bugged out for you.

Edited by Rapidz

i had 126 arrows equipped not 100, tried it with 100 and its running fine now.

at 34k xp/hour with 75 range and d bow. good job on the script!

  • Author

i had 126 arrows equipped not 100, tried it with 100 and its running fine now.

at 34k xp/hour with 75 range and d bow. good job on the script!

 

Oh yeah, you shouldn't wear weird numbers, keep it at like 100, 200, 1000 etc. smile.png

 

Thanks, glad you like it smile.png

 

Would appreiciate some proggys if anyone gets some big ones like couple hours :)

Just tested it out again, ran flawless for 1 and an half hour and got me from lvl 44 to 51 ranged. Hope you all enjoy it too.

Edited by Rapidz

Guest
This topic is now closed to further replies.

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.