SRL Archive - Archive

mat_de_b - SRL Member Application Form


mat_de_b

2007-09-11 14:34:29

<!– BEGIN TEMPLATE: formanswers –>
mat_de_b - SRL Member Application Form
mat_de_b

What is the meaning to life?


Where you Referred to SRL? If yes, by whom?
no


Programming Knowledge
Enough Java to script Aryan, and im going to learn C then C# then C++ this year

Other Communitys
Used to be part of kaitnieks, then briefly impsoft and sythe till i left the RS cheating scene

How Long have You Played Runescape
Not entirely sure, started scripting with Osi and Boxbreaker2 and was playing runescape for maybe a year before that

Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.

Ive been here a bit and as you can see ive got a nice and high activity, and have been posting and helping out frequently, i've already written 3 scripts and a tutorial and am currently writing an Air Crafter.

I'm a sensible and helpful person and am always looking to learn and help….

——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted

My Tutorial Runner
{.Script Info:
# ScriptName = Mat's Tutorial Runner
# Author = mat_de_b
# Description = Runs Tutorial Island
# Version = v0.2
# Date = 27.08.07 02:29 GMT
# Comments = Added Progress Report,Fast mode and Fast Speaking
/Script Info}
program TutorialIsland;
{.include srl/srl.scar}
{.include SRL/SRL/Core/DoorProfiles.scar}
{.include srl/srl/skill/Firemaking.scar}


var
Logins, StepsD, CompletedT, Bow,
Arrow, Gate, GateC, Shield,
Sword, Dagger, Hammer, BronzeB,
PAxe, Tin, Copper, RedMMArrow,
Dough, Pot, Bucket, Logs, Net,
TinderboxDTM, Axe, Shrimp, x, y,
Step, Accept, MSArrow, MMArrow: integer;
Mode, Completed: boolean;


{*******************************************************************************
function ArrowAmount: Integer;
By: masquerader fixed by mat_de_b
Description: Returns the number of equiped arrows.
*******************************************************************************}

procedure ProgressReport;
begin
Writeln('-------- Mats Tutorial Island Runner -------');
Writeln('Currentln logged in ' + inttostr(Logins) + ' Times');
Writeln('Currently done ' + inttostr(StepsD) + ' Steps');
Writeln('Currentln completed ' + inttostr(CompletedT) + ' Times');
Writeln('Script has run for ' + TimeRunning);
Writeln('Currently Doing Step or Just Did ' + inttostr(Step));
Writeln('--------------------------------------------');
end;

function ArrowAmount2: Integer;
begin
GameTab(5);
Result := GetAmount(668, 249);
end;

procedure RWait(time, rand: integer);
var
real: integer;
begin
if not (LoggedIn) then exit;
real := time + random(rand);
wait(real / 2);
if (real >= 1000) then
begin
case random(9) of
1: MouseBox(MSX1, MSY1, MSX2, MSY2, False);
2: MouseBox(MIX1, MIY1, MIX2, MIY2, False);
3: IdleTime(1000, 500, 1);
end;
end;
wait(real / 2);
end;


////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////
////////PLAYER ARRAY ADD PLAYERS HERE///////////
////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////

procedure Load;
begin
////////////////////////////////////////////////////
//////////////// REMEMBER TO SET THE MODE! /////////
Mode := False; // True = Determine each Step, False = Determine first step
HowManyPlayers := 2;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name := 't3hownzor';
Players[0].Pass := 'skater';
Players[0].Nick := 'wnz'; //3 - 4 letters of YOUR username, example: sern
Players[0].Active := True;

Players[1].Name := 'HolyPwns';
Players[1].Pass := 'skater';
Players[1].Nick := 'wns'; //3 - 4 letters of YOUR username, example: sern
Players[1].Active := True;

NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);

Arrow := DTMFromString('78DA63DCC7C4C0A0C5C8800CC24C3819FE036' +
'990E87F206004A95140550391859140FA2C116A8E00D5981350B3' +
'19A8C698809A8344D8B583B05D006F8E0C1C');

Bow := DTMFromString('78DA63746162600862644006B99EBC0CFF813' +
'448F43F10303A00D5F8A2AA81C8C248206D0254134E408D1F508D' +
'0B0135DE40357E04D4D803D584E1570300DE920950');

Gate := BitmapFromString2(False, 'a20EC078DA333080015367206' +
'1E2640E24CDCC0D81A4B9930988ED640A923506936E16AE4E201A' +
'930400122');


Shield := DTMFromString('78DA633CC8C4C0A0C3C8800C826D6519FE036' +
'990E87F2060DC0E54A386AA06220B2381F461A01A79026AB602D5' +
'181350730AA8C688809A9D4035A6F8D50000CE2D0B4A');

Sword := DTMFromString('78DA6374616260D06064400676FAB20CFF813' +
'448F43F10305A03D558A3AA81C8C24820ED0D54234B408D3B508D' +
'1A01350E40353A04D480DC6344408D13508D197E3500863D08B7');

Dagger := DTMFromString('78DA639CC5C4C0A0C6C8800CBCAD1419FE036' +
'990E87F20609C0B542387AA06220B2381F424A01A53026A7A816A' +
'2C08A8590054A34040CD44A01A6D026A40FE32C0AF0600E3F00B1' +
'8');

Hammer := DTMFromString('78DA63DCCFC4C0A0CBC8800C02CC3818FE036' +
'990E87F2060DC0B54A389AA06220B2381F431A01A75026A0E02D5' +
'C81150B30DA8C682809A9D40355604D480FC65885F0D006E330C2' +
'2');

BronzeB := DTMFromString('78DA639CCEC4C0A0C9C8800C7CAC9418FE036' +
'990E87F2060EC04AA31465503918591407A2A508D3201358B806A' +
'D409A8990554634640CD44C2E6000055930A4C');

PAxe := DTMFromString('78DA633CC0C4C0F09F0105C0B88C203610306' +
'E03AA11604455C4C0884402E9834035BF18F0AB390554C348C09C' +
'DD40357C04D46C06AAF987DF2E005E7A0CA1');

Tin := DTMFromString('78DA63CC636260D065644006DD4D8D0C46401' +
'A24FA1F081863816A0C50D540646124904E07AAB122A0A60AA846' +
'85809A0CA01A05026ACA806A4CF0AB0100F6020979');

Copper := DTMFromString('78DA6374616260D067644006D7AB4D198C803' +
'448F43F10301A03D5E8A0AA81C8C24820ED0954A340408D03508D' +
'150135B640358A04D40402D5A8E25703006EBD0862');


RedMMArrow := DTMFromString('78DA639CC5C4C020CE8002FE433123880602C' +
'6294035B20C6880118904D273806A0409A8990F54234140CD74A0' +
'1A7922EC9226A0662A613500F8FC0B00')

Dough := DTMFromString('78DA639CC6C4C0C0C5C8800CD6ADEB62F80FA' +
'441A2FF8180B117A8E63F031A60442281F464A09ABF04D44C00AA' +
'1162C4AFA613A88693809AF94C483C1C6A1611B60B00EA0A0D4C');

Logs := DTMFromString('78DA6374656260E0656440062D69760CFF813' +
'448F43F10307A03D5FC6540038C482490B66442E2E15063025423' +
'40408D17508D200135814035DC04D43811760F006029095C');

Shrimp := DTMFromString('78DA63DCCEC4C0F09401054C6D2C63F80FA41' +
'981F83F103082D4DC6540038C4824903E0254F381809A1340350F' +
'09A8390654739B809A6D40356FF1AB010083791076');

Axe := DTMFromString('78DA63F4606260B8CD8002FC6C9419FE03694' +
'620FE0F048C9640351F19D000231209A4ED806AEE1050E30A5473' +
'97801A07A09AEB04D4F81061973550CD13FC6A004D100DB2');

TinderboxDTM := DTMFromString('78DA63CC67626078CA8002929C3819FE03694' +
'620FE0F048C4540353718D000231209A413806ADE12505342849A' +
'6AA09A2744D8F598809A0CA09ADBF8D50000091F0EFC');

Net := DTMFromString('78DA639CC3C4C0F0840105E86B2A33FC07D28' +
'C40FC1F08183B806A9E31A00146241248CF06AA794B40CD22A09A' +
'1704D44C07AAB94540CD04A09ABB04D4F403D5BCC2AF06007FAE0' +
'FF0');


Accept := BitmapFromString2(False, 'a1D14878DA333080010B472' +
'061626A0824CD2C8D11A4932990343707293177320129740573DC' +
'2C0C70026722486274D14E0D2D4CC3D445BCAC33C5661A10E10BE' +
'AAA1C0D81C11C02C4A76D4ADD0600230');

MSArrow := BitmapFromString2(False, 'a64B1378DA333080014743' +
'20616AE802222D8C81A4892948C4DCD208419ABA81485773907A1' +
'713206164E6ECE6EAE6E2644C43D2C5CDD9D289A6A4A339092400' +
'3F5');
MMArrow := DTMFromString('78DA63AC646260286140017F7EF933FC07D28' +
'C40FC1F0818CB806A7218D000231209A48B31CDC150530E545341' +
'404D3D504D3101353584DD030001D90CDD');

Pot := DTMFromString('78DA639CCCC4C020CAC8800C66A49B33FC07D' +
'220D1FF40C0D8C304E52103462412487701D50811503317D32E0C' +
'350B806A5809A8990154F39701BF1A90BFC4F19B03002A170BC0');

Bucket := DTMFromString('78DA633CC0C4C020C0C8800CE6367A32FC07D' +
'220D1FF40C0B80BA8E61F031A60442281F461A01A3146FC6A4E02' +
'D5701350B303A88697809A9D40352204D46C07AA6126A0E614500' +
'D137E350080F70DDE');
end;

procedure SmartzCharacter; //SmartzKid
//Version 3.5.FREE\\
var
b, i, x, y, n, k, t: integer;
arrow: TPointArray;
HitAccept, DebugMode, flp: boolean;
begin
HitAccept := True; //Do you want to hit accept after the person's designed?
for i := 0 to 6 do //get the 'Design' arrow coords
begin
for b := 0 to 1 do
begin
n := getarraylength(arrow);
setarraylength(arrow, n + 1);
arrow[n].y := 85 + (i * 35);
arrow[n].x := 45 + (b * 115);
end;
end;

for i := 0 to 4 do //get the 'Colour' arrow coords
begin
for b := 0 to 1 do
begin
n := getarraylength(arrow);
setarraylength(arrow, n + 1);
arrow[n].y := 97 + (i * 35);
arrow[n].x := 353 + (b * 115);
end;
end;

repeat

n := random(24);

try
x := arrow[n].x; //~Assign our x and y variables, just to shorten things below
y := arrow[n].y; //~
except
writeln('Array n out of range.');
finally
if (DebugMode) then
writeln(inttostr(n));
end;

MMouse(x, y, 8, 8);

if (IsUpTextMulti('nge', 'reco', 'lour')) then
begin
GetMousePos(b, y);
HoldMouse(b, y, true); //~
wait(15 + random(50)); //~ Realistic click
ReleaseMouse(b, y, true); //~
i := i + 1 + random(3);
t := t + 1;
k := k + n;
end;

wait(250 + random(500)); //a little time for our 'person' to 'decide' on their next move

if (i > 90) or (k > 550) or (t > 40) then //quit after ~40 changes, the k>550 is to help gurantee recoloration of the person
if (k > 450) and (t > 35) then
flp := true;

//if(not(finished)) then Exit;
until (flp)

if (DebugMode) then
begin
writeln(inttostr(i));
writeln(inttostr(k));
writeln(inttostr(t));
end;

wait(1000);

if (HitAccept) then
begin
MouseBox(228, 270, 291, 298, True);
wait(3000);
end;
end;




// Edited by Me for use with new players
{*******************************************************************************
procedure LoginPlayer;
By: WT-Fakawi and modified by Ron
Description: Logs Player[CurrentPlayer] in. Is usually preceeded by NextPlayer.
*******************************************************************************}
// * Still to implement, but have never encountered any of these:

// * Login limit exceeded.
// * Too many connections from your address."
// * Bad session id.
// * Could not complete login.
// * Please try using a different world.
// * Invalid login server requested
// * Malformed login packet.
// * Unexpected server response

procedure LoginNewPlayer;
var
ClickHereToPlay, x, y, tx, ty,
CHx, CHy, c, tmpMask, LastPlayer, Mark: Integer;
begin

ClickHereToPlay := BitmapFromString(33, 1, 'z78DA758E510E80300843' +
'AF54C0E2F6E94CB8FF9134123392693FFA41FA4A23A6F0888443D' +
'26DC000A7DCE7F458F23EE444E721444B6A0F53D58FE44F4365B7' +
'067D37AC3D95AADF2F50962C79');
if (not (LoggedIn)) then
begin
// Beginning player not active...
if (not (Players[CurrentPlayer].Active)) then
begin
WriteLn('Current player is not Active...');
LastPlayer := CurrentPlayer;
repeat
CurrentPlayer := Random(HowManyPlayers);
Wait(100);
until (Players[CurrentPlayer].Active);
end;
x := 150;
y := 173;
ActivateClient;
Wait(1000);
ClickOption('Cancel', 1);
ClickOption('Exist', 1);
tmpMask := CreateBitmapMaskFromText('Username', upchars);
if (FindBitmapMaskTolerance(tmpMask, x, y, 0, 0, 520, 340, 10, 50)) then
begin
Wait(25 + Random(50));
Mouse(x + 24, y + 3, 3, 0, True);
Wait(25 + Random(50));
WriteLn(Players[CurrentPlayer].Name);
TypeSend(Players[CurrentPlayer].Name);
Wait(100 + Random(100));
Mouse(327, 272, 0, 0, True);
TypeSend(Players[CurrentPlayer].Pass);
Wait(100 + Random(100));
end;
ClickOption('Login', 1);
// Waiting for Connecting to Server...
MarkTime(Mark);
while FindText(tx, ty, '...', upchars, 240, 180, 530, 240) do
begin
Wait(100);
if TimeFromMark(Mark) > 20000 then Break;
end;
MarkTime(Mark);
repeat
Wait(1000);
// Enter your username and password. If all failed...
if FindText(tx, ty, 'nter you', upchars, 240, 180, 530, 240) then
begin
WriteLn('Enter your username and Password');
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end else
// Your account is already logged in.
if FindText(tx, ty, 'lready', upchars, 240, 180, 530, 240) then
begin
WriteLn('Your account is already logged in');
LastPlayer := CurrentPlayer;
repeat
CurrentPlayer := Random(HowManyPlayers);
Wait(100);
until (Players[CurrentPlayer].Active) and (CurrentPlayer <> LastPlayer);
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end else
// Invalid Username. 3 attempts. If fails, you haven't set your username/pass correct
if FindText(tx, ty, 'nvalid', upchars, 240, 180, 530, 240) then
begin
WriteLn('Invalid Username.');
SRL_Attempts := SRL_Attempts + 1;
if SRL_Attempts > 3 then
begin
Players[CurrentPlayer].loc := 'L/P ERROR';
NextPlayer(False);
end;
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end else
// Login attempts exceeded. Please wait 1 minute and try again.
if FindText(tx, ty, 'excee', upchars, 240, 180, 530, 240) then
begin
WriteLn('Login attempts exceeded. Please wait 1 minute and try again.');
Wait(60000);
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end else
// World is full.
if FindText(tx, ty, 'full', upchars, 240, 180, 530, 240) then
begin
WriteLn('World is full.');
Wait(3000);
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end else
// Unable to connect. Login Server offline.
if FindText(tx, ty, 'offl', upchars, 240, 180, 530, 240) then
begin
WriteLn('Unable to connect Login Server offline.');
Wait((6000) + Random(6000));
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end else
// Error Connecting.
if FindText(tx, ty, 'rror', upchars, 240, 180, 530, 240) then
begin
WriteLn('Error Connecting.');
Wait(10000);
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end else
// Error loading your profile. Will attempt to re-login 5 more times.)
if FindText(tx, ty, 'ontact', upchars, 240, 180, 530, 240) then
begin
WriteLn('Error loading your profile.');
Wait(2000);
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end else
// Login server rejected session.
if FindText(tx, ty, 'reject', upchars, 240, 180, 530, 240) then
begin
WriteLn('Login server rejected session.');
Wait(1000);
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end else
// Runescape has been updated.
if FindText(tx, ty, 'reload', upchars, 240, 180, 530, 240) then
begin
WriteLn('ERROR. RuneScape has been updated. Script Terminated.');
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
TerminateScript;
end else
// The Server is being updated. Please wait 1 minute.
if FindText(tx, ty, 'updat', upchars, 240, 180, 530, 240) then
begin
WriteLn('The Server is being updated.');
Wait(60000);
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end else
// Your account has been disabled.
if FindText(tx, ty, 'disabled', upchars, 420, 180, 500, 220) then
begin
WriteLn('Your account has been disabled');
Players[CurrentPlayer].loc := 'DISABLED';
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
NextPlayer(False);
Exit;
end else
// Waiting for Profile to be Transferred
if FindText(tx, ty, 'trans', upchars, 240, 180, 530, 240) then
begin
WriteLn('Waiting for your Profile to be Transferred');
Wait(2500);
end else
// You need a Members account...
if FindText(tx, ty, 'member', upchars, 240, 180, 530, 240) then
begin
WriteLn('You need a Members account...');
Players[CurrentPlayer].loc := 'Non-Member';
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
NextPlayer(False);
end else
// Welcome to RuneScape. If all failed...
if FindText(tx, ty, 'elcom', upchars, 240, 180, 530, 240) then
begin
WriteLn('Welcome.');
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
LoginPlayer;
Exit;
end;

if TimeFromMark(Mark) > 180000 then
begin
WriteLn('three minutes have passed');
WriteFileString(TheFile, Chr(13) + 'THREE MINUTES HAVE PASSED!!!' +
Chr(13));
{ if (FindClient) then
FindWindowBySize(766, 504); }
ActivateClient;
ClickOption('Cancel', 1);
ClickOption('Exist', 1);
end;
until (FindBitmapToleranceIn(ClickHereToPlay, CHx, CHy, 250, 270, 530, 390,
5)) or FindColor(CHx, CHy, 723587, 555, 10, 575, 30);
Wait(1000 + Random(500));
if (FindBitmapToleranceIn(ClickHereToPlay, CHx, CHy, 250, 270, 530, 390, 5)) then
Mouse(CHx, CHy, 50, 20, True) else Writeln('Found Compass'); // Clicks randomly on the button
repeat
Wait(1000);
c := c + 1;
until (LoggedIn) or (c >= 600);
end;
FreeBitmap(tmpMask);
//FreeBitmap(ClickHereToPlay);
if LoggedIn then
begin
PlayerStartTime := (GetSystemTime div 1000); // PlayerStartTime
if NickNameBMP <> 0 then
FreeBitmap(NickNameBMP);
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick,
upchars); // Screenname

{ if(usenewrespond)then
AutoText[3].Trigger[0]:=Players[CurrentPlayer].Nick; }

WriteFileString(TheFile, Chr(13) + UpperCase(Players[CurrentPlayer].Name) +
Chr(13)); //* Save NAME to file
end;
end;

function FindArrow: boolean;
var
C: integer;
Found: boolean;
begin
C := 0
Found := False
repeat
if not (LoggedIn) then
exit;
if (FindBitmapSpiral(MSArrow, x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
if (not (LoggedIn)) then
exit;
Status('Arrow Found on Main Screen');
Found := True;
end;
C := C + 1
until ((C >= 10) or (Found = True));
if (Found = true) then
Result := True;
end;

function FindMMArrow: boolean;
var
C: integer;
Found: boolean;
begin
C := 0
Found := False
repeat
if not (LoggedIn) then
exit;
if (FindDTM(MMArrow, x, y, MMX1, MMY1, MMX2, MMY2)) then
begin
if (not (LoggedIn)) then
exit;
Status('Arrow Found on MM');
Found := True;
end;
C := C + 1
until ((C >= 10) or (Found = True));
if (Found = true) then
Result := True;
end;

function FindRedMMArrow: boolean;
var
C: integer;
angle: extended;
Found: boolean;
begin
C := 0
Found := False
repeat
if not (LoggedIn) then
exit;
if (FindDTMRotated(RedMMArrow, x, y, MMX1, MMY1, MMX2, MMY2, 0, 2 * pi, 0.01, angle)) then
begin
if (not (LoggedIn)) then
exit;
Status('Red Arrow Found on MM');
Found := True;
end;
C := C + 1
until ((C >= 10) or (Found = True));
if (Found = true) then
Result := True;
end;






procedure Click2Continue;
var BContinue, WContinue, BWait, WWait: integer;
begin

BContinue := DTMFromString('78DA6334636460380AC428E03F98848932F20' +
'1594708A8F9C940D89C0F40E21801353E40D621026A5208AB0100' +
'EF3E0D86');

WContinue := DTMFromString('78DA6334616460780AC448E0FFFFFF601A26C' +
'A180B643D22A0269B0873AC81ACE704D4281361972090F58C809A' +
'0F40E22E7E3500A1721D9A');
WWait := DTMFromString('78DA63BCC7C0C0709B910119FCFFFF1F4CC34' +
'4197700895B04D47C0212F709A8D948849A7740E2060135F781C4' +
'3D026ACE135603009C0320DD');
BWait := DTMFromString('78DA63B4626460B80BC428E03F988489324A0' +
'059B708A8F104B26E1350E30B64DD27A0468E08355C44D8E50364' +
'DDC1AF06006CFC0E79');
if ((FindDTM(BContinue, x, y, MCX1, MCY1, MCX2, MCY2)) or (FindDTM(WContinue, x, y, MCX1, MCY1, MCX2, MCY2))) then
begin
if (FindDTM(BContinue, x, y, MCX1, MCY1, MCX2, MCY2)) then
Mouse(x - 25, y, 50, 3, True);
if (FindDTM(WContinue, x, y, MCX1, MCY1, MCX2, MCY2)) then
Mouse(x - 25, y, 50, 3, True);
repeat
if not (LoggedIn) then
exit;
wait(100)
until not ((FindDTM(BWait, x, y, MCX1, MCY1, MCX2, MCY2)) or (FindDTM(WWait, x, y, MCX1, MCY1, MCX2, MCY2)));

end;
end;

function FindOption(Text, Option, Expect: string; Down, Across: integer): boolean;
begin
repeat
if not (LoggedIn) then
exit;
if (FindArrow) then
begin
MMouse(x + Across, y + Down, 3, 3);
rwait(100, 100);
if (isUpText(Text)) then
begin
getMousePos(x, y);
Mouse(x, y, 0, 0, False);
ChooseOption(Option);
Flag;
Result := True;
rwait(500, 500);
end
end else
begin
if (FindMMArrow) then
begin
Mouse(x, y, 5, 5, True);
Flag;
end else
begin
if (FindRedMMArrow) then
begin
Mouse(x, y, 5, 5, True);
Flag;
end;
end;
end;
until (FindNpcChatText(Expect));
end;

function FindOptionMulti(Text, Option, Expect, Expect2: string; Down, Across: integer): boolean;
begin
repeat
if not (LoggedIn) then
exit;
if (FindArrow) then
begin
MMouse(x + Across, y + Down, 3, 3);
rwait(100, 100);
if (isUpText(Text)) then
begin
getMousePos(x, y);
Mouse(x, y, 0, 0, False);
ChooseOption(Option);
Flag;
Result := True;
rwait(500, 500);
end
end else
begin
if (FindMMArrow) then
begin
Mouse(x, y, 5, 5, True);
Flag;
end;
end;
until (FindNpcChatText(Expect)) or (FindNpcChatText(Expect2));
end;


function Find(Text, Expect: string; Down, Across: integer): boolean;
begin
repeat
if not (LoggedIn) then
exit;
if (FindArrow) then
begin
MMouse(x + Across, y + Down, 3, 3);
rwait(100, 100);
if (isUpText(Text)) then
begin
getMousePos(x, y);
Mouse(x, y, 0, 0, True);
Flag;
Result := True;
rwait(500, 500);
end
end else
begin
if (FindMMArrow) then
begin
Mouse(x, y, 5, 5, True);
Flag;
end else
begin
if (FindRedMMArrow) then
begin
Mouse(x, y, 5, 5, True);
Flag;
end
end;
end;
until (FindNpcChatText(Expect));
end;

function FindMulti(Text, Expect, Expect2: string; Down, Across: integer): boolean;
begin
repeat
if not (LoggedIn) then
exit;
if (FindArrow) then
begin
MMouse(x + Across, y + Down, 3, 3);
rwait(100, 100);
if (isUpText(Text)) then
begin
getMousePos(x, y);
Mouse(x, y, 0, 0, True);
Flag;
Result := True;
rwait(500, 500);
end
end else
begin
if (FindMMArrow) then
begin
Mouse(x, y, 5, 5, True);
Flag;
end;
end;
until (FindNpcChatText(Expect)) or (FindNpcChatText(Expect2));
end;

function WalkTo(Text: string; down, across: integer): boolean;
begin
Result := False;
repeat
if not (LoggedIn) then
exit;
if (FindArrow) then
begin
MMouse(x + across, y + down, 3, 3);
rwait(100, 100);
if (isUpText(Text)) then
begin
getMousePos(x, y);
Mouse(x, y, 0, 0, False);
ChooseOption('Walk here');
Flag;
Result := True;
rwait(500, 500);
end
end else
begin
if (FindMMArrow) then
begin
Mouse(x, y, 5, 5, True);
Flag;
end;
end;
until (Result = True);
end;




////////////////////////////////////////////////////////
// ----------- STEPS START NOW! ----------------------//
////////////////////////////////////////////////////////

procedure Step1;
begin
Find('RuneScape Guide', 'RuneScape Guide', 40, 10);
if (FindNpcChatText('RuneScape Guide')) then
begin
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Please click'));
rwait(500, 300);
end;

end;

procedure Step2;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(665, 474, 10, 10, True);
Mouse(707, 229, 2, 2, True);
until (FindNpcChatText('On the side panel'));

end;

procedure Step3;
begin
Find('RuneScape Guide', 'RuneScape Guide', 40, 10);
if (FindNpcChatText('RuneScape Guide')) then
begin
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Interacting with scenery'));
rwait(500, 300);
end;
end;

procedure Step4;
begin
Find('Door', 'Moving around', 40, 5);
end;

procedure Step5;
begin
Status('Finding Survival Expert');
Find('Survival Expert', 'Survival Expert', 40, 0);
if (FindNpcChatText('Survival Expert')) then
begin
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Viewing'))
end;
end;

procedure Step6;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(633, 173, 10, 10, True);
rwait(500, 500);
until (FindNpcChatText('Cut down'))
end;

procedure Step7;
begin
if (WalkTo('Tree', 40, 10)) then FindMulti('Tree', 'Please wait', 'You get some logs', 40, 10);
repeat
if not (LoggedIn) then
exit;
wait(100);
until (FindNpcChatText('You get some logs'));
if (FindNpcChatText('You get some logs')) then
begin
repeat
if not (LoggedIn) then
exit;
if (isUpText('Tree')) then
begin
getMousePos(x, y);
Mouse(x, y, 3, 3, True);
Flag;
rwait(500, 500);
end;
until (FindNpcChatText('Please wait')) or (FindNpcChatText('You get some logs'));
repeat
if not (LoggedIn) then
exit;
wait(100);
until (FindNpcChatText('You get some logs'));
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Making a fire'));
end;
end;

procedure Step8;
begin
repeat
if not (LoggedIn) then
exit;
GameTab(4);
if (FindDTM(Logs, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
if (FindDTM(TinderboxDTM, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
end;
end;
until (FindNpcChatText('Please wait') or FindNpcChatText('You gained some experience'));
repeat
if not (LoggedIn) then
exit;
wait(100);
until (FindNpcChatText('You gained some experience'));
end;

procedure Step9;
begin
repeat
if not (LoggedIn) then
exit;
MouseBox(565, 175, 587, 196, True);
rwait(500, 500);
until (FindNpcChatText('Your skill stats'))
end;

procedure Step10;
begin
Status('Finding Survival Expert');
Find('Survival Expert', 'Survival Expert', 40, 0);
if (FindNpcChatText('Survival Expert')) then
begin
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Catch some Shrimp'))
end;
end;

procedure Step11;
begin
if (WalkTo('Fishing spot', 40, 10)) then FindMulti('Fishing spot', 'Please wait', 'Cooking your shrimp', 40, 0);
repeat
if not (LoggedIn) then
exit;
wait(100);
until (FindNpcChatText('Cooking your shrimp'));
if (FindNpcChatText('Cooking your shrimp')) then
begin
repeat
if not (LoggedIn) then
exit;
if (isUpText('Fishing spot')) then
begin
getMousePos(x, y);
Mouse(x, y, 3, 3, True);
Flag;
rwait(500, 500);
end;
until (FindNpcChatText('Please wait')) or (FindNpcChatText('Cooking your shrimp'));
repeat
if not (LoggedIn) then
exit;
wait(100);
until (FindNpcChatText('Cooking your shrimp'));
end;
end;

procedure Step12;
begin
repeat
if not (LoggedIn) then
exit;
GameTab(4);
if (FindDTM(Logs, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
if (FindDTM(TinderboxDTM, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
end;
end;
if (ThereIsFire(x, y)) then
begin
if (FindDTM(Shrimp, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
if (ThereIsFire(x, y)) then
begin
Mouse(x, y, 5, 5, True);
Flag;
wait(2000 + random(1000));
end;
end;
end;
until (FindNpcChatText('just cooked'));
end;

procedure Step13;
begin
Find('Gate', 'Follow the path', 40, 5);
end;

procedure Step14;
begin
Find('Door', 'Talk to the chef', 40, 5);
end;

procedure Step15;
begin
Find('Chef', 'Master', 40, 10);
if (FindNpcChatText('Master Chef')) then
begin
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Making dough'));
rwait(500, 300);
end;
end;

procedure Step16;
begin
repeat
if not (LoggedIn) then
exit;
if (FindDTM(Pot, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
if (FindDTM(Bucket, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
rwait(1000, 500);
end;
end;
until (FindNpcChatText('Now you have'));
end;

procedure Step17;
begin
WalkTo('Range', 40, 10);
if (FindDTM(Dough, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
Find('Range', 'our first loaf', 40, 10);
end;
end;

procedure Step18;
begin
repeat
if not (LoggedIn) then
exit;
MouseBox(730, 471, 750, 493, True);
rwait(500, 499);
until (FindNpcChatText('The music player'));
end;

procedure Step19;
begin
Find('Door', 'how about showing', 40, 5);
end;

procedure Step20;
begin
repeat
if not (LoggedIn) then
exit;
MouseBox(698, 472, 716, 494, True);
rwait(500, 499);
until (FindNpcChatText('For those'));
repeat
if not (LoggedIn) then
exit;
MouseBox(MIX1, MIY1, 715, 457, True);
rwait(1000, 1000);
until (FindNpcChatText('Running'));
end;

procedure Step21;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(665, 474, 10, 10, True);
until (FindNpcChatText('In this menu'));
repeat
if not (LoggedIn) then
exit;
SetRun(True);
until (FindNpcChatText('to the next guide'));
end;

procedure Step22;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(651, 31, 10, 10, True);
Flag;
until (FindMMArrow);
Find('Door', 'Talk with the Quest Guide', 40, 10);
end;

procedure Step23;
begin
Find('Quest Guide', 'Guide', 40, 5);
repeat
if not (LoggedIn) then
exit;
Click2continue;
until (FindNpcChatText('Open the Quest Journal'));
end;

procedure Step24;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(596, 171, 20, 20, True);
rwait(500, 500);
until (FindNpcChatText('Your Quest Journal'));
end;


procedure Step25;
begin
Find('Quest Guide', 'Now you have', 40, 5);
repeat
if not (LoggedIn) then
exit;
Click2continue;
until (FindNpcChatText('time to enter'));
end;

procedure Step26;
begin
Find('Climb-down', 'Mining and Smithing', 40, 10);
end;

procedure Step27;
begin
Mouse(635, 142, 5, 5, True);
Flag;
Find('Talk-to', 'Mining Instructor', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2continue;
until (FindNpcChatText('Prospecting'));
end;

procedure Step28;
begin
FindOptionMulti('Rocks', 'Prospect', 'Please wait', 'This rock contains', 40, 10);
repeat
if not (LoggedIn) then
exit;
wait(100)
until (FindNpcChatText('This rock contains'))
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('So now you'));
end;

procedure Step29;
begin
FindOptionMulti('Rocks', 'Prospect', 'Please wait', 'This rock contains', 40, 10);
repeat
if not (LoggedIn) then
exit;
wait(100)
until (FindNpcChatText('This rock contains'))
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Talk to the Mining Instructor'));
end;

procedure Step30;
begin
Find('Talk-to', 'I prospected', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2continue;
until (FindNpcChatText('quite simple'));
end;

procedure Step31;
begin
FindMulti('Mine', 'Please wait', 'You manage', 40, 10);
repeat
if not (LoggedIn) then
exit;
wait(100)
until (FindNpcChatText('You manage'))
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Now you have some'));
end;

procedure MissedStep32;
begin
FindMulti('Mine', 'Please wait', 'You manage', 40, 10);
repeat
if not (LoggedIn) then
exit;
wait(100)
until (FindNpcChatText('You manage'))
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('You should now'));
end;

procedure Step32;
begin
WalkTo('Furnace', 40, 10);
repeat
if not (LoggedIn) then
exit;
GameTab(4);
if (FindDTM(Copper, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
if (FindArrow) then
begin
MMouse(x + 10, y + 40, 3, 3);
rwait(100, 100);
if (isUpText('Furnace')) then
begin
getMousePos(x, y);
Mouse(x, y, 0, 0, True);
Flag;
rwait(1500, 500);
end
end
end;
until (GetColor(214, 432) = 8388608);
repeat
if not (LoggedIn) then
exit;
Mouse(214, 432, 2, 50, True);
rwait(1000, 500);
until (FindNpcChatText('made a bronze bar'));
end;

procedure Step33;
begin
Find('Talk-to', 'How do I', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2continue;
until (FindNpcChatText('Smithing a dagger'));
end;

procedure Step34;
begin
if (FindMMArrow) then
begin
Mouse(x, y, 5, 5, True);
Flag;
end;
repeat
if not (LoggedIn) then
exit;
if (FindDTM(BronzeB, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
Find('Anvil', 'Now you have', 30, 5);
end;
if (GetColor(16, 84) = 16777215) then
begin
repeat
if not (LoggedIn) then
exit;
MouseBox(14, 50, 40, 80, True);
rwait(2000, 500);
until (GetColor(214, 432) = 8388608);
end;
repeat
if not (LoggedIn) then
exit;
Mouse(214, 432, 50, 2, True);
Status('Clicking continue');
rwait(1000, 500);
until (FindNpcChatText('finished in this'));
until (FindNpcChatText('finished in this'));
end;

procedure Step35;
begin
Find('Gate', 'Combat', 40, 0);
end;

procedure Step36;
begin
Find('Combat', 'My name', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Wielding weapons'));
end;

procedure Step37;
begin
repeat
if not (LoggedIn) then
exit;
MouseBox(664, 174, 682, 194, True);
rwait(500, 500);
until (FindNpcChatText('This is your'));
end;

procedure Step38;
begin
repeat
if not (LoggedIn) then
exit;
GameTab(5);
MouseBox(594, 419, 621, 444, True);
until (FindNpcChatText('Worn interface'));
end;

procedure Step39;
begin
repeat
if not (LoggedIn) then
exit;
if (GetColor(30, 35) = 2070783) then
begin
if (FindDTM(Dagger, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
end;
end;
until (FindNpcChatText('holding your dagger'));
end;

procedure Step40;
begin
Find('Combat', 'Combat', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Unequipping items'));
end;

procedure Step41;
begin
repeat
if not (LoggedIn) then
exit;
GameTab(4);
if (FindDTM(Sword, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
if (FindDTM(Shield, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
end;
end;
until (FindNpcChatText('Combat interface'));
end;

procedure Step42;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(532, 177, 10, 10, True);
until (FindNpcChatText('This is your'));
end;

procedure Step43;
begin
Find('Gate', 'Attacking', 40, 10);
end;

procedure Step44;
begin
FindMulti('Attack', 'Sit back', 'kill', 40, 10);
repeat
if not (LoggedIn) then
exit;
wait(100)
until (FindNpcChatText('kill'));
end;

procedure Step45;
var
C: Integer;
Found: boolean;
begin
repeat
if not (LoggedIn) then
exit;
GateC := GetDoorColor;
if (FindColorSpiral(x, y, GateC, MMX1, MMY1, 718, 112)) then
begin
Mouse(x, y, 5, 5, True);
Found := True;
Flag;
end;
until (Found = True);
Found := False;
repeat
MMouse(264 + c, 157, 10, 2);
if (isUpText('Gate')) then
begin
getMousePos(x, y);
Mouse(x, y, 0, 0, True);
Flag;
Found := True;
rwait(500, 500);
end;
C := C + 1;
until ((Found = True) or (C > 50));
Find('Combat', 'I did', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Rat ranging'));

end;

procedure Step46;
begin
if not (LoggedIn) then
exit;
GameTab(4);
if (FindDTM(Arrow, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
if (FindDTM(Bow, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 5, 5, True);
end;
end;
repeat

if (FindArrow) then
begin
MMouse(x + 10, y + 40, 3, 3);
rwait(100, 100);
if (isUpText('Attack')) then
begin
getMousePos(x, y);
Mouse(x, y, 0, 0, True);
Flag;
rwait(500, 500);
end
end
else
begin
if (FindMMArrow) then
begin
Mouse(x, y, 5, 5, True);
Flag;
end
else
begin
if (FindRedMMArrow) then
begin
Mouse(x, y, 5, 5, True);
Flag;
end
end;
end;
until (ArrowAmount2 < 50);
repeat
if not (LoggedIn) then
exit;
wait(100);
until (FindNpcChatText('Moving on'));
end;


procedure Step47;
begin
Find('Ladder', 'Banking', 40, 5);
end;

procedure Step48;
begin
Find('Bank booth', 'Banker', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Yes'));
if (FindNpcChatText('Yes')) then
begin
ClickNpcChatText('Yes', True);
repeat
if not (LoggedIn) then
exit;
wait(100);
until (FindNpcChatText('This is'));
end;
end;

procedure Step49;
begin
Find('Door', 'Financial', 40, 10);
end;

procedure Step50;
begin
Find('Financial', 'Hello', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('the next door'));
end;

procedure Step51;
begin
Find('Door', 'Prayer', 40, 10);
end;

procedure Step52;
begin
Mouse(643, 138, 5, 5, True);
Flag;
Find('Brother', 'Good', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Click on the'));
end;

procedure Step53;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(698, 174, 10, 10, True)
until (FindNpcChatText('tell you about'));
end;

procedure Step54;
begin
Find('Brother', 'Brother', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('You should'));
end;

procedure Step55;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(570, 475, 10, 10, True);
until (FindNpcChatText('This will be'));
end;

procedure Step56;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(605, 475, 10, 10, True);
until (FindNpcChatText('The two lists'));
end;

procedure Step57;
begin
Find('Brother', 'Brace', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Your final instructor'));
end;

procedure Step58;
begin
Find('Door', 'follow the path', 40, 10);
end;

procedure Step59;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(672, 107, 10, 10, True);
Flag;
until (FindMMArrow);
Find('Magic', 'Hello', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2Continue
until (FindNpcChatText('Open up your'));
end;

procedure Step60;
begin
repeat
if not (LoggedIn) then
exit;
Mouse(732, 176, 10, 10, True);
until (FindNpcChatText('Good'));
end;

procedure Step61;
begin
repeat
if not (LoggedIn) then
exit;
Click2Continue
until (FindNpcChatText('Cast Wind Strike'));
end;

procedure Step62;
begin
Mouse(639, 68, 5, 5, True);
Flag;
repeat
if not (LoggedIn) then
exit;
GameTab(7);
MouseBox(588, 230, 598, 243, True);
if (FindArrow) then
begin
MMouse(x + 10, y + 40, 3, 3);
rwait(100, 100);
if (isUpText('Chicken')) then
begin
getMousePos(x, y);
Mouse(x, y, 0, 0, True);
Flag;
rwait(1000, 500);
end
end
until (FindNpcChatText('You have'));
end;

procedure Step63;
begin
Find('Magic', 'Magic', 40, 10);
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Yes'));
if (FindNpcChatText('Yes')) then
begin
ClickNpcChatText('Yes', True);
repeat
if not (LoggedIn) then
exit;
wait(100);
until (FindNpcChatText('When you'));
repeat
if not (LoggedIn) then
exit;
Click2Continue;
until (FindNpcChatText('Welcome to Lumbridge'));
Completed := True;
CompletedT := CompletedT + 1;
end;

end;

///////////////////////////////////
///// STEP GETTING PROCEDURES /////
///////////////////////////////////


procedure GetStep(Text, Write: string; StepNum: integer);
begin
if ((Step = 0) and (FindNpcChatText(Text))) then
begin
Step := StepNum
Writeln(inttostr(StepNum) + ' : ' + Write);
if (Mode = True) then
begin
case Step of
0: exit;
1: Step1;
2: Step2;
3: Step3;
4: Step4;
5: Step5;
6: Step6;
7: Step7;
8: Step8;
9: Step9;
10: Step10;
11: Step11;
12: Step12;
13: Step13;
14: Step14;
15: Step15;
16: Step16;
17: Step17;
18: Step18;
19: Step19;
20: Step20;
21: Step21;
22: Step22;
23: Step23;
24: Step24;
25: Step25;
26: Step26;
27: Step27;
28: Step28;
29: Step29;
30: Step30;
31: Step31;
32: Step32;
33: Step33;
34: Step34;
35: Step35;
36: Step36;
37: Step37;
38: Step38;
39: Step39;
40: Step40;
41: Step41;
42: Step42;
43: Step43;
44: Step44;
45: Step45;
46: Step46;
47: Step47;
48: Step48;
49: Step49;
50: Step50;
51: Step51;
52: Step52;
53: Step53;
54: Step54;
55: Step55;
56: Step56;
57: Step57;
58: Step58;
59: Step59;
60: Step60;
61: Step61;
62: Step62;
63: Step63;
64: MissedStep32;
end;
StepsD := StepsD + 1;
end;
end;
end;

procedure DetermineStep;
begin
if not (LoggedIn) then
exit;
Status('Getting Step');
Step := 0;
while (Step = 0) do
begin
if (not (TabExists(11))) then
begin
GetStep('Getting started', 'Just gonna chat to Rs man', 1);
end;

if (not (TabExists(4))) and (TabExists(11)) then
begin
/// SPANNER APPEARS \\\
GetStep('Please click', 'Opening up the settings tab', 2);

GetStep('On the side panel', 'Looks like rs man wants us again....', 3);

GetStep('Interacting with scenery', 'Time to open the door', 4);

GetStep('Moving around', 'Walking over to the survivalist', 5);
end;
if (not (TabExists(2))) and (TabExists(4)) then
begin
/// Inventory Apperas \\\
GetStep('Viewing', 'Opening Inventory', 6);

GetStep('Cut down', 'Gotta chop down a Tree', 7);

GetStep('Making a fire', 'Gonna make a fire', 8);
end;
if (not (TabExists(13))) and (TabExists(2)) then
begin
/// Skill tab appears \\\
GetStep('You gained some experience', 'Clicking tab', 9);

GetStep('Your skill stats', 'More talking to be done', 10);

GetStep('Catch some Shrimp', 'Fishing Time', 11);

GetStep('Cooking your shrimp', 'Gotta cook those fish', 12);

GetStep('Burning your shrimp', 'Gotta cook those fish', 12);

GetStep('cooked your first RuneScape', 'Opening Gate to chef', 13);

GetStep('Follow the path', 'Walking to the chefman', 14);

GetStep('Talk to the chef', 'Gonna get this chat going', 15);

GetStep('Making dough', 'Gonna make some dough', 16);

GetStep('To cook the', 'Cooking the dough', 17);
end;
if (not (TabExists(12))) and (TabExists(13)) then
begin
/// Music Tab appears \\\
GetStep('Your first loaf', 'Admiring my chefspertese', 18);

GetStep('The music player', 'Opening the door', 19);

GetStep('Emotes', 'Random emote test', 20);
end;
if (not (TabExists(3))) and (TabExists(12)) then
begin
/// Emote Tab appears \\\
GetStep('Running', 'Turning the run on', 21);

GetStep('Run to the next', 'Time to break a sweat', 22);

GetStep('Talk with the', 'Gonna chat with the guide', 23);
end;
if (not (TabExists(5))) and (TabExists(3)) then
begin
/// Quest Tab appers \\\
GetStep('Open the Quest', 'Gonna open the quest journal', 24);

GetStep('Your Quest Journal', 'More Chit chat with the quest man', 25);

GetStep('Moving on', 'Going down the ladder', 26);

GetStep('Mining and Smithing', 'Walking to the mining instructor', 27);

GetStep('Prospecting', 'Gonna prospect some rocks', 28);

GetStep('So now you know', 'Gonna prospect the next rock', 29);

GetStep('Talk to the', 'Gonna talk to the mining guy again', 30);

GetStep('quite simple really', 'Mining Time', 31);

GetStep('you have some', 'Mine the next rock', 64);

GetStep('You should now', 'Smelting time', 32);

GetStep('made a bronze bar', 'More conversation', 33);

GetStep('Smithing a dagger', 'Dagger Time', 34);

GetStep('finished in this', 'Going to the gate', 35);

GetStep('Combat', 'Talking to combat man', 36);
end;
if (not (TabExists(1))) and (TabExists(5)) then
begin
/// Equip tab appears \\\
GetStep('Wielding weapons', 'Opening equip tab', 37);

GetStep('This is your', 'Opening equip stats', 38);

end;
if not (TabExists(10)) then
begin
GetStep('Worn interface', 'Equip dagger', 39);

GetStep('now holding', 'More Talk', 40);
end;

if (not (TabExists(1))) and (TabExists(5)) then
begin
GetStep('Unequipping items', 'Equipping sword and shield', 41);
end;
if (not (TabExists(6))) and (TabExists(1)) then
begin
/// Combat Tab apperas \\\
GetStep('Combat interface', 'Combat tab', 42);

GetStep('From this interface', 'Gonna open the fight gate', 43);

GetStep('Attacking', 'Starting to fight', 44);

GetStep('made your first', 'More Talk', 45);

GetStep('Rat ranging', 'Gonna kill another rat', 46);

GetStep('Moving on', 'Going up the ladder', 47);

GetStep('Banking', 'To the bank', 48);
end;
if not (TabExists(10)) then
begin
GetStep('bank box', 'Opening financial door', 49);
end;
if (not (TabExists(6))) and (TabExists(1)) then
begin
GetStep('Financial advice', 'Opening financial door', 50);

GetStep('the next door', 'To the church', 51);

GetStep('to the chapel', 'To speak to my homes', 52);
end;
if (not (TabExists(8))) and (TabExists(6)) then
begin
/// Prayer menu appears \\\
GetStep('to open the Prayer', 'To prayer menu', 53);

GetStep('Your Prayer menu', 'More talk', 54);
end;
if (not (TabExists(9))) and (TabExists(8)) then
begin
/// Friends chat appears \\\
GetStep('You should now see', 'Opening friends list', 55);
end;
if (not (TabExists(7))) and (TabExists(9)) then
begin
/// Ignore chat appears \\\
GetStep('This will be explained', 'Opening ignore list', 56);

GetStep('The two lists', 'Time for some ironic chat :D', 57);

GetStep('almost finished', 'Opening church door', 58);

GetStep('the path to the Wizard', 'To the wizard', 59);
end;
if (not (TabExists(7))) and (TabExists(9)) then
begin
/// MAGIC PANEL APPEARS \\\
GetStep('Open up your final', 'Opening magic panel', 60);
end;
if TabExists(7) and TabExists(9) then
begin
GetStep('This is a list', 'More wizarding talk', 61);

GetStep('you have some runes', 'Time to pop some chickens', 62);

GetStep('You have almost', 'Time to leave', 63);

end;
if (TabExists(14)) and (TabExists(9)) then
begin
GetStep('Welcome to Lumbridge', 'Next Player!', 65);
end;
end;
end;


//////////////////////////
///// Main Loop //////////
//////////////////////////


begin
SetupSRL;
SetupFiremaking;
Load;
Status('Loaded');
if (Mode = True) then
begin
repeat
if not (LoggedIn) then
begin
LoginNewPlayer;
Logins := Logins + 1;
end;
if (FindBitmap(Accept, x, y)) then
SmartzCharacter;
HighestAngle;
Status('Checking Step');
DetermineStep;
ProgressReport;
until (Completed = True);
end;
if (Mode = False) then
begin
repeat
Completed := False;
repeat
if not (LoggedIn) then
begin
LoginNewPlayer;
Logins := Logins + 1;
end;
if (FindBitmap(Accept, x, y)) then
SmartzCharacter;
HighestAngle;
Status('Checking Step');
DetermineStep;
repeat
Status('Getting to Work');
if (FindBitmap(Accept, x, y)) then
SmartzCharacter;
HighestAngle;
case Step of
0: exit;
1: Step1;
2: Step2;
3: Step3;
4: Step4;
5: Step5;
6: Step6;
7: Step7;
8: Step8;
9: Step9;
10: Step10;
11: Step11;
12: Step12;
13: Step13;
14: Step14;
15: Step15;
16: Step16;
17: Step17;
18: Step18;
19: Step19;
20: Step20;
21: Step21;
22: Step22;
23: Step23;
24: Step24;
25: Step25;
26: Step26;
27: Step27;
28: Step28;
29: Step29;
30: Step30;
31: Step31;
32: Step32;
33: Step33;
34: Step34;
35: Step35;
36: Step36;
37: Step37;
38: Step38;
39: Step39;
40: Step40;
41: Step41;
42: Step42;
43: Step43;
44: Step44;
45: Step45;
46: Step46;
47: Step47;
48: Step48;
49: Step49;
50: Step50;
51: Step51;
52: Step52;
53: Step53;
54: Step54;
55: Step55;
56: Step56;
57: Step57;
58: Step58;
59: Step59;
60: Step60;
61: Step61;
62: Step62;
63: Step63;
end;
if (Step = 64) then
Step := 31;
if (Step = 31) then
begin
MissedStep32;
StepsD := StepsD + 1
end;
StepsD := StepsD + 1
ProgressReport;
Step := Step + 1

until ((Completed = True) or (not (LoggedIn)));
until (Completed = True)
Players[CurrentPlayer].Active := False;
LogOut;
NextPlayer(Players[CurrentPlayer].Active);
until (CurrentPlayer > HowManyPlayers);
end;
end.
My Choas Bone Burier
{.Script Info:
# ScriptName = Mat's Chaos Bone Burier
# Author = mat_de_b
# Description = Buries Bones at the Chaos Altar
# Version = v1.0
# Date = 28/08/07 17:01 GMT
# Comments = Should be quite stable but in need of
further testing so we'll see
/Script Info}

{
//////////////////////////////////////
Run on Low Detail + Highest Brightness
Use SCSS+SRL4+ Scar Divi 3.11
Setup Lines: 26 -49
//////////////////////////////////////
}


program BoneBurier;
{.include srl/srl.scar}
{.include srl/srl/misc/SCSS.scar}
var CBuried,BoneAuto,x,y,Logins,HowMany,Buried,BonesColor,
BonesDTM,MMDot,Switched,x,y:integer;
RunDirection : String;

procedure Load;
begin

///////////////////////////////////////////////////////
RunDirection := 'n'
HowMany := 112;
BonesColor := 13355985;

HowManyPlayers := 3;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name := '*******';
Players[0].Pass := '*******';
Players[0].Nick := '*******'; //3 - 4 letters of YOUR username, example: sern
Players[0].Active :=true;

Players[1].Name := '*******';
Players[1].Pass := '*******';
Players[1].Nick := '*******'; //3 - 4 letters of YOUR username, example: sern
Players[1].Active :=false;


Players[2].Name := '*******';
Players[2].Pass := '*******';
Players[2].Nick := '*******'; //3 - 4 letters of YOUR username, example: sern
Players[2].Active :=True;

///////////////////////////////////////////////////

BoneAuto := BitmapFromString2(False, 'aF203778DA3DCBDB0D803' +
'00840D1958A42A19F3C64FF9104AB96E484DCD031BE6752E03C4A' +
'A66CF12AA75177822EDE3B1BFE3723F0F9ABC21CEC4B24E4D5D3C' +
'55975E5BAB641D5D2CDD14F0D0585B0983550CDB637AA9');

BonesDTM := DTMFromString('78DA637464626078C280028EEEDDCBF01F483' +
'302F17F2060B400AA79C08006189148206D0354F38A801A17A09A' +
'6704D47802D53C26A0C615A8E60E7E35009A870E32');

MMDot := BitmapFromString2(False, 'aD1A3278DA458D490E80300C' +
'03BFE46E018E64F1FF9F545244C961648D2D05F8EE680F46F1CD7' +
'EF6D48349CD0C5FD49B6CD2845151418340E2CA860183BD86258D' +
'C57E507C6DD47E330176C');
end;

///////////////////////////////
///// ANTI RANDOMS ////////////
//////////////////////////////


{*******************************************************************************
function OtherPlayerFound(var OPX, OPY: Integer): Boolean;
By: phantombmx
Description: Returns true if a player-controlled character that isn't you
is on the minimap, false if not. Also Returns the x and y value of the dot.
*******************************************************************************}

function OtherPlayerFound(var OPX, OPY: Integer): Boolean;
var
playerdot, cx, cy: Integer;
begin
playerdot := BitmapFromString2(False, 'a4172678DA3330800113531061' +
'610224CD4DDD40A413886D60E608240C8DCDDC5CF141576730340' +
'241675310041B6A082101878');
Wait(1);
if (FindBitmapIn(playerdot, cx, cy, MMX1, MMY1, MMX2, 77)) or
(FindBitmapIn(playerdot, cx, cy, 653, MMY1, MMX2, MMY2)) or
(FindBitmapIn(playerdot, cx, cy, MMX1, 88, MMX2, MMY2)) or
(FindBitmapIn(playerdot, cx, cy, MMX1, MMY1, 643, MMY2)) then
begin
Result := True;
OPX := cx;
OPY := cy;
end;
FreeBitmap(playerdot);
end;

{*******************************************************************************
function InWilderness: Boolean;
By: phantombmx
Description: Returns true if you are in the wilderness, false if not.
*******************************************************************************}

function InWilderness: Boolean;
var
skull: Integer;
begin
skull := BitmapFromString(5, 5, 'z78DA7373C3078CCD8D5C8C0C7' +
'1B1F1CB3ABB39595A5A629A09114756834C42C40128C72517');
Result := FindBitmapIn(skull, x, y, 476, 256, 504, 280);
FreeBitmap(skull);
end;


procedure FoundFight;
begin
if(FindFight)then
begin
RunAwayDirection(RunDirection);
Wait(8000+random(2000));
RunBack;
end;
end;

procedure AntiPlayer;
begin
if(InWilderness)then
begin
if(OtherPlayerFound(x,y))then
begin
Writeln('Found Player, Switching Worlds');
LogOut;
SCSSLoadLeast(False,True);
Switched := Switched +1;
repeat
wait(100);
until(GetColor(402,246)=65535);
LoginPlayer;
end;
end;
end;

///////////////////////////////////
///////// PROCEDURES /////////////
/////////////////////////////////
procedure FindAndPickBones;
var X1,Y1,X2,Y2:integer;
begin
x1 := 259
Y1 := 169
x2 := 259
Y2 := 169
repeat
if not LoggedIn then
Exit;
x1 := x1 - 5
y1 := y1 - 5
x2 := x2 + 5
y2 := y2 + 5
until(FindColorSpiralTolerance(x,y,BonesColor,X1,Y1,X2,Y2,30)) or (x1 <= 0);
if(FindColorSpiralTolerance(x,y,BonesColor,X1,Y1,X2,Y2,30))then
begin
MMouse(x,y,2,2);
if(isUpTextMulti('Bones','Take','ones'))then
begin
getMousePos(x,y);
Mouse(x,y,0,0,True);
Flag;
wait(1000+random(500));
end else
begin
if(FindBitmap(MMDot,x,y))then
begin
Mouse(x,y,5,5,True);
SetRun(True);
Flag;

end;
end;
end else
begin
if(FindBitmap(MMDot,x,y))then
begin
Mouse(x,y,5,5,True);
SetRun(True);
Flag;

end;
end;
end;

procedure Bury;
begin
repeat
if not LoggedIn then
Exit;
if(FindDTM(BonesDTM,x,y,MIX1,MIY1,MIX2,MIY2))then
begin
Mouse(x,y,5,5,True);
wait(2000+random(1000));
AntiPlayer;
FindNormalRandoms;
FoundFight;
Buried := Buried +1;
CBuried := CBuried + 1;
end;
until not(FindDTM(BonesDTM,x,y,MIX1,MIY1,MIX2,MIY2));
end;

/////////////////////////////////////////////////
////////////// PROGGY //////////////////////////
///////////////////////////////////////////////


procedure ProgressReport;
begin
Writeln('-------- Mats Bone Pwnner -------');
Writeln('This actually buried '+inttostr(Buried)+' Bones');
Writeln('Forced to switch world, '+inttostr(Switched)+' Times');
Writeln('Some how managed to run for '+TimeRunning);
Writeln('Currently Logged In '+inttostr(Logins)+' Times');
Writeln('--------------------------------------------');
end;

///////////////////////////////////////////////////////////
/////////////////////// Main Loop ////////////////////////
//////////////////////////////////////////////////////////

begin
SetupSrl;
Load;
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
repeat
repeat
repeat
if not(LoggedIn)then
begin
LoginPlayer;
Logins := Logins +1;
end;
MakeCompass('e');
HighestAngle;
Status('Checking for Randoms and Players');
if not((InWilderness) or (FindSymbol(x,y,'altar')))then
Exit;
AntiPlayer;
FindNormalRandoms;
FoundFight;
repeat
if not LoggedIn then
Exit;
if not((InWilderness) or (FindSymbol(x,y,'altar')))then
Exit;
Status('Finding Bones');
FindNormalRandoms;
FoundFight;
FindAndPickBones;
AntiPlayer;
until((not(FindBitmap(MMDot,x,y))) or (InvFull));
Status('Burying');
if not((InWilderness) or (FindSymbol(x,y,'altar')))then
Exit;
Bury;
FindNormalRandoms;
FoundFight;
AntiPlayer;
ProgressReport;
until(CBuried >= HowMany);
LogOut;
Players[CurrentPlayer].Active := False;
NextPlayer(Players[CurrentPlayer].Active);
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
CBuried := 0
until(CurrentPlayer > HowManyPlayers);
CurrentPlayer := 0;
Players[0].Active :=true;
until(False)
end.

My AutoDropper (Very Simple… someone requested it)
{.Script Info:
# ScriptName = Mat's AutoDropper v1
# Author = mat_de_b
# Description = Automatically Drops Stuff
# Version = 1.5
# Date = 30/08/07 16:53 GMT
# Comments =
/Script Info}
program New;
{.include srl/srl.scar}
Const
FirstDropItem = 1; // The inventory slot of the first droppable item
// (put your stuff you wish to keep before it)
Mode = False; // True = Drops when full
// False = Drops on the press of Ctrl

procedure Drop;
var InvC:integer;
begin
repeat
ArrangeInv;
Writeln('Dropping');
InvC := InvCount;
DropToPosition(FirstDropItem, InvC);
Writeln('Done Dropping');
until(InvCount <= FirstDropItem);
end;

begin
SetupSRL;
Writeln('-------------------------------');
Writeln('-------------------------------');
Writeln('----------Made by--------------');
Writeln('----------mat_de_b-------------');
Writeln('-------------------------------');
Writeln('-------------------------------');
wait(2000);
repeat
if(mode = true)then
begin
Status('Waiting');
if(InvFull)then
begin
Drop;
end;
end;

if(mode = false)then
begin
Status('Waiting for you to press Control');
if(IsFunctionKeyDown(1))then
begin
Drop;
wait(2000+random(500));
end;
end;
until(False);

——————————————————
<!– END TEMPLATE: formanswers –>

Wizzup?

2007-09-11 14:37:48

Yes from me!
Lots of coding.
Try to use failsafes.
Try not to use too many coord clicking, hard to understand the code.

Killerdou

2007-09-11 14:39:30

What can i say? Yes:)

mat_de_b

2007-09-11 15:00:05

From: Wizzup?
Yes from me!
Lots of coding.
Try to use failsafes.
Try not to use too many coord clicking, hard to understand the code.


I wrote those a couple of weeks ago and have since started using failsafes for every thing i do…

The Coord clicking is becuase i didnt understand radialwalk then, but now i'd use a radialwalk or DTM/DDTM for walking…

What could i do to improve how easy my code is to understand? Standards and comments?

n3ss3s

2007-09-11 15:08:11

Hmm, google DelphiFormatter and download teh thing, it puts standards for you (indents and spaces) but it looks good. For the steps I recommend making it straight to a case.

mat_de_b

2007-09-11 15:18:04

From: n3ss3s
Hmm, google DelphiFormatter and download teh thing, it puts standards for you (indents and spaces) but it looks good. For the steps I recommend making it straight to a case.


Done, autoformatted and reposted the tutorial runner

MasterKill

2007-09-11 16:19:39

i have to say yes

btw, its awesome there ore no randoms in wildy :D

i would like to see more of you in the future. keep it up :)

Hey321

2007-09-11 19:21:37

Where's the tut runner? All I see is two bone buriers and an autodropper? I'm withholding my vote.

Harry

2007-09-11 19:28:48

he messed up and posted boner twice X) instead of tut runner..

Bourdou!

2007-09-11 19:46:45

From: n3ss3s
Hmm, google DelphiFormatter and download teh thing, it puts standards for you (indents and spaces) but it looks good. For the steps I recommend making it straight to a case.
O! :duh: :redface: :eek: Taht iz teh sex. Anyway, yes from me.

HyperSecret

2007-09-12 00:53:55

From: MasterKill
i have to say yes

btw, its awesome there ore no randoms in wildy :D

i would like to see more of you in the future. keep it up :)


no randoms in the wildy, im sure when i am out there picking bones i get randoms all the time :D

but its a yes from me gj

Wizzup?

2007-09-12 02:05:51

Add the tutorial runner again, mat. :)

mat_de_b

2007-09-12 02:54:16

Silly Silly me… Right ive reposted the tutorial runner, not really sure how i managed to copy the bone burier? :confused:

Santa_Clause

2007-09-12 04:46:57

Yes from me.

n3ss3s

2007-09-12 05:07:27

Now its sexy, yes from me!

Hey321

2007-09-12 07:55:37

Hell yea!

gerauchert

2007-09-12 08:09:23

very yes :D

Hugolord

2007-09-12 12:42:53

This is member work YES

LordGregGreg

2007-09-12 15:07:50

whats been said.

and enoiugh good posts too.

yes

Smartzkid

2007-09-12 18:18:44

Oops!

I accidentally voted no :eek:

mat_de_b

2007-09-12 18:26:05

Atleast its accidental :D

Bourdou!

2007-09-12 20:16:09

[off the topic]From SRL Junior Member to SRL Member, lol[end of the off topicness]

mat_de_b

2007-09-15 11:56:12

No more posts :(

WT-Fakawi

2007-09-15 15:01:13

In. Sry for the late response.

Welcome!