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.

Maxi

Developer
  • Joined

  • Last visited

Everything posted by Maxi

  1. try un-installing then re-installing the bot, helped me when I had this issue. gl mate didnt work i did that roughly 10 times.i got it working earlier,but it wasnt because of that.3 days is what they needed to fix the issue i guess.others had the same problem.im just glad that it works.took a while though We didn't 'fix' anything. Whatever the issue was, we didn't release or change anything.
  2. Please make sure you have read the first post before posting. Thanks for the help so far. I'm currently working on the Beehive and after that I only have the Lost & Found and Maze random left. Any accounts in those are appreciated much!
  3. They use manual bans, data mining software to detect behavioural patterns, investigate reported accounts and flag accounts with excessive online time. They also analyze flow of money and flag accounts that have suspicious trading behaviour, i.e. gold farmers trading to mules and vice versa or selling to customers. So in short to avoid those bans: avoid JMods, avoid being reported (cleverbot, world hopping, other cool antiban stuff), use scripts that are not widely used or have a large variety in actions so they end up doing things not in the same sequential manner time after time, use breaks whilst botting, give your account rest every day and cover up your transactions by trading something with at least some value back when you're doing high value trades.
  4. I reported a lost & found stuck for fishing if that counts. my bot only ran around trying to fish but there were no pots so it couldn't and eventually lead to my 2 day ban. can post a pic of banned account if needed. ~ edit wasn't needed but here's the picture http://gyazo.com/eca20ddc500ac35577c354aa8982663d This is not the lost & found random. The lost & found random is with the abyssal appendages (four of them) which you get when doing any kind of teleportation in runescape. You are talking about a script specific fail that I can't help with, you'll have to report the bug to the script writer.
  5. http://osbot.org/forum/topic/17862-random-busting-week/
  6. Dear community, I want to give you an idea where OSBot 2 is at. First of all I want to let you know that OSBot 2 is rewritten from the ground up to tackle some problems that you as a community pointed out. Things like CPU usage increasing over time in a scale of hours, something that never was a huge problem to most users but could be annoying for some. Besides that, increased overall performance is something everyone always likes to see. By writing an entire new core and taking time to do so, the client will score better at those points. At the moment, there is an abstract core written which is extendable for the most part to write implementations of other server revisions, such as RS3. Whether we will do so or not doesn't matter, it will be reusable. The entire GUI of the current OSBot was written using Swing. For OSBot 2 we are using JavaFX. JavaFX might not be as developed in certain areas as Swing, however those area's won't affect us. Besides that, JavaFX performs faster and gives more reliable output when it comes to exceptions. Not to mention, I personally and many others agree, I think that the look and feel of JavaFX is far better and promising than Swing. At the moment, a lot of the main GUI features are done. The client loads the applet, injects the client, hacks the canvas and such. So from here on, our first focus will be towards designing and organizing the new API. The API will have the same features as seen in the current OSBot and those features will be ported over. This is not a very hard job, most of it will just be refactoring. Other new features will remain secret and will be revealed as progress proceeds. Besides the API, which its functions will not have to be rewritten, we are planning and thinking about a second scripting engine. The current scripting engine is completely sequential in a blocking fashion. The new scripting engine, don't worry the old one won't disappear, we want to give a fully event driven asynchronous environment where you will dispatch tasks based on events and have control over the queue by using policies for tasks. We are looking forward writing this as Laz and I love writing new and fancy stuff. There are many other things that need to be done for OSBot 2, but the above is the majority. We can't give you an ETA, we don't want to stress any deadlines and instead focus on its quality. Laz has done a great job on it so far and now I'm joining him in this battle progress will speed up. I hope you had a fun read, Sincerely, OSBot.org
  7. I have made a fix for this. I would very much like to have an account stuck in this random event! Edit, another update on what has been done so far: Currently I have worked on these randoms and have improved side cases where they would break or fix them entirely as far as I could test myself: Miles, Giles and Niles: little fix to account for the possibility of the interface not containing the childs, letting it wait for them to be set and after a couple of retries restart the random handler Exp rewards should now have a fix to account for cases where you have selected an item Strange box should now have a fix to account for cases where you have selected an item Strange plant should now be prioritized again to pick the fruit, running away from combat should only occur anymore if the plant has it's attacking form Molly has some modifications made, these still need to be tested Frog cave has some modifications made to account for the rare cases where it will sit there and do nothing, this is untested and will have to be confirmed by the community as it seems this case is quite rare to encounter Drill Demon has some modifications made to it, it will no longer trigger outside the area and will be more efficient Strange plant should no longer trigger the run away from combat handler first, it will try and pick the fruit. The handler will only run away if the plant every reaches its attacking form where you get poisened and won't wait for the first hit to be dealt Things I'm still looking for are: Beehive stuck accounts Lost & found stuck accounts Accounts stuck in maze
  8. I will also need a couple of accounts in drill demon to fix the issue people are having in world 1 with it! Edit: Currently I have worked on these randoms and have improved side cases where they would break or fix them entirely as far as I could test myself: Miles, Giles and Niles: little fix to account for the possibility of the interface not containing the childs, letting it wait for them to be set and after a couple of retries restart the random handler Exp rewards should now have a fix to account for cases where you have selected an item Strange box should now have a fix to account for cases where you have selected an item Strange plant should now be prioritized again to pick the fruit, running away from combat should only occur anymore if the plant has it's attacking form Molly has some modifications made, these still need to be tested Frog cave has some modifications made to account for the rare cases where it will sit there and do nothing, this is untested and will have to be confirmed by the community as it seems this case is quite rare to encounter Things I'm still looking for are: Beehive stuck accounts Screenshots of the strange plant in all its forms with the entity debugger enabled and the mouse pointed at the strange plant Lost & found stuck accounts Account in Drill Demon: not stuck accounts, but to gather some needed information to fix the bug people encounter in highly populated area's where the sergeant wanders around sometimes grabbing other people Accounts stuck in maze
  9. Would love to have an account for that!
  10. I need pictures of the strange plant with the entity debugger enabled and the mouse on top of the strange plant in all its forms! If you come across any please post them .
  11. It's magic.
  12. I'm on this one, will squeeze a little fix in for this asap. Also, I will introduce a fix for the strange plant issue.
  13. I forgot to restart the server, my bad. Restart your client and all should be working now.
  14. The hooks have been updated. Please restart your bot client and we wish you happy botting!
  15. Hello everyone, Jagex has just updated their client to a new revision: 22 I will be running the updater and quickly test all major hooks and supply the server with the new hooks. This will hopefully take no longer than 30 minutes. Edit: The hooks have been updated. Please restart your bot client and we wish you happy botting. Edit 2: Id's for different entities have been switched up, so for example for Ande's autofigther you will have to change your setup to match the correct npc id's again. Sincerely, OSBot.org
  16. These are all script related things and have nothing to do with OSBot's random handlers. So far I have been botting nearly 24 hours and haven't come across a broken random myself. I really need accounts people !
  17. I want to stress that keeping accounts in randoms and sharing them with me will greatly speed up the process of fixing up the broken randoms!
  18. I'll need an account for this unless I encounter it myself.
  19. With a community that can give you accounts stuck in randoms why would you play for hours on end to get all the random information on one of your own accounts. Please tell me where it says you HAVE to send your account information... Lol chill out bro... It was just a question, an I didn't mean we have to send our account lmao I meant why would you need it an what do you mean why would you get all the random information on one account its the same thing as getting it on others I take it It could take me days to get a specific random, which renders it very inefficient. If I come across randoms myself I will use that, but it will take me a very long time to get the randoms and I'll possibly need randoms multiple times to verify/improve the handlers.
  20. We will be looking in to an easy solution for this, but we created random behaviour hooks for developers to cope with this. Developers using random behaviour hooks should be able to handle this, as it might be very specific based on the script. What version is this on? I encountered Drill Demon today and it solved it. Noted, I'll need an account to fix this. Alright, I'll need an account to see what's going on.
  21. Hello everyone, I will be focusing on fixing any (partially) broken random. In this thread you will be able to post what random you encountered and give a detailed description of what exactly happened. I know we have a separate thread for this, however I wanted to reach out to as many people as possible. If it's a random where you can stay in (meaning you're stuck), please stay there and share your RS account credentials with me in a private message if you feel comfortable enough to do so. Make sure you change your password to a temporary one that you change prior and post giving it out to us. Without accounts the progress of fixing broken randoms will slow so for the sake of the community and the bot, please consider leaving your accounts in randoms and share them with me! Please format in this way: Please note that any post not regarding randoms will be removed and are not asked for. Edit: Currently I have worked on these randoms and have improved side cases where they would break or fix them entirely as far as I could test myself: Miles, Giles and Niles: little fix to account for the possibility of the interface not containing the childs, letting it wait for them to be set and after a couple of retries restart the random handler Exp rewards should now have a fix to account for cases where you have selected an item Strange box should now have a fix to account for cases where you have selected an item Strange plant should now be prioritized again to pick the fruit, running away from combat should only occur anymore if the plant has it's attacking form Molly has some modifications made, these still need to be tested Frog cave has some modifications made to account for the rare cases where it will sit there and do nothing, this is untested and will have to be confirmed by the community as it seems this case is quite rare to encounter Drill Demon has some modifications made to it, it will no longer trigger outside the area and will be more efficient Strange plant should no longer trigger the run away from combat handler first, it will try and pick the fruit. The handler will only run away if the plant every reaches its attacking form where you get poisoned and won't wait for the first hit to be dealt. Also will no longer fail to pick the fruit. Things I'm still looking for are: Beehive stuck accounts Lost & found stuck accounts Accounts stuck in maze Sincerely, OSBot.org
  22. yeah i know right like ugh thats jst so damn dumb......... so mch for VIP actually freaking meaning something........ They are not getting VIP, simply unlimited tabs for a couple of days.
  23. Dear community, As the summer is coming to an end things are significantly different than at the start of OSBot almost 6 months ago. In 12 days we will celebrate our 6'th anniversary, on the 2'nd of September. Where we first had no working random events, no SDN support and lots of bugs due the immaturity of OSBot things were looking better and better as time passed and today we have come to the point where OSBot has an API with a rich variety of build in features that other bots don't support and most important a stable product. However with the experience gained over the last 6 months, we know we can improve on various factors of the client and like we announced earlier we will bring a brand new client with those improvements taken in to account from the ground up. The last 6 weeks or so were quite the different ones for me. Where I was able to devote all my attention to OSBot improving it on a daily basis, other roadblocks popped up in real life and my attention was drawn away. I've seen my grandfather die, been on a vacation with my friends and then had other private things going on absorbing my attention, drive and time. Luckily, as with everything in life, things turn around when you want them to and I've battled my way out. Because of my lack of time for OSBot some administrative things were delayed time after time. I'm sincerely sorry for everyone who was victim of this. But let's talk about something positive again. Because we want to celebrate our upcoming 6'th month anniversary we will be doing two things: The first thing we will do is give our developers a 80% cut instead of the usual 70% of the benefits made of their script over the last month to thank them for their efforts. Normally we take 30% for the administrational tasks that need to be done, but as the administrational work has slowed by my absence we will make up for that this way. Until the 2'nd of September we will give everyone unlimited tabs! This will be starting tomorrow. To conclude this thread I want to make a shout out to everyone who has been part of OSBot, whether it being from the beginning or more recently, without you OSBot would not be where it's at today. Thanks for reading, OSBot.org
  24. Maxi posted a topic in Archive
    OSBot Gilded Altar I wrote this for myself and wanted to share it as I wrote to be ready enough to be shared with others. Usually I don't make paints and add several variations to a script picked by a GUI, but I did it this time as I might be using it more often. I'm releasing this script open source, some of you might find it interesting to look through it and learn from it. For anyone else, hopefully you put it to good use and grind some bones with it. Features: Use a host or your own house Walking from Yanille bank to Yanille house and vica versa Instead of walking, use House teleport tabs or House teleport combined with a mounted Amulet of Glory in your house Choice between offering Dragon bones, Big Bones and normal bones Never ever offers bones when there are no 2 lit Incense burners Automatic door support, will work with every house setup Begin anywhere in your house, near a bank or near your portal (depending on setup) without supplies GUI: Progress report: Download JAR: http://up.ht/11Y7WUi Code: package osbot.maxi.script.gildedaltar; import org.osbot.script.Script; import org.osbot.script.ScriptManifest; import org.osbot.script.rs2.model.Item; import org.osbot.script.rs2.model.RS2Object; import org.osbot.script.rs2.skill.Skill; import org.osbot.script.rs2.ui.Spell; import org.osbot.script.rs2.utility.Area; import org.osbot.script.rs2.utility.ConditionalSleep; import java.awt.*; import java.util.List; import java.util.concurrent.TimeUnit; /** * Created with IntelliJ IDEA. * User: Maxi */ @ScriptManifest(name = "GildedAltar", author = "Maxi", version = 1.0D, info = "Offers Dragon bones, Big bones and normal bones on a Gilded Altar located in your or a friend's " + "with various transportation options.") public class GildedAltar extends Script { private DoorHandler doorHandler = null; private long startTime = 0; private int startXp = 0; private GildedAltarGUI gui = new GildedAltarGUI(); private boolean configured = false; private State state; private String host = null; private ToHouseMethod toHouseMethod; private ToBankMethod toBankMethod; private String bonesName; private static final Area WALK_AREA = new Area(2586, 3096, 2589, 3098); private static enum State { ENTER_HOUSE, TO_ALTAR, LIGHT_BURNERS, OFFER_BONES, TO_BANK, RESTOCK, TO_HOUSE, QUIT } private static enum ToHouseMethod { WALK(0, new String[] { "Tinderbox", "Marrentill" }, 25, 15), TELEPORT(1, new String[] { "Law rune", "Earth rune", "Tinderbox", "Marrentill" }, 23, 60), TELETAB(2, new String[] { "Teleport to house", "Tinderbox", "Marrentill" }, 24, 252); public int index; public String[] validItems; public int noBones; public int xp; private ToHouseMethod(int index, String[] validItems, int noBones, int xp) { this.index = index; this.validItems = validItems; this.noBones = noBones; this.xp = xp; } public static ToHouseMethod forIndex(int index) { for (ToHouseMethod method : ToHouseMethod.values()) { if (index == method.index) return method; } return null; } } private static enum ToBankMethod { WALK(0), GLORY(1); public int index; private ToBankMethod(int index) { this.index = index; } public static ToBankMethod forIndex(int index) { for (ToBankMethod method : ToBankMethod.values()) { if (index == method.index) return method; } return null; } } @Override public void onStart() { doorHandler = new DoorHandler(); doorHandler.provideBot(bot); gui.setVisible(true); } @Override public int onLoop() throws InterruptedException { if (!gui.started) return 10; if (!configured) { configure(); } scan(); log("State = " + state.toString()); switch (state) { case ENTER_HOUSE: return enterHouse(); case TO_ALTAR: return toAltar(); case LIGHT_BURNERS: return lightBurners(); case OFFER_BONES: return offerBones(); case TO_BANK: return toBank(); case RESTOCK: return restock(); case TO_HOUSE: return toHouse(); case QUIT: log("Something went wrong, shutting down script"); return -1; } return -1; } private void configure() { if (gui.useHostCheckbox.isSelected()) { host = gui.hostNameTextField.getText(); } else { host = null; } toHouseMethod = ToHouseMethod.forIndex(gui.toHouseMethodComboBox.getSelectedIndex()); toBankMethod = ToBankMethod.forIndex(gui.toBankMethodComboBox.getSelectedIndex()); bonesName = (String) gui.boneTypeComboBox.getSelectedItem(); startTime = System.currentTimeMillis(); startXp = client.getSkills().getExperience(Skill.PRAYER); configured = true; } private int toHouse() throws InterruptedException { switch (toHouseMethod) { case WALK: return enterHouse(); case TELEPORT: return teleportToHouse(); case TELETAB: return teleportToHouseTab(); default: log("No proper to house method found, shutting down..."); return -1; } } private int toBank() throws InterruptedException { switch (toBankMethod) { case WALK: return exitHouse(); case GLORY: return useMountedGlory(); default: log("No proper to bank method found, shutting down..."); return -1; } } private int exitHouse() throws InterruptedException { setRunning(true); if (isInHouse()) { RS2Object portal = closestObjectForName("portal"); if (portal != null) { if (!doorHandler.handleNextObstacle(portal)) { portal.interact("enter"); } } else { warn("Could not find entry portal!"); } } else { return 10 + gRandom(10, 10); } return 10 + gRandom(10, 10); } private int teleportToHouse() throws InterruptedException { closeOpenInterface(); if (magicTab.castSpell(Spell.HOUSE_TELEPORT)) { waitForHouse(); return 10 + gRandom(10, 10); } else { return 10 + gRandom(10, 10); } } private int teleportToHouseTab() throws InterruptedException { closeOpenInterface(); if (client.getInventory().interactWithName("Teleport to house", "Break")) { waitForHouse(); return 10 + gRandom(10, 10); } else { return 10 + gRandom(10, 10); } } private void waitForHouse() throws InterruptedException { new ConditionalSleep(5000) { @Override public boolean condition() { return client.getValidInterfaces()[399]; } }.sleep(); new ConditionalSleep(10000) { @Override public boolean condition() { return !client.getValidInterfaces()[399]; } }.sleep(); } private boolean restockLawRunes() throws InterruptedException { Item lawRune = client.getBank().getItemForName("Law rune"); if (lawRune != null) { return client.getBank().withdrawX(lawRune.getId(), 100); } else { log("You have no law runes left in your bank or inventory, shutting down..."); return false; } } private boolean restockEarthRunes() throws InterruptedException { Item earthRune = client.getBank().getItemForName("Earth rune"); if (earthRune != null) { return client.getBank().withdrawX(earthRune.getId(), 100); } else { log("You have no earth runes left in your bank or inventory, shutting down..."); return false; } } private boolean restockTabs() throws InterruptedException { Item tab = client.getBank().getItemForName("Teleport to house"); if (tab != null) { return client.getBank().withdrawX(tab.getId(), 100); } else { log("You have no law runes left in your bank or inventory, shutting down..."); return false; } } private boolean restockTeleportSupplies() throws InterruptedException { switch (toHouseMethod) { case TELEPORT: if (!client.getInventory().contains("Law rune") && !restockLawRunes()) { return false; } if (!client.getInventory().contains("Earth rune") && !restockEarthRunes()) { return false; } break; case TELETAB: if (!client.getInventory().contains("Teleport to house") && !restockTabs()) { return false; } break; } return true; } private boolean hashAllRequiredSupplies() { if (client.getInventory().getAmount("Tinderbox") != 1) { log("Too little or too many tinderboxes in inventory..."); return false; } switch (toHouseMethod) { case TELEPORT: if (!client.getInventory().contains("Law rune")) return false; if (!client.getInventory().contains("Earth rune")) return false; break; case TELETAB: if (!client.getInventory().contains("Teleport to house")) return false; break; } if (client.getInventory().getAmount("Marrentill") != 2) { return false; } if (client.getInventory().getAmount(bonesName) < toHouseMethod.noBones) { return false; } return true; } private boolean restockMarrentills() throws InterruptedException { int curAmount = (int) client.getInventory().getAmount("Marrentill"); int needed = 2 - curAmount; if (needed < 0) { int toStore = curAmount - 2; for (; toStore > 0; ) { client.getBank().deposit1(client.getInventory().getItemForName("Marrentill").getId()); sleep(5 + gRandom(10, 5)); } } else { Item marrentil = client.getBank().getItemForName("Marrentill"); if (marrentil != null) { for (; needed > 0;) { if (client.getBank().withdraw1(marrentil.getId())) { needed--; sleep(5 + gRandom(10, 5)); } } } else { log ("We ran out of marrentills, shutting down..."); return false; } } return true; } private boolean restockTinderbox() throws InterruptedException { if (!client.getInventory().contains("Tinderbox")) { Item tinderBox = client.getBank().getItemForName("Tinderbox"); if (tinderBox != null) { client.getBank().withdraw1(tinderBox.getId()); } else { log("You have no tinderbox in your bank or inventory, shutting down..."); return false; } } else if (client.getInventory().getAmount("Tinderbox") > 1) { Item tinderBox = client.getInventory().getItemForName("Tinderbox"); int toStore = (int) client.getInventory().getAmount("Tinderbox") - 1; if (tinderBox != null) { client.getBank().depositX(tinderBox.getId(), toStore); } } return true; } private boolean restockBones() throws InterruptedException { if (client.getInventory().getAmount(bonesName) < toHouseMethod.noBones) { Item bones = client.getBank().getItemForName(bonesName); if (bones != null) { client.getBank().withdrawAll(bones.getId()); } else { log("We ran out of " + bonesName + ", shutting down..."); return false; } } return true; } private int restock() throws InterruptedException { if (client.getBank().isOpen()) { client.getBank().depositAllExcept(toHouseMethod.validItems); if (hashAllRequiredSupplies()) return 10 + gRandom(10, 10); if (!restockTeleportSupplies()) return -1; if (!restockTinderbox()) return -1; if (!restockMarrentills()) return -1; if (!restockBones()) return -1; if (client.getInventory().contains(toHouseMethod.validItems)) return 10 + gRandom(10, 10); else return 10 + gRandom(10, 10); } else { if (hashAllRequiredSupplies()) return 10 + gRandom(10, 10); else { RS2Object bank = closestObjectForName("Bank booth"); if (bank != null) { if (bank.interact("Bank")) { new ConditionalSleep(2000) { @Override public boolean condition() { return client.getBank().isOpen(); } }.sleep(); } return 100 + gRandom(20, 50); } else { walk(WALK_AREA, 1); return 10 + gRandom(10, 10); } } } } private int useMountedGlory() throws InterruptedException { RS2Object glory = closestObjectForName("Amulet of Glory"); if (glory != null && !doorHandler.handleNextObstacle(glory)) { this.walk(glory, false, 6, true, false); client.moveCameraToEntity(glory); client.rotateCameraPitch(20); new ConditionalSleep(5000) { @Override public boolean condition() { return !myPlayer().isMoving(); } }.sleep(); if (glory.interact("Rub")) { if (!new ConditionalSleep(7000) { @Override public boolean condition() { return client.getValidInterfaces()[234]; } }.sleep()) { log("Glory interface did not show up within 7 seconds.. retrying"); return 5 + gRandom(5, 5); } else { if (client.getInterface(234).getChild(1).interact()) { new ConditionalSleep(5000) { @Override public boolean condition() { return !isInHouse(); } }.sleep(); return 5 + gRandom(5, 5); } else { return 50 + gRandom(50, 50); } } } else { if (client.getValidInterfaces()[234]) { if (client.getInterface(234).getChild(1).interact()) { new ConditionalSleep(5000) { @Override public boolean condition() { return !isInHouse(); } }.sleep(); return 5 + gRandom(5, 5); } else { return 50 + gRandom(50, 50); } } return 50 + gRandom(50, 50); } } else { log("Error with finding/walking glory"); return 100 + gRandom(100, 100); } } private int offerBones() throws InterruptedException { client.rotateCameraPitch(67); new ConditionalSleep(5000) { @Override public boolean condition() { return !myPlayer().isMoving(); } }.sleep(); RS2Object altar = closestObjectForName("Altar"); if (altar != null) { final int slot = client.getInventory().getSlotForName(bonesName); if (slot < 0) return 10 + gRandom(10, 10); client.getInventory().interactWithName(bonesName, "Use"); sleep(30 + gRandom(20, 20)); altar.interact("Use", true); new ConditionalSleep(1200) { @Override public boolean condition() { return client.getInventory().getItems()[slot] == null; } }.sleep(); return 10 + gRandom(20, 20); } else { log("Couldn't find altar, shutting down..."); return -1; } } private int lightBurners() throws InterruptedException { client.rotateCameraPitch(67); List<RS2Object> burners = closestObjectListForName("Incense burner"); for (final RS2Object burner : burners) { for (String s : burner.getDefinition().getActions()) { if (s != null && s.toLowerCase().contains("light")) { if (burner.interact("Light", 9, false)) { new ConditionalSleep(1000) { @Override public boolean condition() { return !burner.exists(); } }.sleep(); return 100 + gRandom(100, 100); } else return 10 + gRandom(10, 10); } } } return 10 + gRandom(10, 10); } private int toAltar() throws InterruptedException { final RS2Object altar = closestObjectForName("Altar"); if (altar != null && distance(altar) > 2) { if (!doorHandler.handleNextObstacle(altar)) { this.walk(altar, false, 2, true, false); new ConditionalSleep(2000) { @Override public boolean condition() { return distance(altar) <= 2; } }.sleep(); } else { return 400 + gRandom(100, 100); } } return 100 + gRandom(100, 100); } private int enterHouse() throws InterruptedException { if (client.getInterface(232) != null && client.getInterface(232).getChild(1).isVisible() && client.getInterface(232).getChild(1).getMessage().equalsIgnoreCase("go to your house")) { if (host == null) { if (client.getInterface(232).getChild(1).interact()) { waitForHouse(); } } else { client.getInterface(232).getChild(3).interact(); if (new ConditionalSleep(5000) { @Override public boolean condition() { return client.getInterface(137) == null || !client.getInterface(137).isVisible(); } }.sleep()) { type(host); waitForHouse(); } else { return 200 + gRandom(50, 50); } } return 3000 + gRandom(600, 200); } setRunning(true); RS2Object portal = closestObjectForName("portal"); if (portal != null) { if (!doorHandler.handleNextObstacle(portal)) { portal.interact("enter"); } } else { warn("Could not find entry portal!"); } return 600 + gRandom(300, 100); } private void scan() { if (state == State.OFFER_BONES) { if (client.getInventory().contains(bonesName) && isInHouse()) { List<RS2Object> burners = closestObjectListForName("Incense burner"); if (!burners.isEmpty()) { for (RS2Object burner : burners) { for (String s : burner.getDefinition().getActions()) { if (s != null && s.toLowerCase().contains("light")) { if (client.getInventory().getAmount("Marrentill") >= 0) { state = State.LIGHT_BURNERS; return; } else { state = State.TO_BANK; return; } } } } } } } if (isInHouse()) { if (!client.getInventory().contains(bonesName)) { state = State.TO_BANK; return; } RS2Object altar = closestObjectForName("Altar"); if (altar != null && distance(altar) > 3) { state = State.TO_ALTAR; return; } else { List<RS2Object> burners = closestObjectListForName("Incense burner"); if (!burners.isEmpty()) { for (RS2Object burner : burners) { for (String s : burner.getDefinition().getActions()) { if (s != null && s.toLowerCase().contains("light")) { if (client.getInventory().getAmount("Marrentill") >= 0) { state = State.LIGHT_BURNERS; return; } else { state = State.TO_BANK; return; } } } } } if (client.getInventory().contains(bonesName)) { state = State.OFFER_BONES; return; } } } else { if (hashAllRequiredSupplies()) { RS2Object portal = closestObjectForName("Portal"); if (portal != null && distance(portal) < 10) { state = State.ENTER_HOUSE; return; } state = State.TO_HOUSE; return; } else { state = State.RESTOCK; return; } } } private int getBonesPerHour() { if (gui.started && configured) { int exp = client.getSkills().getExperience(Skill.PRAYER) - startXp; int noBones = exp / toHouseMethod.xp; long time = System.currentTimeMillis() - startTime; if (time == 0) return 0; return (int) (((double) noBones / (double) time) * 3600000D); } return 0; } @Override public void onPaint(Graphics g) { g.setColor(new Color(0, 0, 0, 120)); g.fillRect(10, 300, 500, 35); g.setColor(Color.green); if (gui.started && configured) { long time = System.currentTimeMillis() - startTime; g.drawString("Bones/hour : " + getBonesPerHour(), 15, 315); int exp = client.getSkills().getExperience(Skill.PRAYER) - startXp; g.drawString("Exp/hour : " + (int) (exp == 0 ? 0 : (3600000D / (((double) time) / ((double) exp)))), 15, 330); g.drawString("Bones: " + exp / toHouseMethod.xp, 190, 315); g.drawString("Exp: " + exp, 190, 330); g.drawString("State : " + state, 352, 315); g.drawString("Time running : " + formatTime(time), 352, 330); } else { g.drawString("Bones/hour : 0", 15, 315); g.drawString("Exp/hour : 0", 15, 330); g.drawString("Bones: 0", 190, 315); g.drawString("Exp: 0", 190, 330); g.drawString("State : Unstarted" + state, 352, 315); g.drawString("Time running : 00:00:00:00", 352, 330); } } private String formatTime(final long l) { final long day = TimeUnit.MILLISECONDS.toDays(l); final long hr = TimeUnit.MILLISECONDS.toHours(l - TimeUnit.DAYS.toMillis(day)); final long min = TimeUnit.MILLISECONDS.toMinutes(l - TimeUnit.DAYS.toMillis(day) - TimeUnit.HOURS.toMillis(hr)); final long sec = TimeUnit.MILLISECONDS.toSeconds(l - TimeUnit.DAYS.toMillis(day) - TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min)); final long ms = TimeUnit.MILLISECONDS.toMillis(l - TimeUnit.DAYS.toMillis(day) - TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min) - TimeUnit.SECONDS.toMillis(sec)); return String.format("%02d:%02d:%02d:%02d", day, hr, min, sec); } } Enjoy!
  25. I've figured that much out myself, but thanks for clarifying a bit. but how were they blackmailed is what i dont understand. How was the information handed over.. I think thats what most of us want to know I'll have to correct Ely right there before this rumour spreads stronger. Kati, like said by Ely, gave a copy of the OSBot database which contains only information about your forum account to someone who wanted to have it. Whatever was exchanged for this and why exactly this was done will remain a mystery as we don't know who is telling the truth. All that matters now that we require everyone to refresh their passwords on the forums and make sure their emails/rs accs/etc are secure meaning not use the same password and email etc. Kati was demoted and taken away all access and power given to her.

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.