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.

Leaderboard

Popular Content

Showing content with the highest reputation on 04/10/13 in Posts

  1. Our next updates for the bot will include a variety of bug fixes with the script loader. We will also be adding support for programming scripts officially in Java. Our new hooks will include all the necessary combat hooks such as current health, max health, splat damages, etc. We will also be adding hooks for skill levels and experience. One of the most needed updates however is the addition of anti-randoms to the bot. We will be implementing a few ant-randoms in the bot itself and they will be automatically updated by the remote server. Maxi is almost complete with the new interface debugger he designed. This will be implemented directly onto the bot for maximum compatibility. We're also going to fix some bugs with tabs (which currently aren't configured correctly). I hope you all stay excited for the next OSBot BETA update which should be coming tomorrow night. Thanks, Laz and the OSBot Team.
  2. ^ 6/10. No Sig or icon. :c
  3. 1 point
    IronPowerminer Mines Iron ore and drops it on the ground. Changelog V1.2 - Added Smoking rock random support and picking up pickheads V1.1 - Added more ID's and improved the speed V1.0 - Release Script: import java.awt.* import org.osbot.script.Script import org.osbot.script.ScriptManifest import org.osbot.script.mouse.* import org.osbot.script.rs2.* import org.osbot.script.rs2.map.Position import org.osbot.script.rs2.model.GroundItem import org.osbot.script.rs2.model.Item import org.osbot.script.rs2.model.PrimaryObject import org.osbot.script.rs2.model.RS2Object import org.osbot.script.rs2.ui.* @ScriptManifest(name = "IronPowerminer", author="Xerion", version = 1.3D, info = "IronPowerminer") class IronPowerminer extends Script { enum State { START, IDLE, MINING, DROP, BANK, BANKING } private final Color color1 = new Color(0.1f, 0.1f, 0.1f, 0.7f); private final Color color2 = new Color(255, 0, 0); private final Font font1 = new Font("Calisto MT", 0, 16); private final Font font2 = new Font("Calisto MT", 0, 11); int[] pickhandle = [480,482,484,486,488,490]; int[] iron = [ 11955, 11956, 11954,2092,2093,5773,5774,5775,6943,6944,9717,9718,9719,14856,14857,14858,14913,14914,19000,19001,19002,21281,21282,21283,29222,29223,29221,32441,32442,32443,32451,32452,37307,37308,37309]; int[] items = [480,482,484,486,488,490,1265 , 1267, 1269, 1271,1273,1275,1617,1619,1621,1623] def timeout = null; def starttime = null; def Newantiban = null; def MinedOre = 0; boolean Antibans = true State state = State.START; PrimaryObject currentRock = null; @Override void onStart() { starttime = System.currentTimeMillis(); Newantiban = System.currentTimeMillis() + random(10000, 20000); def th = Thread.start { antiban() } if (client.getInventory().isFull()){ state = State.DROP; } else { state = State.IDLE; } } @Override int onLoop() { if (!randoms()){ switch(state) { case State.IDLE: return mine(); case State.MINING: return check(); case State.DROP: return drop(); } } return 1000 + gRandom(400, 800); } int mine() { currentRock = closestObject(iron); if (currentRock != null) { if (selectEntityOption(currentRock,false,"Mine")) { timeout = Calendar.instance.timeInMillis / 1000 state = State.MINING; } } return 100; } int check(){ if (!currentRock.exists() || timeout + 15 < Calendar.instance.timeInMillis / 1000){ if (!client.getInventory().isFull()){ state = State.IDLE; return 500 + random(100, 1000) } else { if (currentTab() != Tab.INVENTORY){ openTab(Tab.INVENTORY); } else{state = State.DROP; return 500 + random(100, 1000)} } } return 100 } boolean randoms(){ //Losing Pickhandle if (closestGroundItem(pickhandle) != null){ selectEntityOption(closestGroundItem(pickhandle),"Take") return true } return false } int drop(){ if (client.getInventory().contains(440)){ selectInventoryOption(client.getInventory().getSlotForId(440),"drop"); return random(200,450) } else { state = State.IDLE; } return 1000 + random(500,800) } void onMessage(String message){ if ("You manage to mine some iron." == message){ MinedOre++ } else if (message == "This rock contains iron." || message == "There is no ore currently available in this rock."){ state = State.IDLE; } } @Override void onExit(){ Antibans = false } @Override void onPaint(Graphics g) { g.setColor(color1); g.fillRect(1, 51, 209, 94); g.setFont(font1); g.setColor(color2); g.drawString("IronPowerminer", 7, 76); g.setFont(font2); g.drawString("Time: " + format(System.currentTimeMillis() - starttime), 7, 130); g.drawString("Ore: Iron(${MinedOre})", 7, 100); g.drawString("State: ${state}", 7, 115); } String format(final long time) { final StringBuilder t = new StringBuilder(); final long total_secs = time / 1000; final long total_mins = total_secs / 60; final long total_hrs = total_mins / 60; final int secs = (int) total_secs % 60; final int mins = (int) total_mins % 60; final int hrs = (int) total_hrs % 24; if (hrs < 10) { t.append("0"); } t.append(hrs); t.append(":"); if (mins < 10) { t.append("0"); } t.append(mins); t.append(":"); if (secs < 10) { t.append("0"); } if (secs < 0){ t.append("0") } else{ t.append(secs); } return t.toString(); } void antiban(){ while(Antibans){ if (state == State.MINING && Newantiban < System.currentTimeMillis()){ int Anti = random(0 , 3) switch(Anti){ case 0: log("Antiban: Move mouse") moveMouseOutsideScreen() Newantiban = System.currentTimeMillis() + random(40000, 120000) break; case 1: log("Antiban: Move camera") client.moveCameraToEntity(currentRock) Newantiban = System.currentTimeMillis() + random(40000, 120000) break; case 2: log("Antiban: Open Skills tab") if (currentTab() != Tab.SKILLS){ openTab(Tab.SKILLS); } Newantiban = System.currentTimeMillis() + random(40000, 120000) break; case 3: log("Antiban: Open Friends tab") if (currentTab() != Tab.FRIENDS){ openTab(Tab.FRIENDS); } Newantiban = System.currentTimeMillis() + random(40000, 120000) break; } } Thread.sleep(1000) } } }
  4. 1 point
    This is based of maxi's draynor chopper! This is my first script. Start in Catherby bank with a axe equipped as I have not learned that far slowly learning! Tested for 1 hour got 1 random and 800 oak logs! 2 problems with script is it hasn't got random support other then moving of the camera will add more on a later date!, Banks the axe @ScriptManifest(name = "PPOaker", author = "PengPhin", version = 1.0D)class PPOaker extends Script { int bankId = 2213 int[] treeIds = [3037, 10083, 13413, 1281] enum State { IDLE, CHOPPING, WALK_TO_BANK, PIN, BANKING, WALK_TO_OakS } def state = State.IDLE def currentTree = null void onStart() { if (client.getInventory().isFull()) state = State.WALK_TO_BANK } int onLoop() { switch (state) { case State.IDLE: return onIdle() case State.CHOPPING: return onChopping() case State.WALK_TO_BANK: return walkToBank() case State.BANKING: return bank() case State.WALK_TO_OakS: return walkToOaks() } return 3000 + random(2000) } int onIdle() { if (client.getInventory().isFull()) { state = State.WALK_TO_BANK //client.moveCameraToEntity(closestObject(bankId)) return 800 + gRandom(800, 400) } currentTree = closestObject(treeIds) if(currentTree != null) { log("Closest Oak tree : (${currentTree.getX()}, ${currentTree.getY()})") selectEntityOption(currentTree, "Chop down", "Oak") if (random(5) == 0) { client.moveCameraToEntity(currentTree) sleep(700 + gRandom(500, 200)) } } return 1500 + gRandom(2000, 500); } int onChopping() { if (client.getInventory().isFull()) { state = State.WALK_TO_BANK //client.moveCameraToEntity(closestObject(bankId)) return 800 + gRandom(800, 400) } if (random(30) == 0 && currentTree != null && currentTree.exists()) client.moveCameraToEntity(currentTree) if (currentTree == null) { state = State.IDLE log("Chopped down Oak!") return 500 + gRandom(1000, 500) } if (!currentTree.exists()) { state = State.IDLE currentTree = null log("Chopped down Oak!") } return 500 + gRandom(1000, 500) } int walkToBank() { selectEntityOption(closestObject(bankId), "Bank", "Bank booth") if (myX() <= 2756 && myX() >= 3429 && myY() >= 2809 && myY() <= 3435) { return 800 + gRandom(500, 200) } sleep(1000 + gRandom(300, 50)) if (client.getBank().isOpen()) state = State.BANKING return 500 + gRandom(1000, 400) } int bank() { client.getBank().depositAllExcept() state = State.WALK_TO_OakS def tree = closestObject(treeIds) //if (tree != null) //client.moveCameraToEntity(tree) return 500 + gRandom(700, 300) } int walkToOaks() { log("Walking to Oak Trees") currentTree = closestObject(treeIds) if (currentTree != null) { log("Closest Oak tree : (${currentTree.getX()}, ${currentTree.getY()})") selectEntityOption(currentTree, "Chop down", "Oak") client.moveCameraToEntity(currentTree) } return 2000 + gRandom(800, 300) } void onMessage(String message) { if (message == "You swing your axe at the tree.") { log("Chopping down Oak tree!") state = State.CHOPPING } else if (message == "You get some logs.") { state = State.IDLE } else if (message == "Your inventory is too full to hold any more logs.") { state = State.WALK_TO_BANK } } } Please let me know what you think!
  5. Hello everyone, i love to help out our community and as such i am willing to teach all users on the forum if they want, how to use java. I will be starting with the most basic form of java you could imagine and day by day progress to more and more advanced techniques. Below find a list of the tutorials so far: Lesson 1 - Getting Started - Post 1 Lesson 2 - Introduction - Post 2 Lesson 3 - Variables - Post 3 Lesson 1 Getting Started. In this tutorial we will be downloading the java development kit and a program called netbeans.These two things are going to allow you to jump right in and start learning Java.So the first thing you want to do is use a search engine such as google. Search for JDK the first result should be something along the lines of Java SE Downloads @ oracle.com click on that link. You will see the below: You want to click on the one that says NetBeans. ( JDK + Netbeans ) After clicking on that image/sqaure box you will come to a download page. Cick on the radio circle button that read "Accept License Agreement " then click on the appropriate installer for your operating system. Once its finished downloading its the usual installer, choose the location and accept the terms an conditions. So once you have that installed and you know it set up correctly you can move onto the next step. We will need to set up something called Environment Variables. The way were going to do this is by clicking on Start then right click on computer to bring up a menu and then click on Properties. Once a new window opens up your going to click on 'Advanced System Settings' on the left side of your new window usually the bottom option in a list of 4 or 5. Another window around half the size of the last one will open and be called System Properties. If you on windows XP you will be on the first Tab called computer name and will need to click on the tab named Advanced. Anyone on xp or above should already be on the advanced tab. So click on a button near the bottom of the advanced tab called ' environment variables ' This will open an even smaller new window. What were doing here is providing java with the path to where it was installed, this basically means that when you run a java program it knows where to find the compiler and other nice things java can do. So now leaving what we just opened aside for a moment dont close any of the windows. Click on start and click computer again. and go to the location i specify now: Computer >local disk > program files > Java > JDK 1.7? > bin. now make sure you click on program files not the x86 one and make sure if you have multiple jdk installs that you click on the latest version. If you have windows 7 you can right click on the address bar at the top and click ' copy address as text ' if you don't have windows 7 right click on any file in the bin folder and click on properties. In the general tab you will see the location of the file. You want to highlight this and copy it by either highlighting it then right clicking and selecting copy or use the short cut after highlighting it Ctrl+C Once you do that you will want to go back to your Environment variables window we opened just a moment ago and click on the New button. ( the top one ). In the variable name box type PATH in capitals. Then right click in the box called Variable Name and select paste to put in the location of the bin folder. You can then hit ok, ok, ok to close all three windows. So now that's all done we are going to test the installation of java and your Environment variables. Click on start once more and open up notepad (can be found under the Accessories folder ) Once its opened copy and paste the code below directly into notepad. Don't worry about whats going on in the code at all you will learn all this in the tutorials to come. public class Test { public static void main (String [] args) { System.out.println("Hello World!"); }} So now you should have this in your notepad file? great. Click on File at the top and select Save As. In the file name box type "Test.java" Yes do include the " " the parentheses are to make sure that the file is saved as a .java file and not as a .txt file. Just save it to your desktop for now so you can find it easily. So now you should have a little rectangle on your desktop with Test.java below it. Excellent! Now on to the next part, Press on the keyboard the windows key + R this will being up the run. Type into the open box 'cmd' without the single ' ' ' ' ' on each end. Now a big black box will come up named the command prompt. The last line in the box should say C:UsersYourUserName where YourUserName is your... you got it. We need to change the directory from your name to the desktop so type ' cd desktop ' you will see the directory change to your desktop. Now type ' javac Test.java ' the cursor will flash for a few seconds and then just show the directory once more if it has compiled correctly. What the compiler does is turn our code into a language the computer can understand and use. You will notice you have two files on your desktop now one called Test.java and now another called Test.class if you want you can open that in notepad and you will see all the weird symbols the computer uses. So now we have our .class file we can now run our program by click back onto the black cmd window and typing in ' java Test ' don't forget the capital T. We can see it now prints out Hello World! if you don't see this either because you changed the text or you get any errors or something like java does not recognized i recommend you go back and make sure you path variable is correct and your JDK is fully installed and if you get error messages such as cannot find symbol you should make sure you copied the code above exactly as i typed it with capital letters in the right place and symbols in the correct place. Thats it for this tutorial, in the next lesson we will be doing an introduction to netbeans and going over the very basics of java. Like this post if you followed it fine or liked what you read so far. i will post the next one tomorrow
  6. Suggestions 4/10: The bot currently gets stuck sometimes when it enters the cave.. You need to find a fix to make sure it runs to the middle each & every time, also enabling special attacks would be pretty cool & somewhat also an addition to anti-ban. The Paint covers up the whole inventory so that I can't check my stats either, I'd like it so if you could see through the sides or something..
  7. 1 point
    Instead of criticizing Peter, you guys should thank him for offering a free script. He never said it was flawless. He isn't even finished with it.
  8. I'm currently aware of the bug where the client stops outside the cave and am working on a way to fix it, please bear with me for awhile while i get this issue resolved.
  9. update: import java.awt.Graphics;import java.awt.Image;import java.io.IOException;import java.net.URL;import java.util.Objects;import javax.imageio.ImageIO;import org.osbot.script.Script;import org.osbot.script.ScriptManifest;import org.osbot.script.rs2.model.RS2Object;import org.osbot.script.rs2.ui.Tab;@ScriptManifest(name = "XenoFightCaves", author="XenoTools", version = 1.12D, info = "Recent Update: More stable release, updated with anti-ban.")public class XenoFightCaves extends Script { private static enum BotState { INITIALIZING, GOING_TO_CAVE, AFK_IN_CAVE, ERROR }; private BotState state; private static final int CAVE_ENTRANCE = 9356, CAVE_EXIT = 9357; private static long START_TIME; Position fix = new Position(2439, 5169, 0); int sAttackEXP, sDefenceEXP, sStrengthEXP, cAttackEXP, cDefenceEXP, cStrengthEXP, hAttackEXP, hDefenceEXP, hStrengthEXP, gAttackEXP, gDefenceEXP, gStrengthEXP, sTokkul, cTokkul, hTokkul, gTokkul, training; RS2Object CAVE_ENTRANCE_OBJ, CAVE_EXIT_OBJ; Image background = getImage("http://i48.tinypic.com/289diqq.png"); private Image getImage(String url) { try { return ImageIO.read(new URL(url)); } catch (IOException e) { return null; } } @Override void onPaint(Graphics g) { g.drawImage(background, 548, 205, null); g.drawString("Hourly", 638, 255); g.drawString("Current", 633, 296); g.drawString(format(System.currentTimeMillis() - START_TIME), 615, 345); g.drawString(format(System.currentTimeMillis() - START_TIME), 615, 385); g.drawString("State: ${state}", 10, 50); //g.drawString("Tokkul", 623, 433); } @Override public void onStart() { START_TIME = System.currentTimeMillis(); state = BotState.INITIALIZING; log("Thanks for using a script powered by: XenoTools"); } @Override public int onLoop() { log("Attempting to handle"); state = setState(); try { return handleState(state); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } log("Didn't handle"); return 1000; } BotState setState() { log("setting the state"); if(client.getMyPlayer().getPosition().getX() < 2800) return BotState.GOING_TO_CAVE; if(client.getMyPlayer().getPosition().getX() > 2800) return BotState.AFK_IN_CAVE; return BotState.ERROR; } int handleState(BotState state) throws InterruptedException { switch(state) { case BotState.GOING_TO_CAVE: CAVE_ENTRANCE_OBJ = getClosestObject(CAVE_ENTRANCE); if(CAVE_ENTRANCE_OBJ != null) { selectEntityOption(CAVE_ENTRANCE_OBJ, "Enter"); return 1500; } return 500; case BotState.AFK_IN_CAVE: doAntiRandom(random(65)); return 5000; case BotState.ERROR: log("error"); return 5000; } return 1000; } void doAntiRandom(int id) throws InterruptedException { switch(id) { case 1: case 4: case 13: log("Antiban: Move mouse"); moveMouseOutsideScreen(); break; case 2: case 27: case 16: log("Antiban: Open Skills tab"); if (currentTab() != Tab.SKILLS) openTab(Tab.SKILLS); break; case 3: case 19: case 29: log("Antiban: Open Friends tab"); if (currentTab() != Tab.FRIENDS) openTab(Tab.FRIENDS); break; } } private RS2Object getClosestObject(int id) { RS2Object o = null; for (RS2Object obj : client.getCurrentRegion().getObjects()) if (obj != null && obj.getId() != null && obj.getId() == id) if (o == null || distance(obj) < distance(o)) o = obj; return o; } String format(final long time) { final StringBuilder t = new StringBuilder(); final long total_secs = time / 1000, total_mins = total_secs / 60, total_hrs = total_mins / 60; final int secs = (int) total_secs % 60, mins = (int) total_mins % 60, hrs = (int) total_hrs % 24; if (hrs < 10) t.append("0"); t.append(hrs); t.append(":"); if (mins < 10) t.append("0"); t.append(mins); t.append(":"); if (secs < 10) t.append("0"); if (secs < 0) t.append("0"); else t.append(secs); return t.toString(); }}
  10. 10/10 for being the only person in a group and nice sig and picture
  11. To develop decent anti randoms, you need to get a lot of ids. object/npcs/interfaces I doubt you will get any post with enough ids to make an anti-random. Best way is getting everything yourself.
  12. 1 point
    We are getting rid of them one by one, but have a lot of other things to do as well and only have so much time. This is a BETA for a reason and we're getting there, the client is receiving improvement every day. We won't make our client open source. Something with the fact that there is someone who is very good at taking other people their work and claim to have written it himself afterwards (you know who I'm talking about).
  13. It's not a matter of learning. If anything, Groovy is a step backward from Java. Groovy is like the Javascript engine raped the Java compiler and produced a semi-dysfunctional baby.

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.