SRL Archive - Outdated Tutorials

Labels and goto (loop) tutorial (intermediate)


Freddy1990

2006-11-28 13:24:25

Ok, as usual you're going to learn something you propably don't know is possible in scar… :)
This tutorial will teach you to use labels in combination with the goto stament.
Now, in this tutorial we're going to use them to create a loop, but you light as wedll use them to break out of multiple loops at once or something.

First let add a writeln and declare our integer to put the loopnumber in for the example:
program lblTest;

var
Count: Integer;

begin
WriteLn('Hello');
end.

To make our loop we're going to declare our label "lblBack":
program lblTest;

label
lblBack;

var
Count: Integer;

begin
lblBack:
WriteLn('Hello');
Count := Count + 1;
if Count < 5 then goto lblBack;
end.

Now we place the spot were the goto statement will have to jump back to and adding 1 to count for every time the loop will repeat:
program lblTest;

label
lblBack;

var
Count: Integer;

begin
lblBack:
WriteLn('Hello');
Count := Count + 1;
end.

Finally we use a simple if statement to check if it has repeated 5 times yet and go back if it hasen't:
program lblTest;

label
lblBack;

var
Count: Integer;

begin
lblBack:
WriteLn('Hello');
Count := Count + 1;
if Count < 5 then goto lblBack;
end.

Well, that was it, enjoy it :)

Starblaster100

2006-11-28 16:04:00

Excellent tutorial once again.

Keep em coming Freddy :D

_ChArMz

2006-11-28 17:43:26

keep them coming, i love learning to do new things :P

Yakman

2006-11-28 17:50:36

nice tutorial freddy,

do you think some of SRL might be written differantly if this was more widely known, now everything depends on being logged in, the last line of every script is 'if(not loggedin)then'

if we'd known this we would have probably just have a global label to place at the end or something

(when i say we, i mean you, i wasnt around when the player array and stuff was being written)

WhiteShadow

2006-11-28 18:36:19

This is one thing I actually did know out of your like what, 6th?! tutorial!

I like how you share information! Unlike some people that like keeping it to themselves so they seem better than others..! Thanks! :D

Bam Bam

2006-11-28 18:56:34

Freddy only puked this one up because I asked about it on messenger [smilie=1,2,28]

Freddy1990

2006-11-29 06:28:04

From: Bam Bam
Freddy only puked this one up because I asked about it on messenger [smilie=1,2,28]


Yeah :P
I wouldn't have thought of writing a tutorial about it if you didn't, i used it before but i forgot about it :P

Smartzkid

2007-03-02 20:15:28

Wow…I didn't even know that labels existed in anything other than BASIC…

Thanks man!

JuKKa

2007-03-08 16:36:52

thanks im using this in my auto fighting fighting procedure im gonna check it out if it works.

Awkwardsaw

2008-08-01 13:29:24

:spot: thanks freddy =D i can use this

edit: is it possible to replace the "5" in
if Count < 5 then goto lblBack;
with a cosntant?

when ever i try i get type mismatch

Illkillutill

2008-08-01 16:50:29

cool, thanks a lot freddy, this will really help me out.

@ akwardsaw: you mean like this, cause it compiles for me.

program test;

Const
What = 5;

label
lblBack;

var
Count: Integer;

begin
lblBack:
WriteLn('Hello');
Inc(Count);
if Count < What then goto lblBack;
end.

Awkwardsaw

2008-08-01 16:54:45

oo alright.. does it have to be in the main loop too haha, every time i see it used it is, and then the normal repeat untill is used in procedures

Illkillutill

2008-08-01 16:57:28

Yes, i think it has to be in the main loop, not sure. But when i take it out and put it into a proc/function then it gives me an unknown identifier :p.

Edit: Nvm, it can be in a proc/function as long as it is a local label instead of global lol. duhhh.

needs to be like this:
program test;

Const
What = 5;

var
Count: Integer;

Procedure DoIt;
label
lblBack;
begin
lblBack:
WriteLn('Hello');
Inc(Count);
if Count < What then goto lblBack;
end;

begin
DoIt;
end.

Awkwardsaw

2008-08-01 18:02:33

wow, thanks dude, you just earned your self some rep and a thanks spot in my script =D

edit: aww. i still get type mismatch, and i cant figure out where

program MTATrainer;
{.include SRL\SRL.scar}

{ start logged in or logged out, in the middle of the four
portals.}



var
x,y, x, y, MMX, MMY, R: integer;
mazefinder_1, mazefinder_2, mazefinder_3, mazefinder_4, mazefinder_5: Integer;
mazefinder_6, mazefinder_7, mazefinder_8, mazefinder_9, mazefinder_10: integer;
counter, Time, LawsUsed: integer;
Guardian: TAutoColorInfo;


const
arena = 'maze';//<--dont touch (use for later versions, and for importantcase ex)
Law = '500';//how many laws do you want to use?


procedure DeclarePlayers;
begin
HowManyPlayers := 2;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Pin := ''; // leave blank if you dont have a pin
Players[0].Active := True;

Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := '';
Players[1].Pin := ''; // leave blank if you dont have a pin
Players[1].Active := False;
end;



procedure Loadbtms;
begin
mazefinder_1 := BitmapFromString(31, 22, 'beNorLfVFAibUBtzl' +
'JaNowNH7Fx+ohTBN/m9m9o+Hp760lHKEZjjIZAWFP2xsLxkYqG440' +
'M1Akz8yMJyjgeEMDIw3GRj2MAABI9UNB4Y50FiqmIzVcKoYO2r4qO' +
'G0MxyXFFphRV3DaerygTEcAGKEgi4=');

mazefinder_2 := BitmapFromString(22, 15, 'beNorLfVFAiZkg' +
'frS0vcvnwFJCEJmoyGgFC6VxJuAi0sVE5ARfl8Qo3L4IQp9TUwc4T' +
'eZbibg8SOe2EcTJyOU8KRPkk0AAPZOBks=');

mazefinder_3 := BitmapFromString(34, 19, 'beNorKfdFAiY0A/Wl' +
'pbjQh5dv8MjiR0C93CXlcDQgtiCbPDhtAapHRnTwC7IVNIoXNI8AE' +
'cR3WI3FZQtayMARHlvwGEuSX0amLWQYOCxtIT4l084WTBspR3isGE' +
'VEIQA4BZCE');

mazefinder_4 := BitmapFromString(20, 17, 'beNorrucuHhj0+vUr' +
'4hGa3vrSUvzov5nZPx4eCBtNO2GNCgp/2NheMjCQqhdoI1DjRwaGc' +
'7j14vIgAwPjTQaGPQxAwEiqvUAE1AXRSIZeoHpk9uDRi6wAU/2oXk' +
'r1AgCP/fif');

mazefinder_5 := BitmapFromString(26, 22, 'beNo7/fTFh8/1paUE' +
'EbIyNC14pIg0DZMLR6SahmkIMW4bVTaqbKQpw6WSKqZRmAHxlDBkF' +
'DVA9N/M7B8PD0llCFbEXV0OMkpB4Q8b20sGBspNA7oKaNRHBoZzeE' +
'0jxkCgaQwMjDcZGPYwAAEjeabBYw1oGsRAIEIrk8lAJiYm////33T' +
'6KVZ07MbuH3tMJhaZrzp8l9G2hqHiMMO8J7L7/1df+V9w6b/+4f+s' +
'6/9rbf/P6NnWs3DnJgD+gr5I');

mazefinder_6 := BitmapFromString(35, 26, 'beNrN1LENwjAQBdAa' +
'CoowBgVNWCA1SAxAS58iy6ViAiag9NVeASw5Ok62SS7ftoT1FUXKK' +
'c++2OmHixhtzfF4vlzcTdd14zgaY951xv18vB42Ptt+sNa6q8u+aW' +
'ZiieYL4txOO1Z8NBYAyeV8LaJKkFT+CgICQMByPBQoqtZZu0px9Ri' +
'0yvKVMKS0uCYHWrTk01jhM6vtDFFyewRzSEJrLeZkgoJfEKfUOZoh' +
'lD/YfAhoIAwVtBYh2cOcb6eBvCV3FGBNL0nNuWw/mahtcTFsAccQs' +
'+J/QpBYBCDVZBwn+lxJmfIBswuySA==');

mazefinder_7 := BitmapFromString(18, 18, 'beNqLmO2LBEyIBvvP' +
'3uYuKQeid+/eAUkGBkZkBBT5/PwtRAEyguuCIGJ1nbsDZyNbBxeBC' +
'KIhoCORuXA1EAZWLZi68JiPXxcxiM66gGGLhojRVV9aiowwDcE0Cq' +
'suNBFM04jXhYwo0QWxF1MXsjhWu5CdTTBkgLp63NlxuRCXa4G6/v/' +
'/v+boA1zo5PVlh48U/z6s1t9iwaAUwxA0mwEA0nS4DA==');

mazefinder_8 := BitmapFromString(32, 25, 'beNo797y+tJR49On' +
'La2Q2MhdTJXd5CRCRZD5JLhk55kOCGn+Aj4b/EDIfKPvfzOwfDw9m' +
'tqKK+SDDFRT+sLG9ZGCghflAlwMN/8jAcI425jMwMN5kYNjDAASMt' +
'DAfYgUQkZSnqJ5+cFkNcRV9zCejbCHGfIjhtHM/2eYT480Rbj4xiC' +
'rxSwv3k2q+iYnJ////t557jgudvLLl2ULLB/MdtvZZb5gTvnHXLjy' +
'K0REAUV65TQ==');

mazefinder_9 := BitmapFromString(23, 22, 'beNorLa0vxY6eP31' +
'LpCAeNGrIYDAEKE4Q/Tcz+8fDg0c9QSeBTFBQ+MPG9pKBgSS/ICOg' +
'G4AmfGRgOEeBIQwMjDcZGPYwAAEj2YZAzKHQBPog/DFLUBl56Y3UF' +
'DtqyMAbAgBEsxUJ');

writeln('bitmapsloaded');
end;

procedure Freebmps;
begin
FreeBitmap(mazefinder_1);
FreeBitmap(mazefinder_2);
FreeBitmap(mazefinder_4);
FreeBitmap(mazefinder_5);
FreeBitmap(mazefinder_6);
FreeBitmap(mazefinder_7);
FreeBitmap(mazefinder_8);
FreeBitmap(mazefinder_9);
FreeBitmap(mazefinder_10);
end;
procedure Login;
begin
Typesend(' ');
TypeSend(Players[CurrentPlayer].Name);
TypeSend(Players[CurrentPlayer].Pass);
wait(10000);
mouse(369, 351, 5, 5, True);
end;

procedure antiban;
begin
case random(47) of
0: boredhuman;
1: RandomRclick;
2: PickUpMouse;
3: HoverSkill('magic', False);
4: RandomMovement;
end;
end;


procedure EnterPortal;

begin
if not loggedin then exit;
MakeCompass('N');
SetAngle(True);
wait(1500);

If arena = 'enchantment' then
begin
Mouse(144, 165, 1, 1, True);
end;

If arena = 'alchemy' then
begin
Mouse(266, 76, 1, 1, True);
end;

If arena = 'graveyard' then
begin
Mouse(365, 167, 1, 1, True);
end;

If arena = 'maze' then
begin
Mouse(256, 282, 1, 1, True);
end;
end;

procedure LoadRecords; //thanks sumillion =D
begin
with Guardian do
begin
Name := 'Stone Guardian';
UpText := 'Cast';
MaxDist := 15;
Color := 5730030;
HueMod := 0.09;
SatMod := 1.55;
LumTol := 4;
MinR := 95; MaxR := 122;
MinG := 69; MaxG := 90;
MinB := 33; MaxB := 53;
MinX := 7.28; MaxX := 11.91;
MinY := 6.96; MaxY := 11.41;
MinZ := 2.46; MaxZ := 4.71;
end;
end;


procedure grabstatue;
begin
for R := 3 to 11 do
mouse(716, 282, R, R, True);//casts grab
repeat
for R := 100 to 600 do
wait(200 + random (R));
Counter:=counter+1;
until FindObjRecord(x, y, Guardian) or (Counter=10);
for R := 1 to 8 do
if FindObjRecord(x, y, Guardian) then
mouse(x, y, R, R, True);
LawsUsed:=counter+1;
end;

procedure TopRightCorner;
begin
for R := 3 to 11 do
mouse(359, 50, R, R, True);
flag;
grabstatue;
end;

procedure TopLeftCornerN;
begin
end;

procedure LeftTopCorner;
begin
for R := 3 to 11 do
mouse(118, 60, R, R, True);//left side top corner
flag;
grabstatue;
end;

procedure LeftBottomCorner;
begin
for R := 3 to 11 do
mouse(114, 290, R, R, True);//left side, bottom corner
flag;
grabstatue;
end;

procedure RightTopCornerN;
begin
end;

procedure RightBottomCorner;
begin
for R := 3 to 11 do
mouse(436, 286, R, R, True);// right side, bottom corner
flag;
grabstatue;
end;

procedure BottomRightCorner;
begin
for R := 3 to 11 do
mouse(382, 320, R, R, True);//bottom side, right corner
flag;
grabstatue;
end;

procedure BottomLeftCorner;
begin
for R := 3 to 11 do
mouse(142, 321, R, R, True);//bottom side left corner
flag;
grabstatue;
end;

procedure ObserveGaurdian;
begin
for R := 3 to 11 do
if FindObjRecord(x, y, Guardian) then
Mouse(x, y, R, R, True);
end;

procedure TalkToGaurdian;
begin
for R := 3 to 11 do
if FindObjRecord(x, y, Guardian) then
begin
Mouse(x, y, R, R, True);
end;
ClickToContinue;
ChatWait
end;

procedure maze1;//not finished
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(395004, 270, 180, 70, 3, 3);
flag;
ObserveGaurdian;
mouse(x,y, 5, 5, True);
wait(3000 + random (R));
TopRightCorner;
wait(7134 + random (R));
LeftTopCorner;
wait(5111 + random (R));
BottomRightCorner;
wait(8000 + random (R))
RightBottomCorner;
wait(5000 + random (R));
TopRightCorner;
wait(6100 + random (R));
LeftTopCorner;
wait(8250 + random (R))
BottomLeftCorner;
wait(8000 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;

procedure maze2;// not finished
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(395004, 270, 180, 70, 3, 3);
ObserveGaurdian;
BottomRightCorner;
wait(5001 + random (R));
RightBottomCorner;
wait(6002 + random (R));
BottomRightCorner;
wait(4500 + random (R));
LeftBottomCorner;
wait(5002 + random (R));
BottomLeftCorner;
wait(8000 + random (R));
RightBottomCorner;
wait(4200 + random (R));
BottomRightCorner
wait(8300 + random (R));
LeftBottomCorner;
wait(8250 + random (R));
BottomLeftCorner;
wait(3630 + random (R));
RightBottomCorner;
wait(9000 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;

procedure maze3;
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(395004, 0, 270, 70, 3, 3);
ObserveGaurdian;
LeftTopCorner;
wait(8595 + random (R));
TopLeftCornerN;
wait(5000 + random (R));
LeftTopCorner;
wait(5100 + random (R));
BottomLeftCorner;
wait(6900 + random (R));
LeftBottomCorner;
wait(7899 + random (R));
BottomLeftCorner;
wait(6900 + random (R));
RightTopCornerN;
wait(8000 + random (R));
TopRightCorner;
wait(7000 + random (R));
RightTopCornerN;
wait(6000 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;

procedure maze4;
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(395004, 0, 270, 70, 3, 3);
ObserveGaurdian;
LeftBottomCorner;
wait(9206 + random (R));
TopRightCorner;
wait(6014 + random (R));
RightTopCornerN;
wait(8547 + random (R));
TopRightCorner;
wait(5984 + random (R));
LeftTopCorner;
wait(5527 + random (R));
TopLeftCornerN;
wait(8956 + random (R));
LeftTopCorner;
wait(4527 + random (R));
TopLeftCornerN;
wait(4556 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;

procedure maze5;
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(7630858, 0, 270, 70, 3, 3);
ObserveGaurdian;
BottomLeftCorner;
wait(9000 + random (R));
LeftBottomCorner;
wait(7000 + random (R));
TopLeftCornerN;
wait(9000 + random (R));
LeftTopCorner;
wait(7000 + random (R));
BottomLeftCorner;
wait(9000 + random (R));
LeftBottomCorner;
wait(7000 + random (R));
TopLeftCornerN;
wait(10000 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;

procedure maze6;
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(7630858, 270, 180, 70, 3, 3);
ObserveGaurdian;
RightBottomCorner;
wait(9000 + random (R));
TopRightCorner;
wait(6000 + random (R));
LeftTopCorner;
wait(9000 + random (R));
TopLeftCornerN;
wait(7000 + random (R));
RightTopCornerN;
wait(9000 + random (R));
TopRightCorner;
wait(6000 + random (R));
LeftTopCorner;
wait(9000 + random (R));
TopLeftCornerN;
wait(7000 + random (R));
RightTopCornerN;
wait(9000 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);;
end;

procedure maze7;
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
ObserveGaurdian;
wait(3000 + random (R));
BottomLeftCorner;
wait(7000 + random (R))
LeftBottomCorner;
wait(7000 + random (R));
TopLeftCornerN;
wait(8500 + random (R));
LeftTopCorner;
wait(8000 + random (R));
TopLeftCornerN;
wait(8500 + random (R));
RightTopCornerN;
wait(8500 + random (R));
BottomLeftCorner;
wait(8500 + random (R));
LeftBottomCorner;
wait(8500 + random (R));
BottomLeftCorner;
wait(8500 + random (R));
RightBottomCorner;
wait(8500 + random (R));
BottomLeftCorner;
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;


procedure maze8;
begin
writeln('working on');
end;

procedure maze9;
begin
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
RadialWalk(2105598, 270, 180, 70, 3, 3);
ObserveGaurdian;
end;


procedure telekineticmaze;
label
ComeBack;

begin
EnterPortal;
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
begin
Loadbtms;
ComeBack:
begin
if FindBitmapToleranceIn(mazefinder_1, MMX, MMY, 450, 250, 510, 320, 10) then
maze1;
if FindBitmapToleranceIn(mazefinder_2, MMX, MMY, 450, 250, 510, 320, 10) then
maze2;
if FindBitmapToleranceIn(mazefinder_3, MMX, MMY, 450, 250, 510, 320, 10) then
maze3;
if FindBitmapToleranceIn(mazefinder_4, MMX, MMY, 450, 250, 510, 320, 10) then
maze4;
if FindBitmapToleranceIn(mazefinder_5, MMX, MMY, 450, 250, 510, 320, 10) then
maze5;
if FindBitmapToleranceIn(mazefinder_6, MMX, MMY, 450, 250, 510, 320, 10) then
maze6;
if FindBitmapToleranceIn(mazefinder_7, MMX, MMY, 450, 250, 510, 320, 10) then
maze7;
if FindBitmapToleranceIn(mazefinder_8, MMX, MMY, 450, 250, 510, 320, 10) then
maze8;
end;
if LawsUsed < Law then goto ComeBack; <--- error on this line.
end;
Freebmps;
end;

procedure enchantmentarena;
begin
writeln('enchantment does not work atm');
end;

procedure alchemyarena;
begin
writeln('alchemy does not work atm');
end;

procedure graveyardarena;
begin
writeln('graveyard does not work atm');
end;

procedure CallArena;

begin
if not LoggedIn then Login;
case arena of
'enchantment': enchantmentarena;
'alchemy': alchemyarena;
'graveyard': graveyardarena;
'maze': telekineticmaze;
end;
end;


procedure antirandoms;
begin
FindNormalRandoms;
if FindFight then EnterPortal;

if FindMod then
begin
writeln('mod found! ending script!');
Logout;
end;


if Finddead then NextPlayer(Players[CurrentPlayer].Active);
end;

begin
SetupSRL;
DeclarePlayers;
mousespeed := 10;
ChatsOff;
SetAutoingDefaults;
CallArena;
end.

Illkillutill

2008-08-01 19:41:16

Here you go, it gave you that error because the constant "law" was a string, and the variable "laws used" was a integer so they couldn't be compared. so all you need to do is change your constant "law = '500'" to "law = 500" .

Edit: If you didn't realize already, you have two x and y sets of variables, which can really mess up if you don't take one off.

here you go:
program MTATrainer;
{.include SRL\SRL.scar}

{ start logged in or logged out, in the middle of the four
portals.}



var
x,y, x, y, MMX, MMY, R: integer;
mazefinder_1, mazefinder_2, mazefinder_3, mazefinder_4, mazefinder_5: Integer;
mazefinder_6, mazefinder_7, mazefinder_8, mazefinder_9, mazefinder_10: integer;
counter, Time, LawsUsed: integer;
Guardian: TAutoColorInfo;


const
arena = 'maze';//<--dont touch (use for later versions, and for importantcase ex)
Law = 500;//how many laws do you want to use?


procedure DeclarePlayers;
begin
HowManyPlayers := 2;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Pin := ''; // leave blank if you dont have a pin
Players[0].Active := True;

Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := '';
Players[1].Pin := ''; // leave blank if you dont have a pin
Players[1].Active := False;
end;



procedure Loadbtms;
begin
mazefinder_1 := BitmapFromString(31, 22, 'beNorLfVFAibUBtzl' +
'JaNowNH7Fx+ohTBN/m9m9o+Hp760lHKEZjjIZAWFP2xsLxkYqG440' +
'M1Akz8yMJyjgeEMDIw3GRj2MAABI9UNB4Y50FiqmIzVcKoYO2r4qO' +
'G0MxyXFFphRV3DaerygTEcAGKEgi4=');

mazefinder_2 := BitmapFromString(22, 15, 'beNorLfVFAiZkg' +
'frS0vcvnwFJCEJmoyGgFC6VxJuAi0sVE5ARfl8Qo3L4IQp9TUwc4T' +
'eZbibg8SOe2EcTJyOU8KRPkk0AAPZOBks=');

mazefinder_3 := BitmapFromString(34, 19, 'beNorKfdFAiY0A/Wl' +
'pbjQh5dv8MjiR0C93CXlcDQgtiCbPDhtAapHRnTwC7IVNIoXNI8AE' +
'cR3WI3FZQtayMARHlvwGEuSX0amLWQYOCxtIT4l084WTBspR3isGE' +
'VEIQA4BZCE');

mazefinder_4 := BitmapFromString(20, 17, 'beNorrucuHhj0+vUr' +
'4hGa3vrSUvzov5nZPx4eCBtNO2GNCgp/2NheMjCQqhdoI1DjRwaGc' +
'7j14vIgAwPjTQaGPQxAwEiqvUAE1AXRSIZeoHpk9uDRi6wAU/2oXk' +
'r1AgCP/fif');

mazefinder_5 := BitmapFromString(26, 22, 'beNo7/fTFh8/1paUE' +
'EbIyNC14pIg0DZMLR6SahmkIMW4bVTaqbKQpw6WSKqZRmAHxlDBkF' +
'DVA9N/M7B8PD0llCFbEXV0OMkpB4Q8b20sGBspNA7oKaNRHBoZzeE' +
'0jxkCgaQwMjDcZGPYwAAEjeabBYw1oGsRAIEIrk8lAJiYm////33T' +
'6KVZ07MbuH3tMJhaZrzp8l9G2hqHiMMO8J7L7/1df+V9w6b/+4f+s' +
'6/9rbf/P6NnWs3DnJgD+gr5I');

mazefinder_6 := BitmapFromString(35, 26, 'beNrN1LENwjAQBdAa' +
'CoowBgVNWCA1SAxAS58iy6ViAiag9NVeASw5Ok62SS7ftoT1FUXKK' +
'c++2OmHixhtzfF4vlzcTdd14zgaY951xv18vB42Ptt+sNa6q8u+aW' +
'ZiieYL4txOO1Z8NBYAyeV8LaJKkFT+CgICQMByPBQoqtZZu0px9Ri' +
'0yvKVMKS0uCYHWrTk01jhM6vtDFFyewRzSEJrLeZkgoJfEKfUOZoh' +
'lD/YfAhoIAwVtBYh2cOcb6eBvCV3FGBNL0nNuWw/mahtcTFsAccQs' +
'+J/QpBYBCDVZBwn+lxJmfIBswuySA==');

mazefinder_7 := BitmapFromString(18, 18, 'beNqLmO2LBEyIBvvP' +
'3uYuKQeid+/eAUkGBkZkBBT5/PwtRAEyguuCIGJ1nbsDZyNbBxeBC' +
'KIhoCORuXA1EAZWLZi68JiPXxcxiM66gGGLhojRVV9aiowwDcE0Cq' +
'suNBFM04jXhYwo0QWxF1MXsjhWu5CdTTBkgLp63NlxuRCXa4G6/v/' +
'/v+boA1zo5PVlh48U/z6s1t9iwaAUwxA0mwEA0nS4DA==');

mazefinder_8 := BitmapFromString(32, 25, 'beNo797y+tJR49On' +
'La2Q2MhdTJXd5CRCRZD5JLhk55kOCGn+Aj4b/EDIfKPvfzOwfDw9m' +
'tqKK+SDDFRT+sLG9ZGCghflAlwMN/8jAcI425jMwMN5kYNjDAASMt' +
'DAfYgUQkZSnqJ5+cFkNcRV9zCejbCHGfIjhtHM/2eYT480Rbj4xiC' +
'rxSwv3k2q+iYnJ////t557jgudvLLl2ULLB/MdtvZZb5gTvnHXLjy' +
'K0REAUV65TQ==');

mazefinder_9 := BitmapFromString(23, 22, 'beNorLa0vxY6eP31' +
'LpCAeNGrIYDAEKE4Q/Tcz+8fDg0c9QSeBTFBQ+MPG9pKBgSS/ICOg' +
'G4AmfGRgOEeBIQwMjDcZGPYwAAEj2YZAzKHQBPog/DFLUBl56Y3UF' +
'DtqyMAbAgBEsxUJ');

writeln('bitmapsloaded');
end;

procedure Freebmps;
begin
FreeBitmap(mazefinder_1);
FreeBitmap(mazefinder_2);
FreeBitmap(mazefinder_4);
FreeBitmap(mazefinder_5);
FreeBitmap(mazefinder_6);
FreeBitmap(mazefinder_7);
FreeBitmap(mazefinder_8);
FreeBitmap(mazefinder_9);
FreeBitmap(mazefinder_10);
end;
procedure Login;
begin
Typesend(' ');
TypeSend(Players[CurrentPlayer].Name);
TypeSend(Players[CurrentPlayer].Pass);
wait(10000);
mouse(369, 351, 5, 5, True);
end;

procedure antiban;
begin
case random(47) of
0: boredhuman;
1: RandomRclick;
2: PickUpMouse;
3: HoverSkill('magic', False);
4: RandomMovement;
end;
end;


procedure EnterPortal;

begin
if not loggedin then exit;
MakeCompass('N');
SetAngle(True);
wait(1500);

If arena = 'enchantment' then
begin
Mouse(144, 165, 1, 1, True);
end;

If arena = 'alchemy' then
begin
Mouse(266, 76, 1, 1, True);
end;

If arena = 'graveyard' then
begin
Mouse(365, 167, 1, 1, True);
end;

If arena = 'maze' then
begin
Mouse(256, 282, 1, 1, True);
end;
end;

procedure LoadRecords; //thanks sumillion =D
begin
with Guardian do
begin
Name := 'Stone Guardian';
UpText := 'Cast';
MaxDist := 15;
Color := 5730030;
HueMod := 0.09;
SatMod := 1.55;
LumTol := 4;
MinR := 95; MaxR := 122;
MinG := 69; MaxG := 90;
MinB := 33; MaxB := 53;
MinX := 7.28; MaxX := 11.91;
MinY := 6.96; MaxY := 11.41;
MinZ := 2.46; MaxZ := 4.71;
end;
end;


procedure grabstatue;
begin
for R := 3 to 11 do
mouse(716, 282, R, R, True);//casts grab
repeat
for R := 100 to 600 do
wait(200 + random (R));
Counter:=counter+1;
until FindObjRecord(x, y, Guardian) or (Counter=10);
for R := 1 to 8 do
if FindObjRecord(x, y, Guardian) then
mouse(x, y, R, R, True);
LawsUsed:=counter+1;
end;

procedure TopRightCorner;
begin
for R := 3 to 11 do
mouse(359, 50, R, R, True);
flag;
grabstatue;
end;

procedure TopLeftCornerN;
begin
end;

procedure LeftTopCorner;
begin
for R := 3 to 11 do
mouse(118, 60, R, R, True);//left side top corner
flag;
grabstatue;
end;

procedure LeftBottomCorner;
begin
for R := 3 to 11 do
mouse(114, 290, R, R, True);//left side, bottom corner
flag;
grabstatue;
end;

procedure RightTopCornerN;
begin
end;

procedure RightBottomCorner;
begin
for R := 3 to 11 do
mouse(436, 286, R, R, True);// right side, bottom corner
flag;
grabstatue;
end;

procedure BottomRightCorner;
begin
for R := 3 to 11 do
mouse(382, 320, R, R, True);//bottom side, right corner
flag;
grabstatue;
end;

procedure BottomLeftCorner;
begin
for R := 3 to 11 do
mouse(142, 321, R, R, True);//bottom side left corner
flag;
grabstatue;
end;

procedure ObserveGaurdian;
begin
for R := 3 to 11 do
if FindObjRecord(x, y, Guardian) then
Mouse(x, y, R, R, True);
end;

procedure TalkToGaurdian;
begin
for R := 3 to 11 do
if FindObjRecord(x, y, Guardian) then
begin
Mouse(x, y, R, R, True);
end;
ClickToContinue;
ChatWait
end;

procedure maze1;//not finished
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(395004, 270, 180, 70, 3, 3);
flag;
ObserveGaurdian;
mouse(x,y, 5, 5, True);
wait(3000 + random (R));
TopRightCorner;
wait(7134 + random (R));
LeftTopCorner;
wait(5111 + random (R));
BottomRightCorner;
wait(8000 + random (R))
RightBottomCorner;
wait(5000 + random (R));
TopRightCorner;
wait(6100 + random (R));
LeftTopCorner;
wait(8250 + random (R))
BottomLeftCorner;
wait(8000 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;

procedure maze2;// not finished
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(395004, 270, 180, 70, 3, 3);
ObserveGaurdian;
BottomRightCorner;
wait(5001 + random (R));
RightBottomCorner;
wait(6002 + random (R));
BottomRightCorner;
wait(4500 + random (R));
LeftBottomCorner;
wait(5002 + random (R));
BottomLeftCorner;
wait(8000 + random (R));
RightBottomCorner;
wait(4200 + random (R));
BottomRightCorner
wait(8300 + random (R));
LeftBottomCorner;
wait(8250 + random (R));
BottomLeftCorner;
wait(3630 + random (R));
RightBottomCorner;
wait(9000 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;

procedure maze3;
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(395004, 0, 270, 70, 3, 3);
ObserveGaurdian;
LeftTopCorner;
wait(8595 + random (R));
TopLeftCornerN;
wait(5000 + random (R));
LeftTopCorner;
wait(5100 + random (R));
BottomLeftCorner;
wait(6900 + random (R));
LeftBottomCorner;
wait(7899 + random (R));
BottomLeftCorner;
wait(6900 + random (R));
RightTopCornerN;
wait(8000 + random (R));
TopRightCorner;
wait(7000 + random (R));
RightTopCornerN;
wait(6000 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;

procedure maze4;
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(395004, 0, 270, 70, 3, 3);
ObserveGaurdian;
LeftBottomCorner;
wait(9206 + random (R));
TopRightCorner;
wait(6014 + random (R));
RightTopCornerN;
wait(8547 + random (R));
TopRightCorner;
wait(5984 + random (R));
LeftTopCorner;
wait(5527 + random (R));
TopLeftCornerN;
wait(8956 + random (R));
LeftTopCorner;
wait(4527 + random (R));
TopLeftCornerN;
wait(4556 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;

procedure maze5;
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(7630858, 0, 270, 70, 3, 3);
ObserveGaurdian;
BottomLeftCorner;
wait(9000 + random (R));
LeftBottomCorner;
wait(7000 + random (R));
TopLeftCornerN;
wait(9000 + random (R));
LeftTopCorner;
wait(7000 + random (R));
BottomLeftCorner;
wait(9000 + random (R));
LeftBottomCorner;
wait(7000 + random (R));
TopLeftCornerN;
wait(10000 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;

procedure maze6;
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
RadialWalk(7630858, 270, 180, 70, 3, 3);
ObserveGaurdian;
RightBottomCorner;
wait(9000 + random (R));
TopRightCorner;
wait(6000 + random (R));
LeftTopCorner;
wait(9000 + random (R));
TopLeftCornerN;
wait(7000 + random (R));
RightTopCornerN;
wait(9000 + random (R));
TopRightCorner;
wait(6000 + random (R));
LeftTopCorner;
wait(9000 + random (R));
TopLeftCornerN;
wait(7000 + random (R));
RightTopCornerN;
wait(9000 + random (R));
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);;
end;

procedure maze7;
begin
for R := 8 to 19 do
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
MarkTime(Time);
ObserveGaurdian;
wait(3000 + random (R));
BottomLeftCorner;
wait(7000 + random (R))
LeftBottomCorner;
wait(7000 + random (R));
TopLeftCornerN;
wait(8500 + random (R));
LeftTopCorner;
wait(8000 + random (R));
TopLeftCornerN;
wait(8500 + random (R));
RightTopCornerN;
wait(8500 + random (R));
BottomLeftCorner;
wait(8500 + random (R));
LeftBottomCorner;
wait(8500 + random (R));
BottomLeftCorner;
wait(8500 + random (R));
RightBottomCorner;
wait(8500 + random (R));
BottomLeftCorner;
TalkToGaurdian;
if TimeFromMark(Time) > 300000 then
players[CurrentPlayer].active:=false;
NextPlayer(Players[CurrentPlayer].Active);
end;


procedure maze8;
begin
writeln('working on');
end;

procedure maze9;
begin
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
RadialWalk(2105598, 270, 180, 70, 3, 3);
ObserveGaurdian;
end;


procedure telekineticmaze;
label
ComeBack;

begin
EnterPortal;
if not loggedin then NextPlayer(Players[CurrentPlayer].Active);
begin
Loadbtms;
ComeBack:
begin
if FindBitmapToleranceIn(mazefinder_1, MMX, MMY, 450, 250, 510, 320, 10) then
maze1;
if FindBitmapToleranceIn(mazefinder_2, MMX, MMY, 450, 250, 510, 320, 10) then
maze2;
if FindBitmapToleranceIn(mazefinder_3, MMX, MMY, 450, 250, 510, 320, 10) then
maze3;
if FindBitmapToleranceIn(mazefinder_4, MMX, MMY, 450, 250, 510, 320, 10) then
maze4;
if FindBitmapToleranceIn(mazefinder_5, MMX, MMY, 450, 250, 510, 320, 10) then
maze5;
if FindBitmapToleranceIn(mazefinder_6, MMX, MMY, 450, 250, 510, 320, 10) then
maze6;
if FindBitmapToleranceIn(mazefinder_7, MMX, MMY, 450, 250, 510, 320, 10) then
maze7;
if FindBitmapToleranceIn(mazefinder_8, MMX, MMY, 450, 250, 510, 320, 10) then
maze8;
if LawsUsed < Law then goto ComeBack;
Freebmps;
end;
end;
end;

procedure enchantmentarena;
begin
writeln('enchantment does not work atm');
end;

procedure alchemyarena;
begin
writeln('alchemy does not work atm');
end;

procedure graveyardarena;
begin
writeln('graveyard does not work atm');
end;

procedure CallArena;

begin
if not LoggedIn then Login;
case arena of
'enchantment': enchantmentarena;
'alchemy': alchemyarena;
'graveyard': graveyardarena;
'maze': telekineticmaze;
end;
end;


procedure antirandoms;
begin
FindNormalRandoms;
if FindFight then EnterPortal;

if FindMod then
begin
writeln('mod found! ending script!');
Logout;
end;


if Finddead then NextPlayer(Players[CurrentPlayer].Active);
end;

begin
SetupSRL;
DeclarePlayers;
mousespeed := 10;
ChatsOff;
SetAutoingDefaults;
CallArena;
end.

rbair44

2008-08-01 21:38:53

thank you

Awkwardsaw

2008-08-01 22:39:54

Here you go, it gave you that error because the constant "law" was a string, and the variable "laws used" was a integer so they couldn't be compared. so all you need to do is change your constant "law = '500'" to "law = 500" .

Edit: If you didn't realize already, you have two x and y sets of variables, which can really mess up if you don't take one off.

here you go:


wow, i didnt even notice the variables. but the x,y and x, y, i know i had them, its for a purpose =p

Timer

2008-08-06 22:30:50

Labels suck freddy… ;)

Jump out of loop please???

program lblTest;

procedure ss;
label
lblBack;
var
Count: Integer;
begin
lblBack:
repeat
WriteLn('Hello');
Count := Count + 1;
if Count < 5 then goto lblBack;
until count > 0;
end;

begin
ss;
end.