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/04/25 in all areas

  1. With the release of OSBot Native, which focuses on native code, getting started with scripting may seem a bit daunting at first. However, once you get the hang of it, scripting is just as easy as it ever was! OSBot Native is built on the Rust language, which means we mainly support scripting in Rust natively. Other FFI-compatibles languages will be added later on, but there is no ETA for this yet. Getting Started To set up a new script project, use the following command: cargo new sample_script --libThis command will create a new project, including a `lib.rs` and `Cargo.toml` file. The `lib.rs` file will serve as your entry point for the script. You can add other files if needed, but make sure to keep `lib.rs` as the main file. Next, you’ll want to add the OSBot API dependency and set up your crate as a `cdylib` (this tells Rust that we want to build a shared library). Open the `Cargo.toml` file and ensure it looks something like this: [package] name = "sample_script" version = "0.1.0" edition = "2021" [lib] crate-type = ["cdylib"] [dependencies] osbot_api = { git = "https://github.com/OSBotNative/stub_api", features = ["script"] } Depending on your IDE, it should automatically start syncing and downloading the dependencies. If this doesn't happen, you can manually run the following command: cargo update Now, open the `lib.rs` file, delete any existing content, and paste in the script template. use osbot_api::api::script::script::Script; use osbot_api::api::script::script_metadata::{ScriptCategory, ScriptMetadata}; #[no_mangle] pub extern "C" fn metadata() -> ScriptMetadata { ScriptMetadata { name: "Sample Script".to_string(), author: "Patrick".to_string(), version: 1.0, info: "Getting started with native scripting".to_string(), logo: "https://i.gyazo.com/cff84f44847c548c9024b5a06384a73d.png".to_string(), category: ScriptCategory::Other,}} #[osbot_api::script_exports] pub struct SampleScript; impl Script for SampleScript { fn new() -> Self { Self { }} fn on_start(&mut self, params: Option<String>) {} fn on_loop(&mut self) -> i32 { 250}}Much of this code should be familiar to you, though in a new style. We’ve done our best to make the entire API feel as close to the Java API as possible, making the transition to Rust as easy as it can be! As in Java, a script will include the standard functions like `on_start`, `on_loop`, `on_pause`, `on_stop`, `on_resume`, and `on_render`. You can Ctrl+Click on `Script` (between `impl` and `for`) to open the `Script` trait file and see all the available functions. Let’s start by creating a simple powerfisher script. The pseudocode for this would look something like: if inventory is full { drop all fish } else { if not fishing { start fishing } } All API functions are prefixed with the object you want to interact with, followed by the action: `inventory_something`, `bank_something`, `quests_something`, `npcs_something`, etc. So to check if the inventory is full, you can use: if inventory_is_full() { }If the inventory is full, we want to drop the fish. This is just as easy: inventory_drop_all_by_id(317); OR inventory_drop_all_by_name("Shrimp");These API functions automatically handle opening the inventory if it isn’t already open. And just like that, half of our script is complete! Interacting with the fishing spot is a bit more complex, but still quite easy. First, we need to get the local player and check if it exists. If it does, we check whether the player is moving or animating. If neither is true, we can start looking for a fishing spot. If one is found, we can interact with it. In Java, we'd use `!= null` to check if something exists. Rust doesn’t have this, so we use the `Option` type. An `Option` can be either `Some` or `None`, similar to checking for `null` in Java. For scripting, I prefer the following syntax: if let Some(local_player) = players_get_local_player() { }This attempts to get the local player, and if successful (`Some`), it returns the value. In Java, this would be written like: Player localPlayer = getPlayers().myPlayer();if (localPlayer != null) { } To check if the local player is idle (not moving or animating), we can do the following: if !local_player.is_moving() && !local_player.is_animating() { } Once the player is idle, we can find and interact with the fishing spot and wait until we're fishing. For this example, we'll wait up till 7500 milliseconds and checking if we're fishing every 250 milliseconds. This is done as follows: if let Some(fishing_spot) = npcs_find_closest_by_name("Fishing spot") { if fishing_spot.interact("Net") { utils_sleep_conditional(7500, 250, || { local_player.is_animating() });}}Just like item dropping handles the required conditions to drop the items, interact will ensure you can interact with the fishing spot by either walking to it or moving the camera. If you want to tweak these settings, check out the function `interact_args`. And now you have your first script completed! On to building and running it. Building The Script Read Section 14: https://osbot.org/forum/topic/203264-getting-started-rust-project-setup-rustrover-ide/ I hope this post gives enough information to start scripting using the Native API. If there are any questions; ask away! - The OSBot Team
  2. 1 point
    List of Quests supported (79): if you have any quest requests, please post below!! The list will grow always!! WARNING: Please make sure your account can actually defeat npcs (if applicable) (highly recommend magic spellcasting) Also note: if you have completed a quest, it will be hidden from the setup window for less confusion!! Animal magnetism Barcrawl Below ice mountain Biohazard Black knights fortress Bone voyage (you need 100+ kudos) Big Chompy Bird Hunting (BETA) Children of the sun Clock tower Cooks assistant Creature of fenkenstrain Darkness of hallowvale Death plateau Death to the dorgeshuun Demon slayer Depths of Despair Digsite Dorics quest Dragon slayer i Druidic ritual Dwarf cannon Eagles peak Elemental workshop i Elemental workshop ii Enlightened Journey Ernest the chicken Fairytale i (if you get unlucky 3 random non-GE-buyable items, may not be possible!) Fight arena Fishing contest Gertrudes cat Ghosts ahoy Goblin diplomacy Hazeel cult Holy grail Horror from the deep In aid of the myreque In search of the myreque Jungle potion The knights sword Lost city The lost tribe Merlins crystal Monkey madness i (BETA, you need 200k coins for puzzle) Monks friend Murder mystery Nature spirit Observatory quest One small favour Pirates treasure Plague city Priest in peril Prince ali rescue Queen of Thieves Recruitment drive Restless ghost RFD: Another Cook's Quest RFD: Freeing General Wartface Romeo and juliet Rune mysteries Sea slug Shadow of the storm Sheep herder (BETA) Sheep shearer Shilo village Sins of the father (BETA, no mirror for bossfight) Spirits of the elid A taste of hope The feud The golem The grand tree The tourist trap (no safespotting) Tree gnome village (need 43 prayer+, no safespotting) Tribal totem Troll stronghold Underground pass Vampyre slayer Wanted Watchtower Waterfall Witchs house Witchs potion X marks the spot Zogre Flesh Eaters This is still a new script, so if you ever find any bugs or errors, please use the template below and it will be fixed immediately. Bug Report Template: If ... something is missing - What is the new feature you'd like? - Basic description of what the script should do? - Basic actions for the script: 'Use item on item' etc? If ... you'd like a quest to be added - Quest name, and any useful tips I should know If ... the script gets stuck or freezes on a tile (or continuous loop): - Which exact tile does the script get stuck on? (exact tile, not 'near the draynor village'), screenshots please - Which teleports did you have? - Did you have any coins or shantay pass in inventory? Usually these will help the bot If ... bot has a logic bug (e.g. dies while safespotting) - What is the bug - How did you make the bug happen - Which stage of the quest did you start the bot on? Usually it's best to let the bot start the quest - (optional) recommendation for the bug, e.g. 'make the script walk back' or something - Tried client restart? - Any screenshots or relevant logs (bottom right to toggle) - Which exact setup options are enabled? Afk mode, cannon mode, etc etc. Bot Preview:
  3. 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!
  4. Awesome, that got me squared away. Also taught me about 'Instant' so thanks for that too!
  5. Here, taken from my quester public int getSecondsLeftTeleportHome() { int lastTeleport = getConfigs().get(892); long lastTeleportSeconds = (long) lastTeleport * 60; Instant teleportExpireInstant = Instant.ofEpochSecond(lastTeleportSeconds).plus(Duration.ofMinutes(30)); Duration remainingTime = Duration.between(Instant.now(), teleportExpireInstant); return (int) remainingTime.getSeconds(); }

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.