Check out a great software site, CLICK HERE!
Terms
Use this program at your own risk, it's provided AS IS and with all faults, you
and only you will be responsible if it does any damage to your computer, RS account,
internet connection, hardware, furniture or
global climate. Even if this program contains hostile viruses, trojans or backdoors,
I do not take any responsibility. This program is in a direct violation with RS rules
(point 5 and 6) so use of it
is totally illegal. It's however legal to keep it on your computer.
You are not allowed to disassemble, modify, hex view or decompile ANY of AutoRune files or
use them in other projects without permission. You are not allowed to sell this program,
or give it away to anyone. You are not allowed to use this project if you don't
know what it does and what it is for. You are not allowed to use or even launch it if you are against bots or
work in Jagex. You are not allowed to use it if you don't have the authorization
code. You are not allowed to let anyone else know your code. If we notice that 2 or
more people will use the same authorization code, you lose it. You are allowed to
contact me by email but not expect me to answer you or even read your suggestions or
bug reports. I will however try to do it as often as I can. If you start worshiping me,
you are not allowed to sacrifice live people or animals.
There are inherent dangers in the use of any software available for downloading on
the Internet, and I caution you to make sure that you completely understand the potential
risks before downloading any of the Software. You are solely responsible for adequate
protection and backup of any data and equipment used in connection with any of the Software,
and I will not be liable for any damages that you may suffer in connection with using,
modifying or distributing any of the Software.
Not knowing these rules does not take away the responsibility.
AutoRune usage
When you launch AutoRune you will be asked for username and password. Everyone has his own
unique username/password, if you don't have one, you should talk to Kaitnieks first. Try
email or AIM:kaitniex.

The main areas of the AutoRune window are Server selection, Script box and Log box.
To start using AutoRune, make sure you have RS client downloaded. This version
will not work with RS online client. After selecting the world, click Launch RS button,
browse for the client and launch it. Select the same server you selected in AutoRune.
Now when you log in, you should get some activity in the Log box. If you don't, then there is
some error and make sure you selected the same server as in AutoRune. Also make sure you have
all files required. If everything is ok and you get activity in the Log box then carry on.
Try moving around and doing stuff. You will see everything you're doing in the Log box, like:
MoveTo(48,579)
MoveTo(46,579,-3,-3)
Important
The biggest pain for RS bot makers are the regular updates. After each update you should avoid
using the bot for a couple of days just to ensure, that THEY haven't set up traps to
sweep out bot users (everyone remembers what happened to RuneBot users), but if you do use it,
play a bit manually and check if all commands appear in the Log box as they used to.
When making scripts try to avoid using simple short loops like only standing on place, mining
and letting all ores fall on the ground. Be more creative - bring all ores to bank or something,
choose random paths, don't let it look like autominer.
The bot can't handle disconnects well. If it stops because of disconnect, don't blame AutoRune,
blame your connection :)
AutoRune scripting reference
This section will teach you how to use pre-made scripts. To load a script, use main menu File >
Load Script. There are few sample scripts, let's describe each of them.
Coins collector script
--- Money Collector
@LookForCoins:
Wait(5)
GoToIfNearItem(@GrabItem,10,3)
GoTo(@LookForCoins)
@GrabItem:
SetVarsItemXY(10,11,10,3)
--MoveToVarVar(10,11)
ActionVarVar(10,11)
TakeItemVarVar(10,11,10)
GoTo(@LookForCoins)
--- End
All this script does is wait for coins to appear nearby and collect them. The best place to use it
is in bank vault. If you want, you can transform it in air-rune collector or something else, you just
have to modify 3 values marked in red. Change them... to what? It's item ID, for money it's 10, for
other items it's different. When you take item in RS manually, you will get something like:
TakeItem(65,557,i=20) in your Log box. "i=20" - that's the number you're looking for. Change the red
10's to your number (20 in my sample which means bones) and you will have a script collecting something
that is not coins :)
If you look at bone collecting script, it's the same script but modified to
collect bones and instantly dig them. I don't know where is a good place for bone collecting, if you
do - let me know.
Iron miner/smelter/smither script
----- Automine iron script
-- 1st rock
GoToIfBagFull(15)
ResetLastItemGained()
Action(27,544)
AtObject(28,544)
Wait(20)
GoToIfLastItem(2,151)
GoTo(-7)
-- 2nd rock
GoToIfBagFull(7)
ResetLastItemGained()
Action(27,544)
AtObject(27,543)
Wait(20)
GoToIfLastItem(-14,151)
GoTo(-7)
---- Leave iron mine
MoveTo(24,544)
MoveTo(24,545)
MoveTo(19,545)
MoveTo(19,549)
MoveTo(22,552)
MoveTo(22,565)
MoveTo(29,573)
MoveTo(44,573)
MoveTo(44,577)
MoveTo(46,580)
MoveTo(52,580)
MoveTo(58,585)
MoveTo(58,595)
MoveTo(65,602)
MoveTo(65,613)
MoveTo(63,615)
MoveTo(63,619)
MoveTo(61,619)
MoveTo(61,625)
MoveTo(73,625)
MoveTo(86,625)
MoveToRandomly(86,628,87,628)
-- Walk through door
MoveToRandomly(85,628,84,628)
-- smelt
SmeltOre(84,627,82,626,151)
Wait(35)
GoToIfInInventory(-3,151)
MoveToRandomly(85,628,84,628)
-- Exit
MoveToRandomly(86,628,87,628)
MoveTo(86,625)
MoveTo(75,625)
MoveTo(61,625)
MoveTo(61,618)
MoveTo(61,616)
MoveTo(65,611)
MoveTo(65,602)
MoveTo(59,595)
MoveTo(59,585)
MoveTo(53,579)
MoveTo(45,579)
MoveTo(45,577)
MoveTo(43,576)
MoveTo(43,573)
MoveTo(49,573)
MoveToRandomly(53,571,53,572)
MoveTo(64,571)
MoveTo(67,568)
MoveTo(67,562)
MoveTo(69,560)
MoveTo(78,560)
MoveTo(78,546)
MoveTo(83,541)
MoveTo(83,519)
MoveToRandomly(83,513,83,512)
MoveToRandomly(88,508,89,508)
MoveToRandomly(98,507,97,507)
MoveToRandomly(98,509,98,508)
-- Enter blacksmith
MoveToRandomly(98,510,98,511)
@Kal:
ForgeBar(97,511,97,512,170)
GoToIfCountInInventoryGreater(@MakePlate,4,170)
WaitForQuestMenu(50)
Answer(0)
WaitForQuestMenu(50)
Answer(1)
WaitForQuestMenu(50)
Answer(0)
GoTo(@BeidzKalt)
@MakePlate:
WaitForQuestMenu(50)
Answer(1)
WaitForQuestMenu(50)
Answer(2)
WaitForQuestMenu(50)
Answer(1)
@BeidzKalt:
Wait(15)
GoToIfInInventory(@Kal,170)
MoveToRandomly(98,510,98,511)
-- Exit blacksmith
MoveToRandomly(98,509,98,508)
MoveToRandomly(102,507,103,507)
-- Enter bank
MoveToRandomly(103,506,102,506)
--- talk to banker
RepeatNextCommandUntilQuestMenu(50,3)
MoveToRandomly(103,506,102,506,99,506)
Action(102,505)
TalkToNPC(556,557,559)
Answer(0)
WaitForBankWindow(50)
DepositEverything()
Wait(10)
CloseBank()
Wait(20)
MoveToRandomly(103,506,102,505,102,506)
--- Exit bank
MoveToRandomly(103,509,103,508)
MoveToRandomly(100,509,100,508)
MoveToRandomly(85,508,85,510,85,509)
MoveTo(64,510)
MoveTo(61,507)
MoveTo(40,507)
MoveTo(25,519)
MoveTo(25,537)
MoveTo(25,544)
This script should be started at this place:

What it does is following:
- Mines iron until hands are full
- Goes to Lumbrige and smelts all iron ores
- Goes to Varrock blacksmith
- Makes iron plate if there are enough bars
- Makes iron short swords if there are less than 5 iron bars in hands
- Goes to bank and deposits everything
This list gets repeated over and over.
The Bronze script is very similar. It starts in dwarven mines,
mines full hands with copper and tin, goes to falador to smelt them and puts
everything (bronze bars, gems) in the bank then starts over. The exact start position
can be seen here:
Important - all commands that work with items in your bag only see those items,
that you have gained while playing RS throuhg AutoRune. If you had a hammer in
hands before you logged in and you didn't touch it (drop and then take or anything)
then bot won't see the hammer at all and commands like DepositEverything() will
leave it in untouched hands. If you dropped it accidentally and you want the bot to
forget it, you have 2 choices: 1) Close everything and reopen 2) Leave only the things
you don't want the bot to see in backpack and press in menu Script > Forget Items.
Making your own scripts
It's very important that you make your own cool scripts, because if everyone starts
using the same scripts all the time, there is a chance it will be noticed by THEM.
In this section I will try to explain how to do it, the main techniques.
Moving
Just for training purposes do following: Go to some place where there are no many people
or obstacles in your way. Clear the list by pressing the button.
When you have done that click where you want to move in your RS window. You
will notice that a command MoveTo(some numbers) appear in your AR window's Log box.
Important: The destination
has to be reachable by going in straight line - that means NO going around obstacles.
Why is that so? If another player or NPC will get in your way while you are moving,
you will stop. After bot notices you have stopped, it will try again to reach the destination
but it will not take any obstacles into account. So remember - all destinations have to be visble
by your char! If there are more than 4 numbers as MoveTo parameters, you're going around
something and that's not good, better go back and try again.
After your char reaches the coord you clicked, click to next coord, wait for it to
get there and so few times. At the end you should have something like this in your Log box:
MoveTo(24,541)
MoveTo(24,540,5,-5)
MoveTo(24,535)
MoveTo(21,535,-1,1)
Copy (ctrl+C) and paste (ctrl+V) the commands from your Log box to Script box. Then go with your
RS char to the place you started this training at and launch the script by pressing Run button.
If you did everything correctly, you will see your character moving. After executing the last
MoveTo, AR will return to 1st line and start all over.
Tips for longer paths:
- Make sure every next coord can be reached from the previous one without going around obstacles
- Try to keep as less MoveTo commands as possible. Especially in crowded areas.
- In very crowded areas use MoveToRandomly and choose 3-4 alternative destinations.
Mining
Go to some mining site. Click on all rocks you want to mine from. You will get lines like:
Action(27,544)
AtObject(28,544)
The AtObject always should come together with Action. In this example 27,544 are coords the character
will stand at when mining and 28,544 are the coords of the rock. Here is a script that mines
from one rock all the time and does nothing else:
Action(27,544)
AtObject(28,544)
Wait(20)
It swings the pick at the rock, waits 2 seconds, then repeats. All ores fall down, the guy just mines
and mines, never goes anywhere else, ppl get suspicious... Don't use so simple scripts :)
Here is a bit more complex:
@Rock1:
ResetLastItemGained()
Action(27,544)
AtObject(28,544)
Wait(20)
GoToIfLastItem(@Rock2,151)
GoTo(@Rock1)
@Rock2:
ResetLastItemGained()
Action(27,544)
AtObject(27,543)
Wait(20)
GoToIfLastItem(@Rock1,151)
GoTo(@Rock2)
This one mines from 2 rocks. When you look at it really carefully, it's not complex at all.
You should change the coords for Action and AtObject commands. Alter parameters of Wait()
commands according to your needs (20 means 2 seconds).
To make it mine something else than iron, change the red numbers 151 to corresponding ID.
To find out ID, read how to do it where I explain coin collector script.
This script just mines from 2 rocks and yet again drops everything on ground.
To make it leave mine when hands are full, just add few lines:
@Rock1:
GoToIfBagFull(@HandsFull)
ResetLastItemGained()
Action(27,544)
AtObject(28,544)
Wait(20)
GoToIfLastItem(@Rock2,151)
GoTo(@Rock1)
@Rock2:
GoToIfBagFull(@HandsFull)
ResetLastItemGained()
Action(27,544)
AtObject(27,543)
Wait(20)
GoToIfLastItem(@Rock1,151)
GoTo(@Rock2)
@HandsFull:
--- Leave mine
--- ...
--- ...
You could make it go to furnace and smelt all ores then or simply put them in bank.
It's up to you but when hands will be full bot will start executing lines after
the label @HandsFull:
Smelting
Take a look at the sample:
@Smelt:
SmeltOre(84,627,82,626,151)
Wait(35)
GoToIfInInventory(@Smelt,151)
-- End of smelting
-- ...
Change the red 151 to ID of your ore. 84,627 are coordinates of Action command
(where you will be standing at when smelting), 82,626 are coordinates of the
furnace.
It will execute these lines until there are no ores with ID 151 (iron)
left in your hands. Important: The bot only knows about those items you have gained
while it is running. If you had ores before logging in, it won't see them and won't smelt
them. To make bot see them, drop them all on ground and pick up again.
Smithing
This sample makes short swords from iron bars. It will make the swords until there
are no iron bars left in hands.
@Kal:
ForgeBar(97,511,97,512,170)
WaitForQuestMenu(50)
Answer(0)
WaitForQuestMenu(50)
Answer(1)
WaitForQuestMenu(50)
Answer(0)
Wait(15)
GoToIfInInventory(@Kal,170)
-- End of smithing
-- ...
Again: 97,511 = your coords when you're forging, 97,512 = anvils coords, 170 - iron bar ID.
If you want to make it more advanced, you can make it check if your char has 5 iron bars
then make plate mail, otherwise short swords or something, you will need variable commands
for that.
Bank
The next script deposits everything in the bank. Important: Only the items that are
visible by the bot get deposited. The bot won't see items that you already had before logging
in unless you drop them and take again.
RepeatNextCommandUntilQuestMenu(50,2)
Action(55,511)
TalkToNPC(532,528,527)
Answer(0)
WaitForBankWindow(50)
DepositEverything()
Wait(10)
CloseBank()
Wait(10)
In this case you should change coords of Action(55,511) to a middle of bank, 523,528,527
are all banker numbers in that bank (to find out banker numbers just press on them in your
RS window and TalkToNPC(number) will appear.
Auto items collecting
Look at the sample scripts Bone collector and money collector.
Variables
Look at Variables sample script.
If you make cool, universal scripts, please send them to aivars@sos.lv
and I might include them with next versions.
AutoRune script command reference
* All labels and variables are case sensitive
* Labels are defined by @LabelName: and jumped GoTo(@LabelName). You should make sure there are no dublicate
labels or jumping to non-existing labels, bot doesn't check it.
* There are totally 101 variables to use numbered 0..100. Variables are usually addressed through %variablename
(with percent in front), like this SetVarNum(%a,10).
* All scripts loop automatically - after last line return to line 0.
* Every coordinate is represented by 2 parameters - X and Y coordinate.
* When making loops, make sure there is Moving or Waiting command included. Otherwise in case of infinite loops
the bot will freeze.
* When using string parameters, they must be in quotes, like Debug("test")
MoveTo(x1,y1[,x2,y2,...]) - if it has 2 params, then it moves to the coordinate specified by the params,
otherwise it will take every next pair of params as relative coordinate to move to. For an example
MoveTo(100,200,0,1) will move to coordinate 100,200 and then go 1 square to south.
MoveToVarVar(var1,var2) - 2 params, variable numbers. Will go to coords specified by those variables.
MoveToRandomly(x1,y1[,x2,y2,...]) - at least 1 pair of parameters specifying coords. Works as MoveTo, but it will
choose destination randomly from the given pairs. For an example MoveToRandomly(100,200,101,200) will
go to either 100,200 or 101,200 and if one of them is occupied by a player or NPC (non playing character)
then it will go to the other one.
Action(x,y) - 2 params, coords. This function is used together with a number of other functions right
before them, like AtObject, AtObjectWithItem, TalkToNPC, TakeItem.
ActionVarVar(var1,var2) - 2 params, variable numbers containing coords. Works like Action but with variables.
AtObject(x,y) - 2 params, coords. Use in pair Action + AtObject. AtObject is called when mining for
an example.
AtObject2(x,y) - 2 params, coords. Use in pair Action + AtObject2. AtObject2 is called when caging lobsters for
an example.
AtObjectWithItem(x,y,ID) - 3 params, coords and item number in the backpack. Used together with Action.
TalkToNPC(ID1[,ID2,...]) - at least 1 param representing ID of NPC. Talks to non playing character (NPC). If more
than 1 parameters are given, it will talk to any of them randomly. Used together with Action.
Deposit(ID,count) - 2 params, item ID and amount to deposit. Bank window must be open.
Withdraw(ID,count) - 2 params, item ID and amount to withdraw. Bank window must be open.
Answer(choice) - 1 param, choice number starting from 0. When talking to NPCs a quest menu sometimes appears
giving you choices of what to say or do. This command selects one of the choices.
UseItem(number) - 1 param, item number in backpack. Used to burry bones, eat food etc.
UseItemByID(ID) - 1 param, item ID. The same as UsedItem but uses item ID instead of number in backpack.
UseItemWithItem(Pos1,Pos2) - 2 params, first item's position and second item's position in inventory.
UseItemWithItemByID(ID1,ID2) - 2 params, first item's ID and second item's ID. Both items must be in
inventory and visible to bot.
Say(HexText) - use this command exactly as it appears in debug box, for an example Say(01 ). You don't see what you're
saying yourself, but others will see.
CloseShop() - no params, closes shop window.
CloseBank() - no params, closes bank window.
LogOut() - no params, log out from RS.
DropItem(number) - 1 param, item number in backpack. Drops the item on ground.
DropItemByID(ID) - 1 param, item ID, item must be in inventory and visible.
TakeItem(x,y,ID) - 3 params, coords and item ID. Tries to take item ID at given coordinates. Used together
with Action.
TakeItemVarVar(var1,var2,ID) - 3 params, 2 variable numbers containing coords and item ID. Works like TakeItem
but coords are read from variables.
SmeltOre, ForgeBar(X,Y,oX,oY,ID) - 5 params, your coordinates while smelting/smithing, object (furnace, anvil)
coordinates and item ID (ore or bar ID).
DepositEverything() - deposits every item the bot knows of. It will only see those items you gained
while playing through AutoRune, everything that you had before logging in won't be deposited.
SellItem(ID,base,inc,div) - 4 params, item ID, base price, step increaser, step increaser divider. This is a
complex function, use it only if you are desperate. The bot has to calculate prices and only if
the prices are calculated correctly, the item will be sold. It calculates the price by formula:
Price = base price * ( 1 - ( Items in shop * step increaser / step increaser divider) ). All these values
are different for every item I think, if you find a better formula, let me know. Shop window must
be open.
BuyItem(ID,base,inc,div) - 4 params, the same as for SellItem.
MagicOnItemByPos(pos,num) - 2 params, item position in inventory and spell number.
MagicOnItemByID(ID,num) - 2 params, item ID and spell number. The item must be in inventory and visible to bot.
SetFire() - tries to lighten fire at characters position. Tinderbox must be in blackbox and visible to bot,
there must be wooden logs on ground where the character is standing.
SetFireAtCoords(x,y) - tries to lighten fire at given position. Tinderbox must be in blackbox and visible to bot,
there must be wooden logs on ground at the given coords.
SetFireTinderPos(Pos) - tries to lighten fire at characters position. Tinderbox must be in the given position,
there must be wooden logs on ground where the character is standing.
Wait(time) - 1 param, pause length in 1/10 seconds. You should use this function for waiting and also
for avoiding freezing of AutoRune because of infinite loops in script. If yo have an infinite loop,
insert Wait(1) in it.
WaitForQuestMenu(time) - 1 param, timeout in 1/10 seconds. Waits until quest menu appears but if it
doesn't in time specified by param, stop waiting.
WaitForBankWindow(time) - 1 param, timeout. Waits until bank window appears or time runs out.
WaitForShopWindow(time) - 1 param, timeout. Waits until shop window appears or time runs out.
WaitForCoordChange() - no params. Waits until the character changes it's location. You should
use this when climbing ladders, teleporting etc.
RepeatNextCommandUntilQuestMenu(time,count) - 2 params, timeout and command count. It will execute
next commands count specified by 2nd parameter, then wait for quest menu. If waiting times out,
it repeats the commands again and so on until the quest menu appears.
GoTo(label) - jump to label. It can also be a number, specifying how many lines to skip. Can be negative.
GoSub(label) - calls the label as procedure. Ret() will return back to the line it was called from.
Ret() - return from procedure. Jumps back to the last GoSub() it came from.
ERet() - use to return from events. If you want to jump instead of return, you should restore events
with EnableEvents()
EnableEvents() while event is caled, other events are disabled. Use this to enable them.
ResetLastItemGained() - forgets the last item the character has gained.
ResetLastItemLost() - forgets the last item the character has lost.
GoToIfLastItem(label,ID) - jumps to label if the last item ID gained by character is equal to 2nd parameter.
GoToIfLastItemLost(label,ID) - jumps to label if the last item ID gained by character is equal to 2nd parameter.
ID is -2 for invisible items.
GoToIfItemGained(label) - jumps to label if item gained since the last ResetLastItemGained.
GoToIfItemLost(label) - jumps to label if item is gained since the last ResetLastItemLost.
GoToIfBagFull(label) - jumps to label if character's backpack is full.
GoToIfInInventory(label,ID1[,ID2,...]) - jumps to label if all of IDs given as params can be found in
the backpack.
GoToIfCountInInventoryEqual(label,num,ID1[,ID2,...]) - jumps to label if all item numbers with IDs given
are equal to 2nd parameter in inventory.
GoToIfCountInInventoryGreater(label,num,ID1[,ID2,...]) - jumps, if all item numbers in backpack with given
IDs are larger than 2nd parameter.
GoToIfVarEqual(label,var1,var2) - jump to label if variable1 = variable2.
GoToIfVarNotEqual(label,var1,var2) - jump to label if variable1 != variable2.
GoToIfVarAbove(label,var1,var2) - jump if variable1 > variable2.
GoToIfVarBelow(label,var1,var2) - jump if variable1 < variable2.
GoToIfVarEqualNum(label,var1,num1) - jump to label if variable1 = number1.
GoToIfVarNotEqualNum(label,var1,num1) - jump to label if variable1 != number1.
GoToIfVarAboveNum(label,var1,num1) - jump if variable1 > number1.
GoToIfVarBelowNum(label,var1,num1) - jump if variable1 < number1.
ResetLastServerMessage() - forgets last server message.
GoToIfLastServerMessageIs(label,"String") - jumps to label, if last server message is equal to String.
GoToIfLastServerMessageIsNot(label,"String") - jumps to label, if last server message is not equal to String.
SetVarNum(var1,num1) - sets variable1 to constant number. variable1 := number1.
SetVar(var1,var2) - sets variable1 to variable2. variable1 := variable2.
SetVarRandom(var1,num1) - sets variable to random value from 0 to num1.
AddVarNum(var1,num1) - increases variable1 by number1. variable1 := variable1 + number1.
AddVar(var1,var2) - increases variable1 by variable2. variable1 := variable1 + variable2.
SetVarItemCount(var1,ID1) - sets variable1 to number of items with ID1 in backpack.
SetVarMyX(var1) - sets variable1 to your X coordinate.
SetVarMyY(var1) - sets variable1 to your Y coordinate.
SetVarMyHP(var1) - sets variable to your hit points value.
GoToIfNearItem(label,ID1,Distance) - jumps to label if item with ID1 is not further than Distance1.
SetVarsItemXY(var1,var2,ID1,Distance) - sets variable1 and variable2 to coordinate of item with ID1 if
such an item is not further than Distance1.
SetVarTime(var1) - sets variable to timestamp. You can use this to get out of loops if you're in them
for too long.
GoToRandom(label1[,label2,...]) - jumps to any of labels given chosen randomly.
GoSubRandom(label1[,label2,...]) - calls any of given labels as subroutines.
Debug("String") - Output text in the left Debug box.
DebugVar(var1[,var2,...]) - Output contents of variables in Debug box.
MessageBox("String") - Show message box with custom text.
GoToIfQuestion(label,"Question") - displays yes/no messagebox and jumps, if user answers with "yes".
Stop() - stops script execution.
StopAndLogOut() - stops script execution and logs out.
SetOnPlaceTime(time) - changes the standing on the same place timeout. After character
stands on the same place for given time, it will move randomly a bit. Default timeout is 2400 which is 4 minutes.
Events
Events are procedures, that get executed every time when specified event occurs. For an example, OnHPChanged event
will be executed every time when hitpoints change. If you have set this event, as, for an example,
OnHPChanged(@HPChanged,%HP), then every time your hit points change, the script will jump to @HPChanged: and
insert the current value of hit points into %HP. After you finish processing the event, return to the main
script with ERet(). Look at EventTest sample script for information.
OnItemLost(label,%ItemID,%ItemPos) - event gets executed every time an item is lost from inventory.
It will copy item position and ID to the variables specified, if item, that is not visible to bot disappears,
then %ItemID is set to -2.
OnItemGained(label,%ItemID,%ItemPos) - event on gaining items.
OnServerMessage(label) - event gets executed on server messages. You can use commands GoToIfLastServerMessageIs
and GoToIfLastServerMessageIsNot to find out what message it was here.
OnPrivateMessage(label) - event gets executed on private messages. If you block private messages and yet
a private message is being sent, it's a reason for LogOut() and Stop().
OnCoordsChanged(label,%LastX,%LastY) - gets executed every time the coordinates change. %LastX and %LastY
contain the coordinates you are coming from. Here you can detect if you possibly get teleported by admins.
OnDestinationReached(label) - gets executed every time when MoveTo reaches the destination.
OnIdle(label,time) - gets executed when script sits on the same line for time given and is not moving.
You can use this to detect if the script is stuck.
OnHPChanged(label,%HP) - gets executed when hit points change. %HP will contain the amount of hit points.
OnStatsChanged(label,%StatNumber) - gets executed when stats change. %StatNumber will contain number of
stat that changes (0 - attack, 1 - defense, 2 - strength, 3 - hits, 4 - range, 5 - prayer, 6 - magic, ...).
OnChatMessage(label) - gets executed when someone talks in game. If you have chat messages blocked and
someone still talks - it's admin, beware!!!
OnShopClosed(label) - Shop window closes.
History and story
Background story
My hobby is bot making for various online games. I personally don't think that it makes from me a hacker,
although many people think so. I personally dislike hackers, but again it depends on what you call hackers.
I've always told they are the people who deface webbies, root boxes and love to break in somewhere.
Others say that it's wrong and all smart computer users are hackers. By their classification I could
be called hacker, although I have never defaced a site, rooted a box, ok there were some online games
that I... some systems that I... some softs that I... nevermid :)
I'm making bots for 2 years already. Here are the main of them with a short description:
Food Fight bot (FF.exe). Unfortunately all sources and even executables are lost :( It wasn't really
a bot, it was more like advisor, which calculated for me who is the best attack target and spy target.
It let me be quicker than other players but that's all. It was my first try, kind of lame, in VB,
to adapt it to different user I had to change several files manually, there was no Log in box :)
???. I have forgot name for this and I can't find the game anymore either. It was a simple clicker, VB.
Sol for Sol. Also quite simple, I don't remember what it did,
I think trained my stats, VB.
BWBots - bot for Bunkerwars (the game doesn't exist anymore, the bot can be found
here). It was a legal bot because game rules allowed bots.
Although there were several bots, more than 90% used my bot and other bots (except one) died. It's VB.
DaExplorer - my ultimate bot for DroidArena. It was very
universal, it practically played for me, had quite a good AI and it got me into #3. Everyone in top6 had
used the bot at least for some time :) It's VB.
CBbot - simple clicker for Carnage Blender, Delphi.
The cool thing about it was that it had human check images and I figured a way to bypass them. Then
I had a talk with game creator and it's better now. I have no idea what's happening in that game now.
LostBot for LOST. It played automatically, but was very
simple. A bit more advanced than a clicker. It's made in Delphi.
AutoRune - bot for Runscape - the first bot for non-web game.
It has a scripting system, I've never used that in bots until now. That way I don't have to build a complex
AI into bot, every user can write his own scripts for different purposes. It's made in Delfi.
AutoRune history
Version 1.26 (special edition for Bl4ck1E)
Version 1.25 new features:
- Fixed events
- Added some events
- Added some commands
- Fixed some interface bugs
- Prevent Logouts work again
Version 1.2 new features:
- Fixed bug with events
- Fixed (at least minimized) Win 98/ME lag
- Added auto-logout
Version 1.1 new features:
- Fixed bug, that disallowed to launch RS when folder names contained spaces
- Fixed minimal item selling price
- Implemented many new commands
- Implemented event system
- Can now write variable names instead of numbers
- Two members servers are added
The version 1.0 key features:
- Supports Worlds 1,2 and 7
- Has user authorization
- Has scripting support
- Has mechanism to bypass inactivity logout
Making AutoRune was fun, although I think I'm experienced bot maker, AutoRune was something completely
different from previous bots. It took a whole week for me to make it and all I want right now is to sleep
and slep and sleep.... I'm very tired, I hope you enjoyed this document, I will complete it after
I have a rest. All I want to say - even if the bot gets discovered and banned already tomorrow,
even then I would not be disappointed. My goal was to make a bot not to have a bot.
Thanks
Thank you Rapids for the very l33t interface.
Thank you evilcowgod for inspiring me to making this. It wasn't
actually you but your site forums.