# Thread: Simplistic Beginners Guide To RS3 Scripting

1. ## Simplistic Beginners Guide To RS3 Scripting

Simplistic Beginners Guide To RS3 Scripting
Updated: 12th May 2015

This tutorial is designed to give you a very basic overview of RS3 scripting. You may be aware of my AIO RS3 and SRL6 scripting tutorial, but it may be a bit complicated if you’re just starting out. This tutorial is short and sweet, and sufficient to give you a basic understanding of the main SRL-6 (the include we use for RS3) scripting techniques.

This tutorial is split into the following sections:
1. Simba basics
2. Mouse basics
3. MainScreen basics
4. Backpack basics
5. Minimap basics
6. BankScreen basics
7. ActionBar basics
8. DepositBox basics
9. LodestoneScreen basics
10. ToolScreen basics
11. ProductionScreen basics
12. ProgressScreen basics
14. ConversationBox basics
15. Chatbox basics
16. CollectBox basics
17. GrandExchange basics
18. LootScreen basics

NOTE: I'm still working on the last 2 or 3 sections, and I plan to add a section on logging in your player etc.

1) Simba Basics

Printing to the debug box

The first thing you need to know is how to write text to the debug box (the box at the bottom of the simba GUI). This is done using the writeLn command (which means write on a new line). Take a look at this example:

You also need to know how to clear the debug box. This is done using the clearDebug() command. In the following example I clear the debug and then print Goodbye, meaning the first line I wrote gets cleared before I print the second line:

Wait a second!

Next you should know how to wait. Using waits in your script is very useful, especially if you are learning. This is done using the wait(milliseconds) command. This example is similar to that above, except it waits 3 seconds before printing goodbye.

It is also important to know that waiting for an exact amount of time is not very human like, so it is better to wait for a random amount of time. We do this using the randomRange(min, max) procedure. The following snippet is exactly the same as the previous one, except it waits for a random amount of time between 1 and 4 seconds:

Understanding coordinates

Understand coordinates is important as each location on your screen has its own coordinates (x and y). See in the bottom left corner of simba there are 2 numbers inside parentheses. These are the current (x, y) coordinates of your mouse. Move your mouse and see how they change. These are the current coordinates of your mouse:

2) Mouse and Clicking Basics

Moving and clicking the mouse is quite important (obviously). I’ll show you some of the different ways to do that. You can move and/or click a point on the screen (if you know the x and y coordinates) or you move/click anywhere inside a box. Before we get into that, first you need to know the 3 different mouse actions:

MOUSE_MOVE
MOUSE_LEFT
MOUSE_RIGHT

The first one just moves the mouse, the second one left clicks the mouse, and the final one right clicks the mouse. These are used inside the following mouse functions.

Moving the mouse and clicking a point

This function moves the mouse to point(x, y) and will then click the mouse depending on the mouseAction you select:

Simba Code:
mouse(x, y, mouseAction);

Let’s say I wanted to move the mouse to point (100, 100) and not click. I could use:

Simba Code:
mouse(100, 100, MOUSE_MOVE);

If I wanted to move the mouse to point(100, 100) and then right click, I would use this:

Simba Code:
mouse(100, 100, MOUSE_RIGHT);

This is demonstrated in the picture below. This will load SMART and move the mouse to point 100, 100 on the login screen (this also demonstrates a how a procedure works – see AIO tutorial). Write this in simba and press play if you want to test it! Make sure you write everything, including the $DEFINE and$I lines at the top (I explain these below).

Sometimes it is good to have a little bit of randomness when moving the mouse so the mouse doesn't land in exactly the same spot every time. This can be achieved with this function:

Simba Code:
mouse(x, y, ranX, ranY, mouseAction);

This is the same as above, except is has ranX and ranY, which is the randomness (in pixels) it will add to x and y. If I wanted to move the mouse to point(100, 100) with a randomness of 5 pixels in each direction (so x = 100-105 and y = 100-105) I would use:

Simba Code:
mouse(100, 100, 5, 5, MOUSE_MOVE);

Now let’s say you wanted to just click the mouse without moving it. You can use fastClick(mouseAction) for this. For example, to left click the mouse without moving it:

Simba Code:
fastClick(MOUSE_LEFT);

Now let’s put the things you've learn so far together. This snippet combines mouse moving, mouse clicking, writing text, and waiting (copy and paste this into simba and press run). If you were wondering, the {$DEFINE SMART} and {$I SRL-6/SRL.simba} at the top are just to include the SMART and SRL files from your C:/simba folder. The setupSRL() procedure at the start of the main loop loads all the files that you just included.

Simba Code:
program new;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure practiceMouse();begin  mouse(200, 200, MOUSE_MOVE);  wait(3000);  mouse(50, 50, MOUSE_MOVE);  wait(3000);  fastClick(MOUSE_RIGHT);  writeLn('We just right clicked');  wait(3000);  mouse(300, 30, MOUSE_MOVE);end;begin  clearDebug();  setupSRL();  practiceMouse();end.

Moving the mouse and clicking inside a box

The previous section you learnt how to move the mouse and click a point. The other way to move and/or click a mouse is inside a box. The good thing about this method is the mouse moves anywhere inside the box, so you don't need randomness.

A box is made up of 2 points – the top left corner and bottom right corner of the box. Even though a box has 4 corners, you only need to know 2 points to make a box. See this picture taken from my AIO tutorial:

In simba, a box variable is called a TBox, and is made up of 4 integers (i.e., 2 coordinates for each point). Here I make a box out of integers:

Simba Code:
intToBox(x1, y1, x2, y2);

The following is an example of declaring a TBox variable called myBox and assigning 4 integers to it:

Simba Code:
procedure makeMyBox();var  myBox: TBox; // Created a TBox variable called myBoxbegin  myBox := intToBox(10, 10, 50, 50); // Assigned these coordinates to the myBox variableend;

Now that you know how to make a box, let’s move the mouse inside that box. You do this using the mouseBox function:

Simba Code:
mouseBox(box, mouseAction);

where box is a Tbox, and mouseAction is one of the 3 mouseActions described above.

If you are wondering how to get the coordinates for your box, you can simply use the coordinates displayed in the bottom left corner of simba (like I showed you above). If you are selecting coordinates from the SMART client (which you probably are), remember to drag the cross-hair from simba to SMART (so the coordinates start counting from the top left corner of the SMART window and not your desktop). The cross-hair looks like this:

Time for a practical example. Let’s create a box around the settings button on the runescape login screen, and then move the mouse inside that box and left click. This will open up the settings screen.

Simba Code:
program new;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure practiceBox();var  settingsButton: TBox; //declare TBox variablebegin  settingsButton := intToBox(735, 80, 750, 100); // Top left, bottom right points  mouseBox(settingsButton, MOUSE_LEFT); // Left click the box we just madeend;begin  clearDebug();  setupSRL();  practiceBox();end.

If you run the following code, you will see it clicks the settings button and opens up the settings menu! Now I’ll show you another way to click a box. Instead of declaring a TBox variable and putting that variable inside the mouseBox function, you can create a box directly inside the mouseBox function. This example will open up the settings menu like before, wait 4 seconds, and then click the X to close it using another mouseBox:

Simba Code:
procedure practiceBox();var  settingsButton: TBox; // Declare TBox variablebegin  settingsButton := intToBox(735, 80, 750, 100);   mouseBox(settingsButton, MOUSE_LEFT);   wait(4000);  mouseBox(intToBox(630, 105, 640, 115), MOUSE_LEFT); // Notice how I made the box inside the mouseBox functionend;

Well done, now you know all about moving and clicking the mouse! Welcome to the l33t club of RS pro scripters. InB4AIODungScript.

3) Main Screen Basics

Here at SRL we refer to the screen where your player is as the mainScreen. In this section we will cover how to change the angle of the mainScreen, how to find objects (using colour finding), and how to check if text matches.

Changing the mainScreen angle

Changing the angle is useful as you probably want to make the angle high (like a birds eye view) after you login, as this makes it easier to play the game. You can change the mainScreen angle using the function:

Simba Code:
mainScreen.setAngle(angle);

There are 2 angles built in to SRL-6. Each of these has a picture to demonstrate.

MS_ANGLE_LOW:

MS_ANGLE_HIGH:

This snippet will set the angle high, wait 3 seconds, and then set the angle low (try it if you want - just login manually):

Simba Code:
program new;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure changeAngleBoss();begin  mainScreen.setAngle(MS_ANGLE_HIGH);  wait(3000);  mainScreen.setAngle(MS_ANGLE_LOW);end;begin  clearDebug();  setupSRL();  changeAngleBoss();end.

Finding objects on the mainScreen

Now let’s find objects on the screen and click them. Before we get into finding colours, let's do a quick section on text recognition. Recognising text is very important as it's used to recognise objects, NPC and items. When you hover your mouse over an object, a box pops up. We call this the mouseOverText. If I hover over this Evergreen Tree, this is the mouseOverText:

Next we have the chooseOption menu. This is different to the mouseOverText so don't confuse them. The chooseOption menu pops up when you right click. If I right click an Evergreen Tree, this is the chooseOption menu:

Remember what both the mouseOverText and chooseOptions look like as we will use them later. Now let’s use a very general object finding function. This is the simplest form of the mainScreen.findObject function:

Simba Code:
mainscreen.findObject(x, y, color, tolerance, mouseOverText, mouseAction);

We are going to attempt to right click an Evergreen Tree and select the 'Chop down Evergreen' option from the chooseOption menu. First we need to pick some colours of the tree. The image below is a screenshot of Auto Colour Aid (ACA), which we use to pick colours. If you don't know how to use this (or need to download it), please look at ACA section in my AIO tutorial (it's about half way down). These are the colours I have picked from the tree (notice I’m just using CTS1 here - I'm only interested in the color and the RGB tolerance on the left of ACA).

I need to put the colour and tolerance from ACA into that mainScreen.findObject function. I also need to put the mouseOverText and mouseAction. The mouseOverText can be any part of the text that appears in the mouseOverText pop up box (see picture above). I've chosen to use 'vergreen'. Note that text is case sensitive, meaning that 'Chop Tree' is not the same as 'Chop tree'. Since I’m right clicking the tree, the mouse action is MOUSE_RIGHT. I've put this together:

Simba Code:
program new;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure clickTree();var  x, y: integer; //we need to declare these variables since findObject outputs/requires thesebegin  if mainscreen.findObject(x, y, 925721, 11, ['vergreen'], MOUSE_RIGHT) then  begin    writeLn('We right clicked a tree!'); // If findObject returns true, this will print    chooseOption.select(['hop down']); // This will choose ‘Chop down’ in chooseOptions menu  end;end;begin  clearDebug();  setupSRL();  clickTree();end.

If I run this it will successfully find and click 1 evergreen tree. Try it if you want (you should probably pick your own colours). Note that this object finding function is very basic and can be a little bit unreliable in some cases. My AIO tutorial covers more advanced object finding techniques.

4) Backpack Basics

In this section we are going to cover the basics of dealing with the backpack.

Moving and clicking a backpack slot

First of all I’ll tell you how to move the mouse to a backpack slot and click. You could create your own mouseBox function like we did above, but there are easier ways already built into the SRL-6 include.

Take a look at the following function:

Simba Code:
tabBackPack.mouseSlot(slot, mouseAction);

This can move and/or click any slot in the backPack. The slot parameter can be any number between 1 and 28, and the mouseAction you already know (move, left or right click). Look at the following picture:

If I wanted to move the mouse to the first backpack slot and hover over the logs I would use this:

Simba Code:
tabBackPack.mouseSlot(1, MOUSE_MOVE);

Let’s combine a few things you've learnt already. I want to right click the item in the first slot and drop it, but only if it's a log. If I had a party hat in the first slot (which I normally do, obviously) I wouldn't want to drop that by mistake, so we need to check the mouseOverText first.

Simba Code:
program new;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure dropItem();begin  tabBackPack.mouseSlot(1, MOUSE_MOVE); // Move mouse to slot 1  if isMouseOverText(['raft Logs']) then // If text matches then start the next 'begin..end block'  begin    fastClick(MOUSE_RIGHT);    // Right click    chooseOption.select(['rop Logs']); // Choose the drop option    writeLn('We dropped a log!');  end else    writeLn('There wasn''t a log in slot 1'); // If the mouseOverText didn't match, this will print instead end;begin  clearDebug();  setupSRL();  dropItem();end.

Now you know how to move the mouse, left click, right click, check mouseOverText and select an option from the chooseOptions menu for any slot in the backpack! Now I will go over a few other useful backpack functions.

Waiting for the backpack count to change

The following function waits up to a maximum time for the backpack count to change:

Simba Code:
tabBackPack.waitForShift(waitTime);

If I clicked a tree and I wanted to wait for a maximum of 5 seconds for the logs to appear in my inventory I would do this (and by max time I mean if you got logs after 1 second it would stop waiting).

Simba Code:
tabBackPack.waitForShift(5000);

For example, in the clickTree() procedure I wrote above, I could simply add this line after I click the tree to wait for a log to appear in my backpack.

Simba Code:
procedure clickTree();var  x, y: integer;begin  if mainscreen.findObject(x, y, 925721, 11, ['vergreen'], MOUSE_RIGHT) then  begin    writeLn('We right clicked a tree!');    chooseOption.select(['hop down']);    tabBackPack.waitForShift(5000); // After we click tree, wait for logs to appear  end;end;

Checking if the backPack is full

Another useful function is tabBackPack.isFull(), which returns true if the backpack has an item in every slot. This is useful in many situations, such as if you’re mining or woodcutting and you want to keep mining until the backpack is full. Let’s use the example above of clicking the Evergreen Tree. I can make it repeat that procedure until the backpack is full.

Simba Code:
program new;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure clickTree();var  x, y: integer;begin  if mainscreen.findObject(x, y, 925721, 11, ['vergreen'], MOUSE_RIGHT) then  begin    writeLn('We right clicked a tree!');    chooseOption.select(['hop down']);    tabBackPack.waitForShift(5000);  end;end;begin  clearDebug();  setupSRL();  repeat    clickTree(); // Repeat this procedure until we have 28 logs  until tabBackPack.isFull();end.

Dropping items in the backPack

The last inventory function I’ll show you is how to easily drop items. There are a number of ways to drop items, such as dropping everything, different drop patterns, or only dropping specific slots. These are all accomplished with the function:

Simba Code:
tabBackPack.dropItems();

There are a number of different dropping patterns. For example, I could drop all items in order starting at slot 1 all the way to slot 28, or I could start at slot 28 and work backwards. These are the drop patterns built into SRL-6:

DROP_PATTERN_REGULAR (slot 1 to 28)
DROP_PATTERN_BACKWARDS (slot 28 to 1)
DROP_PATTERN_SNAKE (slot 1 to 5, 10 to 6, 11 to 20, etc.)
DROP_PATTERN_UP_DOWN (Moves down the columns; slot 1, 6, 11, 16, 21, 26, 2, 7 etc.)

If I wanted to drop everything in order from slot 1 to slot 28 I would write:

Simba Code:
tabBackPack.dropItems(DROP_PATTERN_REGULAR);

I can also drop only certain slots by putting all the slots I want to drop in an array. For example, if I wanted to drop slots 1, 3, 10, and 20 I could go:

Simba Code:
tabBackPack.dropItems([1, 3, 10, 20]);

Let’s put this in our script to complete a basic power chopper! (like, OMG totally cool).

Simba Code:
program new;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure clickTree();var  x, y: integer;begin  if mainscreen.findObject(x, y, 925721, 11, ['vergreen'], MOUSE_RIGHT) then  begin    writeLn('We right clicked a tree!');    chooseOption.select(['hop down']);    tabBackPack.waitForShift(5000);  end;end;begin  clearDebug();  setupSRL();  repeat // Notice the 2 repeat loops (1 repeats the whole script, 1 the chop tree procedure only)    repeat      clickTree();    until tabBackPack.isFull();    tabBackPack.dropItems(DROP_PATTERN_SNAKE); // Once backpack is full, it will drop everything  until false; // Until false means it will repeat this loop foreverend.

Well done on creating your first runescape script for RS3. You can now tell all of your friends you are a "pro scriptwriter".

5) Minimap Basics

In this section I want to cover the minimap. There are two functions I want to explain here; how to rotate the compass, and how to find and click minimap symbols.

Rotating the compass

Rotating the compass is done using the function:

Simba Code:
minimap.setAngle(angle);

There are 4 angles already built in to SRL-6. These are:

MM_DIRECTION_NORTH
MM_DIRECTION_SOUTH
MM_DIRECTION_EAST
MM_DIRECTION_WEST

If I wanted to make the compass north I would go:

Simba Code:
minimap.setAngle(MM_DIRECTION_NORTH);

I could also move it to any angle I wanted by writing the actual angle (from 0 to 360). For example, if I wanted it between North and East (i.e., 45 degrees) I would go:

Simba Code:
minimap.setAngle(45);

Clicking minimap symbols

Minimap symbols are found using this function:

Simba Code:
minimap.findSymbol(var TPoint, symbol, searchBox);

You can see the function takes 3 parameters, which I'll take you through below. The second parameter is the symbol you want to find. There are ~94 symbols in SRL-6, these are some of them (the full list with images can be found in this thread):

MM_SYMBOL_TREE
MM_SYMBOL_RUNECRAFTING
MM_SYMBOL_MINING
MM_SYMBOL_BANK
MM_SYMBOL_LODESTONE

The last parameter, searchBox, is a TBox where you want to look for the symbol (remember we created a TBox above). Instead of creating your own box around the minimap interface, SRL-6 has allows you to get the boundaries of any interface (mainscreen, chatBox, etc.) by using:

Simba Code:
.getBounds()

So to get a TBox around the minimap interface I can use:

Simba Code:
minimap.getBounds()

I want to find and click the lodestone symbol, so I will use MM_SYMBOL_LODESTONE for the symbol:

So far my function looks like this:

Simba Code:
minimap.findSymbol(var TPoint, MM_SYMBOL_LODESTONE, minimap.getBounds());

Now I'll explain the first parameter var TPoint. The var in front of the parameter means that it is an OUTPUT parameter, not INPUT parameter like the others. Basically, the coordinates of the symbol it finds are stored in this variable which you can use later (remember a TPoint is made up of X and Y coordinates).

As the TPoint is an output parameter, we need to declare a TPoint variable which will store the information it receives from the findObject function. You'll see below I've declared a TPoint called "myPoint". When it finds the lodestone symbol, the X and Y coordinates are stored in "myPoint". I then left click "myPoint" to make my player run to the symbol:

Simba Code:
procedure clickTheLodestone();var   myPoint: TPoint; // I've declared this TPoint. begin   minimap.findSymbol(myPoint, MM_SYMBOL_LODESTONE, minimap.getBounds());    mouse(myPoint, MOUSE_LEFT); // Now we click 'myPoint' (the above function stored the coordinates of the symbol in 'myPoint');end;

6) Bank Screen Basics

In this section I want to cover the basics with the bankScreen. This will include how to open and close the bank, and how to deposit and withdraw items. This is the RS3 bankScreen:

Opening and closing the bank

It is actually quite easy to open the bank as there is already a function built into SRL-6. This function is:

Simba Code:
bankScreen.open(bankType);

where the bankType is the type of bank you are opening. The valid options for this are:

BANK_NPC_BLUE
BANK_NPC_GREY
BANK_NPC_GREEN
BANK_NPC_DRAYNOR
BANK_BOOTH
BANK_CHEST_SW
BANK_CHEST_SHANTAY
BANK_CHEST_DUEL
BANK_CHEST_CW
BANK_CHEST_GROTTO
BANK_TABLE_BURTHORPE
BANK_CHEST_LUMBRIDGE

For example, I'm standing in Varrock West Bank and I want to open the bank:

Since the bankers are blue, I would use the function:

Simba Code:
bankScreen.open(BANK_NPC_BLUE);

Closing the bank is a lot easier. You just use the function:

Simba Code:
bankScreen.close();

Depositing items

These are a number of ways to deposit items. I'll show you 3 ways: quick deposit, certain slots, and the preset buttons. There are other ways too, such as finding DTMs or bitmaps, but I won't cover those now.

The first function is the quickDeposit:

Simba Code:
bankScreen.quickDeposit(depositType);

Where the depositType parameter is the quick deposit button you want to click. There are 4 buttons, which are:

QUICK_DEPOSIT_INVENTORY
QUICK_DEPOSIT_EQIUPMENT
QUICK_DEPOSIT_BOB
QUICK_DEPOSIT_MONEY_POUCH

For example, if I wanted to deposit all 28 of these logs into the bank, I would want to quick click the QUICK_DEPOSIT_INVENTORY button, like so:

Simba Code:
bankScreen.quickDeposit(QUICK_DEPOSIT_INVENTORY);

The second method is to deposit certain slots. If there are items which you don't want to deposit, it is best to deposit certain slots by using the function:

Simba Code:
bankScreen.deposit(slots);

The slots parameter is an integer array (a set of numbers as opposed to an individual number). Arrays are filled inside square brackets. Here are a few examples of how I can fill this in:

[1..28] will deposit all slots from 1 to 28
[2..28] will ignore slot 1 and deposit the rest
[1, 2, 10] will deposit slots 1, 2 and 10, and ignore the rest.

Take the following example. I want to deposit the logs only, and ignore slot 1 (my axe) and slot 28 (my small pile of coins). I would write:

Simba Code:
bankScreen.deposit([2..27]);

The last method I'm going to show you is the preset buttons. You have to setup your presets in-game before using these. The good thing about this method it that it deposits, withdraws, and closes the bank all at the same time. This is the function:

Simba Code:
bankScreen.clickButton(button);

Where the button parameter is one of the following:

BANK_BUTTON_PRESET_1
BANK_BUTTON_PRESET_2

For example, if I wanted to click the first preset button, I would use this:

Simba Code:
bankScreen.clickButton(BANK_BUTTON_PRESET_1);

Withdrawing items

There is one function you need to know when withdrawing items, which is:

Simba Code:
bankScreen.withdraw(slot, amount, mouseOverText);

Where the slot is the bank slot number, the mouseOverText you already know, and the amount is any number OR one of the following:

WITHDRAW_AMOUNT_ALL
WITHDRAW_AMOUNT_ALL_BUT_ONE

Bank slots start in the top left at 1, and go across the rows, and then down the columns. Like so:

The 3rd parameter, the mouseOverText, just double checks that the item in the slot is the one you want to withdraw. You can leave this blank to ignore the text and withdraw any item. If I wanted to withdraw all of the coins I would go:

Simba Code:
bankScreen.withdraw(20, WITHDRAW_AMOUNT_ALL, ['oins']);

Or if I wanted to withdraw 25 items in slot 8 (in this case law runes) I could go:

Simba Code:
bankScreen.withdraw(8, 25, ['']);

Putting it all together

Now I'm going to put together everything you've learnt about the bankScreen into one simple program. Let's say I'm making a script that fletches logs into bows. I want to do the following:

1. Open the bank at Varrock West
2. Deposit everything in my inventory
3. Withdraw 28 oak logs, which are in slot 10
4. Close the bank

Read the following snippet and try and understand it:

Simba Code:
program exampleBank;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure doBankingStuff();begin  if bankScreen.open(BANK_NPC_BLUE) then // Open the bank  begin    bankScreen.quickDeposit(QUICK_DEPOSIT_INVENTORY); // Press the quick deposit button    wait(randomRange(1000, 2000));    bankScreen.withdraw(10, WITHDRAW_AMOUNT_ALL, ['']); // Withdraw all from slot 10    wait(randomRange(1000, 2000));    bankScreen.close(); // Close the bank  end else    writeLn('Couldn''t find the bank for some reason!');end;begin  clearDebug();  setupSRL();  doBankingStuff();end.

I could also achieve the same result using the preset buttons (if I have setup my preset in-game previously):

Simba Code:
program exampleBank;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure doBankingStuff();begin  if bankScreen.open(BANK_NPC_BLUE) then    bankScreen.clickButton(BANK_BUTTON_PRESET_1) // This deposits, withdraws, and closes the bank  else    writeLn('Couldn''t find the bank for some reason!');    end;begin  clearDebug();  setupSRL();  doBankingStuff();end.

7) ActionBar Basics

In this section I want to cover the actionBar. I'll show you how to click (and key press) actionBar slots, how to reading the player's HP/Adrenaline/Prayer/Summoning percent, and enable or disable auto-retaliate.

Clicking an actionBar slot

To click an actionBar slot using the mouse, you could make a mouseBox like we did right at the beginning, but you should use this function:

Simba Code:
actionBar.clickSlot(slot, mouseAction)

Where the slot is a number from 1 to 14, and the mouseAction you should already know from above.

If I wanted to left click the slice ability (in slot 1), I would write:

Simba Code:
actionBar.clickSlot(1, MOUSE_LEFT)

To actually type '1' using the keyboard instead of clicking with the mouse, I can use this function:

Simba Code:
typeSend(text, pressEnter)

The first parameter is a string, and the second is a boolean, so to type 1 and not press enter, I would write:

Simba Code:
typeSend('1', false)

You can return the players current HP percent (and the other stats) as an integer. Each of these stats has a slightly different function, but they are used in exactly the same way:

Simba Code:
actionBar.getHPPercent();actionBar.getAdrenalinePercent();actionBar.getPrayerPercent();actionBar.getSummoningPercent();

If I wanted to print my current HP percent I could write:

Simba Code:
program actionBarExample;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure actionBarTest();var   myHP: integer;begin  myHP := actionBar.getHPPercent(); // Now the 'myHP' variable is holding our current HP  writeLn(myHP);end;begin  clearDebug();  setupSRL();  actionBarTest();end.

Enabling or disabling auto-retaliate

You can enable of disable auto-retaliate by clicking the retaliate button. To do this we use the function:

Simba Code:
actionBar.setRetaliate(enabled);

The 'enabled' parameter is a boolean, so it can be either True or False. If I wanted to enable retaliate I would write:

Simba Code:
actionBar.setRetaliate(True);

8) DepositBox Basics

In this section I want to cover the depositBox. This is basically the same as the bankScreen section above, so I will quickly skim over this without going into too much detail. I'll show you how to deposit items by clicking them, and by using the deposit buttons at the bottom of the interface.

Depositing items in the DepositBox

The first method is by using the quick deposit button. The button you will use the most is the inventory button:

Simba Code:
depositBox.quickDeposit(QUICK_DEPOSITBOX_INVENTORY);

Just like the bankScreen, there are 3 other constants which you can use instead of the INVENTORY button:

QUICK_DEPOSITBOX_EQUIPMENT
QUICK_DEPOSITBOX_BOB
QUICK_DEPOSITBOX_MONEY_POUCH

The next deposit method is to click the actual items. Again, this is identical to the bankScreen code, except you are calling it through the depositBox interface type. To deposit slots 2 to 28 I would write:

Simba Code:
depositBox.deposit([2..28]);

Once you have finished depositing items, you can close the depositBox by writing:

Simba Code:
depositBox.close();

9) LodestoneScreen Basics

In this section I want to cover the lodestoneScreen. I'll show to show you how to lodestone teleport to any location.

Lodestone teleporting

Teleporting via the lodestone network is very easy in SRL-6. There is just one function you need to be familiar with.

Simba Code:
lodestoneScreen.teleportTo(location);

This function opens the lodestoneScreen and clicks the location you set. The location can be one of 23 locations. Here are some examples:

LOCATION_EDGEVILLE
LOCATION_PORT_SARIM
LOCATION_VARROCK
LOCATION_DRAYNOR_VILLAGE
LOCATION_LUMBRIDGE

If I wanted to teleport to Varrock I would write:

Simba Code:
lodestoneScreen.teleportTo(LOCATION_VARROCK);

This function also checks that the lodestone is unlocked, and that it isn't P2P, so you don't try and click something that you cannot.

10) ToolScreen Basics

In this section I'll cover the ToolScreen, which is the interface that pops up when you first click a log, or try and use a needle for crafting. I'll show you how to select a tool from this interface.

Selecting a tool

There are two ways to select a tool. You can either select a tool using a string (i.e., the name of the tool, like 'Needle'), or the slot number where the tool is located. Here are two ways to select the Knife in the above image:

Simba Code:
toolScreen.select('Knife');

And since the knife is in the second position, I can use the integer:

Simba Code:
toolScreen.select(2);

I'll cover the next 2 interfaces before combining these in a practical example.

11) ProductionScreen Basics

In this section I want to cover the ProductionScreen, which is used in many skills, such as smithing, cooking, and fletching. Firstly, I'll show you how to select an item, and then click the start button.

Selecting an item

To select an item, all you need to know is what slot the product is in. Like all the slots in SRL-6, they start at the top-left, go across the row, and then down to the next column. If I wanted to click the arrow shafts in the above image, I would write:

Simba Code:
productionScreen.selectBox(1);

Clicking the start button

Once the item is selected, then you most likely want to press the start button. This is very simple, and all you have to write is:

Simba Code:
productionScreen.clickStart();

Once you click the start button, the progressScreen will open (which is covered in the next section).

12) ProgressScreen Basics

In this section I'll cover the ProgressScreen. The only thing that you really want to do with the progressScreen is wait until it's no longer open, or until the 'Cancel' button changes to the 'Done' button.

Wait until the progressScreen is no longer open

All interfaces in SRL-6 (like the bankScreen, depositBox, lodestoneScreen etc.) have a boolean function:

Simba Code:
.isOpen(waitTime);

This function returns true if the interface is open. The 'waitTime' parameter is optional, and it's used if you want to wait a few seconds for the interface to open. You can use the result of this function to tell when the progressScreen (or any other interface) is no longer open. In the following snippet, I will put together some of the code you've already learnt from the backpack, toolScreen, productionScreen, and progressScreen interfaces:

Simba Code:
program new;{$DEFINE SMART}{$I SRL-6/SRL.simba}procedure makeSomeArrowShafts();begin  tabBackpack.mouseSlot(1, MOUSE_LEFT); // Left click backpack slot 1 (e.g., logs)  if toolScreen.isOpen(2000) then  // If the toolScreen is open within 2 seconds, click the Knife    toolScreen.select('Knife');    if productionScreen.isOpen(5000) then // If productionScreen is open within 5 seconds  begin    productionScreen.selectBox(1);     // Select the first box (arrow shafts)    productionScreen.clickStart();     // Click the start button    if progressScreen.isOpen(5000) then // if progressScreen is open within 5 seconds    begin      writeLn('The progressScreen is open!');      repeat        wait(1000);      until (not progressScreen.isOpen()); // Repeat waiting 1 second until it's not open anymore    end;  end;end;begin  clearDebug();  setupSRL();  makeSomeArrowShafts();end.

You could literally combine this little script with the woodcutting example in the above section, and you just about have a fully functional arrow shaft maker! Or you could combine this with the banking snippet above to cut bows, cut gems, crush chocolate...whatever you want!

Getting the progressScreen button

If you want your script to be a little bit faster, you can wait for the progressScreen 'Done' button (or until the 'Cancel' button is no longer present). You can get the current button using the function:

Simba Code:
progressScreen.getButton();

Instead of waiting until the progressScreen is no longer open, I could change that loop to wait until the button is not equal to the cancel button:

Simba Code:
repeat  wait(1000);until (progressScreen.getButton() <> PROGRESS_BUTTON_CANCEL);

In this section I'll cover the PowersScreen, which is mainly used in combat related scripts. Using this interface, you can change your combat mode (e.g., momentum, revolution), modify the experience types for each combat style (e.g., defence XP for ranged combat style), and add abilities to the action bar.

Selecting a combat mode

In RS3 there are now 3 combat modes: Full Manual, Revolution, and Momentum, as seen on the left side of the image above. You can set the combat mode using the function:

Simba Code:
powersScreen.setCombatMode(combatMode);

The combat mode can be one of the following:

MODE_MANUAL
MODE_REVOLUTION
MODE_MOMENTUM

If I wanted to set my player's combat mode to momentum (like it is in the above image), I would write:

Simba Code:
powersScreen.setCombatMode(MODE_MOMENTUM);

These powersScreen functions automatically open the powersScreen if it's not already open, making it very easy for you as a scripter.

Setting combat experience

On the right-hand side of the above image, there are different XP selection settings, for each of the three combat styles. You can set the experience type, for a particular combat style using the function:

Simba Code:
powersScreen.setCombatExperience(combatStyle, ExperienceType);

The combat style can be one of the following:

MELEE_STYLE
RANGED_STYLE
MAGIC_STYLE

and the ExperienceType can be one of the following:

XP_BALANCED
XP_RANGED_AND_DEFENCE
XP_MAGIC_AND_DEFENCE
XP_ATTACK
XP_STRENGTH
XP_RANGED
XP_MAGIC
XP_DEFENCE

For example, if I wanted to set my player's melee combat style to defence XP, I would write:

Simba Code:
powersScreen.setCombatExperience(STYLE_MELEE, XP_DEFENCE);

This function also prevents you from doing something silly, like setting the melee combat style to rangedXP.

A great feature of the powersScreen is the ability to add abilities to the actionBar for customised setups. There are over 140 different abilities that you can add to the actionBar with the following function:

Simba Code:
powersScreen.addAbilityToActionBar(ability, slot);

The 'slot' parameter is the actionBar slot number where you want to add the ability. If an ability already exists in the slot, it will clear the previous ability before adding the new one. The ability parameter can be one of many, here are some examples:

PS_SLICE
PS_HAVOC
PS_AIR_BOLT
PS_VARROCK_TELEPORT
PS_LVL_6_ENCHANT

As I said, there are over 140 different abilities. The full list can be found in the spoiler below:

{ Attack Abilities }
PS_SLAUGHTER
PS_SLICE
PS_OVERPOWER
PS_HAVOC
PS_BACKHAND
PS_FORCEFUL_BACKHAND
PS_SMASH
PS_BARGE
PS_FLURRY
PS_SEVER
PS_HURRICANE
PS_MASSACRE
PS_METEOR_STRIKE
PS_BALANCED_STRIKE

{ Strength Abilities }
PS_STOMP
PS_KICK
PS_PUNISH
PS_DISMEMBER
PS_FURY
PS_DESTROY
PS_QUAKE
PS_BERSERK
PS_CLEAVE
PS_ASSAULT
PS_DECIMATE
PS_PULVERISE
PS_FRENZY

{ Ranged Abilities }
PS_PIERCING_SHOT
PS_SNAP_SHOT
PS_SNIPE
PS_DAZING_SHOT
PS_BINDING_SHOT
PS_NEEDLE_STRIKE
PS_TIGHT_BINDINGS
PS_FRAGMENTATION_SHOT
PS_ESCAPE
PS_RAPID_FIRE
PS_RICOCHET
PS_BOMBARDMENT
PS_INCENDIARY_SHOT
PS_DEATHS_SWIFTNESS

{ Magic Abilities }
PS_ASPHYXIATE
PS_WRACK
PS_OMNIPOWER
PS_DRAGON_BREATH
PS_SONIC_WAVE
PS_IMPACT
PS_CONCENTRATED_BLAST
PS_DEEP_IMPACT
PS_COMBUST
PS_SURGE
PS_DETONATE
PS_CHAIN
PS_WILD_MAGIC
PS_METAMORPHOSIS
PS_TSUNAMI
PS_SUNSHINE

{ Magic Combat Spells }
PS_AIR_STRIKE
PS_CONFUSE
PS_WATER_STRIKE
PS_EARTH_STRIKE
PS_WEAKEN
PS_FIRE_STRIKE
PS_AIR_BOLT
PS_CURSE
PS_BIND
PS_WATER_BOLT
PS_EARTH_BOLT
PS_FIRE_BOLT
PS_AIR_BLAST
PS_WATER_BLAST
PS_SNARE
PS_SLAYER_DART
PS_EARTH_BLAST
PS_FIRE_BLAST
PS_DIVINE_STORM
PS_AIR_WAVE
PS_WATER_WAVE
PS_VULNERABILITY
PS_EARTH_WAVE
PS_ENFEEBLE
PS_FIRE_WAVE
PS_ENTANGLE
PS_POLYPORE_STRIKE
PS_STAGGER
PS_AIR_SURGE
PS_WATER_SURGE
PS_TELEPORT_BLOCK
PS_EARTH_SURGE
PS_FIRE_SURGE

{ Magic Teleport Spells }
PS_HOME_TELEPORT
PS_MOBILISING_ARMIES_TELEPORT
PS_VARROCK_TELEPORT
PS_LUMBRIDGE_TELEPORT
PS_HOUSE_TELEPORT
PS_CAMELOT_TELEPORT
PS_ARDOUGNE_TELEPORT
PS_WATCHTOWER_TELEPORT
PS_GOD_WARS_DUNGEON_TELEPORT
PS_TROLLHEIM_TELEPORT
PS_APE_ATOLL_TELEPORT
PS_TELE_OTHER_LUMBRIDGE
PS_TELE_OTHER_CAMELOT

{ Magic Skilling Spells }
PS_ENCHANT_CROSSBOW_BOLT
PS_LVL_1_ENCHANT
PS_BONES_TO_BANANAS
PS_LOW_LEVEL_ALCHEMY
PS_LVL_2_ENCHANT
PS_TELEKINETIC_GRAB
PS_SUPERHEAT_ITEM
PS_LVL_3_ENCHANT
PS_HIGH_LEVEL_ALCHEMY
PS_CHARGE_WATER_ORB
PS_LVL_4_ENCHANT
PS_BONES_TO_PEACHES
PS_CHARGE_EARTH_ORB
PS_CHARGE_FIRE_ORB
PS_CHARGE_AIR_ORB
PS_LVL_5_ENCHANT
PS_LVL_6_ENCHANT

{ Defensive Abilities }
PS_ANTICIPATION
PS_BASH
PS_REVENGE
PS_PROVOKE
PS_IMMORTALITY
PS_FREEDOM
PS_REFLECT
PS_RESONANCE
PS_REJUVENATE
PS_DEBILITATE
PS_PREPARATION

{ Constitution Abilities }
PS_WEAPON_SPECIAL_ATTACK
PS_REGENERATE
PS_SIPHON
PS_INCITE

For example, if I wanted to put the slice melee ability into the first actionBar slot (as in the image above) I would write:

Simba Code:
powersScreen.addAbilityToActionBar(PS_SLICE, 1);

14) ConversationBox Basics

In this section I'll cover the ConversationBox. The conversationBox appears when ever you are talking to someone, and sometimes when you get game notifications. Sometimes you need to proceed through the conversation by clicking the continue button, and selecting conversation options.

Pressing the continue button

Simba Code:
conversationBox.continue(spaceBar, wait);

Simba Code:
conversationBox.continue(True, True);

Selecting a conversation option

Simba Code:
conversationBox.selectOption(2);

Simba Code:
conversationBox.selectOption(['PIN']);

15) ChatBox Basics

In this section I'll cover the ChatBox.

Simba Code:
chatBox.getXPBar();

Finding text on lines

Simba Code:
chatBox.findTextOnLines(['ello'], [1..5]);

16) CollectBox Basics

In this section I'll cover the CollectBox.

Pressing a collect button

Simba Code:
collectBox.collectButton(button);

COLLECT_BUTTON_BANK
COLLECT_BUTTON_INV

Simba Code:
collectBox.collectButton(COLLECT_BUTTON_BANK)

17) GrandExchange Basics

GrandExchange compatibility was recently added to SRL-6, and in this section I'll show you how to buy and sell items, and how to look-up prices.

Selling an item on the GE

Selling an item is very easy, and can be done with the function:

Simba Code:
grandExchange.sellItem(packSlot, price, quantity);

The first parameter is the backpack slot where the item you're selling is located. In the above image, you can see I have 1000 noted Swamp toads in the first backpack slot, so packSlot would be 1.

The 'price' parameter is a string; valid options are:
• 'mid'
• '-5'
• '+5'
• Any other number

The 'quantity' parameter is a string; valid options are:
• '1'
• '10'
• '100'
• 'all'
• Any other number

So if I wanted to sell all of my Swamp toads at 5% above the current mid price, I would write:

Simba Code:
grandExchange.sellItem(1, '+5', 'all');

and if I wanted to sell 50 of them for 2000 each, I would write:

Simba Code:
grandExchange.sellItem(1, '2000', '50');

Buying an item on the GE

Buying an item is similar to selling an item; the function is:

Simba Code:
grandExchange.buyItem(itemName, price, quantity);

The itemName is the name of the item you are buying (make sure it's accurate). The only difference to the 'price' and 'quantity' parameters when buying an item is that there is no 'All' option for the quantity (as you cannot buy 'all' of an item).

The 'price' parameter is a string; valid options are:
• 'mid'
• '-5'
• '+5'
• Any other number

The 'quantity' parameter is a string; valid options are:
• '1'
• '10'
• '100'
• Any other number

If I wanted to buy 5000 Swamp toads at mid price, I would write:

Simba Code:
grandExchange.buyItem('Swamp toad', 'mid', '5000');

Looking up the price of an item

With the following function you can return the current mid price of any item on the grand exchange:

Simba Code:
grandExchange.getPrice(item);

The 'item' parameter is an integer; it's ID number.

For example, if I wanted to find the price of a Swamp toad, I would use Swamp toad's ID, which is 2150:

Simba Code:
grandExchange.getPrice(2150);

Item IDs can be found on the on the item's Grand Exchange webpage. The webpage for Swamp toads is:

http://services.runescape.com/m=item...em.ws?obj=2150

and you will notice the last 4 digits of the URL are the item's ID number. Alternatively, you could look up IDs at itemdb.biz

18) Loot Screen Basics

Recently Jagex added the loot screen as a new way to collect drops. In this section I'll show you some of the lootScreen methods available to you.

Looting certain slots

You can loot an individual slot with:
Simba Code:
lootScreen.lootSlot(1);

Or you can loot an array of slots with:
Simba Code:
lootScreen.lootSlots([1, 2, 3, 14]);

Looting DTMs

I haven't covered how to make a DTM in this tutorial, so if you don't know how to make an item DTM you better go and read my AIO Beginners Guide!

To loot a single DTM:
Simba Code:
lootScreen.lootDTM(MyDTM);

Or you can loot an array of DTMs:
Simba Code:
lootScreen.lootDTMs([BonesDTM, CoinsDTM]);

Both of these methods will loot ALL of the matching DTMs.

Using the loot buttons

Simba Code:
lootScreen.clickButton(LOOT_BUTTON_ALL);

Simba Code:
lootScreen.clickButton(LOOT_BUTTON_CUSTOM);

So to give you an example snippet:

Simba Code:
procedure lootStuff();begin  // if mainScreen.findObject(.....) // Clicking ground loot   if lootScreen.isOpen(5000) then  begin    lootScreen.lootSlots([1, 2, 3, 4]);    writeLn('We just looted the first 4 slots');    lootScreen.close();  end;end;

Last edited by The Mayor; 05-14-2015 at 07:33 AM. Reason: Added lootScreen

2. SRL Junior Member
Join Date
Jan 2013
Location
United kingdom
Posts
102
Mentioned
4 Post(s)
Quoted
34 Post(s)
Much appreciated, Mayor! This will be unimaginably useful! Loving the Evergreen pic XD
Last edited by beefman; 06-15-2014 at 06:41 PM.

3. SRL Junior Member
Join Date
Dec 2011
Posts
266
Mentioned
16 Post(s)
Quoted
185 Post(s)
This is even more noob-friendly than your AIO tut. Wish we had this a few months ago when I started lol. Oh well, at least this gives me a "back in my day, we didn't have all this fancy..." :P

Great guide, good job.

4. Registered User
Join Date
Jun 2014
Posts
10
Mentioned
0 Post(s)
Quoted
4 Post(s)
None of the code is working for me? The writeLn and stuff works, but when it involves launching SMART nothing works. The cameras don't move, the mouse does not move to click on the options on the one part nothing. Any help?

5. Originally Posted by SeaHorseShooter
None of the code is working for me? The writeLn and stuff works, but when it involves launching SMART nothing works. The cameras don't move, the mouse does not move to click on the options on the one part nothing. Any help?
Have you included SMART and SRL6 at the top of the script?

{$DEFINE SMART} {$I SRL-6/SRL.simba}

and have you

setupSRL();

6. Registered User
Join Date
Jun 2014
Posts
10
Mentioned
0 Post(s)
Quoted
4 Post(s)
Originally Posted by The Mayor
Have you included SMART and SRL6 at the top of the script?

{$DEFINE SMART} {$I SRL-6/SRL.simba}

and have you

setupSRL();

I have typed exactly what you have and even tried to paste the code you have into simba
Code:
program new;
{$DEFINE SMART} {$I SRL-6/SRL.simba}

procedure practiceMouse();
begin
mouse(200, 200, MOUSE_MOVE);
wait(3000);
mouse(50, 50, MOUSE_MOVE);
wait(3000);
fastClick(MOUSE_RIGHT);
writeLn('We just right clicked');
wait(3000);
mouse(300, 30, MOUSE_MOVE);
end;

begin
clearDebug();
setupSRL();
practiceMouse();
end.
even tried with the camera code, still didn't work I have no clue whats wrong.

7. Registered User
Join Date
Jun 2014
Posts
10
Mentioned
0 Post(s)
Quoted
4 Post(s)
does not even say in the console 'We just right clicked'.

8. Originally Posted by SeaHorseShooter
does not even say in the console 'We just right clicked'.
Either your interfaces are not set correctly, or your graphics settings are not correct. I assume you have run a rs3 script before? I can TV you if you like? Skype the.mayor.rs

9. Registered User
Join Date
Jun 2014
Posts
10
Mentioned
0 Post(s)
Quoted
4 Post(s)
Originally Posted by The Mayor
Either your interfaces are not set correctly, or your graphics settings are not correct. I assume you have run a rs3 script before? I can TV you if you like? Skype the.mayor.rs
I got it working! Turns out I messed up some stuff on my graphics settings. Thank you!

10. What a very well written and in-depth guide. A nice slow introduction to from the basics to the nitty gritty to set almost anyone with at least half a brain to scripting delight. It would be bad to not say thanks, so thank you!

11. Registered User
Join Date
May 2012
Posts
13
Mentioned
0 Post(s)
Quoted
4 Post(s)
Excellent guide, but I'm trying to get my banking down, the depositing is working okay but whenever I try to withdraw anything I get this

Exception in Script: Runtime error: "The given DTM Index[1] doesn't exist" at line 701, column 20 in file "C:\Simba\Includes\srl-6\lib\utilities\wrappers.simba"
The following bitmaps were not freed: [Minimap Mask]
File[C:\Simba\Includes\SRL-6/logs/SRL log (11-07-14 at 05.33.10 PM).txt] has not been freed in the script, freeing it now.

any help would be great

12. Originally Posted by aquatic fish
Excellent guide, but I'm trying to get my banking down, the depositing is working okay but whenever I try to withdraw anything I get this

Exception in Script: Runtime error: "The given DTM Index[1] doesn't exist" at line 701, column 20 in file "C:\Simba\Includes\srl-6\lib\utilities\wrappers.simba"
The following bitmaps were not freed: [Minimap Mask]
File[C:\Simba\Includes\SRL-6/logs/SRL log (11-07-14 at 05.33.10 PM).txt] has not been freed in the script, freeing it now.

any help would be great

13. Registered User
Join Date
May 2012
Posts
13
Mentioned
0 Post(s)
Quoted
4 Post(s)
Code:
program Suhsuhsoopaheetin;
{$DEFINE SMART} {$i srl-6/srl.simba}

Var
x, y:integer;
CastBox, CoalBagBox, CoalBagDrop: TBox;

Procedure Graphics;
begin
minimap.setAngle(MM_DIRECTION_SOUTH);
end;
Procedure MakingBoxes;
begin
CastBox := intToBox(630, 365, 662, 392);
CoalBagBox := intToBox(600, 90, 630, 120);
CoalBagDrop := intToBox(595, 143, 643, 156);
//CoalWithdraw :=
//RuniteWithdraw :=
end;

Procedure SuperHeating;

begin
MouseBox(CastBox, MOUSE_MOVE);
If (isMouseOverText(['unite ore']))then
begin
repeat
KeyDown(49);
Wait(randomRange(20, 25));
Keyup(49);
Wait(randomRange(50, 150));
fastclick(MOUSE_LEFT);
Wait(randomRange(1500, 350));
until
(isMouseOverText(['une bar']));
end;
end;

//Procedure OpeningBank;
//begin
//end;

Procedure Banking;

Var
Coal, Runite, Runebar: Integer;

begin
Coal := 1;
Runite := 2;
RuneBar :=3;
bankScreen.deposit([3..8]);
wait(randomRange(150, 350));
bankScreen.withdraw(Coal, WITHDRAW_AMOUNT_ALL);
wait(randomRange(150, 350));
MouseBox(CoalBagBox, MOUSE_RIGHT);
wait(randomRange(10, 100));
MouseBox(CoalBagDrop, MOUSE_MOVE);
wait(randomRange(10, 100));
fastclick(MOUSE_LEFT);
wait(randomRange(150, 350));
bankScreen.withdraw(Runite, 5);
wait(randomRange(150, 350));
bankScreen.withdraw(Coal, WITHDRAW_AMOUNT_ALL);
end;
begin
clearDebug();
setupSRL();
Graphics();
MakingBoxes();
Banking();
//SuperHeating();
TerminateScript();
end.
edited:
Even if i commented out the integers and set the withdraw to just 1 or 2 or w/e, I get the same error
Last edited by Penguin; 07-12-2014 at 01:30 AM.

14. Originally Posted by aquatic fish

edited:
Even if i commented out the integers and set the withdraw to just 1 or 2 or w/e, I get the same error
Ahh. Sorry I forgot the last parameter in the withdraw function (mouseOverText). I've updated it

15. Registered User
Join Date
May 2012
Posts
13
Mentioned
0 Post(s)
Quoted
4 Post(s)
Ah, Thank you

16. SRL Junior Member
Join Date
Feb 2012
Location
Australia
Posts
69
Mentioned
0 Post(s)
Quoted
8 Post(s)
Nice one mayor! Btw a little spelling error just under the picture for withdrawing items in bank. Says "mosueOverText" well written guide though!!

17. Originally Posted by Crit
Nice one mayor! Btw a little spelling error just under the picture for withdrawing items in bank. Says "mosueOverText" well written guide though!!
DemTypos. I never raed what I type.

18. SRL Junior Member
Join Date
Jul 2014
Posts
135
Mentioned
0 Post(s)
Quoted
55 Post(s)
This is fantastic beginners guide to RS3 scripting, I found it to be great in explaining the language and using different aspects of it. Great job!

19. This is wonderful. Reminds me of Griff's SRL-5 tutorial, which I used to begin scripting.

20. Registered User
Join Date
Jul 2014
Posts
1
Mentioned
0 Post(s)
Quoted
0 Post(s)
I'm new to this. Tried to start up SMART, and this shows on the debug panel:

Code:
-- setupSRL()
---- Setting up SRL...
---- initSmart():
------ Attempting to pair to a previously spawned client
------ smartPairToExistingClient():
-------- Found no free clients to pair to
------ smartPairToExistingClient(): result = false
------ Attempting to spawn a new client..
------ smartCreateClient():
---------- smartGetParameters(): Succesfully grabbed paramters
-------- getJavaPath():
---------- Attempting to search for your Java path
---------- ERROR: Failed To Find Path: C:\Program Files (x86)\Java\
---------- WARNING: Failed to find your Java path
---------- HINT: If RS is failing to switch to OpenGL mode, add JRE to your systems path before JDK (if you have JDK)
-------- getJavaPath()
-------- Using parameters [http://world12.runescape.com/, f52784816396786405]
-------- Using plugins "OpenGL32.dll"
-------- FATAL ERROR: Failed to spawn a SMART client
Successfully executed.
What do I do?

21. Thanks a lot for this mayor, im a new user trying to script and your guides are awesome and really well explained

22. SRL Junior Member
Join Date
Jul 2014
Location
Europe
Posts
182
Mentioned
7 Post(s)
Quoted
103 Post(s)
This must be the best guide that I've ever read, everything is explained really well. You're a good person.

23. Originally Posted by theorange
This is fantastic beginners guide to RS3 scripting, I found it to be great in explaining the language and using different aspects of it. Great job!
Originally Posted by KeepBotting
This is wonderful. Reminds me of Griff's SRL-5 tutorial, which I used to begin scripting.
Originally Posted by undorak7
Thanks a lot for this mayor, im a new user trying to script and your guides are awesome and really well explained
Originally Posted by Spaceblow
This must be the best guide that I've ever read, everything is explained really well. You're a good person.
Why thank you

24. SRL Junior Member
Join Date
Feb 2012
Location
Florida
Posts
180
Mentioned
14 Post(s)
Quoted
101 Post(s)
Im trying to follow this guide as I want to learn to script but for some reason, some of the code you're showing here doesnt want to compile in my simba.

For example, I type FastClick(Mouse_left); And it says 'Unknown declaration "fastclick" at line 3, column 1"
Anything wrong here or have the declarations been changed to something different.

I've updated the extensions and simba, but no go.

Thanks for any help!

Im trying to follow this guide as I want to learn to script but for some reason, some of the code you're showing here doesnt want to compile in my simba.

For example, I type FastClick(Mouse_left); And it says 'Unknown declaration "fastclick" at line 3, column 1"
Anything wrong here or have the declarations been changed to something different.

I've updated the extensions and simba, but no go.

Thanks for any help!
Well, fastClick is a function built into SRL6, so you have to 'include' the SRL6 files at the top of your script to give simba access to them. Make sure you have:

{\$I SRL-6/SRL.simba}

at the top, and then

setupSRL

at the start of your main loop, just like it shows you.