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.

Gunman

Super Moderator
  • Joined

  • Last visited

Everything posted by Gunman

  1. CS2 is a one liner, functions the same just less code. And the only reason to use a custom sleep class would be to add other functionality like a reset condition.
  2. @pupu_pot API already has a empty slots method getInventory().getEmptySlots(); Use ConditionalSleep2 at least over ConditionalSleep if not a custom sleep class. Empty wall part doesn't actually work I'm pretty sure // Wait until the amethyst turns into "Empty wall" new ConditionalSleep(240000, 2000) { // 240,000 milliseconds (4 minutes) @Override public boolean condition() throws InterruptedException { return !amethyst.exists() || amethyst.getName().equals("Empty wall"); } }.sleep(); Furthermore I recommend not using any AI assistance if you're trying to truly learn coding. If you're just slapping scripts together go for it.
  3. I still can't find you, can you try leaving and rejoining?
  4. @driedApricots RandomSolvers will interrupt the script loop, not sure why that would kill the script though. Put the code in a try catch and see if that does anything, may be related to a exception being thrown
  5. Gunman replied to CcozyD's topic in General Help
    They do, they actually recently added back the method in their API publicly https://github.com/runelite/runelite/commit/92e85beb53a0605a82f9a6ce36e1c2769cd238b3
  6. Gunman replied to CcozyD's topic in General Help
    Sales pitch I suppose You generally use it like normal scripting code, not sure what examples you wanted. Here's an example of "infinite" prayer flicking I suppose @Override public void onGameTick() { super.onGameTick(); final PrayerButton prayer = PrayerButton.THICK_SKIN; final RS2Widget widget = getPrayerWidget(prayer); final InvokeHelper ih = new InvokeHelper(this); if (widget == null) { return; } if (getPrayer().isActivated(prayer)) { ih.invoke(widget, 0); ih.invoke(widget, 0); } else { ih.invoke(widget, 0); } } private RS2Widget getPrayerWidget(PrayerButton prayer) { RS2Widget widget = getWidgets().getAll().stream() .filter(w -> w.getSpriteIndex1() == prayer.getSpriteId()) .findFirst() .orElse(null); if (widget != null) { widget = getWidgets().get(widget.getRootId(), widget.getSecondLevelId()); } return widget; }
  7. English, thanks
  8. Modern Resize >
  9. Gunman replied to Czar's topic in Agility
    Doesn't seem to matter, and if he's using my invoke helper with clicks then it sends a right click to 0, 0 with every action invoked
  10. Gunman replied to Czar's topic in Agility
    That sounds like it's using invokes my guy not the mouse
  11. They send packets with all the data yes, whether they care or use it is truly unknown
  12. Assuming you're using their launcher then yes. Part of that work I mentioned before was people getting it to work outside the launcher by grabbing the session id to login. And specifying characters is an index of 0 to 19
  13. It didn't really do much besides make people do some work to get it working nearly the same as legacy accounts
  14. No I'm out of stock, and highly doubt I'll get a restock of legacy accounts
  15. Need to post your discord UID
  16. Need to post your discord UID too I can't find you in the sever
  17. Not at all an issue tbh
  18. Bump Current Stock (Accounts are Non Jagex) HandTutorialUS: 5052 14-Day-Membership-Code: 60
  19. Okay cap'n
  20. Gunman replied to mark jacobs's topic in Snippets
    It's another take on the conditional sleep class that makes it a one liner with lambdas and a reset condition. Imo I'd use the Sleep class because of the reset condition option
  21. Gunman replied to mark jacobs's topic in Snippets
    Get your code up bby not your funny up Sleep.until(()-> !script.inventory.contains("Raw salmon") || script.widgets.isVisible(233) || script.getDialogues().isPendingContinuation(), ()-> myPlayer().isAnimating(), 3_000); Sleep.class import java.util.concurrent.TimeUnit; import java.util.function.BooleanSupplier; public class Sleep { private static final int DEFAULT_POLLING = 600; private static final int DEFAULT_CYCLE_LIMIT = 100; public static void sleep(int time) { try { TimeUnit.MILLISECONDS.sleep(time); } catch (InterruptedException e) { // I don't wanna deal with Interrupted Exception handling everywhere // but I need it to reset the execution when it happens throw new IndexOutOfBoundsException("Sleep Interrupted*"); } } public static boolean until(BooleanSupplier condition, int timeout) { return until(condition, ()-> false, timeout, DEFAULT_POLLING); } public static boolean until(BooleanSupplier condition, int timeout, int polling) { return until(condition, ()-> false, timeout, polling); } public static boolean until(BooleanSupplier condition, BooleanSupplier resetCondition, int timeout) { return until(condition, resetCondition, timeout, DEFAULT_POLLING, DEFAULT_CYCLE_LIMIT); } public static boolean until(BooleanSupplier condition, BooleanSupplier resetCondition, int timeout, int polling) { return until(condition, resetCondition, timeout, polling, DEFAULT_CYCLE_LIMIT); } public static boolean until(BooleanSupplier condition, BooleanSupplier resetCondition, int timeout, int polling, int cycleLimit) { try { int resetCounter = 0; long startTime = System.currentTimeMillis(); while ((System.currentTimeMillis() - startTime) < timeout && !condition.getAsBoolean()) { if (resetCounter >= cycleLimit) { break; } else if (resetCondition.getAsBoolean()) { startTime = System.currentTimeMillis(); resetCounter ++; } Sleep.sleep(polling); } return condition.getAsBoolean(); } catch (NullPointerException e) { e.printStackTrace(); } return false; } }
  22. Need to post your discord UID too I can't find you in the server, your info provided might be wrong.
  23. Need to post your discord name too

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.