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.

Leaderboard

Popular Content

Showing content with the highest reputation on 05/21/19 in all areas

  1. ๐Ÿ‘‘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
  2. 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:
  3. 2 points
    NakedPotato#5350
  4. Your changes: When I said conditional, I meant more that only one line would run with any given onLoop iteration. The reason for this is that the API interacts with the live game - you cannot expect any API call to return successfully every time and as a result chained API calls which depend on one another (for example, opening the bank and then depositing an item) can fail. This is relevant in your code - you are calling getWalking#webWalk and immediately after you are interacting with the altar. What if the walking failed (for whatever reason)? Then you wouldn't be in range of the altar and the script would be stuck. Null checking: As for null checking, at the moment you are grabbing and interacting with the game objects as follows: getObjects().closest("Altar").interact("Craft-rune"); This is fine if getObjects().closest("Altar") always returned a game object, however this is not the case. If closest did not find any object matching your filter, it will simply return null, at which point you are calling 'interact' on null which will result in a Null-pointer error (for obvious reasons). Instead, do something like this: private boolean someMethod() { RS2Object altar = getObjects.closest("Altar"); return altar != null && altar.interact("Craft-rune"); } Sleeps: Again, the script is interacting with a live game, so there are all sorts of barriers between your script and game state. One of these is latency, fluctuations in which mean timing in your script is never going to be perfect. As a result, adding random sleeps here and there gives a false sense of security. Instead, to prevent bans, focus on making your script as reliable as possible, and then use the script carefully and keep a low profile. If you do add any randomisation, doing so in interaction timing is probably not the place. To make the script reliable, conditional sleeps are needed to retry actions only when needed, as well as to maximise script responsiveness (minimise the time the script spends sleeping, and maximise the time it is aware of game state). Stick with conditional sleeps --------------------- Good luck! -Apa Edit: Also, as @ProjectPact mentioned, avoid while loops. Why would you need a while loop if you already have a perfectly good one: onLoop()?
  5. NEW: Released Chop & Firemake plugin Added 8 Forestry events!!!!!!!! Easy 99, Next! Map Chooser System Progress Results! Help How to use this with Bot Manager? Script ID is 631, and the parameters will be the profile you saved in the setup window, e.g. oak15.txt I want a new feature added? Make a post below and I am always listening, within reason! The bot is doing something I don't like? Make a post below and I will adjust the code to match your play style!
  6. So basically I've decided to start creating my own script for personal use, very basic script to Runecraft air runes, let me know what you think/any general improvements moving forwards, thanks. import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.map.Position; import org.osbot.rs07.api.map.constants.Banks; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(author = "Jashy", info = "Air Runecrafter - First Script.", logo = "", version = 0.1, name = "Air Runecrafter") public final class Air extends Script { private final Area AIR_ALTAR = new Area(2989,3295,2982,3289); private final Area AIR_RUNES = new Area(2839, 4826, 2849, 4840); @Override public final int onLoop() throws InterruptedException { if (hasPureEssense()) { runecraft(); } else { bank(); } return random(2500, 4000); } private void runecraft() throws InterruptedException { if(!AIR_ALTAR.contains(myPosition())) { getWalking().webWalk(new Position(2987, 3294, 0)); sleep(random(2500, 4000)); useAltar(); sleep(random(2500, 4000)); } craftRunes(); sleep(random(3500, 5000)); } private boolean hasPureEssense() { return getInventory().contains("Pure essence"); } private boolean useAltar() { return getObjects().closest("Mysterious ruins").interact("Enter"); } private boolean craftRunes() { return getObjects().closest("Altar").interact("Craft-rune"); } private boolean usePortal() { return getObjects().closest("Portal").interact("Use"); } private void bank() throws InterruptedException { //Added this in case script was started inside air runes area. while(AIR_RUNES.contains(myPosition())) { usePortal(); sleep(random(1500, 2500)); } if (!Banks.FALADOR_EAST.contains(myPosition())) { getWalking().webWalk(Banks.FALADOR_EAST); } else if (!getBank().isOpen()) { getBank().open(); sleep(random(2000, 3000)); } else if (!getInventory().isEmptyExcept("Pure essence")) { getBank().depositAll(); sleep(random(2000, 3000)); } else if (getBank().contains("Pure essence")) { getBank().withdrawAll("Pure essence"); sleep(random(2000, 3000)); } else { stop(true); } } }
  7. Really nice! This code is, for the most part, well structured, readable and tidy. It's stateless and conditional which is nice. A few suggestions: Replace the static sleeps with conditional sleeps. This will ensure you only sleep as long as you have to. Null check the altar, portal and ruins, otherwise you'll end up with some nasty client crashing errors. You could always write a method to wrap that stuff in an Optional so you don't forget. Make the runecraft() method conditional, at the moment it is not Other than that, well done - this is great for a first script Apa
  8. You could save a lot on private scripts if you learn to write em yourself.
  9. 1 point
    Just for clarification, you're not expecting 40 runecrafting aswell, are you? Because if so I really don't think 2-3 weeks is possible.
  10. Edgeville is f2p no requirements now. Use that instead of al kharid.
  11. This looks very interesting, really want to test it out to level up my mining. Could I have a trial?
  12. We're going back about 3 years now, so if I remember correctly I believe it was hunter. Though, I'm not too sure. It could have been a number of things. My account could have been watched for a while. I personally believe it was hunter though from what I can remember. I've always had a policy of not running scripts for too long in hot-spot areas. One of my accounts, a pure account I've been working on when I have spare time was actually banned a year ago or more. Though as luck would have it, I managed to get the account back. They detected an IP that wasn't mine on the account, though, I'm not sure how. I guess it was just luck more than anything. The account in question was banned for agility. I left the script running all day accidentally & forgot to put breaks on the profile. I digress, but I'll see if i can find old posts from me getting 99 agility, roughly 2/3 weeks after rooftops was released from botting 24/7.
  13. Is there any chance you can add it so that if there is gems in the inventory, instead of continuing to mine it will deposit them at the same time it deposits the pay-dirt?
  14. Hey, can I get a trial
  15. All the features/tasks I added after the script's release need to be remodelled to fit the new script base architecture which I have planned, so expect script stability + performance to increase almost 10 times with this big update. I am going to finish off some features/fixes and then I will be working on the this update. ^^ As for trial, good luck Don't forget to use the plugin for stronghold (top menu in setup window) post some results too!
  16. Liked! Can I have trial? Want to test it in Stronghold ^^ Looks great
  17. I was typically at 40% CPU usage but now i'm it's running at a pretty steady 20%.
  18. Dude, how do I buy this? Can't see a buy button anywhere. Thanks while im at it, can I get a trial?
  19. I have to say amazing script. So far i've made it to 91 range and 70 slayer with your script. btw, What's the state of the brutal black dragons plugin? I havent tested it yet cause im still leveling slayer.
  20. Also would love a trial, thank you!
  21. Any chance I could get a trial please m8?
  22. Thank you for the helpful tip. This may sound like a dumb question but how do you set up the afk tile with a mac? I've tried Shift + F3 but it doesn't do anything. Can you tell me how to set everything up to start it? Thanks
  23. Hey Czar may I please have a free trial, I have a few of your other scrips! Thank you very much in advance.
  24. v1.17 - fixed the restocking bug that caused the bot to buy the wrong item Examples of this: Bot would buy leaping trout instead of trout or buy raw shark instead of shark.
  25. yeah haha its still going.
  26. Press Control. The list of F-numbers is the list of commands you can use with the script. Did it survive?
  27. and how can i update mine perfect fighter, because i think mine is old version but client is up to date. when i train at expiriments my banking mode doesn't work anymore. i have to bank by my self after 4 hours.
  28. i'm looking for the progress too
  29. Any updates on the progress or is this thread dead?
  30. can I get a trial pls, thanks!
  31. That's the problem. If you want to do manual upgrades, you have to add them to the banking loadout, stop the script when you no longer need them and re-set up the banking loadout because guess what happens when it wants to bank and expects that upgraded weapon that is now equipped to be in the inventory/bank? ๐Ÿ˜‰ Hopefully that'll be a non issue with you added in weapon upgrades.
  32. For angler fishing it keeps depositing the sandworms and pulling out normal fishing bait. Then it goes to start fishing but can't due to wrong bait.
  33. I left this running whilst i was away over the weekend, I didn't set it up to do much, I just let it slaughter chickens, not bad.
  34. Odd you say that I have been using the script for the past couple of days with 20 minute breaks set after every hour and haven't been banned once and im using stun/alch which is way more click extensive you must be doing something wrong. And to be frank I have never been banned using any of Czar's scripts you just have to be smart with it and not bot like other bots and do things other bots do.
  35. Everything is set up fine, it just withdraws too many earth talismans due to lag or sometimes not. Just need to program it to if it has more than 1 in invent then to bank and withdraw essence? No idea how you would do that but that's why you are the scripter and im not ๐Ÿ˜›
  36. Can i get a trial please
  37. Was the script started outside of a game? Also, which boat? I will run some tests and add another update, thanks for feedback ^^
  38. Can you please for the love of god stop bumping old service threads?? You have bumped like 10 threads that are a month+ older
  39. You are using IDs (1530) for finding the fishing spot and IDs always change. Perhaps look for names instead of IDs, change it to something like "getNpcs().closest("Fishing spot")", however I would also check if it has the option 'small net' too, but lumby shrimp doesn't really have any other types of fishing spots so you should be okay. After you get this working I highly recommend taking a look at filters, so you can do something like getNpcs().closest(a -> a.hasOption("random option") && a.getName().equalsIgnoreCase("Fishing spot")); EDIT: You should only ever use IDs as infrequently as possible, with the exception of items, item IDs never change.

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.