Updating automatically

Botting for RuneScape Classic that survives the update

Every private server re-obfuscates its client, and every bot breaks the day they do. BotWith.me re-maps the client by itself, ships a launcher that keeps itself current, hosts a marketplace of scripts, and lets you watch and steer a running bot from the web — with tokens you top up by card.

A client that re-maps itself

The mapper never reads obfuscated names. It matches on shape, structure and history, so every hook keeps its identity through a rename and the bot reads the right memory.

A self-updating launcher

Install it once. When a server ships a new build, the launcher pulls the fresh mapping and updates itself — you never re-download a thing or re-hook a patch.

A script marketplace

Buy a script and the client just fetches it — nothing to install by hand. Or publish your own and keep 70% of every sale. Text scripts and jars both welcome.

Remote control from the web

Watch a running bot live in your browser and steer it — click, type, switch scripts — without touching the machine it runs on. Only ever your own sessions.

Tokens, topped up by card

One balance runs the whole account — bot time, sleep-word decodes and marketplace scripts. Top it up by card through Stripe; your tokens appear the moment the payment clears.

One account, everywhere

The same login runs the site and the loader. Sign in once and the bot signs in with you, asks for the build it is launching, and gets a mapping made for exactly that build.

Latest updates

The newest launcher builds across every server, and what changed.

Developer changelog →
v2026.09.04.2215 launcher 4 Sept 2026
Shops


Scripts can now read a shop and trade with it. Everything the shop window knows is readable, and buying and selling go out as the client's own packets rather than by driving the dialog.




Reading a shop


Open a shop and a script can see the whole of it: every slot, what is in it, how many the shop has, and what each one is worth in both directions.

on loop {
    if not shopIsOpen() { return 1000 }

    for row in shop() {
        print(row.name, "x" + str(row.stock), "buy", row.buyPrice, "sell", row.sellPrice)
    }
    return 600
}


  • Every slot, as a handle.
    shop()
    hands back the filled slots in grid order, each with
    .slot .id .stock .buyPrice .sellPrice .priceBasis .name
    . Find one directly with
    shopItem(151)
    ,
    shopItem("Coal")
    or
    shopSlot(2)
    .
  • The shop's own numbers as well:
    shopIsGeneralStore()
    ,
    shopCount()
    ,
    shopBuyPriceMod()
    ,
    shopSellPriceMod()
    ,
    shopPriceMultiplier()
    , and which slot the window has highlighted.
  • A stock of 0 is a real slot the shop has run out of — still sellable to, not buyable until it restocks. In a general store your own bag is listed alongside the stock, which is how selling there works at all, and those slots sit at 0.





Prices, properly


Classic shops do not have a price list. The price is worked out fresh from the item's value, the shop's two percentages, and how far that slot's stock has drifted from where the shop thinks it should be — so every one you buy makes the next one dearer, and every one you sell makes the next one cheaper.

Scripts get that same curve rather than an approximation of it:

# what one costs, and what ten actually cost - not ten times the first
print("each:", shopBuyPrice("Coal"))
print("ten :", shopBuyPrice("Coal", 10))


So a script can decide whether a stack is worth buying before it buys any of it, and a shop-clearing bot can stop at the point the price stops being worth it. A price of
-1
means the trade would not be offered at all — out of stock, or something that shop will not take.




Buying and selling


shopBuy("Coal", 10)
shopSell("Bones", 5)
shopSellAll("Bones")
shopClose()


  • They wait for the result. A
    false
    means the trade really did not happen, not "the packet left" — the command sends and then waits for the bag to actually change, and prints why if it does not. No hand-tuned sleeps.
  • The window's own rules are kept. The amount is clamped to the shop's stock when buying and to what you are carrying when selling; a shop that does not list an item will not be asked to take it; and bank notes are refused anywhere but a general store, exactly as the game refuses them.
  • By id or by name, everywhere —
    shopBuy(151, 10)
    and
    shopBuy("Iron ore", 10)
    both work, and so do the price readers.





For Java scripts


The same thing lives at
ctx.shop()
:
isOpen
,
all
,
byId
/
byName
/
bySlot
,
stockOf
,
buyPrice
/
sellPrice
,
buy
,
sell
,
close
, plus
Shop.price(...)
if you want to ask what a trade would cost without making it.




Notes


  • RSCFalador for now.
    shopAvailable()
    says whether this client publishes the shop, and
    shopMissing()
    names anything unbound — so a script can say what is wrong instead of quietly doing nothing.
  • Prices need the item values the client keeps in its own cache. Where those are not published every price reads
    -1
    and
    shopPricesKnown()
    is false; the stock and the trading still work.
  • Every command has its own card in the shop group of the command reference, and the Claude scripting skill has been updated with worked examples: reading a shop, buying a stack at a price limit, and emptying the bag into a general store.
v2026.09.04.2115 launcher 4 Sept 2026
Scripting: menu actions and hotkeys


Two additions to the .bot language, both documented with worked examples on the docs site.

  • on menu. A new event that runs for every menu action your client sends — attacking, taking, mining, casting — whether the script asked for it or you clicked it yourself. It arrives with the thing it acted on already resolved, so a looter counts pickups from the action rather than from a chat line it might miss, and a script can tell when somebody has taken the mouse. Fifty kinds and twenty-one readers; RSCFalador for now.
  • Keys and buttons, written up properly.
    hotkey("F1", "onBank")
    binds a key in the game window and
    uiButton
    puts the same job on the script tab. Both run your fun on the script thread between passes, so they never interrupt a pass and are safe to share variables with.
v2026.09.04.1950 launcher 4 Sept 2026
Everything since the last update


It has been a while since the last published build, and rather a lot has gone into this one. The short version: you can run several clients in one window, there are two more servers to run them on, the launcher has its own script editor, you can drive a bot from a browser anywhere, every login can go out through its own proxy and identity, and there is now a real browser tile you can put beside the game.




Several clients in one window


The big one. The launcher now holds as many clients as you want to run, tiled inside a single window instead of one window each.

  • Split however you like. Side by side, stacked, or any mix of the two. Drag a divider to resize, drag a client by its title strip to move it somewhere else, and drop it on the half of another tile you want it to take.
  • Layout presets. Grid, columns, rows, or one main client with the rest alongside it. There is a layout button on the rail with thumbnails of each.
  • Choose where new clients go instead of always splitting the same way, and whether a client is stretched to its tile or kept at its true size.
  • Park and solo. Park a client to a strip along the bottom to get it out of the way without closing it, or solo one to give it the whole window for a moment.
  • Keyboard. Ctrl+Tab cycles clients, Ctrl+Shift and an arrow moves the active one to an edge, and Ctrl+Shift+1 to 9 jumps straight to a client. Keys a running script has claimed are left alone.
  • Console commands for all of it, if you would rather type:
    deck preset main-left
    ,
    deck park 2
    ,
    deck solo
    and so on.


Everything that used to belong to "the client" now belongs to each client separately: its own login identity, its own sleep-word reading, its own overlays and scripts, its own remote stream. Running four at once behaves like running four launchers, in one window.




Two more servers


Alongside RSCFalador you can now run DragonFire and Voidscape. The launcher fetches the server list from the site, so new servers appear without you updating anything.




The window itself


  • Resize it. Grab any edge or corner, or maximise it. The game is never stretched out of shape; it is kept at its proper proportions with the space around it. Your size and position are remembered.
  • A sidebar you can arrange. Drag the buttons into whatever order suits you, and move the whole rail to the other side of the window. It stays where you put it.
  • A better console. Filter it, search it, clear it, scroll back through what you have typed, and complete commands with Tab.
  • Appearance. A theme editor with light and dark, and control over the accent and the overlay colours, so the launcher and the overlays look how you want.





Write scripts in the launcher


There is a full editor for .bot scripts built in: syntax highlighting, live error checking as you type, completion, hover help, a problems list and a command palette. Run and stop from the editor, with the output in its own console beside the code. It runs the script on the client you have in front of you, and remembers which one it started on so Stop always stops the right thing.




Drive a bot from anywhere


Remote control from a browser: a live view of the client, click and type into it from the page, and start, stop and watch scripts. Each client streams itself, and sessions are labelled so two clients on the same server are easy to tell apart.




Logging in


  • Auto login. The launcher notices when a character has been logged out and logs it back in, after a delay you set.
  • Mouse movement. Choose how the pointer moves: WindMouse, Bezier or linear.





Identity and proxies


Two switches on the Identity tab, and a pool behind them.

  • Use proxies only. No login ever goes out on your real address. If a character has no proxy to use, the login is stopped rather than sent.
  • BotWith proxies. The site keeps a pool of proxies, re-checked every ten minutes, and leases you one. A proxy leased to your account is yours alone for as long as you hold it. Nobody else is given it.
  • A character that is not saved yet is set up for you. Log in with a new name while proxies-only is on and it is given its own uid, its own machine id and a proxy, saved on the spot, so that account presents the same face every time.
  • A dead proxy is replaced. The launcher proves your proxy answers before the client dials it. If it does not, it is reported to the pool so nobody else is handed it, and your character is moved onto a live one automatically.





A browser inside the launcher


Open New client and you will see a new option: Browser. It drops a real browser into the deck as another tile, so the docs, a guide, a stream or a video can sit beside the game instead of behind it.

  • It is the browser you already have. Nothing is bundled and nothing is downloaded. The tile borrows the Edge or Chrome already on your machine, so pages behave exactly as they do when you browse normally.
  • Its own profile. Anything you sign into here never touches your everyday browsing, and it stays signed in between sessions.
  • Our own bar with back, forward, reload, home and one box that takes an address or a search, plus a start page for the docs, the forum, the script library and the usual places to watch something.
  • Media controls appear along the bottom of the window when a page starts playing: play and pause, ten seconds each way, next, a scrubbable position line with the running time, mute and volume. They go away on their own when nothing is playing, and fold down to a thin strip that still shows progress. Click the strip to bring them back.
  • Full screen fills the tile rather than escaping it, and Escape brings you back out.
  • Permission popups are declined for you, so no site interrupts you asking for your location or to send notifications.


Requirements. Windows, and Java 22 or newer. The rest of the launcher still runs on Java 21 exactly as before; on 21 the Browser option simply is not offered. Worth knowing up front: video from the subscription services runs at up to 1080p, downloads for offline viewing are not available, and the browser tile does not appear in the remote stream.




Scripts tab


  • Open a script and New script are now a pair of buttons at the top, out of the way of the list.
  • Click a script to read it: the full description, version, author and category, with Run on the same page.





Fixes


  • Fixed being logged out at random on RSCFalador.
  • The New client window can be closed with the X.
  • The game window no longer flashes when clients are moved, resized, parked or soloed.
  • Long pages on the site no longer come up blank once they grow past a few hundred rows.
  • Several problems when closing one client in a multi-client window, including one that could clear the overlays of every other client still running.
v2026.09.03.1355 launcher 3 Sept 2026
sdfhgadfhadfhdfah update quick I got to go work
v2026.08.28.1200 launcher 30 Aug 2026
- Detection of same mouse movement clicking removed. So no longer gets flagged for central clicking.

From the forums

What the community is talking about right now.

Visit the forum →
hello

in General Discussion · by WinterBirch

1 reply

25 Aug 2026

Voidscape Bottable

in Announcements · by ArcaneOxbow

1 reply

25 Aug 2026

RSCDynasty Bottable

in Announcements · by ArcaneOxbow

1 reply

25 Aug 2026

Script requests

in Script Requests · by GleamingMiner

4 replies

24 Aug 2026

Welcome to the forums

in Announcements · by ArcaneOxbow

1 reply

20 Aug 2026

3 servers supported

Whether you can bot there right now, and how current the mapping is.

All servers →
DragonFire RSCFalador Voidscape

Stop re-hooking every patch

One account for the site and the loader. Sign in once and the bot keeps itself current.

Create an account