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. 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.
  2. 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
  3. 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.
  4. 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
  5. 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!
  6. 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.
  7. Maxi replied to Laz's topic in Archive
    I'll have to check the version number on the SDN later today, perhaps something was confused with updating. My local version has been running for hours. Will get back to you in a bit people.
  8. Maxi replied to Laz's topic in Releases
    I just noticed some things listed were not pushed and packed in this release. It will come today.
  9. Maxi replied to Kati2's topic in Archive
    I feel sad for what happened, probably just like you. However, you made mistakes that only you are accountable for and nothing will change that around. Focus on what is important Kati and learn to ignore whatever isn't. You were trusted and you still are in our eyes however there can't be taken any further risks. We appreciate what you did for us in the past and present, you meant a great deal for us personally and OSBot and it's sad to see it end this way. You taught a great deal to people and learned a great deal as well I hope. I feel sad for this day. I'm going to close this now. Farewell. People make mistakes. Smart people learn from them. Hopefully you do as well.
  10. We are planning on adding this.
  11. Read the announcements.
  12. Maxi replied to A G S DOWNED's topic in Archive
    I suggest everyone leaves Clutch alone, he will most likely leave you alone if you do the same. No reason to escalate this. It was known to us that Clutch is who got the database from Kati. Like we said earlier, we will never know the entire story behind this as we will not know who speaks the truth. All you should do is change your passwords here and anywhere else that could be related, secure your emails with 2 way verification and let it go honestly.
  13. I honestly don't get your negativity, I understand you are upset by the recent happenings and so are we. We're working around the clock for the past 24 hours to keep everything secure after what happened with Kati. Switching to this new host is something we never hoped for having to do as the costs are nearly a thousand dollars extra a month but we did as we want to prevent those attacks happening anymore. Fact is though that our current host has had many issues that were unrelated to attacks.
  14. Maxi replied to Laz's topic in Releases
    Added the following things to the update log in the first post that Laz forgot to mention: Fixed the issue with enabling/disabling the default mouse paint from within scripts. Fixed the is in building mode check. A hacky fix for variable sized wall decoration objects like rifts in the Abyss. Various required features to use resource walking in the future (Brainfree : ) )
  15. At least I'm a penguin!
  16. Maxi replied to Superman's topic in Archive
    Sorry for your loss, be careful with what you download. OSBot does have no access to whatever you store in the client, the information is stored locally and not accessible by us.
  17. Maxi replied to Baller's topic in Resolved
    Can I get a more specific bug report?
  18. Maxi replied to Laz's topic in Archive
    The script now requires to use version 1.7.31+ and is available again for purchase in the store.
  19. Maxi posted a topic in Releases
    Hello everyone, I'm glad to announce that the next OSBot version 1.7.31 has been released. In this version the following changes have been made: Fixed an issue where the bot would not be able to interact with characters that are stacked on a tile, i.e. two npc's on the same tile would cause problems to interact with one of them. This is now working fine again. Wall objects have been hooked for a very long time but a small bug in the core caused them to be not included in the list of objects in the region. They now added properly. A few changes have been made so that the Tab Maker is working again, the Tab Maker will be available again in the store as well The download can be found here: http://osbot.org Sincerely, OSBot.org
  20. Maxi replied to Laz's topic in Archive
    I have looked at the script today and found the issue. I will make sure the script will be up and running again today.
  21. The group will exist of approximately 10 people, however this doesn't mean it will be tested by 10 people. Some people might not be able to test certain scripts due to level or quest requirements and not everyone will be able to test on a daily basis. Therefore we will have around 10 people so the process of getting feedback of their tests will be faster, resulting in a smoother and quicker addition to the SDN. We will not require for everyone to have tested a script, everyone who has done some tests will give us feedback which we will use to base our verdict on.
  22. Sell it at Advertising other bots isn&#39;t allowed., there is no use for this script here. USA is thinking of converting this script to OSBot btw.
  23. Let me explain the mentioned instancing to everyone who is not in the clear about it: Limiting the amount of bots your can run on one purchased instance will mean that for a certain script you buy you will only be able to run a certain amount of bots per instance you bought of that script. An example would be like this: Script developer X created a script which has a money making method making 500k an hour. However, if a 1000 bots would be botting the method it would make little to no cash anymore, rendering the sales of that script to zero and the method useless. The developer is then able to decide he wants to limit the amount of bots per bought instance to for example 4. If someone, whether it is a goldfarmer or not, wants to bot this method with 8 accounts this person will have to buy the script twice. Instancing will not affect any currently processed sales and will be SDN only and the administration team will not be in charge of those decisions, the developers will be. It will most likely not be applied to most scripts, but if a developer like mentioned in the example has a very decent money making method he wants to protect and control the usage of it we simply have a method of supporting this.
  24. Dear community, It has been a while since we released the SDN and we were happy that we were able to launch the platform. The SDN has many upsides as it provides a secure platform that is easy to access by users of OSBot to buy and/or add scripts to the script selection, but also has some downsides. The major downside of how the SDN is organized is that it requires a lot of contact between developers and the administration team to add scripts to the SDN, mostly through IM services like Skype. But to communicate over Skype people need to be online at the same time and also the administration team has tasks to complete that sometimes require some priority. To summarize the problem, the administration team is not able to schedule their work together with the tasks of adding scripts to the SDN. We have thought about several possibilities to make this process easier. The easiest thing to do would be to write a web interface where everything is automated. You submit your script, a connection is made with a server and the server executes all logic required to add the script. However this would create a solution where there is no verification of scripts leaving a security gap, besides the fact that IPB has made things complicated with encryption and obfuscation of some of their files to certain formats on how to store information in the database. So that thought quickly vanished. It was clear to us that no matter what human interaction will remain required, so we took the road of thinking how to cut out the communication through IM services. And here is what we will do: If you are a developer and you want to have your script added to the SDN, you will be able to go to a webpage where you will provide the necessary information to us to add the script to the SDN. This information will be send as an email to a certain address and any communication will be through email after that instead of Skype. The script will get added to the SDN privately and will not be visible for anyone. When this has happened, an anonymous group of users (around 10 people) will test the script to see if it meets the quality standard sought after. Once enough feedback has brought back in about a script, a verdict will be made and if positive the script will be made public and will be available for everyone in the store to add to their collection. The same will happen for update notification of scripts. We will release a page where you will be able to see all the scripts you have on the SDN. If you require a script to be updated, you can request an update and the system will send an email notification to us. By doing the above we hope to be able to start adding scripts to the SDN at a much higher and efficient rate than before. Besides all of the above, we will introduce the possibility of limiting the amount of bots per script bought at one time for any developer who wants to have a certain control over the amount of bots botting a certain activity. Thanks for reading, OSBot.org
  25. Hi

    Maxi posted a topic in News & Announcements
    Hello everyone, I have returned and I'm ready to contribute to our fire again. I'll be discussing with Laz to decide on our priorities again and I'll be working on some old work left behind when I was out of the country. Today I will be working on fixing up some scripts that require some attention. After that I will be writing an anti ban mechanism which hopefully will prevent many of the manual J Mod bans and possibly also the reports by P Mods. It will detect moderators in your environment and perform unpredictable behaviour, partially defined by you as a user, which should lower the suspicion. Goals we had before were obvious and they are still present, such as 'Hannibal', the first Titan to completely diminish the concept of web walking. Hannibal is a work in progress but will get a lot more attention now than it did before, simply because of the fact that there is room for attention now. Further automation of our administrative work is another goal which will happen behind the curtains, but most definitely very important for all of us. And we are brainstorming about a much easier way of adding scripts to the SDN, creating a web interface where you can submit everything that will create the Nexus store product, the repository module etc, leaving our only job to double check and confirm the entire product to be safe and working. All cool stuff And last but not least, we will be starting on a new little secret this month. What this is and how long it will take for us to show you publicly is not sure, but it has been us excited for sure. Sincerely, OSBot.org

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.