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.

Leaderboard

Popular Content

Showing content with the highest reputation on 03/18/17 in Posts

  1. Someone had a bunch of lvl 3 mules at the GE so i traded them and they followed me so i moved them all into a congo line. World 308 if you want to help making the line longer
  2. No response within 24 hours from any of the accounts involved so I've removed all the Feedback. Thank you @Madz for the report. Banned the following accounts. @wESTboy27 & @Dgzamma @vi general and @dreadfulguy11 Actions have been taken against @magpiemad7 and he will remain in TWC. Closed.
  3. 7 points
    Hoping to get ?LUCKY? this ?St. Patrick's Day??? Want someone to rub you for luck?? ✳️Maybe put their? shamrock?shake in your pot of gold?✳️ I sent this to you because? you're? one of my ?LUCKIEST ? hoes!!!!!!!! Send this? to TEN of ?️your SLUTTIEST LUCKY bitches this? St. Patrick's Day?. You know,? the ones ?that are big sluts but✅are lucky enough ?not to catch an STD!!!!!!❇️ If you don't? send ?this ♻️around to ?10 sluts you know
  4. 6 points
    Recently I had uni projects allowing me to approach the problem in the way I want. So I chose app design because my goal is to become a UI/Web Designer in the designing industry in a cooperative manner. UI for games is not working for me because I'm not good at it. Designing for businesses and cooperatives is now my official path. Here are 2 concepts I've made for practice purposes. The design idea behind the 2nd one is thanks to someone on Behance, its just to get my mindset into professional design.
  5. 4 points
    @Mio Welcome to the pink club!
  6. I thought Jamez was finally demoted, guess not
  7. If you use the OSBot marketplace for the right reasons you can make a lot more than he made in his scamquit and you also don't lose all of your reputation and respect. sad
  8. 👑CzarScripts #1 Bots 👑 👑 LATEST BOTS 👑 If you want a trial - just post below with the script name, you can choose multiple too. 👑 Requirements 👑 Hit 'like' 👍 on this thread
  9. 400-500m+ plus the gp, protip: you cant quit rs
  10. ...

    2 points
    whenever i see this i always cringe so hard
  11. 2 points
    Looks amazing and extremely intuitive! Good job! The alignment on the bottom of the second image, "Don't have an account?" needs to be aligned slightly to the right; unless I'm looking at it wrong, then my apologies. But these look as good as industry standard, a few fixes here and there and self evaluation and improvement will get you far.
  12. Someone said upotudrop is on thin ice
  13. That was on like the 13th. And it rose back up to it's original price after 24 hours. The reason for this drop is the selling in China whilst they undergo legitimizing it. Also I think something around the segwit vote is the cause for the fall.
  14. Ah thank you for the clear bug report, expect a very fast update today, I really appreciate it (updates are much much faster with clear bug reports and clear instructions, that's why ) Signature/Highscores system is coming soon I still need to code some extra features e.g. 'OnKillTrigger', 'OnLootTrigger' etc etc to display how many npcs have been killed, to count which loot items, profit made. Then there will be leaderboards and eventually prizes once the entire system is flawless (ofc it will be optional to enable signatures)
  15. Yea it failed to get accepted for a hedge fund on wallstreet
  16. Always go with Juggles services
  17. Seeing as there was no transaction actually completed and there was no scam involved this would not be grounds for a negative feedback. If you don't like that Gearing didn't show you the money you can always safely deny the trade.
  18. 2 points
    tytytyty
  19. You could try doing something like this if you just want to get a single potion: Optional<Item> staminaPotion = Arrays.stream(getBank().getItems()) .filter(item -> item != null && item.getName().startsWith("Stamina potion")) .min(Comparator.comparing(Item::getName)); This snippet will construct a Stream from the array of all items in the bank, filter it so that only the items which are not null and has a name beginning with "Stamina potion" remain, and then find the min of those using a Comparator to compare the Item names, this should return Stamina potion (1) first etc. Note: it returns an Optional<Item>, the Optional class can be found here You use it like so: if (staminaPotion.isPresent()) { Item pot = staminaPotion.get(); } Or to get the List of all stamina potions in the bank, sorted by dosage: List<Item> staminaPotion = Arrays.stream(getBank().getItems()) .filter(item -> item != null && item.getName().startsWith("Stamina potion")) .sorted(Comparator.comparing(Item::getName)) .collect(Collectors.toList()); This snippet is similar to the above, but instead of returning the min, it instead sorts the Stream using the same Comparator, and then collects the Items into a List
  20. by Czar Buy now (only $8.99!) 143 HOURS IN ONE GO!!!!! update: this bot is now featured on the front page of osbot! More reviews than every other fishing bot combined! 100 hour progress report!!! How to use Script Queue: ID is 552, and the parameters will be the profile name that you saved in setup! This process is really simple, just to save you headache
  21. import org.osbot.rs07.api.ui.RS2Widget; import org.osbot.rs07.event.Event; import org.osbot.rs07.input.mouse.RectangleDestination; import org.osbot.rs07.listener.LoginResponseCodeListener; import org.osbot.rs07.utility.ConditionalSleep; import java.awt.*; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; public final class LoginEvent extends Event implements LoginResponseCodeListener { public enum LoginEventResult { UNEXPECTED_SERVER_ERROR(1, "Unexpected server error"), LOG_IN(2, "Log in"), INVALID_CREDENTIALS(3, "Invalid username or password"), BANNED(4, "Username is banned"), ACCOUNT_ALREADY_LOGGED_IN(5, "Account is already logged in try again in 60 seconds"), RUNESCAPE_UPDATED(6, "Runescape has been updated! Please reload this page."), WORLD_IS_FULL(7, "This world is full. Please use a different world."), LOGIN_SERVER_OFFLINE(8, "Unable to connect. login server offline."), TOO_MANY_CONNECTIONS_FROM_ADDRESS(9, "Login limit exceeded. Too many connections from you address."), BAD_SESSION_ID(10, "Unable to connect. Bad session id."), PASSWORD_CHANGE_REQUIRED(11, "We suspect someone knows your password. Press 'change your password' on the front page."), MEMBERS_ACCOUNT_REQUIRED(12, "You need a members account to login to this world. Please subscribe, or use a different world."), TRY_DIFFERENT_WORLD(13, "Could not complete login. Please try using a different world."), TRY_AGAIN(14, "The server is being updated. Please wait 1 minute and try again."), SERVER_UPDATE(15, "The server is being updated. Please wait 1 minute and try again."), TOO_MANY_INCORRECT_LOGINS(16, "Too many incorrect longs from your address. Please wait 5 minutes before trying again."), STANDING_IN_MEMBERS_ONLY_AREA(17, "You are standing in a members-only area. To play on this world move to a free area first."), ACCOUNT_LOCKED(18, "Account locked as we suspect it has been stolen. Press 'recover a locked account' on front page."), CLOSED_BETA(19, "This world is running a closed beta. sorry invited players only. please use a different world."), INVALID_LOGIN_SERVER(20, "Invalid loginserver requested please try using a different world."), PROFILE_WILL_BE_TRANSFERRED(21, "You have only just left another world. your profile will be transferred in 4seconds."), MALFORMED_LOGIN_PACKET(22, "Malformed login packet. Please try again"), NO_REPLY_FROM_LOGIN_SERVER(23, "No reply from loginserver. Please wait 1 minute and try again."), ERROR_LOADING_PROFILE(24, "Error loading your profile. please contact customer support."), UNEXPECTED_LOGIN_SERVER_RESPONSE(25, "Unexepected loginserver response"), COMPUTER_ADDRESS_BANNED(26, "This computers address has been blocked as it was used to break our rules."), SERVICE_UNAVAILABLE(27, "Service unavailable."); int code; String message; LoginEventResult(int code, String message) { this.code = code; this.message = message; } } private static final Map<Integer, LoginEventResult> responseCodeLoginResultMap = new HashMap<>(); static { for (LoginEventResult result : LoginEventResult.values()) { responseCodeLoginResultMap.put(result.code, result); } } private static final Rectangle TRY_AGAIN_BUTTON = new Rectangle(318, 262, 130, 26); private static final Rectangle LOGIN_BUTTON = new Rectangle(240, 310, 120, 20); private static final Rectangle EXISTING_USER_BUTTON = new Rectangle(400, 280, 120, 20); private static final Rectangle CANCEL_LOGIN_BUTTON = new Rectangle(398, 308, 126, 27); private static final Rectangle CANCEL_WORLD_SELECTOR_BUTTON = new Rectangle(712, 8, 42, 8); private final String username, password; private int maxRetries = 5; private LoginEventResult loginEventResult; private int retryNumber = 0; public LoginEvent(final String username, final String password) { this.username = username; this.password = password; setAsync(); } public LoginEvent(final String username, final String password, final int maxRetries) { this(username, password); this.maxRetries = maxRetries; } @Override public final int execute() throws InterruptedException { if (loginEventResult != null) { handleLoginResponse(); } if (retryNumber >= maxRetries) { setFailed(); } if (hasFailed()) { return 0; } if (!getBot().isLoaded()) { return 1000; } else if (getClient().isLoggedIn() && getLobbyButton() == null) { setFinished(); return 0; } if (getLobbyButton() != null) { clickLobbyButton(); } else if (isOnWorldSelectorScreen()) { cancelWorldSelection(); } else if (!isPasswordEmpty()) { clickButton(CANCEL_LOGIN_BUTTON); } else { login(); } return random(100, 150); } public LoginEventResult getLoginEventResult() { return loginEventResult; } private void handleLoginResponse() throws InterruptedException { switch (loginEventResult) { case BANNED: case PASSWORD_CHANGE_REQUIRED: case ACCOUNT_LOCKED: case COMPUTER_ADDRESS_BANNED: case UNEXPECTED_SERVER_ERROR: case INVALID_CREDENTIALS: case RUNESCAPE_UPDATED: case LOGIN_SERVER_OFFLINE: case TOO_MANY_CONNECTIONS_FROM_ADDRESS: case BAD_SESSION_ID: case UNEXPECTED_LOGIN_SERVER_RESPONSE: case SERVICE_UNAVAILABLE: case TOO_MANY_INCORRECT_LOGINS: case ERROR_LOADING_PROFILE: setFailed(); break; case ACCOUNT_ALREADY_LOGGED_IN: case TRY_AGAIN: case SERVER_UPDATE: case NO_REPLY_FROM_LOGIN_SERVER: case MALFORMED_LOGIN_PACKET: sleep(random((int)TimeUnit.MINUTES.toMillis(1), (int)TimeUnit.MINUTES.toMillis(2))); retryNumber++; break; case PROFILE_WILL_BE_TRANSFERRED: sleep(random((int)TimeUnit.SECONDS.toMillis(5),(int)TimeUnit.SECONDS.toMillis(10))); retryNumber++; break; case WORLD_IS_FULL: case TRY_DIFFERENT_WORLD: case CLOSED_BETA: case INVALID_LOGIN_SERVER: case MEMBERS_ACCOUNT_REQUIRED: case STANDING_IN_MEMBERS_ONLY_AREA: // Should hop to a different world here setFailed(); break; } } private boolean isOnWorldSelectorScreen() { return getColorPicker().isColorAt(50, 50, Color.BLACK); } private void cancelWorldSelection() { if (clickButton(CANCEL_WORLD_SELECTOR_BUTTON)) { new ConditionalSleep(3000) { @Override public boolean condition() throws InterruptedException { return !isOnWorldSelectorScreen(); } }.sleep(); } } private boolean isPasswordEmpty() { return !getColorPicker().isColorAt(350, 260, Color.WHITE); } private void login() { switch (getClient().getLoginUIState()) { case 0: clickButton(EXISTING_USER_BUTTON); break; case 1: clickButton(LOGIN_BUTTON); break; case 2: enterUserDetails(); break; case 3: clickButton(TRY_AGAIN_BUTTON); break; } } private void enterUserDetails() { if (!getKeyboard().typeString(username)) { return; } if (!getKeyboard().typeString(password)) { return; } new ConditionalSleep(30_000) { @Override public boolean condition() throws InterruptedException { return getLobbyButton() != null || getClient().isLoggedIn() || getClient().getLoginUIState() == 3 || loginEventResult == LoginEventResult.BANNED || loginEventResult == LoginEventResult.ACCOUNT_LOCKED; } }.sleep(); } private void clickLobbyButton() { if (getLobbyButton() != null && getLobbyButton().interact()) { new ConditionalSleep(10_000) { @Override public boolean condition() throws InterruptedException { return getLobbyButton() == null; } }.sleep(); } } private RS2Widget getLobbyButton() { try { return getWidgets().getWidgetContainingText("CLICK HERE TO PLAY"); } catch (NullPointerException e) { return null; } } private boolean clickButton(final Rectangle rectangle) { return getMouse().click(new RectangleDestination(getBot(), rectangle)); } @Override public final void onResponseCode(final int responseCode) { if (!responseCodeLoginResultMap.containsKey(responseCode)) { log("Got unknown login response code " + responseCode); setFailed(); return; } this.loginEventResult = responseCodeLoginResultMap.get(responseCode); log(String.format("Got login response: %d '%s'", responseCode, loginEventResult.message)); } } Usage example: import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(author = "Explv", name = "Login Test", version = 0.1, logo = "", info = "") public class TestScript extends Script { private LoginEvent loginEvent; @Override public void onStart() { if (getClient().isLoggedIn()) { getLogoutTab().logOut(); } loginToAccount("username", "password"); } @Override public int onLoop() throws InterruptedException { if (loginEvent != null ) { if (loginEvent.isQueued() || loginEvent.isWorking()) { log("LoginEvent is running, script is idle"); return 2000; } if (loginEvent.hasFailed()) { stop(); } getBot().removeLoginListener(loginEvent); loginEvent = null; } log("Script is doing scripty things"); return 2000; } private void loginToAccount(String username, String password) { loginEvent = new LoginEvent(username, password); getBot().addLoginListener(loginEvent); execute(loginEvent); } } OSBot must be run with random events disabled, for example: java -jar "OSBot 2.5.59.jar" -allow norandoms
  22. import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import java.awt.*; @ScriptManifest(name = "Skeleton", author = "Alek", version = 1.0, info = "", logo = "") public class Skeleton extends Script { @Override public void onStart() { //Code here will execute before the loop is started } @Override public void onExit() { //Code here will execute after the script ends } @Override public int onLoop() { return 100; //The amount of time in milliseconds before the loop starts over } @Override public void onPaint(Graphics2D g) { //This is where you will put your code for paint(s) } }
  23. 1 point
    Hey, Anyone that could give me an estimate for 33 mage, and 50 mage accounts? Like 10hp, off tut island, 100% splashed? EDIT: Also with/without 7qp
  24. Potter's Planker is a free script that supports Oak, Teak and Mahogany logs via the Varrock sawmill. This script will only run using Varrock teleport tabs as a banking method. Features: - Walks to and from the sawmill - Teleports to Varrock using Varrock teleport tabs - Supports restocking at GE once you are out of logs, money, or Varrock tabs FAQ: Q: Where do I start this script? A: Start anywhere in Varrock, don't worry about your inventory, the bot will automatically bank for you, or restock if you have GE mode enabled. Q: What is the logic behind restocking? A: The script will automatically buy logs using 30% of your available gp, then buy enough Varrock tabs to cover the amount of logs. This leaves the remaining gp for the sawmill costs. Note: The script will never hold more than 4800 logs at one time, I done this as I like to mule the excess gp, 4800 logs will last roughly 4-5 hours without the need to restock again. Q: What are Plank Sell Multiplyer, Log Buy Multiplyer and Tab Buy Multiplyer? A: These settings apply only when GE mode is enabled. Each multiplyer defines the price of the item you are buying/selling. For example the price of Oak logs is 132, if we have Log Buy Multiplyer set to 1.05 the script will pay 5% more than the GE price (132 * 1.05 = 138.6) this is then rounded to 139. Proggies: Running Teak Planks: Running Mahogany Planks: PottersPlanker-v1.1.jar If you use this script please post your proggies
  25. I was told it was only up from here but it has crashed about 300 dollars. RIP guys
  26. Gem Rock miner, below shilo village?
  27. 1 point
    u suck love you gtz
  28. well pure accounts are soo 2016 step up your game son
  29. Directly off of PowerGP's site, and this isn't with 75 Slayer.
  30. how are you able to tell apart botted and non botted stats if the accounts isnt banned? easy 10-15m range guild bot 85range too, that will increase value a lot hahaha
  31. Sell your btc to me, then.
  32. 1 point
    Still can't cook waffles tho
  33. 1 point
    Congrats!
  34. How much exp/hr is ZMI?
  35. I also steal all my code from stack overflow.
  36. I think that the latest update may have broke the green dragon plugin. Whenever it banks it doesnt deposit my inventory and so is essentially useless as it just stands at the bank with a invent full of bones/hide constanting trying and failing to withdraw food. Please fix asap as I cant use the plugin at all.
  37. Might as well set it to -mem 1 and let the magic memory system run OSBot on a single megabyte.
  38. 1 point
    The bot is currently broken/offline, be patient untils the devs fix it.
  39. Man this is the best thing i have seen on osbot ever
  40. This section is used for all Runescape related media, such as bank pictures, stats, progress reports, anything you want to share in general. I hope you all enjoy.

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.