SRL Archive - Archive

teh_lulz - SRL Member Application


teh_lulz

2009-06-14 04:04:38

How Long have You Played Runescape?
4 Year(s)


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
Pascal


Are you a member of any other communities?
www.Ultimate-guitar.com, www.scorehero.com, www.zybez.net/community, I used to be really active on all of these, except Ultimate-guitar, I do frequent these sites still, just not much of a poster.


Tell us about yourself…
From: teh_lulz
I am a 15 year old in high school (going to be a junior next school year.) Some of my hobbies are playing golf, hockey, and a pretty big interest in computer technology. I used to be pretty fluent at photoshop until my computer crashed - I'm just not willing to pay for the program again. I started playing RuneScape in 2005, I played it for about 2 years playing between a main account and pure account, then I lost interest. I looked to SRL-Forums for cheating, I tried to learn how to script but couldn't get the hang of it. I quit runescape, about a year and half later I came back, with an interest to learn how to script again, this time it has been more successful! I'm not much of a poster on the forums, but I'm pretty active in #srl IRC chat room.



Please show us one (or multiple) of your scripts.
(*==================================================================]
[ Monkey Business, Ape Atoll Agility Script ]
[ ]
[ Name : Monkey Business ]
[ Writer : teh_lulz @srl-forums(Villavu.com ]
[ Category : Agility ]
[ Description : Completes ape atoll agility course ]
[ Usage : Start at the nearest square next to... ]
[ the stepping stone. ]
[ SRL Used : Version 4.0, Revision #33 ]
[ SCAR Used : 3.20d Divi by Freddy1990 ]
[ ]
[ More Scripts can be found at ]
[ [url]www.SRL-Forums.com[/url] ]
[===================================================================]
[ Instructions ]
[===================================================================]
[ 1. Press play! ]
[ 2. Fill out the form asking for your account details/lap count ]
[ 3. Let the script run by itself. ]
[ **Warning - I'd advise you to stay near your computer as this ]
[ script is still in it's 'BETA' stages. I need info on all bugs ]
[ that will need to be fixed. Thanks. ]
[===================================================================]
[ Features ]
[ 1. Form, not a sexy one, but still a form! ]
[ 2. Automatically sleeps/logs back in. ]
[ 3. S.M.A.R.T enabled, look at that pron while you auto ;) ]
[ 4. Uses very little reflection, mostly colored. ]
[===================================================================]
[ Credits ]
[ 1. teh_lulz: Script creator. ]
[ 2.Regular IRC helpers: Widget, Dan's The Man, Ogre... ]
[ cyrocism, Harryy, Hobbit... Sorry if I haven't mentioned ]
[ you but you know you've helped me! Just pm me. ]
[ 3. StarBlaster: FindObjCustom = savior. ;p ]
[ 4. Tutorial Writers at SRL. Honestly, can't thank you guys ]
[ enough, too many people to list here, but you guys are awesome. ]
[ 5. Harryy - I kinda stole this info layout from him. :P ]
[++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)

//Some things about this script: It doesn't need anti-randoms because there is a 0 possibility of
// receiving a random while you are a monkey on Ape-Atoll Island. I know how to use Anti-randoms
// but it isn't needed for this script. Thanks.

//Also, here is the thread for it: [url]http://www.villavu.com/forum/showthread.php?t=46204[/url]
// in Scar tags it looks really screwed up + there is a bunch of pink, due to 's.


program ApeAtollAgility;

{.include SRL\SRL.scar}


var
AntiBansPerformed: Integer;
frmDesign : TForm;
Label1 : TLabel;
Label2 : TLabel;
Label3 : TLabel;
Label4 : TLabel;
Label5 : TLabel;
Label6 : TLabel;
Label7 : TLabel;
Edit1 : TEdit;
Edit2 : TEdit;
Edit3 : TEdit;
Edit4 : TEdit;
Finish : TButton;
Edit5 : TEdit;
LapCount: Integer;
TotalTime: Integer;
HowManyLaps: Integer;
WorldNumber: Integer;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| The Form - Form stuff. ||
|| By: teh_lulz, Taught by: MasterKill, Dan's the Man ||
\\_________________________________________________________________*)

procedure FinishButton(Sender: TObject);
begin
WriteLn('Thank you for using this script, remember to post progress reports!');
frmDesign.ModalResult:= mrOk;
end;

procedure InitForm;
begin
frmDesign := CreateForm;
frmDesign.Left := 259;
frmDesign.Top := 111;
frmDesign.Width := 376;
frmDesign.Height := 355;
frmDesign.Caption := 'Ape Atoll Agility... By: Teh_Lulz';
frmDesign.Color := clBtnFace;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;

Label1 := TLabel.Create(frmDesign);
Label1.Parent := frmDesign;
Label1.Left := 32;
Label1.Top := 112;
Label1.Width := 77;
Label1.Height := 13;
Label1.Caption := 'Character Name';

Label2 := TLabel.Create(frmDesign);
Label2.Parent := frmDesign;
Label2.Left := 32;
Label2.Top := 144;
Label2.Width := 95;
Label2.Height := 13;
Label2.Caption := 'Character Password';

Label3 := TLabel.Create(frmDesign);
Label3.Parent := frmDesign;
Label3.Left := 32;
Label3.Top := 176;
Label3.Width := 71;
Label3.Height := 13;
Label3.Caption := 'Character Nick';

Label4 := TLabel.Create(frmDesign);
Label4.Parent := frmDesign;
Label4.Left := 32;
Label4.Top := 208;
Label4.Width := 74;
Label4.Height := 13;
Label4.Caption := 'Amount of Laps';

Label5 := TLabel.Create(frmDesign);
Label5.Parent := frmDesign;
Label5.Left := 40;
Label5.Top := 24;
Label5.Width := 306;
Label5.Height := 23;
Label5.Caption := 'Monkey Business - Ape Atoll Agility';
Label5.Font.Color := clWindowText;
Label5.Font.Height := -21;
Label5.Font.Name := 'Times New Roman';
Label5.Font.Style := [];
Label5.ParentFont := False;

Label6 := TLabel.Create(frmDesign);
Label6.Parent := frmDesign;
Label6.Left := 120;
Label6.Top := 64;
Label6.Width := 101;
Label6.Height := 21;
Label6.Caption := 'By: Teh_Lulz';
Label6.Font.Color := clWindowText;
Label6.Font.Height := -19;
Label6.Font.Name := 'Times New Roman';
Label6.Font.Style := [];
Label6.ParentFont := False;

Label7 := TLabel.Create(frmDesign);
Label7.Parent := frmDesign;
Label7.Left := 80;
Label7.Top := 248;
Label7.Width := 68;
Label7.Height := 13;
Label7.Caption := 'World Number';

Edit1 := TEdit.Create(frmDesign);
Edit1.Parent := frmDesign;
Edit1.Left := 136;
Edit1.Top := 112;
Edit1.Width := 161;
Edit1.Height := 21;
Edit1.TabOrder := 8;
Edit1.Text := 'Zezima';

Edit2 := TEdit.Create(frmDesign);
Edit2.Parent := frmDesign;
Edit2.Left := 136;
Edit2.Top := 144;
Edit2.Width := 161;
Edit2.Height := 21;
Edit2.TabOrder := 9;
Edit2.PasswordChar := '*'
Edit2.Text := 'Youwish';

Edit3 := TEdit.Create(frmDesign);
Edit3.Parent := frmDesign;
Edit3.Left := 136;
Edit3.Top := 176;
Edit3.Width := 161;
Edit3.Height := 21;
Edit3.TabOrder := 10;
Edit3.Text := 'ezi';

Edit4 := TEdit.Create(frmDesign);
Edit4.Parent := frmDesign;
Edit4.Left := 136;
Edit4.Top := 208;
Edit4.Width := 161;
Edit4.Height := 21;
Edit4.TabOrder := 11;
Edit4.Text := '150';

Finish := TButton.Create(frmDesign);
Finish.Parent := frmDesign;
Finish.Left := 104;
Finish.Top := 280;
Finish.Width := 129;
Finish.Height := 33;
Finish.Caption := 'Finish';
Finish.TabOrder := 12;
Finish.OnClick := @FinishButton;

Edit5 := TEdit.Create(frmDesign);
Edit5.Parent := frmDesign;
Edit5.Left := 168;
Edit5.Top := 240;
Edit5.Width := 65;
Edit5.Height := 21;
Edit5.TabOrder := 13;
Edit5.Text := '144';

end;

procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;

procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;

procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;


procedure DeclarePlayers; //I only made it for one... because how many 75+ agility characters can one man have?
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0 // Starting player
Players[0].Name := Edit1.Text; // Character Name
Players[0].Pass := Edit2.Text; // Character Pass
Players[0].Nick := Edit3.Text; // Nickname 3 - 4 Letter's of char name
Players[0].Integers[0] := 0;
Players[0].Active := True;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| AntiBan: So you don't get banned, silly. ||
|| By: teh_lulz. ||
|| Credits: SRL devs team, Freddy of course. ||
\\_________________________________________________________________*)

procedure AntiBan;
begin
Inc(AntiBansPerformed);
Wait(250 + Random(250));
case random(50) of
0: begin
PickUpMouse;
MakeCompass(random(360));
RandomMovement;
GameTab(RandomRange(1, 14));
end;
1: begin
PickUpMouse;
GameTab(RandomRange(1, 14));
end;
2: begin;
PickUpMouse;
IdleTime(3000, 10, 10.5);
GameTab(RandomRange(1, 14));
end;
3: begin
MakeCompass(RandomRange(150, 170));
GameTab(RandomRange(1, 14));
end;
4: begin
GameTab(RandomRange(1, 14));
MakeCompass(RandomRange(160, 190));
end;
5: begin
MakeCompass(random(360));
end;
6: begin
HoverSkill('agility', false);
PickUpMouse;
GameTab(RandomRange(1, 14));
end;
7: begin
MMouse(random(250), random(250), 10, 10);
end;
8: SleepAndMoveMouse(1000 + random(1000));
9: MouseBox(MSX1, MSY1, MSX2, MSY2, 3);
10: IdleTime(1000 + random(1000), 10, 2.4);
11: MakeCompass(RandomRange(130, 180));
12: RandomRClick;
end;
end;


(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| SteppingRock: Finds stepping rock, clicks on it... ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure SteppingRock;
var
x, y: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
if FindObjCustom(x, y, ['eppi', 'ping'], [9140846, 2051414, 2249822, 1720648, 1058861], 8) then
begin
Writeln('Found the stepping rock, clicking...');
case random(2) of
0: begin
Mouse(x, y, 1, 1, true);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('eppi');
end;
end;
Writeln('Clicked stepping rock...');
end;
if (not (FindObjCustom(x, y, ['eppi', 'ping'], [9140846, 2051414, 2249822, 1720648, 1058861], 8))) then
MouseBox(297, 182, 307, 189, 2);
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| FindTreeOne: Finds the first tropical tree and ||
|| clicks on it. ||
|| By: teh_lulz ||
|| Credits: Starblaster(FindObjCustom) ||
\\_________________________________________________________________*)

procedure FindTreeOne;
var
x, y: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
MakeCompass('S');
Writeln('Beginning to find the tree...');
if FindObjCustom(x, y, ['opi', 'cal', 'rop'], [3892096, 2440784, 4421521, 1912895, 1451055, 2572628], 10) then
begin
Writeln('Found tree, clicking...');
case random(2) of //small anti-ban procedure, used throughout script.
0: begin
Mouse(x, y, 1, 1, True);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('ree');
end;
end;
end;
if (not (FindObjCustom(x, y, ['opi', 'cal', 'rop'], [3892096, 2440784, 4421521, 1912895, 1451055, 2572628], 10))) then
begin
Writeln('Could not find tree, sorry...');
LogOut;
TerminateScript;
end;
Exit;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| FindMonkeyBars: Finds monkey bars, clicks them ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure FindMonkeyBars;
var
MonkeyBarColor: TIntegerArray;
i, x, y, Counter: Integer;
begin
MakeCompass('W');
MonkeyBarColor := [7185086, 6196388, 5932701, 4218736];
if (not (LoggedIn)) then
begin
Writeln('You were not logged in, terminated script.');
Terminatescript;
end;
for i := 0 to 10 do
if FindObjCustom(x, y, ['onk', 'bar', 'key'], MonkeyBarColor, 15) then
begin
Writeln('Found the monkey bar, clicking...');
Mouse(x, y, 4, 4, false);
ChooseOption('onke');
Break;
end;
if (not (FindObjCustom(x, y, ['onk', 'bar', 'key'], MonkeyBarColor, 15))) then
repeat
if FindObjCustom(x, y, ['onk', 'bar', 'key'], MonkeyBarColor, 15) then
begin
Writeln('Found the monkey bar, clicking...(failsafe)');
Mouse(x, y, 4, 4, false);
ChooseOption('onke');
Counter := Counter + 1;
end;
break;
until (ChooseOption('onke')) or (Counter = 2);
Exit;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| ClimbTheRocks: Climbs the Skull slope. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure ClimbTheRocks;
var
x, y: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
if FindObjCustom(x, y, ['ull', 'ope', 'kul'], [1521727, 3367532, 2183514, 2315614], 5) then
begin
Writeln('Found the skull slopes, clicking them...')
case random(2) of
0: begin
Mouse(x, y, 1, 1, true);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('ull');
end;
end;
Exit;
end;
if (not (FindObjCustom(x, y, ['ull', 'ope', 'kul'], [1521727, 3367532, 2183514, 2315614], 5))) then
begin
Writeln('Could not find the skull slope... logging out and terminating...');
LogOut;
TerminateScript;
end;
end;


(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| WalkToTheRope: Walks to the rope using RadilWalk. ||
|| By: teh_lulz ||
|| Taught By: WT-Fawkawi ||
\\_________________________________________________________________*)

procedure WalkToTheRope;
var
MyTime: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
MarkTime(MyTime);
MakeCompass('N');
RadialWalk(FindWaterColor, 125, 140, 75, 1, 1);
Writeln('Walked to rope using watercolor');
if TimeFromMark(MyTime) > 9000 then exit;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| TheRope: Finds the rope, and clicks on it. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure TheRope;
var
x, y: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
MakeCompass('N');
SetAngle(False);
if FindObjCustom(x, y, ['ope', 'ing'], [2384992, 2583399, 2451556], 6) then
begin
Writeln('Found the rope, clicking...');
case random(2) of
0: begin
Mouse(x, y, 1, 1, true);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('ope');
end;
end;
end;
if (not (FindObjCustom(x, y, ['ope', 'ing'], [2384992, 2583399, 2451556], 6))) then
begin
Writeln('Could not find the rope... terminating and logging out.');
LogOut;
TerminateScript;
end;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| TropicalTree: Does the vine climb thing :O ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure TropicalTree;
var
x, y, counter: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
MakeCompass('s');
if FindObjCustom(x, y, ['opic', 'ree', 'cal'], [5344941, 4551316, 51452563430257], 10) then
Writeln('Found the tropical tree, clicking...');
case random(2) of
0: begin
Mouse(x, y, 1, 1, true);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('limb');
end;
end;
Exit;
if (not (FindObjCustom(x, y, ['opic', 'ree', 'cal'], [5344941, 4551316, 51452563430257], 10))) then
begin
repeat
if FindObjCustom(x, y, ['opic', 'ree', 'cal'], [5344941, 4551316, 51452563430257], 10) then
Mouse(x, y, 1, 1, true);
counter := Counter + 1
until (FindObjCustom(x, y, ['opic', 'ree', 'cal'], [5344941, 4551316, 51452563430257], 10)) or (counter = 3);
end;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| WalkBackToRock: Walks back to rock using agility ||
|| the agility symbol/ RunTo('w') ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure WalkBackToRock;
var
counter: Integer;
x, y: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
Writeln('Finding the agility symbol...');
if FindSymbol(x, y, 'agility') then
begin
Writeln('Using agility symbol to restart loop');
Mouse(x, y, 1, 1, true);
if (not (FlagPresent)) then
Writeln('Flag gone... repeating agility loop.');
exit;
if FlagPresent then
repeat
Wait(500);
counter := counter + 1;
until (FlagPresent = false) or (counter = 50);
exit;
end;
if (not (FindSymbol(x, y, 'agility'))) then
begin
repeat
RunTo('W', false);
Writeln('Running west, using failsafe.');
counter := counter + 1;
until (FindSymbol(x, y, 'agility')) or (counter = 5);
Mouse(x, y, 1, 1, true);
end;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| ProgressReport: Prints off time running... ||
|| laps done, and experience gained. Please post them! ||
|| By: teh_lulz ||
\\_________________________________________________________________*)


procedure ProgressReport;
begin;
Writeln('Teh_Lulz Ape Atoll Agility script');
Writeln('');
Writeln('Script has been working for'+ TimeRunning);
Writeln('');
Writeln('Script has done'+ IntToStr(LapCount)+'laps');
Writeln('');
LapCount:= LapCount*85;
Writeln('Exprience Gained:'+ IntToStr(LapCount));
Writeln('');
Writeln('Antibans performed:'+ IntToStr(AntiBansPerformed));
end;


(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| DoLaps: This is the loop for doing laps. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure DoLaps;
var
RockTime, TreeTime, MonkeyTime, SkullTime, WalkRopeTime, RopeTime, TropTime, WalkTime: Integer;
Counter, LapCount: Integer;
begin
MakeCompass('S');
SteppingRock;
begin
MarkTime(RockTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(RockTime) > 3500 + Random(1000) then break;
until(counter = 5);
end;
FindTreeOne;
begin
MarkTime(TreeTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(TreeTime) > 3000 + Random(1000) then break;
until(counter = 5);
end;
FindMonkeyBars;
begin
MarkTime(MonkeyTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(MonkeyTime) > 5000 + Random(1000) then break;
until(counter = 5);
end;
MakeCompass('W');
ClimbTheRocks;
begin
MarkTime(SkullTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(SkullTime) > 5000 + Random(1000) then break;
until(counter = 5);
end;
WalkToTheRope;
begin
MarkTime(WalkRopeTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(WalkRopeTime) > 6000 + Random(1000) then break;
until(counter = 5);
end;
TheRope;
begin
MarkTime(RopeTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(RopeTime) > 3000 + Random(1000) then break;
until(counter = 5);
end;
TropicalTree;
begin
MarkTime(TropTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(TropTime) > 8000 + Random(1000) then break;
until(counter = 5);
end;
SetRun(True);
WalkBackToRock;
begin
MarkTime(WalkTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(WalkTime) > 8000 + Random(1000) then break;
until(counter = 5);
end;
Inc(LapCount);
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| LogAndSleep: Checks time running, used in main loop. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)


function LogAndSleep: Boolean;
begin
if TimeFromMark(TotalTime) > 3600000 + Random(1200000)then
Result:= True;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| LogOutWaitLogIn: Logs out, waits, logs in! ||
|| this is apart of the 'sleeping' procedure. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure LogOutWaitLogIn;
begin
LogOut;
Wait(300000 + Random(600000));
LogInPlayer;
TotalTime:= 0;
MarkTime(TotalTime);
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| SetUpScript: Sets up the script, activates SMART and the form. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)


procedure SetUpScript;
begin
ClearDebug;
SafeInitForm;
SafeShowFormModal;
ActivateClient;
SetUpSrl;
WorldNumber:= StrToInt(Edit5.text);
MouseSpeed := 13;
DeclarePlayers;
Wait(3000 + random(400));
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| The Main Loop: Pretty self explanatory ;o ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

begin
SetUpScript;
LoginPlayer;
Wait(2000 + random(250));
MarkTime(TotalTime);
HowManyLaps := StrToInt(Edit4.Text);
repeat
DoLaps;
if (LogAndSleep= true)then
LogOutWaitLogIn;
until (HowManyLaps = LapCount)
ProgressReport;
end.

This is an edited version - I took into mind what NCDS and Cazax had to say:

(*==================================================================]
[ Monkey Business, Ape Atoll Agility Script ]
[ ]
[ Name : Monkey Business ]
[ Writer : teh_lulz @srl-forums(Villavu.com ]
[ Category : Agility ]
[ Description : Completes ape atoll agility course ]
[ Usage : Start at the nearest square next to... ]
[ the stepping stone. ]
[ SRL Used : Version 4.0, Revision #33 ]
[ SCAR Used : 3.20d Divi by Freddy1990 ]
[ ]
[ More Scripts can be found at ]
[ [url]www.SRL-Forums.com[/url] ]
[===================================================================]
[ Instructions ]
[===================================================================]
[ 1. Press play! ]
[ 2. Fill out the form asking for your account details/lap count ]
[ 3. Let the script run by itself. ]
[ **Warning - I'd advise you to stay near your computer as this ]
[ script is still in it's 'BETA' stages. I need info on all bugs ]
[ that will need to be fixed. Thanks. ]
[===================================================================]
[ Features ]
[ 1. Form, not a sexy one, but still a form! ]
[ 2. Automatically sleeps/logs back in. ]
[ 3. S.M.A.R.T enabled, look at that pron while you auto ;) ]
[ 4. Uses very little reflection, mostly colored. ]
[===================================================================]
[ Credits ]
[ 1. teh_lulz: Script creator. ]
[ 2.Regular IRC helpers: Widget, Dan's The Man, Ogre... ]
[ cyrocism, Harryy, Hobbit... Sorry if I haven't mentioned ]
[ you but you know you've helped me! Just pm me. ]
[ 3. StarBlaster: FindObjCustom = savior. ;p ]
[ 4. Tutorial Writers at SRL. Honestly, can't thank you guys ]
[ enough, too many people to list here, but you guys are awesome. ]
[ 5. Harryy - I kinda stole this info layout from him. :P ]
[++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)

//Some things about this script: It doesn't need anti-randoms because there is a 0 possibility of
// receiving a random while you are a monkey on Ape-Atoll Island. I know how to use Anti-randoms
// but it isn't needed for this script. Thanks.


program ApeAtollAgility;

{.include SRL\SRL.scar}


var
AntiBansPerformed: Integer;
frmDesign : TForm;
Label1, Label2, Label3, Label4, Label5, Label6, Label7 : TLabel;
Edit1, Edit2, Edit3, Edit4, Edit5 : TEdit;
Finish : TButton;
LapCount, TotalTime, HowManyLaps, WorldNumber, Index, GreeGreeDTM: Integer;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| The Form - Form stuff. ||
|| By: teh_lulz, Taught by: MasterKill, Dan's the Man ||
\\_________________________________________________________________*)

procedure FinishButton(Sender: TObject);
begin
WriteLn('Thank you for using this script, remember to post progress reports!');
frmDesign.ModalResult:= mrOk;
end;

procedure InitForm;
begin
frmDesign := CreateForm;
frmDesign.Left := 259;
frmDesign.Top := 111;
frmDesign.Width := 376;
frmDesign.Height := 355;
frmDesign.Caption := 'Ape Atoll Agility... By: Teh_Lulz';
frmDesign.Color := clBtnFace;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;

Label1 := TLabel.Create(frmDesign);
Label1.Parent := frmDesign;
Label1.Left := 32;
Label1.Top := 112;
Label1.Width := 77;
Label1.Height := 13;
Label1.Caption := 'Character Name';

Label2 := TLabel.Create(frmDesign);
Label2.Parent := frmDesign;
Label2.Left := 32;
Label2.Top := 144;
Label2.Width := 95;
Label2.Height := 13;
Label2.Caption := 'Character Password';

Label3 := TLabel.Create(frmDesign);
Label3.Parent := frmDesign;
Label3.Left := 32;
Label3.Top := 176;
Label3.Width := 71;
Label3.Height := 13;
Label3.Caption := 'Character Nick';

Label4 := TLabel.Create(frmDesign);
Label4.Parent := frmDesign;
Label4.Left := 32;
Label4.Top := 208;
Label4.Width := 74;
Label4.Height := 13;
Label4.Caption := 'Amount of Laps';

Label5 := TLabel.Create(frmDesign);
Label5.Parent := frmDesign;
Label5.Left := 40;
Label5.Top := 24;
Label5.Width := 306;
Label5.Height := 23;
Label5.Caption := 'Monkey Business - Ape Atoll Agility';
Label5.Font.Color := clWindowText;
Label5.Font.Height := -21;
Label5.Font.Name := 'Times New Roman';
Label5.Font.Style := [];
Label5.ParentFont := False;

Label6 := TLabel.Create(frmDesign);
Label6.Parent := frmDesign;
Label6.Left := 120;
Label6.Top := 64;
Label6.Width := 101;
Label6.Height := 21;
Label6.Caption := 'By: Teh_Lulz';
Label6.Font.Color := clWindowText;
Label6.Font.Height := -19;
Label6.Font.Name := 'Times New Roman';
Label6.Font.Style := [];
Label6.ParentFont := False;

Label7 := TLabel.Create(frmDesign);
Label7.Parent := frmDesign;
Label7.Left := 80;
Label7.Top := 248;
Label7.Width := 68;
Label7.Height := 13;
Label7.Caption := 'World Number';

Edit1 := TEdit.Create(frmDesign);
Edit1.Parent := frmDesign;
Edit1.Left := 136;
Edit1.Top := 112;
Edit1.Width := 161;
Edit1.Height := 21;
Edit1.TabOrder := 8;
Edit1.Text := 'Zezima';

Edit2 := TEdit.Create(frmDesign);
Edit2.Parent := frmDesign;
Edit2.Left := 136;
Edit2.Top := 144;
Edit2.Width := 161;
Edit2.Height := 21;
Edit2.TabOrder := 9;
Edit2.PasswordChar := '*'
Edit2.Text := 'Youwish';

Edit3 := TEdit.Create(frmDesign);
Edit3.Parent := frmDesign;
Edit3.Left := 136;
Edit3.Top := 176;
Edit3.Width := 161;
Edit3.Height := 21;
Edit3.TabOrder := 10;
Edit3.Text := 'ezi';

Edit4 := TEdit.Create(frmDesign);
Edit4.Parent := frmDesign;
Edit4.Left := 136;
Edit4.Top := 208;
Edit4.Width := 161;
Edit4.Height := 21;
Edit4.TabOrder := 11;
Edit4.Text := '150';

Finish := TButton.Create(frmDesign);
Finish.Parent := frmDesign;
Finish.Left := 104;
Finish.Top := 280;
Finish.Width := 129;
Finish.Height := 33;
Finish.Caption := 'Finish';
Finish.TabOrder := 12;
Finish.OnClick := @FinishButton;

Edit5 := TEdit.Create(frmDesign);
Edit5.Parent := frmDesign;
Edit5.Left := 168;
Edit5.Top := 240;
Edit5.Width := 65;
Edit5.Height := 21;
Edit5.TabOrder := 13;
Edit5.Text := '144';
end;



procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;

procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;

procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;


procedure DeclarePlayers; //I only made it for one... because how many 75+ agility characters can one man have?
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0 // Starting player
Players[0].Name := Edit1.Text; // Character Name
Players[0].Pass := Edit2.Text; // Character Pass
Players[0].Nick := Edit3.Text; // Nickname 3 - 4 Letter's of char name
Players[0].Integers[0] := 0;
Players[0].Active := True;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| AntiBan: So you don't get banned, silly. ||
|| By: teh_lulz. ||
|| Credits: SRL devs team, Freddy of course. ||
\\_________________________________________________________________*)

procedure AntiBan;
begin
Inc(AntiBansPerformed);
Wait(250 + Random(250));
case random(50) of
0: begin
PickUpMouse;
MakeCompass(random(360));
RandomMovement;
GameTab(RandomRange(1, 14));
end;
1: begin
PickUpMouse;
GameTab(RandomRange(1, 14));
end;
2: begin;
PickUpMouse;
IdleTime(3000, 10, 10.5);
GameTab(RandomRange(1, 14));
end;
3: begin
MakeCompass(RandomRange(150, 170));
GameTab(RandomRange(1, 14));
end;
4: begin
GameTab(RandomRange(1, 14));
MakeCompass(RandomRange(160, 190));
end;
5: begin
MakeCompass(random(360));
end;
6: begin
HoverSkill('agility', false);
PickUpMouse;
GameTab(RandomRange(1, 14));
end;
7: MMouse(random(250), random(250), 10, 10);
8: SleepAndMoveMouse(1000 + random(1000));
9: MouseBox(MSX1, MSY1, MSX2, MSY2, 3);
10: IdleTime(1000 + random(1000), 10, 2.4);
11: MakeCompass(RandomRange(130, 180));
12: RandomRClick;
end;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| LoadGreeGreeDTM: Loads the GreeGreeDTm ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure LoadGreeGreeDTM; // For showing knowledge of DTMs only really...
begin
GreeGreeDTM := DTMFromString('78DA633CC1C4C070879101195CD693661001D' +
'220D1FF40C07814A8E60AAA1A882C8C04D217816AEE1350B30DA8' +
'E6037E35008BB90BD7');
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| CheckGreeGree: Checks to see if the GreeGree is in your Invo ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

function CheckGreeGree(DTM: Integer): Boolean;
var
x, y: Integer;
begin
GameTab(5);
if FindDTM(GreeGreeDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
Result := True;
end;


(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| SteppingRock: Finds stepping rock, clicks on it... ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure SteppingRock;
var
x, y: Integer;
begin
if (not (LoggedIn)) then TerminateScript;
if FindObjCustom(x, y, ['eppi', 'ping'], [9140846, 2051414, 2249822, 1720648, 1058861], 8) then
begin
Writeln('Found the stepping rock, clicking...');
case random(2) of
0: begin
Mouse(x, y, 1, 1, true);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('eppi');
end;
end
Writeln('Clicked stepping rock...');
end
else MouseBox(297, 182, 307, 189, 2);
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| FindTreeOne: Finds the first tropical tree and ||
|| clicks on it. ||
|| By: teh_lulz ||
|| Credits: Starblaster(FindObjCustom) ||
\\_________________________________________________________________*)

procedure FindTreeOne;
var
x, y: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
MakeCompass('S');
Writeln('Beginning to find the tree...');
if FindObjCustom(x, y, ['opi', 'cal', 'rop'], [3892096, 2440784, 4421521, 1912895, 1451055, 2572628], 10) then
begin
Writeln('Found tree, clicking...');
case random(2) of //small anti-ban procedure, used throughout script.
0: begin
Mouse(x, y, 1, 1, True);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('ree');
end;
end;
end
else
begin
Writeln('Could not find tree, sorry...');
LogOut;
TerminateScript;
end;
Exit;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| FindMonkeyBars: Finds monkey bars, clicks them ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure FindMonkeyBars;
var
MonkeyBarColor: TIntegerArray;
x, y: Integer;
begin
MakeCompass('W');
MonkeyBarColor := [7185086, 6196388, 5932701, 4218736];
if (not (LoggedIn)) then Terminatescript;
if FindObjCustom(x, y, ['onk', 'bar', 'key'], MonkeyBarColor, 15) then
begin
Writeln('Found the monkey bar, clicking...');
Mouse(x, y, 4, 4, false);
ChooseOption('onke');
end
else
begin
Writeln('Couldn''t find the monkey bars, logging out/terminating script.');
LogOut;
TerminateScript;
end;
Exit;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| ClimbTheRocks: Climbs the Skull slope. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure ClimbTheRocks;
var
x, y: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
if FindObjCustom(x, y, ['ull', 'ope', 'kul'], [1521727, 3367532, 2183514, 2315614], 5) then
begin
Writeln('Found the skull slopes, clicking them...')
case random(2) of
0: begin
Mouse(x, y, 1, 1, true);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('ull');
end;
end;
Exit;
end
else
begin
Writeln('Could not find the skull slope... logging out and terminating...');
LogOut;
TerminateScript;
end;
end;


(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| WalkToTheRope: Walks to the rope using RadilWalk. ||
|| By: teh_lulz ||
|| Taught By: WT-Fawkawi ||
\\_________________________________________________________________*)

procedure WalkToTheRope;
var
x, y: Integer;
begin
if (not (LoggedIn)) then TerminateScript;
MakeCompass('N');
if RadialWalk(FindWaterColor, 125, 140, 75, 1, 1)then
begin
Writeln('Walked to rope using radial walk');
Wait(250);
end
else
begin
FindColorTolerance(x, y, FindWaterColor, 658, 133, 669, 145, 20);
Mouse(x, y, 1, 1, true);
Writeln('Walked to rope using FindColorTolerance');
Wait(250);
end;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| TheRope: Finds the rope, and clicks on it. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure TheRope;
var
x, y: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
MakeCompass('N');
SetAngle(False);
if FindObjCustom(x, y, ['ope', 'ing'], [2384992, 2583399, 2451556], 6) then
begin
Writeln('Found the rope, clicking...');
case random(2) of
0: begin
Mouse(x, y, 1, 1, true);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('ope');
end;
end;
end
else
begin
Writeln('Could not find the rope... terminating and logging out.');
LogOut;
TerminateScript;
end;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| TropicalTree: Does the vine climb thing :O ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure TropicalTree;
var
x, y: Integer;
begin
if (not (LoggedIn)) then TerminateScript;
MakeCompass('s');
if FindObjCustom(x, y, ['opic', 'ree', 'cal'], [5344941, 4551316, 51452563430257], 10) then
begin
Writeln('Found the tropical tree, clicking...');
case random(2) of
0: begin
Mouse(x, y, 1, 1, true);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('limb');
end;
end
Writeln('Couldn''nt find Trop Tree, using failsafe.');
end
else
begin
Writeln('Couldn''t find the tree,,, logging out/terminating script.');
LogOut;
TerminateScript;
end;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| WalkBackToRock: Walks back to rock using agility ||
|| the agility symbol/ RunTo('w') ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure WalkBackToRock; // sorry kinda sloppy standards,,, I think?
var
counter: Integer;
x, y: Integer;
begin
if (not (LoggedIn)) then TerminateScript;
MakeCompass('N');
if FindSymbol(x, y, 'agility') then
begin
Writeln('Finding the agility symbol...');
Writeln('Using agility symbol to restart loop');
Mouse(x, y, 1, 1, true);
if (not (FlagPresent)) then
Writeln('Flag gone... repeating agility loop.');
exit;
if FlagPresent then
repeat
Wait(500);
counter := counter + 1;
if FlagPresent then break;
until (FlagPresent = false) or (counter = 50);
end
else
if RadialWalk(FindWaterColor, 264, 251, 66, 2, 2)then
begin
Writeln('Walking back to stepping rock using RadialWalk');
end
else
if RadialWalk(FindWaterColor , 270, 244, 68, 2, 2)then
begin
Writeln('Used failsafe to walk to stepping rock using RadialWalk');
if FindSymbol(x, y, 'Agility') then
Mouse(x, y, 1, 1, true);
end else
end;


(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| ProgressReport: Prints off time running... ||
|| laps done, and experience gained. Please post them! ||
|| By: teh_lulz ||
\\_________________________________________________________________*)


procedure ProgressReport;
begin;
Writeln('Teh_Lulz Ape Atoll Agility script');
Writeln('');
Writeln('Script has been working for'+ TimeRunning);
Writeln('');
Writeln('Script has done'+ IntToStr(LapCount)+'laps');
Writeln('');
LapCount:= LapCount*85;
Writeln('Exprience Gained:'+ IntToStr(LapCount));
Writeln('');
Writeln('Antibans performed:'+ IntToStr(AntiBansPerformed));
end;


(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| DoLaps: This is the loop for doing laps. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure DoLaps;
var
RockTime, TreeTime, MonkeyTime, SkullTime, WalkRopeTime, RopeTime, TropTime, WalkTime: Integer;
Counter, LapCount: Integer;
begin
MakeCompass('S');
SteppingRock;
begin
MarkTime(RockTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(RockTime) > 3500 + Random(1000) then break;
until(counter = 5);
end;
FindTreeOne;
begin
MarkTime(TreeTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(TreeTime) > 3000 + Random(1000) then break;
until(counter = 5);
end;
FindMonkeyBars;
begin
MarkTime(MonkeyTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(MonkeyTime) > 5000 + Random(1000) then break;
until(counter = 5);
end;
MakeCompass('W');
ClimbTheRocks;
begin
MarkTime(SkullTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(SkullTime) > 5000 + Random(1000) then break;
until(counter = 5);
end;
WalkToTheRope;
begin
MarkTime(WalkRopeTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(WalkRopeTime) > 6000 + Random(1000) then break;
until(counter = 5);
end;
TheRope;
begin
MarkTime(RopeTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(RopeTime) > 3000 + Random(1000) then break;
until(counter = 5);
end;
TropicalTree;
begin
MarkTime(TropTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(TropTime) > 8000 + Random(1000) then break;
until(counter = 5);
end;
SetRun(True);
WalkBackToRock;
begin
MarkTime(WalkTime);
repeat
AntiBan;
Counter:= Counter + 1
if TimeFromMark(WalkTime) > 8000 + Random(1000) then break;
until(counter = 5);
end;
Inc(LapCount);
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| LogAndSleep: Checks time running, used in main loop. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)


function LogAndSleep: Boolean;
begin
if TimeFromMark(TotalTime) > 3600000 + Random(1200000)then
Result:= True;
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| LogOutWaitLogIn: Logs out, waits, logs in! ||
|| this is apart of the 'sleeping' procedure. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

procedure LogOutWaitLogIn;
begin
LogOut;
Wait(300000 + Random(600000));
LogInPlayer;
TotalTime:= 0;
MarkTime(TotalTime);
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| SetUpScript: Sets up the script, activates SMART and the form. ||
|| By: teh_lulz ||
\\_________________________________________________________________*)


procedure SetUpScript;
begin
ClearDebug;
SafeInitForm;
SafeShowFormModal;
ActivateClient;
SetUpSrl;
WorldNumber:= StrToInt(Edit5.text);
MouseSpeed := 13;
DeclarePlayers;
Wait(3000 + random(400));
end;

(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| The Main Loop: Pretty self explanatory ;o ||
|| By: teh_lulz ||
\\_________________________________________________________________*)

begin
SetUpScript;
LoginPlayer;
LoadGreeGreeDTM;
if (CheckGreeGree(GreeGreeDTM) = True) then
begin
Writeln('You didn''t have a gree gree wielded! Unable to perform agility course.');
LogOut;
TerminateScript;
end
else
begin
LogOut;
TerminateScript;
end;
FreeDTM(GreeGreeDTM);
Wait(2000 + random(250));
MarkTime(TotalTime);
HowManyLaps := StrToInt(Edit4.Text);
repeat
DoLaps;
if (LogAndSleep= true)then
LogOutWaitLogIn;
until (HowManyLaps = LapCount)
ProgressReport;
end.

NCDS

2009-06-14 04:39:47

I always find Form's to be a nice touch to a members app.

FindObjCustom is really not recommended to use when applying for srl membership. You should really try and make your own custom object finding otherwise alot of people here will automatically vote no.

Use else/end else…
This:

procedure SteppingRock;
var
x, y: Integer;
begin
if (not (LoggedIn)) then
begin //unnecessary begin..end;
TerminateScript;
end;
if FindObjCustom(x, y, ['eppi', 'ping'], [9140846, 2051414, 2249822, 1720648, 1058861], 8) then
begin
Writeln('Found the stepping rock, clicking...');
case random(2) of
0: begin
Mouse(x, y, 1, 1, true);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('eppi');
end;
end;
Writeln('Clicked stepping rock...');
end;
if (not (FindObjCustom(x, y, ['eppi', 'ping'], [9140846, 2051414, 2249822, 1720648, 1058861], 8))) then
MouseBox(297, 182, 307, 189, 2);
end;
Could just be:

procedure SteppingRock;
var
x, y: Integer;
begin
if (not (LoggedIn)) then TerminateScript;
if FindObjCustom(x, y, ['eppi', 'ping'], [9140846, 2051414, 2249822, 1720648, 1058861], 8) then
begin
Writeln('Found the stepping rock, clicking...')
case random(2) of
0: begin
Mouse(x, y, 1, 1, true)
end
1: begin
Mouse(x, y, 1, 1, false)
ChooseOption('eppi')
end
end
Writeln('Clicked stepping rock...')
end
else
MouseBox(297, 182, 307, 189, 2);
end;

You should also learn the difference between functions and procedures.


procedure WalkToTheRope;
var
MyTime: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
MarkTime(MyTime);
MakeCompass('N');
RadialWalk(FindWaterColor, 125, 140, 75, 1, 1);
Writeln('Walked to rope using watercolor');
if TimeFromMark(MyTime) > 9000 then exit;
end;
Could be easily more broken down to:

procedure WalkToTheRope;
var
MyTime: Integer;
begin
if (not (LoggedIn)) then TerminateScript;
MakeCompass('N');
if RadialWalk(FindWaterColor, 125, 140, 75, 1, 1) then
begin
Writeln('Walked to rope using watercolor')
Flag // Dont forget when your walking!!
end
else
Exit;
end;

be sure not to forget 'Flag' or 'FFlag()'


procedure WalkBackToRock;
var
counter: Integer;
x, y: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
Writeln('Finding the agility symbol...');
if FindSymbol(x, y, 'agility') then
begin
Writeln('Using agility symbol to restart loop');
Mouse(x, y, 1, 1, true);
if (not (FlagPresent)) then
Writeln('Flag gone... repeating agility loop.');
exit;
if FlagPresent then
repeat
Wait(500);
counter := counter + 1;
until (FlagPresent = false) or (counter = 50);
exit;
end;
if (not (FindSymbol(x, y, 'agility'))) then
begin
repeat
RunTo('W', false);
Writeln('Running west, using failsafe.');
counter := counter + 1;
until (FindSymbol(x, y, 'agility')) or (counter = 5);
Mouse(x, y, 1, 1, true);
end;
end;
Symbol walking is normally not very reliable on it's own and you failed to include a failsafe for it here. Also, if it return's counter = 5 and does the blind click(which is also extremely unreliable) you should add a check of some sort to make sure you made it to the correct place.

The script itself look's pretty repetitive as you used the same method for finding everything.

You don't use DTM's or DDTM's which I don't mind but you should atleast make clear you know how to use them so just try and throw atleast 1 in there even if it doesn't really serve a point. It will make alot of people consider voting 'yes' more.

I've talked to you on IRC a few time's and I like you. You have a good attitude.
Unfortunately I don't think you are ready for membership yet.

Fix the thing's I have pointed out along with anything other people point out and it shouldn't be too hard for you to get in.

I'm holding my vote for now.

p.s. don't be afraid to edit the script in the main post as this poll goes on ;)

Good Luck!

NiCbaZ

2009-06-14 05:02:57

From: NCDS
I always find Form's to be a nice touch to a members app.

FindObjCustom is really not recommended to use when applying for srl membership. You should really try and make your own custom object finding otherwise alot of people here will automatically vote no.

Use else/end else…
This:

procedure SteppingRock;
var
x, y: Integer;
begin
if (not (LoggedIn)) then
begin //unnecessary begin..end;
TerminateScript;
end;
if FindObjCustom(x, y, ['eppi', 'ping'], [9140846, 2051414, 2249822, 1720648, 1058861], 8) then
begin
Writeln('Found the stepping rock, clicking...');
case random(2) of
0: begin
Mouse(x, y, 1, 1, true);
end;
1: begin
Mouse(x, y, 1, 1, false);
ChooseOption('eppi');
end;
end;
Writeln('Clicked stepping rock...');
end;
if (not (FindObjCustom(x, y, ['eppi', 'ping'], [9140846, 2051414, 2249822, 1720648, 1058861], 8))) then
MouseBox(297, 182, 307, 189, 2);
end;
Could just be:

procedure SteppingRock;
var
x, y: Integer;
begin
if (not (LoggedIn)) then TerminateScript;
if FindObjCustom(x, y, ['eppi', 'ping'], [9140846, 2051414, 2249822, 1720648, 1058861], 8) then
begin
Writeln('Found the stepping rock, clicking...')
case random(2) of
0: begin
Mouse(x, y, 1, 1, true)
end
1: begin
Mouse(x, y, 1, 1, false)
ChooseOption('eppi')
end
end
Writeln('Clicked stepping rock...')
end
else
MouseBox(297, 182, 307, 189, 2);
end;

You should also learn the difference between functions and procedures.


procedure WalkToTheRope;
var
MyTime: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
MarkTime(MyTime);
MakeCompass('N');
RadialWalk(FindWaterColor, 125, 140, 75, 1, 1);
Writeln('Walked to rope using watercolor');
if TimeFromMark(MyTime) > 9000 then exit;
end;
Could be easily more broken down to:

procedure WalkToTheRope;
var
MyTime: Integer;
begin
if (not (LoggedIn)) then TerminateScript;
MakeCompass('N');
if RadialWalk(FindWaterColor, 125, 140, 75, 1, 1) then
begin
Writeln('Walked to rope using watercolor')
Flag // Dont forget when your walking!!
end
else
Exit;
end;

be sure not to forget 'Flag' or 'FFlag()'


procedure WalkBackToRock;
var
counter: Integer;
x, y: Integer;
begin
if (not (LoggedIn)) then
begin
TerminateScript;
end;
Writeln('Finding the agility symbol...');
if FindSymbol(x, y, 'agility') then
begin
Writeln('Using agility symbol to restart loop');
Mouse(x, y, 1, 1, true);
if (not (FlagPresent)) then
Writeln('Flag gone... repeating agility loop.');
exit;
if FlagPresent then
repeat
Wait(500);
counter := counter + 1;
until (FlagPresent = false) or (counter = 50);
exit;
end;
if (not (FindSymbol(x, y, 'agility'))) then
begin
repeat
RunTo('W', false);
Writeln('Running west, using failsafe.');
counter := counter + 1;
until (FindSymbol(x, y, 'agility')) or (counter = 5);
Mouse(x, y, 1, 1, true);
end;
end;
Symbol walking is normally not very reliable on it's own and you failed to include a failsafe for it here. Also, if it return's counter = 5 and does the blind click(which is also extremely unreliable) you should add a check of some sort to make sure you made it to the correct place.

The script itself look's pretty repetitive as you used the same method for finding everything.

You don't use DTM's or DDTM's which I don't mind but you should atleast make clear you know how to use them so just try and throw atleast 1 in there even if it doesn't really serve a point. It will make alot of people consider voting 'yes' more.

I've talked to you on IRC a few time's and I like you. You have a good attitude.
Unfortunately I don't think you are ready for membership yet.

Fix the thing's I have pointed out along with anything other people point out and it shouldn't be too hard for you to get in.

I'm holding my vote for now.

p.s. don't be afraid to edit the script in the main post as this poll goes on ;)

Good Luck!




Err. Whats wrong with findobjectcustom. All it is good use of the SRL Include and better than most homemade TPA's.

Yes. I like your style and form.

Cazax

2009-06-14 05:05:08

- I like the form, however you could've shortened its variables using arrays:

frmDesign : TForm;
Label1 : TLabel;
Label2 : TLabel;
Label3 : TLabel;
Label4 : TLabel;
Label5 : TLabel;
Label6 : TLabel;
Label7 : TLabel;
Edit1 : TEdit;
Edit2 : TEdit;
Edit3 : TEdit;
Edit4 : TEdit;
Finish : TButton;
Edit5 : TEdit;
to:

frmDesign : TForm;
Labels : Array[1..7] Of TLabel;
Edits : Array[1..5] Of TEdit;
Finish : TButton;
I know you may have used the form parser, but shortening also makes it neater to read. Same goes for LapCount, TotalTime, HowManyLaps and WorldNumber(declaring them in 1 line). With arrays you can use For to do loops to shorten InitForm.

- RadialRoadWalk or any radial walk function should never be used without failsafes. If it fails your script will continue and it'll get lost.
Use and end else or else and use a counter, change the radials or the radius, use it with tolerance, etc.

- Use Players[CurrentPlayer] properties instead of more variables, like HowManyLaps and LapCount. Therefore you would count it per player and not a total value, so the user knows what every account did. I know that this is mainly for 1 account, but it's a good habit to do it. Just a suggestion.

- The rest was explained by NCDS(I agree with him).

I'm holding my vote, but it leans towards a no. Good luck and fix those error to change my vote :)

NCDS

2009-06-14 06:11:26

From: NiCbaZ
Err. Whats wrong with findobjectcustom. All it is good use of the SRL Include and better than most homemade TPA's.

Yes. I like your style and form.


I don't mind it. I just really wouldn't advise using it for a member's app because people assume you don't know how to make your own if you use a pre-made SRL one.

@ teh lulz, Cases with only 1 line of code don't need begin..end;

7: begin
MMouse(random(250), random(250), 10, 10);
end;

^^ your antiban proc ^^

Daniel

2009-06-14 08:23:04

Yes. Positive attitude and takes in tips given by other members and learns from his mistakes actively ;)

marpis

2009-06-14 13:25:32

Sorry dude, it's a No from me.
Just because this script is basically plain object clicking.
I'm not saying that this isn't a good script, i believe it is, but it doesn't show any skill.
You should write a more complex script next time, like a rimmington miner+banker or something like that.

To do list:
- TPA
- DTM/DDTM (optional but it shows skillz)
- Mapwalking is always a nice add

jakeyboy29

2009-06-14 13:28:21

01111001 01100101 01101000 00101100 00100000 01101001 00100000 01101100 01101001 01101011 01100101 00100000 01111001 01101111 01110101 01110010 00100000 01100001 01110100 01110100 01101001 01110100 01110101 01100100 01100101 00101110

http://snarkles.net/scripts/binary/binary.php

Naike

2009-06-14 13:30:50

Yes.

Quick notice: Flag is already in Radialwalk, no need to repeat it.

Home

2009-06-14 14:03:24

Yes from me :) You show some old school talent wich i prefer :)


~Home

Phran6

2009-06-14 22:42:20

well, first time ill vote on an apliance, there we go .

i spoke with you on irc and your a nice guy, you want learn:)
but your script is a litle too simple for me, lot of FindObjCustom with can be changed with your own tpa function, an apliance is for show your skill. i didnt look at form because i dont know how they work :P

btw im happy you took my idea of doing right click and left click :)

its a no from me

ZephyrsFury

2009-06-15 05:39:31

Changed Cazax's vote from No to Yes as requested.

Griff

2009-06-15 05:49:45

You don't see too many forms, and they can be annoying and tricky to make. Good work there. A few suggestions would be to include multiplayer for the application anyways, even though you're right, most people don't have more than one 75+ agility characters. Also, you don't have walking or DTMs in the script, so try to get those in. It was said above that most of the script is simply object finding, which is a little bit true.

Your code could be shortened in many places using arrays, so you could try learning those, and then make it cleaner, easier to red, and less lag.

Finally, you need to work on failsafes. Can we do the next step in the script if the last part failed?

For those reasons, I'm going to vote no for now, but you are almost there for me, and if you fix a few things that I've said, I'll get Zephyrs(even though he'll be angry:)) to change my vote to yes like Cazax.

I'll have you know it was a tough decision, because I know you're active on IRC, and are willing to learn.

If you don't get in this time, you've got a yes from me in a month when you re-apply.
But it seems you will most likely get it anyways, so good work :D

teh_lulz

2009-06-15 06:30:06

Griff did you base your reply off of the first script I posted or the second? The second one I put a DTM in there to show I know how to use them, I added/edited my failsafes. Also I do use walking (RadialWalk though, mostly. Also through symbols)

NCDS

2009-06-15 07:17:32

Nice work :)

You now have my vote!

Although, I would advise you read http://www.villavu.com/forum/showthread.php?t=42428 <– that perfect tut on TPA's by Cazax :)

It really is great.

I just was looking at my member's app and saw this quote that Pyro said and figured I would post here.
(referring to using FindObjCustom as opposed to a custom TPA)
From: Pyro

" Its not how you do it. Its if you do it. Thats pretty much how ill sum it up. Doesnt matter how you find that rock, aslong as it finds that rock :) "

Claymore

2009-06-16 00:47:05

I got to learn how to use forms. Very nice original script. Standards are just amazing.

But there are problems with the script. First of all, you need to use function. This script can turn into a massive disaster in a second. Because, with no fail safes to detect if your character is lost, the bot could end up messing up your character and there goes ban hammer.


//how function is useful

function climbTree: Boolean;
var
x, y: integer;
begin
if(findObject(['tree'], x, y, [0011011])) then
begin
result := true //this responds to the Boolean above
exit;
end;
writeLn('QQ no tree');
result := false;
logOut;
terminateScript;
end;

procedure doLaps;
begin
if(climbTree)then
writeLn('Wow that was easy, see look how much space i saved!');
else
writeLn('Roflcopter, this msg shudnt appear because script terminates anyways....')
end;

Hope you understood how function worked. Function can also be an integer (like autocolors e.g FindRoadColor) String and the rest.

Da 0wner

2009-06-16 01:20:35

function climbTree: Boolean;
var
x, y: integer;
begin
result := findObject(['tree'], x, y, [0011011]);
if result then //this responds to the Boolean above
exit;
writeLn('QQ no tree');
logOut;
terminateScript;
end;

procedure doLaps;
begin
if(climbTree)then
writeLn('Wow that was easy, see look how much space i saved!');
else
writeLn('Roflcopter, this msg shudnt appear because script terminates anyways....')
end;

Daniel

2009-06-16 10:16:35

From: Da 0wner
function climbTree: Boolean;
var
x, y: integer;
begin
result := findObject(['tree'], x, y, [0011011]);
if result then result := true //this responds to the Boolean above
exit;
writeLn('QQ no tree');
logOut;
terminateScript;
end;

procedure doLaps;
begin
if(climbTree)then
writeLn('Wow that was easy, see look how much space i saved!');
else
writeLn('Roflcopter, this msg shudnt appear because script terminates anyways....')
end;

Wut?

if result then result := true //this responds to the Boolean above
exit;

If you don't see anything wrong with that then you fail..

ian.

2009-06-16 10:29:58

[QUOTE=Dan's The Man;586444]Wut?
[scar]
if result then result := true //this responds to the Boolean above
exit;
[/scar]

If you don't see anything wrong with that then you fail..

+1… Sorry Da 0wner =X

Da 0wner

2009-06-16 11:53:16

Lmao, I copied his procedure and edited a few things. Look at it. I code like
if not LoggedIn then
exit;
With two lines and not one. So I must have missed that :p.

Daniel

2009-06-16 12:18:57

From: Da 0wner
Lmao, I copied his procedure and edited a few things. Look at it. I code like
if not LoggedIn then
exit;
With two lines and not one. So I must have missed that :p.


But he does if (not (LoggedIn) ) then..

And he didn't do that procedure..

Da 0wner

2009-06-16 12:21:17

I was doing that as an example. Doesn't matter anyways. Simple mistake :p.

Nava2

2009-06-16 16:52:56

Yes, I like you attitude.

Check out some efficiency stuff, look at the tut in my sig, it might be able to help you shorten that massive function..

Rubix

2009-06-17 23:38:03

Yes, for undisclosed reasons… *zips ups pants*

Claymore

2009-06-17 23:57:52

Wow guys just leave my comment alone ^^

@Rubix uhhhhhhhh….

WT-Fakawi

2009-06-18 00:26:14

In!