Jump to content
View in the app

A better way to browse. Learn more.

OSBot :: 2007 OSRS Botting

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Botre

Members
  • Joined

  • Last visited

Everything posted by Botre

  1. A poem for the homeless users begging for vet Maldesto is red Could I be blue Don't beg for vet It's not yet your crew Dex is now pink I want that too Oh beggars do stink And vets don't need poo #VeteransSmellGood #KeepOurRankPure
  2. Peace out brochacho
  3. Dem algos Dogerina lel
  4. (p.getX() + myPosition().getX()) / 2 + MethodProvider.random(-3, 3) 1) Parentheses! ((p.getX() + myPosition().getX()) / 2) + MethodProvider.random(-3, 3) Same applies to what you do for the Y coordinate. 2) Redundant action repetition for (int i = 0; i < 2; i++) { mouse.click(new MiniMapTileDestination(bot, p), false); // YOU CLICK TWICE HERE } mouse.click(new MiniMapTileDestination(bot, p), false); // AND A THIRD TIME HERE 3) Awkward sleeping The idea of having a fail counter isn't bad at all, this while loop makes no sense whatsoever though. The fail int doesn't represent actual fails, just you not moving. After each fail you should probably retry the walkTile method instead of just sleeping again. while ((myPosition().distance(p) > 2) && (fail < 10)) { MethodProvider.sleep(500L); if (!myPlayer().isMoving()) { fail++; } } ^not very effective
  5. Those are just the position arrays, mind posting the method you feed them in to ? I'm talking about the walkPath(position array) method ^^
  6. You should try and provide some more details, which methods are successively called for example ? Edit: seems like walkPath(path2); is causing it, you should post the method / path in question ^^
  7. I like it! The thing is, there's no content except for the social media links (right?). Nothing wrong with that, but I recommend you make the linking tiles a bit more bigger, put some more emphasis on them (the color contrast already does a great job though).
  8. Gl man
  9. Botre replied to Soldtodie's topic in Scripting Help
    Dat mousehop tho
  10. getTabs(); open(Tab.SKILLS); What you want here is: Instance.method() Instead of: Instance method() (well you actually are trying to call the method on an instance here, but not the correct one, but I won't get into that) You get the script's Tabs instance by calling getTabs() and then you call its method open(Tab) so: getTabs().open(Tab.SKILLS); But The API actually provides a method to hover over a skill, and it opens the tab for you if it isn't already open: getSkills() gets the Skills instance, what you could do is (again, Instance.method()): getSkills().hoverSkill(Skill.FISHING); Hope this helped, let me know if something wasn't crystal clear!
  11. Botre replied to Soldtodie's topic in Scripting Help
    Integer.MAX_VALUE speed yo! (it's getting early over here...)
  12. Botre replied to Soldtodie's topic in Scripting Help
    My bad :p
  13. Botre replied to Soldtodie's topic in Scripting Help
    getMouse().move(x, y); If you want it to hop instead of "glide" you'll probably have to extend the Mouse class.
  14. Free OSBot code consulting service Doubts about your overall logic or design? Questions about how to optimize your product? Want a second opinion before releasing your code baby publicly? About This is a free service to teach and learn, help improve and discuss scripts and snippets for the sake of improving the overall quality of scripts, especially (but most certainly not limited to) the ones made by fresh blood. Keep in mind, there's no shame in asking for a second opinion, we all have our weaknesses and strengths! Submission guidelines Feel free to post your source here, please make sure it's readable in terms of code formatting and presentation (use the code tag or pastebin). If you prefer a private consultation, feel free to PM one of the participating scripters (list below). In any case, please make sure the size of the project is reasonable, we will not be going through hundreds of classes (we wish we could, but we simply don't have the time). ​Consultants In case you don't want to make your code publicly visible, you can PM the following users for a more private consultation (please note that this is not the preferred way to go): @Apaec ​Ex-Consultants These consultants are, sadly enough, not active anymore, but still awesome and worth being listed here (don't PM them though): @Nezz Final notes If you don't understand what you wrote in the first place, do not bother (we expect you to at least know what you tried to achieve with your code). Otherwise we'll more than gladly take a look at it. Don't be shy, there are no dumb questions as far as we're concerned (only dumb attitudes)! @Other script writers, especially the more experienced ones: feel free to constructively hijack this thread, but keep your negativity / frustration / arrogant behavior to yourselves, we all started from the bottom at some point. - Happy coding!
  15. Dem updates tho
  16. I doubt it
  17. Multiple threads for different paint data is the best way to go imo, for example: you might want to have real-time display of the run time which would be relatively cheap in terms of processing but only a once every 5 seconds update of your experience tracker(s) which would be more costly. But if you don't mind applying the same performance cost restrictions to all calculations, then pausing your onPaint could do just that indeed ^^
  18. Botre replied to Hayden's topic in Spam/Off Topic
    I'm having some trouble with notifications myself, they seem to be loading extremely slowly sometimes..
  19. Very nice guide. However, having many recurring calculations in your onPaint could become unnecessarily expensive, I recommend creating separate looping threads with a custom loop times holding the values the paint should then draw . It does make a difference in performance cost to make the script calculate the data to be painted every 5 seconds instead of every lets say 500ms, and from a consumer point of view it doesn't make a huge difference because most of the time they aren't even around to watch that data (considering botting is essentially an AFK activity). Performance is key!
  20. Here's a lil' rewrite, hopefully you'll learn something(s) from it ^^ Gl coding! import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.util.Arrays; import java.util.List; import org.osbot.rs07.api.model.Item; import org.osbot.rs07.input.mouse.InventorySlotDestination; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(author = "Botrepreneur", info = "HerbIdentifier", name = "HerbIdentifier", version = 0.0, logo = "") public class HerbIdentifier extends Script { private enum Herb { GUAM(199, 200), MARRENTIL(201, 202), TARROMIN(203, 204), HARRALANDER(205, 206), RANARR(207, 208), IRIT(209, 210), AVANTOE(211, 212), KWUARM(213, 214), CANDANTINE(215, 216), DWARF_WEED(217, 218), TORSOL(219, 220), LANTADYME(2485, 2486), SNAPDRAGON(3051, 3052); private final Integer[] ids; private Herb(final Integer... ids) { this.ids = ids; } public List<Integer> getIds() { return Arrays.asList(ids); } } @Override public int onLoop() throws InterruptedException { return Integer.MAX_VALUE; } public void onPaint(Graphics2D paint) { int slot = -1; Item item = null; Rectangle rectangle = null; if (getBot().getClient().isLoggedIn()) { Point point = getMouse().getPosition(); for (int i = 0; i < 28; i++) { if ((InventorySlotDestination.getSlot(i)).contains(point)) { slot = i; break; } } if (slot > -1 && (item = getInventory().getItemInSlot(slot)) != null && item.getDefinition() != null && (rectangle = InventorySlotDestination.getSlot(slot)) != null) { int id = item.getId(); String string = null; for (Herb herb : Herb.values()) { if (herb.getIds().contains(id)) { string = herb.toString(); break; } } if (string != null) { paint.drawString(string, rectangle.x, rectangle.y); } } } } }

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.