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.

Leaderboard

  1. GTi

    Trade With Caution
    8
    Points
    1076
    Posts
  2. Anne

    Java Lifetime Sponsor
    8
    Points
    6983
    Posts
  3. Occazn

    Trade With Caution
    8
    Points
    1033
    Posts
  4. Mikasa

    Ex-Staff
    7
    Points
    10756
    Posts

Popular Content

Showing content with the highest reputation on 08/12/13 in all areas

  1. 7 points
    Someone just raged quit ingame and gave me 2m, Rather than being greedy and selling it, I'lm going to give it away. OSbot is a great community, and I'd like to give something back to it To win all you have to do is LIKE this post, don't bother posting if you don't want too. I'm far too lazy I don't want to go through reading all the posts, I'll just use a number generator and count down to that number. Example: If i get 5 likes, and it goes like this: player 3435 likes this player 244 likes this player 343 likes this player 4997 likes this player 53 likes this Let's say the number generator chooses number 2, the person that wins will be the second person.. (player 244) SIMPLES. THIS IS FOR 2007SCAPE.
  2. Everyone has different reasons for leaving, and I'll respect you either way, however, it's always great to see you stay @@Occazn, in your case, I completely support you leaving. Asians got homework. Reason 1: I've been active on many other bottling websites and I've always ended up back on OSBot. The times I've spent on other communities has ways been a disappointment in one way or another. There isn't a better place to go, OSBot has always been number one. Reason 2: OSBot has been able to offer the most content, the quickest, while remaining secure. They offer things other bots simply can't. OSBot has always had the best bot to offer. Reason 3: I've been in your position. I've tried to leave this place many times because of things I disagreed with. Not only was I stupid to do that, but I should have never gotten mad in the first place. Everything OSBot does is with the users best interests in mind. Reason 4: OSBot has more to offer than a bot. It's active community, dedicated staff team are enough to allow anyone to stay and have a good time. If you don't think the forums are your thing, try the chat, and talk with people who share similar interests as you.
  3. 3 points
    Anyways, if you look closely, you can tell that it's photoshopped. I didn't notice it until I was looking on my phone, but around the text, it is significantly whiter than the rest of the page :wacko:
  4. He's written countless scripts, all of which are extremely popular and have accumulated a lot of downloads. One of the scripts he wrote was the GMC SuperScript Factory which has proven to be a popular script and a rather complex 1 at that. He is extremely capable of writing complex scripts/programs and has much experience under my belt such. He has written many things such as MORPGs from scratch etc (shown me on skype). He has also demonstrated capability of listening to the community as his thread requesting script ideas is one of the largest in the section. and many other reasons. Not really sure why you guys have not picked up on him yet, unless its something personal, I know kati didn't like him all that much, which shouldn't be a reason.
  5. Would be pretty good if people who released premium scripts could select an option which allows users to run their script for like maximum of 3 hours (or even specify their own time frame) , as a trial. then after the 3 hours is up, they can't run it anymore. just a 1 off 3 hours or so, to see if the script interests them and is worthy of them buying etc.
  6. 2 points
    QConstruction What people have been waiting for, a construction script. Price: $5.99 (One time) Download: http://osbot.org/forum/store/product/72-qbotsconstruction/ Features: - Larders (Normal/Oak) - All chairs - All tables - All bookcases - More upon request - Butler support soon - Tab support - Castle Wars and Camelot banking (Want somewhere else? ASK) Changelog: [Aug 11] V1 - Chairs, larders, and tables functional and flawless; GUI setup; Paint made [Aug 12] V1.2 - Castle wars support added. Teletab support added. [Aug 12] V1.3 - Bookcase support added [Aug 29] V1.5 - Teletab support for all current locations fixed/added. Antiban added. Some misc. issues fixed. [Aug 31] V1.51 - Code cleanup. Run now reenables. Misclicking portal fix(Will reenter). Sleep while moving added. [Sept 15] V2.0 - Mounted Glory support. Butler support. Deposits items not needed for construction. Some GUI cleanup, should hopefully work for mac users. Images: This will be a premium script with a price of $4.99 (Might be lower on release)
  7. http://puu.sh/3ZXsN.png Saved me 30M in items
  8. Do not accept .PIF Files from ANYONE on Skype. No matter how convincing they may look! These users are known for sending .PIF files through skype. Zemmah (rens.verbeemen) or (zemmah) [or any similar name - not 100% on full skype name - most likely from Belgium] Evann =3 (kleinekevermans) ALWAYS REQUEST ANY PICTURES TO BE UPLOADED TO IMGUR, OR SCREENSHOTTED WITH PUUSH/LIGHTSHOT/GYAZO OR OTHER SIMILAR PROGRAMS Suspected forum user(s): @Command, @Smeo His forum username is unknown as of yet, and will probably remain that way unless a moderator checks his IP, will PM his real IP on request as he may be using a proxy IP is found in Occazn's picture 80.200.128.56 Proof: Command + Smeo both contain the last name Verbeeman in their registered forum Email, as well as @Smeo's E-Mail is Evan.Verbeeman@gmail.com (HI EVANN) and the username Zemmah's skype is more than likely rens.verbeeman (as shown below) All 3 skypes connect to the same IP
  9. I am sure he wants to convice people to stay by telling us how awesome OSBot is. OT: fully agreed, well written Ah i see. well i agree with the compliments and shouldn't this thread go in: Feedback? It's not necessarily feedback, rather it's an encouragement.
  10. "There's 10 million dollar under the....." *dies* Ohyea I would give my facebook password to a friend and he has to make a status "lol free internet in hell" and update my status frequently to scary people. Than I can die in peace.
  11. I'd laugh if they were qutting for school.. schools an xp waste, I prefer to sit inside and eat mark donalds errday
  12. 2 points
    I actually rofl'd irl sorry man. Btw since everyone answers with a picture here.......... And that's not photoshopped but shitty iPhone quality. http://i.imgur.com/8rwn8b3.jpg
  13. 2 points
    You all need to get out more, maybe then you'll realise were all human and there's millions of attractive women all over the place.
  14. 2 points
    why you nerds only obsessed with half naked chicks? :wacko: always give bad ratings unless boobs are showing.
  15. Voted yes, I think both of you are excellent script writers and would love to see you guys rewarded for the hard work you two have invested into OSBot. Edit: Make votes public if you want, I would like to know who says no.
  16. 2 points
    w00t a girl!!! But in my opinion AnneLotte is more handsome :$
  17. 2 points
    Community, I knew that this day would come, just as it has come many times before. Not only for me, but for many before me and after me. A decision was made by me and I had my reasons to make the decision. Whether the decision was just, right, wrong, is flexible. I'm not afraid to admit that the recent actions of mine were highly uncalled for. The decisions didn't only hurt my fellow Administrators, who I admire each and every one of, my actions hurt the community I helped build from the ground. I acknowledge the betrayed trust towards everyone at this community, including the staff team which I introduced most of. Not only has OSBot been embarrassed, I've myself been embarrassed. I can apologize but I can't fix it. I've done all I can to revoke my bad actions and restore the community to its faithful standpoint. I have an excessively strong feeling for the entire staff team. We sure have been through some difficult times and harassments; some hilarious and some serious. I'll gladly admit that every moment of it was worthwhile and enjoyable. I do understand that many people like me and many people do not. For the people who do like and trust me, let me tell you something. You're wasting your time trying to fight for me. There is no battle, it's over. I've accepted it and moved on. It was a wonderful run and I enjoyed (almost) every minute of it. To the ones who don't like me, I apologize for whatever I've done to you. You can choose to accept my apology or deny it. That's your decision and there's no reason for me to influence it. Life lives on. Clearly there are questions about who I am or who I may be. I'm not about to comment on that because of several reasons. That is one of my choices. I will tell you this. I've stuck with OSBot from the very beginning. Not only OSBot, but communities before. I've had great dedication, massive amounts of time, and many friends throughout it all. One simple mistake ruined it. Maybe I regret my decision, maybe I don't. My regrets don't matter at this point. What's done is done. I especially appreciate Maxi and Laz for their continued faith in myself. They are amazing, intelligent people and we've stuck through some hard times. They're quite pissed at me, which sucks. I don't blame them. In the position I was in many will say what they would have done as would I. What you'd actually do in the moment is a different story. I'm not here to judge.. just here to make my amends. I don't know if I'll stick around, disappear, come back under an alias. I haven't made any decision. My say and jurisdiction on the staff team no longer exists. I hope we've taught each other enough for them to make it without me. I wish them the best of luck. That being said, my final requests may not surprise you. I have thought about introducing Raflesia to an administrator position for quite some time. Not sure if I've mentioned it to anyone. In his replacement I feel Smart would fit the job best as super mod. You can take my requests as I give them: advice. My intentions have always been great for OSBot. People make mistakes. The sooner you realize, the better. Once again, I apologize to everyone, and wish them a farewell from my administration. Kati And no, I didn't sell the database.
  18. Guest
    SOON COMING TO A STORE NEAR YOU!!!!! [MOD APPROVED] Glad to say this, my AIO bananananananananananana collecter is almost ready and will be released soon. Release date: August 14rd!! Obamas face after using my script!!! He was thinking of his bots making 1.1m a hr ^^^^^ GOLDFARMERS ARE SO HAPPY AFTER USING MY SCRIPT. TO BE ADDED: Alching while bananananna collecting dancing 4 $$$$$ feature making markshakes while collecting note: if ur cortana or smart or master chief or chief keef u will get this script FOR FREE TY FOR UR TIME
  19. Get this script - http://osbot.org/forum/store/product/64-gmcexterminatecrabs/ Notice: There is currently an issue where if you turn DashAI off, the script will bug out. An update is coming soon to fix this. I am also updating DashAI to be smarter and less obvious than its previous version. Get this script - http://osbot.org/forum/store/product/64-gmcexterminatecrabs/ Have any issues? Suggestions? Post here and I'll do my best to help you.
  20. 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!
  21. Download this: http://up.ht/11WLGKE Fixed as of 8/11/13 - 1:00pm EST by @Cory Upcoming changes: Auto paint tab switching. Improve Edgeville yews. Add custom chopping. Change log: 3.1: Added Magic and Teak Ent ID. 3.0: Added Yew Ent ID. 2.9: Now does not pick up birds nest anymore when powerchopping. Added new maple and magic Ent IDs. 2.8: Fixed walking to bank in Seer's Village. 2.7: Fixed walking in Catherby and Sorcerer's Tower. 2.6: Added normal tree ent ID. Improved chopping normal logs. 2.5: Added hide button for paint (try hiding paint when experiencing low FPS). Now also drops birds nests when powerchopping. Fixed spam clicking tree bug. 2.4: Now uses tree names instead of IDs. Will not break anymore if IDs change. 2.3: Fixed tree IDs. 2.2: Changed action after detecting ent which should fix any ent problems (please let me know if not). Added Barbarian Outpost willows. Added Gnome Stronghold yews. Added Mage Training Arena Magics. Added new epic paint thanks to DarkzSide. Changed Sorcerer's tower magic path so it does not get stuck. Added screenshot option; makes screenshot's when detecting an ent, retreiving bird nest or when the script stops. and safes them in D:\. could be useful for bug reports. 2.1: Changed and improved ent detection. Added new IDs after RS Update. Improved some other small things. Added show/hide paint button. 2.0: Added Teak support. Including combat protection at Castle Wars. 1.9: Added magic support at the Sorcerer's Tower. Added "Ents avoided" to paint. 1.8: Added new ID to Ent detection which fixes breaking axes when chopping yews. 1.7: Fixed error in Edgeville. Fixed ent/evil tree detection. 1.6: increased speed of chopping in general alot. changed antiban and removed wc skill checking to make sure it doesnt bug out. Improved cutting yews in Catherby. Improved handling of evil tree's. Added time to level in paint (shows after a couple minutes). 1.5: Improved edgeville yews. Changed something to antiban so it won't accidentally click on skilltabs (again). improved evil tree detection for yews. Also improved antiban. 1.4: Should not be randomly opening skill tabs anymore. Added Yew support in Edgeville including smart positioning (if no tree's available, it will walk to the first tree that will spawn). Improved ent detection. 1.3: Added Yew support in Seer's Village and Catherby. Added Willow support in Catherby.Added location to paint. Improved anti-ban. 1.2: Added Willow support in Seer's Village. 1.1: Added Maple support in Seer's Village. 1.0: Release version. Screenshot's: Long progress reports are appreciated!
  22. Today I finally got around to finishing up the world hopping system. This was also a nice moment to bring the random management system in to action. For anyone interested in the random management system in action code wise for the world hopping system, here you go: package org.osbot.script.rs2.ui; import org.osbot.engine.Bot; import org.osbot.script.mouse.RectangleDestination; import org.osbot.script.rs2.randoms.RandomBehaviourHook; import org.osbot.script.rs2.randoms.RandomManager; import org.osbot.utility.Gaussian; import java.awt.*; import java.util.ArrayList; import java.util.Map; /** * Created with IntelliJ IDEA. * User: Maxime * Date: 26-05-13 * Time: 19:24 * To change this template use File | Settings | File Templates. */ public class WorldHopper { private final Bot bot; private boolean isHopping = false; private int nextWorld = -1; public WorldHopper(Bot bot) { this.bot = bot; } /** * Logs you out and changes hops to the world specified. This method does not take in to account full worlds yet, * so hopping to a full world will fail. * @param world Worlds range from 301 to 378 but remember that the worlds * 307, 315, 323, 324, 331, 332, 347, 348, 355, 356, 363, 364, 371, 372 * do not exist. */ public void hopWorld(int world) throws InterruptedException { nextWorld = world; isHopping = true; bot.getScript().randomManager.registerHook(hook); while (bot.getClient().getLoginState() != 10) { if (bot.getScript().logoutTab.logOut()) { Thread.sleep(500 + Gaussian.random(300, 300)); } } } private static enum State { GO_TO_SELECTION, WORLD_SELECTION, UNHOOK; } private RandomBehaviourHook hook = new RandomBehaviourHook(RandomManager.LOGIN_SCRIPT) { private State state = null; @Override public String getName() { return "World Hopping"; } public void scan() { if (!isHopping || bot.getClient().getLoginState() != 10 || nextWorld == -1) { state = State.UNHOOK; return; } if (bot.getClient().getColorPicker().isColorAt(54, 294, Color.BLACK)) { state = State.WORLD_SELECTION; return; } else { if (bot.getClient().getCurrentWorld() == nextWorld) { state = State.UNHOOK; } else { state = State.GO_TO_SELECTION; } } } /** * The main loop logic. This will continue until shouldActivate() returns true or * -1 is returned. * * @return The time to sleep until the next loop. * @throws InterruptedException */ @Override public int onLoop() throws InterruptedException { scan(); switch (state) { case GO_TO_SELECTION: bot.getClient().moveMouseTo(new RectangleDestination(new Rectangle(12, 466, 86, 26)), false, true, false); return 600 + gRandom(200, 200); case WORLD_SELECTION: Rectangle dest = getWorldMouseDestination(nextWorld); bot.getClient().moveMouseTo(new RectangleDestination(dest), false, true, false); return 600 + gRandom(200, 200); case UNHOOK: nextWorld = -1; isHopping = false; bot.getRandomManager().unregisterHook(RandomManager.LOGIN_SCRIPT); return -1; default: return 500 + gRandom(500, 500); } } @Override public void onExit() { isHopping = false; nextWorld = -1; } }; /** * Calculates the rectangle of the destination to click a world. * @param world The specified world in the range of 301 - 378 * @return The rectangle used for the mouse destination */ private Rectangle getWorldMouseDestination(int world) { ****** } ***** static { ***** } } Furthermore I started on a breaking system. You will be able to set your break settings per saved account profile, which will then be used if you enable it. Expect both updates to be released tonight or tomorrow, Sincerely, OSBot.org
  23. For those who tl;dr: OSBot is awesome. Don't go anywhere. :3
  24. 1 point
    Very interesting! I think we die and our soul just stays in the world and we haunt people like ghosts.
  25. Jagex support sucks. Still pending xD
  26. I think it would be a great idea to add a new rank, for the people who don't bot but are forum addicted and would like to have some benefits too. The new rank I'm talking about is called "Forum Donator" which will cost you 10$ FOREVER The benefits are : your name will glow, you get the rank itself like sponsor/vip, you can change your display name once in a week/month (depends on what Kati wants or what is the best acceptable). Maybe more benefits can be added if you suggest so... Not awesome benefits because the price is low for a reason. There arent alot of benefits, I know but thats why it costs that less. I am sure alot of people will purchase this and alot of money will be gained to keep the server alive. Support? Opinions?
  27. 1 point
    v1.30 should be live now.
  28. 1 point
    You don't type anything for construction :l The task system might be implemented if I get around to it. I would rather make this AIO first though.
  29. 1 point
    sandwich lady ain't got shit on him...
  30. 1 point
    Someone asked him to do this reason: If he did this , the other guy would buy 20Spins What mark said : Money Above Everything!
  31. I've done numerous ones without C4D Text, reason why i use it is because that's what people want. As for these smaller signatures, i've designed hundreds of those and more, however the person who makes the order decides what they want, not me. If someone decides they want one of those small signatures, i'll happily make one.
  32. 1 point
    LOL, i dont see the point in wanting people to believe that you're a girl. probably "Debot" trying to come back
  33. 2 days? No, no. Takes only few hours with constructive and mature posts.
  34. He will not do that. He scammed me too. He has withdrawn all his money he ever paid me. -- IP: 2.217.46.132 Country: United Kingdom State/Region: London, City of City: London Latitude: 51.5142 (51° 30′ 51.12″ N) Longitude: -0.0931 (0° 5′ 35.16″ W)
  35. Hello, ive recently realised ive been banned, however I have no idea what ive done but obviously ive done something to upset a mod, im a good person really and never meant to break rules just ask @Occazn he knows I wouldn't want to break any rules or do anything to get banned or upset anyone so I ask your forgiveness and please unban me - not just so I can use this bot but so I can continue to be a part of the community and talk to those who I have become friends with in the osbot chat. Thank you NO, I HATE EVERYONE.
  36. 1 point
    she looks so ugly in my eyes........
  37. Osbot username+Runescape display name can be checked so what you said wouldnt matter, unless someone wants to create 20 osbot accounts and 20 rs accounts to test a script for 20 hours.
  38. 1 point
    Don't give him anything, and don't fall for his threats. Also, if you get DDOSed, reset your router and block the IPs. To get the IPs, open up your CMD and do the command: netstat -a That will show all the connections on your computer, all unfamilair IPs are the IPs attacking you.
  39. 1 point
    Kinda sad you give a sideways 8 to her....
  40. support! I wouldn't of bought my wildy looting script if I knew it was that bad
  41. Can you please update your thread or script? I've had reports that this isn't working and you are still getting money from it... Or you update it or the thread should get taken down. I will lock this thread and if you're willingly to edit or update your thread : shoot me a PM and I will re-open so you have the chance to. If you don't the thread will be taken down. Thank you.
  42. says account suspended when i try download?????
  43. do I have to stand in Camelot area? cos i stood in catherby bank and the bot started to work like hell on the command line.

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.