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 10/10/16 in all areas

  1. Hello OSBot community, We will be hosting an OSBot logo contest for both Thanksgiving and Christmas and for that we need your participation! This year we're going to let you, the community, design our logo. It is very simple, we're looking for 2 logos and that is a Thanksgiving themed OSBot logo and a Christmas themed OSBot logo. You don't have to create both of them, the only restriction is that it has to contain OSBot, obviously has something to do with one the themes and that the dimensions are limited to a maximum of 400 x 90, that is 400px width and 90px height. What are the rewards? - If you win of course your submission will be used as our official logo for one month. - You will receive $25 account credit to spend in the OSBot store. How will the voting work? The voting will be a combination of community votes and votes from staff members and developers. Who do I send my submission to? Please send all your submissions via PM to me, @Dex, with the title "OSBot Logo Contest". How long do we have to send in our submissions? You have until the start of november to send in your Thanksgiving submission and until the start of december to send in the Christmas submission. Other rules - You cannot make your submission public or include your name in your submission, we don't want the voting to become a popularity contest but rather have honest votes to be able to determine who created the best piece. - Troll entries will be filtered out so don't even bother. Goodluck to all participants! The OSBot Staff Team
  2. 4 points
    Another 99 achieved Current 99's below
  3. NEW CURRENT RECORD: 294 HOURS RUNTIME! Shoutout to @Ruutihattu NEW: Sandstone mining + hopper support Humidify/water circlet/bandit unnote Ardy cloak tele support Setup Screen Preview Results 84 HOURS ON NEW LEVEL 20 ACCOUNT Suicided account with mirror mode near rock crabs, 81 mining! I will probably go for 99 Even supports Ancient Essence Crystal mining! Preview: Mine 1 drop 1 item drop pre-hover feature:
  4. This is a top secret moderator application for @Scotty. Hello my name is Scotty, and I am 20 years old. I am applying for moderator because as a person I genuinely like to help others, and as a regular user I cannot do this. Osbot has gone strength to strength under Maldesto's stewardship, he is a great man. But, it is time for something different, I propose that I lead osbot into a new era. An era full of paint art and flame. What would I do as moderator? I would guarantee these 5 things: Allow pornography Give everyone kick power in the chatbox Free 'how to paint' guides Allow flame Allow hate I hope that you consider my application, I am mature and English is my first language. Thank you, Scotty
  5. Brought to you by the #1 most sold script series on the market. Come and see why everyone's choosing Czar Scripts! This is the most advanced Agility bot you will find anywhere. BUY NOW $9.99 NEW! Added Both Wyrm Courses! SCRIPT INSTRUCTIONS Optimal Setup for the bot: Please set the mouse zoom to far away (to the left, like below) so that more obstacles can be seen in the view, and so the script can be more stable and reliable Also, make sure to have roofs toggled off (either go to settings tab or type ::toggleroof) for optimal results
  6. NEW! Added Gemstone Crab! 81 Hours at Cows Brutal Black Dragon support Sulphur Nagua support Blue Dragon 99 ranged 99 Ranged at Gemstone Crab 81 Range F2p Safespotting Hill Giants Hotkey List // F1 = set cannon tile // F2 = hide paint // F3 = Set afk tile // F4 = reset afk tile // F6 = Set safespot tile // F7 = activate tile selector // F8 = Reset tile selector // F9 and F10 used by the client, EDIT: will re-assign as they are no longer used by client // F11 = Set breaks tile // F12 = Reset breaks tile User Interface Banking Tab Demo (handles everything with banking) You can copy inventory (to avoid adding individual items...), you can insert item names which have Auto-Fill (for you lazy folk!) and you can choose whether to block an item and avoid depositing it in bank, ideal for runes and ammo. Looting Tab Demo (From looting to alchemy, noted/stackable items too) You can choose whether to alch an item after looting it simply by enabling a checkbox, with a visual representation. All items are saved upon exiting the bot, for your convenience! Tasking Demo (Not to be confused with sequence mode, this is an individual task for leveling) You can set stop conditions, for example to stop the bot after looting a visage, you can have a leveling streak by changing attack styles and training all combat stats, you can have windows alert bubbles when an event occurs and an expansive layout for misc. options! Prayer Flick Demo (Just example, I made it faster after recording this GIF) There are two settings: Safe mode and efficient mode, this is safe mode: Fight Bounds Demo Allows you to setup the fight bounds easily! Simplified NPC chooser Either choose nearby (local) NPCs or enter an NPC name to find the nearest fight location! Simple interface, just click! Level Task Switch Demo (Switching to attack combat style after getting 5 defence) You can choose how often to keep levels together! e.g. switch styles every 3 levels Cannon Demo (Cannon is still experimental, beta mode!) Choose to kill npcs with a cannon, recharges at a random revolution after around 20-24 hits to make sure the cannon never goes empty too! Results Caged Ogres: How does this bot know where to find NPCs? This bot will find far-away npcs by simply typing the NPC name. All NPCs in the game, including their spawn points have been documented, the bot knows where they are. You can type 'Hill giant' while your account is in Lumbridge, and the bot will find it's way to the edgeville dungeon Hill giants area! Here is a visual representation of the spawn system in action (this is just a visual tool, map mode is not added due to it requiring too much CPU) Fight Area Example (How the bot searches for the npc 'Wolf') Walking System The script has 2 main walking options which have distinctive effects on the script. The walking system is basically a map with points and connections linking each point. It tells the script where to go, and decides the routes to take when walking to fightzones. Walking system 1 This uses a custom walking API written by myself and is constantly being updated as new fightzones are added. Pros: - Updates are instant, no waiting times - More fightzones are supported Cons: - Sometimes if an object is altered, the changes are not instant - Restarting the script too many times requires loading this webwalker each time which adds unnecessary memory (there is no way to make it only load at client startup since I don't control the client) Walking system 2 This is the default OSBot webwalking API - it is relatively new and very stable since the developers have built it, but is currently lacking certain fightzones (e.g. stronghold) and other high level requirement zones. It is perfect for normal walking (no object interactions or stairs, entrances etc) and never fails. Pros: - Stable, works perfect for normal walking - All scripters are giving code to improve the client webwalker - More efficient when restarting the script since it is loaded upon client start Cons: - No stronghold support yet - Some new/rare fightzones not supported yet - If there is a game-breaking update or an unsupported fightzone, it may take some time to add/repair (less than 24 hours usually) So which system should I choose? Whichever one suits your chosen fightzone best! There really shouldn't be any problems - the sole purpose of these options are for backup and emergency purposes, if the script ever messes up there is always the next option to select. Note: If the script ever fails, there will be immediate updates to fix the walking systems! Script Queue/Bot Manager: Script ID is 758, and the parameters will be the profile name that you saved in the fighter setup! Bug Report templates: New feature request - What is the new feature - Basic description of what the script should do - Basic actions for the script: 'Use item on item' etc. For when the script gets stuck on a tile (or continuous loop): - Which exact tile does the script get stuck on? (exact tile, not 'near the draynor village') - Plugin or normal script? - Did you try all 3 walking options? Script has a logic bug (e.g. dies while safespotting) or (cannon mode doesn't pickup arrows) - What is the bug - How did you make the bug happen - (optional) recommendation for the bug, e.g. 'make the script walk back' or something - Tried client restart? - Normal script or a plugin? - Which exact setup options are enabled? Afk mode, cannon mode, etc etc.
  7. 2 points
    Description: I've decided to create a script, which does pretty much everything for you. If you have just created a fresh account it will randomise your appearance and complete tutorial island for you. Once you're off tutorial island it will go through all the tasks you set it before the script finishes. The tasks can be things such as getting a certain level, killing a certain amount of monsters, doing a task for a set amount of time or to complete a certain quest. GUI: Features: Tutorial Island Agility Cooking Crafting Farming Firemaking Fishing Fletching Herblore Hunter Magic Mining Prayer Runecrafting Smithing Thieving Wooductting Quests Dynamic Signature: http://www.acescripts.com/overloadaio/users/YOUR_USERNAME_HERE.png Bug Reports: Client Version: Script Version: Skill Name: Script Status: Screenshot: Detailed Description: Change Log: 06/12/2016 - VERSION 0.2 - Script is now on SDN. 26/08/2016 - VERSION 0.1 - Released first version of script.
  8. Hello, Okay, so in this tutorial we will be creating a dynamic PHP Script, that changes database values when the correct user agent is requesting your server, and creating another PHP file for fetching that data from the database. No fancy design here, if you are after that - stop reading. Part 1. What is User Agent? User agent is a software application 'agent' that performs tasks behalf of a user. We can use user agent for our PHP script only allowing requests from a certain user agent. Useful in cases for example dynamic signatures and other tasks that we want to apply automation on. Example of User Agent usage $ua_name = "FacialSlave"; //The name of expected user agent $ua = $_SERVER['HTTP_USER_AGENT']; if(!preg_match('/'.$ua_name.'/', ua)) { //Returns false if incorrect HTTP_REQUEST echo '<h1>Invalid user agent.</h1>'; } else if(isset($_GET['variable'])) { //If above returns true let's execute our statement defined somewhere. $statement->execute(); } Note! You need also to define the user agent from the other end of your application, in this we would be creating a dynamic script leaderboard, so you need to define the user agent from your Java files also, like this private static final String USER_AGENT = "FacialSlave"; Part 1.5 The Java side for this app The Java side not exactly what this guide is about, I'm just going to briefly talk this through. //Variables private static final String URL = "http://localhost/pdo_updateDatabase.php?"; private static final String USER_AGENT = "FacialSlave"; //Actual code public static void httpAgent(String var_str, int var_int) { String urlStr = URL + "variableOne=" + var_str + "&var_int=" + var_int; StringBulder http = new StringBuilder(); URL url; try { url = new URL(urlStr); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.addRequestProperty("User-Agent", USER_AGENT); BufferedReader brd = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; while((line = brd.readLine()) != null) { result.append(line); } brd.close(); } catch (Exception err) { } } Part 2. SET Query for updating data in database SET changes already existing data in database to new given values require 'pdo_dbConnection.php'; //UA CHECK ... Now if the user agent is correct, let's start executing our qery else if(isset($_GET['variableOne'] && $_GET['var_int'])) { //Query, where we set value of variableOne from Table where integerValue equals to given integer $query = 'UPDATE Table SET variableOne = :variableOne WHERE integerValue = :var_int'; //Preparing the query above $statement = $connection->prepare("$query"); //Executing statement as array, where we define placeholders for the query $statement->execute(array( ':variableOne' => $_GET['variableOne], ':var_int' => $_GET['var_int'] )); echo 'Updated successfully.'; } Part 2.5 Fetching data from our database Fetching data can be done in multiple ways, this is just one example of it. require 'pdo_dbConnection.php'; $query = 'SELECT * FROM Table'; //Query, * is a wildcard for selecting ALL fields from table. //Using * is not recommended in production environment. $statement = $connection->prepare($query); //And again, preparing the query for connection. $statement->execute(); //Executing statement. //Fetching data foreach($statement as $row) { echo ' <table style="width=250px"> <tr> <th>My Script</th> </tr> <tr> <td>Variable One: '.$row['variableOne'].'</td> <td>Variable Two: '.$row['variableTwo'].'</td> </tr> </table> '; } I have NOT tested the code above, just wrote it. If you face any errors with my code, please let me know and I will take a look at it. Because I do make often alot of easy typos etc.
  9. 2 points
    It's the same script, just going to feature another GUI, more quests, better performance and lots of other things Authed
  10. 10/10 ban evader.
  11. 2 points
    Game sucks
  12. 2 points
    @FletchingNL can you explain me how the skype you were talking to (itz_xstxr) has the same IP as your IP on the forum? You have 24 hours to explain or you'll be banend straight away.
  13. 👑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
  14. PPOSB - AIO Hunter Brand new trapping system just released in 2024! *ChatGPT Supported via AltChat* https://www.pposb.org/ ***Black chinchompas and Black salamanders have been added back*** Supports the completion of Varrock Museum & Eagle's Peak OR CLICK HERE TO PAY WITH 07 GOLD! The script has been completely rewritten from the ground up! Enjoy the all new v2 of the script JOIN THE DISCORD CHAT FOR QUESTIONS/ SUPPORT/ CHATTING/ UPDATES! New GUI: Features: Click Here Current functioning hunter tasks: (green - complete || yellow - started || red - incomplete) Screenshots: Progressive Leveling: 1-19 --> Crimson swift 19-43 --> Tropical wagtail 43-63 --> Falconry 63+ --> Red chinchompas Updates How to setup Dynamic Signatures Report a bug CLI Support - The script now supports starting up with CLI. The commands are given below. Please put in ALL values (true or false) for CLI to work properly. Make sure they are lowercase values, and they are each separated with an underscore. The script ID for the hunter bot is 677. Parameters: EnableProgression_EnableVarrockMuseum_EnableEaglesPeak_EnableGrandExchange Example: -script 677:true_true_false_true ***Don't forget to check out some of my other scripts!*** OSRS Script Factory Click here to view thread LEAVE A LIKE A COMMENT FOR A TRIAL The script is not intended for Ironman accounts. It still works for Ironman accounts, but you must have all equipment, gear, and items.
  15. Here is a simple class I have written to retrieve grand exchange information for specified osrs items, using the json file hosted by rsbuddy at: https://rsbuddy.com/exchange/summary.json Note the retrieval of this data should only be done once at the start of your script, and you should store the map for use later rather than re-calling the method. You may also get better performance using a JSON library. RSExchange.java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; public final class RSExchange { private final String ITEMS_JSON; public RSExchange() { ITEMS_JSON = getItemsJson().orElse(""); } private Optional<String> getItemsJson() { try { URL url = new URL("https://rsbuddy.com/exchange/summary.json"); URLConnection con = url.openConnection(); con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"); con.setUseCaches(true); BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); String json = br.readLine(); br.close(); return Optional.of(json); } catch (Exception e) { e.printStackTrace(); } return Optional.empty(); } public final Optional<ExchangeItem> getExchangeItem(final String itemName) { return getItemID(ITEMS_JSON, itemName).map(id -> new ExchangeItem(itemName, id)); } public final Map<String, ExchangeItem> getExchangeItems(final String... itemNames) { Map<String, ExchangeItem> exchangeItems = new HashMap<>(); for (final String itemName : itemNames) { getItemID(ITEMS_JSON, itemName).ifPresent(id -> exchangeItems.put(itemName, new ExchangeItem(itemName, id))); } return exchangeItems; } private Optional<Integer> getItemID(final String json, final String itemName) { return getItemFromJson(json, itemName).flatMap(this::getItemIDFromItemJson); } private Optional<String> getItemFromJson(final String json, final String itemName) { Matcher matcher = Pattern.compile("(\\{[^}]*\"name\"\\s*:\\s*\"" + Pattern.quote(itemName) + "\"[^}]*})").matcher(json); return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty(); } private Optional<Integer> getItemIDFromItemJson(final String json) { Matcher matcher = Pattern.compile("\"id\"\\s*:\\s*(\\d*)").matcher(json); return matcher.find() ? Optional.of(Integer.parseInt(matcher.group(1))) : Optional.empty(); } } ExchangeItem.java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; public final class ExchangeItem { private final String name; private final int id; private int overallAverage = -1; private int buyAverage = -1; private int sellAverage = -1; private int buyingQuantity; private int sellingQuantity; public ExchangeItem(final String name, final int id) { this.name = name; this.id = id; updateRSBuddyValues(); } public final String getName() { return name; } public final int getId() { return id; } public final int getBuyAverage() { return buyAverage; } public final int getSellAverage() { return sellAverage; } public final int getBuyingQuantity() { return buyingQuantity; } public final int getSellingQuantity() { return sellingQuantity; } public void updateRSBuddyValues() { try { URL url = new URL("http://api.rsbuddy.com/grandExchange?a=guidePrice&i=" + id); URLConnection con = url.openConnection(); con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"); con.setUseCaches(true); BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); String json = br.readLine(); br.close(); getItemValue("overall", json).ifPresent(overallAverage -> this.overallAverage = overallAverage); getItemValue("buying", json).ifPresent(sellAverage -> this.sellAverage = sellAverage); getItemValue("selling", json).ifPresent(buyAverage -> this.buyAverage = buyAverage); getItemValue("buyingQuantity", json).ifPresent(buyQuantity -> this.buyingQuantity = buyQuantity); getItemValue("sellingQuantity", json).ifPresent(sellingQuantity -> this.sellingQuantity = sellingQuantity); } catch (Exception e) { e.printStackTrace(); } } private Optional<Integer> getItemValue(final String key, final String json) { Matcher overallAvgMatcher = Pattern.compile("\"" + key + "\"\\s*:\\s*(\\d*)").matcher(json); if (overallAvgMatcher.find()) { return Optional.of(Integer.parseInt(overallAvgMatcher.group(1))); } return Optional.empty(); } public final String toString() { return String.format("Name: %s, ID: %d, Overall AVG: %d gp, Buying AVG: %d gp, Selling AVG: %d gp, Buying Quantity: %d, Selling Quantity:%d", name, id, overallAverage, buyAverage, sellAverage, buyingQuantity, sellingQuantity); } } Usage: final RSExchange rsExchange = new RSExchange(); rsExchange.getExchangeItem("Yew logs").ifPresent(System.out::println); This would print out Name: Yew logs, ID: 1515, Overall AVG: 355 gp, Buying AVG: 355 gp, Selling AVG: 354 gp, Buying Quantity: 90576, Selling Quantity :71726
  16. It probably failed to click bank due to camera angle ... Will take a look at it
  17. got 90 quest points and i don't got a pet but got other stats ;) but it up to everyone i was just telling u
  18. Thanks for the awesome turn-around time! I'm checking it out now. I'll let you know how it goes. Pots and Eating The pots + Lobsters is fighting and drinking the pots successfully now! Woot! I'm unsure when the script is thinking to eat though. I'm currently at 36/58 HP and it hasn't attempted to eat a Lobster yet. I would think it would keep the HP a bit higher. I would at least like to see it doing so. Something like eating at the following or something, since that's what I'd do if I were playing manually: (max_health - food_healing_amount) - rand(2, 4) Pots Only The pots-only however gets stuck in a loop between running from the bank to the yaks and back after withdrawing the pots. Exact settings: Food: pots-only Pots: Super Att/Str Logger: [INFO][Bot #1][10/10 10:06:37 AM]: Eating: true [INFO][Bot #1][10/10 10:06:37 AM]: Food: Pots only [INFO][Bot #1][10/10 10:06:37 AM]: Started script : YaksPls [INFO][Bot #1][10/10 10:06:44 AM]: WebWalkingEvent; We have reached the final destination! [INFO][Bot #1][10/10 10:07:06 AM]: WebWalkingEvent; We have reached the final destination!
  19. Speaking on skype about 120 CW tickets. Agreed on a price
  20. 1 point
    Rip @FletchingNL
  21. 1 point
    Had help from a special someone @ As he said just added loads of WC locations and adding fm locations currently. Will begin adding fishing/cooking very soon.
  22. 1 point
    Can I have a trial on this one ?
  23. 1 point
    Don't worry I got accounts, but I'm working on Stealth Quester 2.0 atm
  24. That's weird, are you using any breaks? Whenever you start the script press the "Refresh" button before starting it again. It could be that some data wasn't erased and messes up some of the variables KHaleesi
  25. Don't do it anyone, this was my account which got recovered by Lacoste/Nebula. and I have proof Lacoste is not OO Refer to this http://osbot.org/forum/topic/96561-dispute-against-lacoste/?hl=alex0591223#entry1071450
  26. 1 point
    Can i get the trial again? when you gave it to me the image wasnt working
  27. Maybe try this, Make a new class with the following code. package osbot; import org.osbot.rs07.script.MethodProvider; public class Multi implements Runnable { private final MethodProvider script; public Multi(MethodProvider script) { this.script = script; } public void run() { while (script.myPlayer().isMoving()) { //Action --> Script. } } } In your script file add this new Thread(new Multi(this)).start(); Here this is one of the snippets which I always use. I hope it helps, Let me know!
  28. You can override the onMessage() function in your script. Then when you receive a message with the text "wishes to trade with you" grab their name from it via "text".split(" ").get(0) which would be the players name. do stuff with that This code should work, (haven't tested as I'm at school). Declare currentTradeUser as a string. Check currentTradeUser in your onLoop and if it has a value, do stuff with it. Finally set it back to an empty string when your finished with it. @ Override // Remove space public void onMessage(Message msg) { if(msg.getMessage.contains("wishes to trade") currentTradeUser = msg.getMessage().split(" ")[0]; } Edit: Also you would want to check if the message has color, I think that color is actually stored in the string as an HTML color or something. Otherwise people could just say "wishes to trade" in chat and it would trigger it and break shit.
  29. Works pretty sweet so far. Would you mind explaining the different walking methods? Or any idea where I can find more info regarding that?
  30. @Czar edit;Soz didn't know how to edit a mention into my older post.
  31. I'd request a trial, but you're my boi & I'm purchasing it. Where are everybody's proggies? Use to be postin 80h proggies with ur old scripts Perfect Ankous/Spiders. Oh the good ol days
  32. liked, looking for trialeit

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.