SRL Archive - Archive

DemiseScythe - SRL Member Application


DemiseScythe

2011-12-28 22:51:14

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?
bro433 a.k.a. inf3cti0us


What is your general programming knowledge?
I know some ibot type Java and now I know Simba/Pascal. Used to code with Rubikon for GBA hacks if that counts.


Are you a member of any other communities?
Wicked Fury, RSCA


Tell us about yourself…
From: DemiseScythe
My name is Alicia but I go by my middle name Synthia but my friends in RS related communities call me Demise which comes from my original RSN. I am now 18 years old, been playing since I was 11 years old. I love RS and I enjoy scripting. I am currently going into 3rd semester in College as a Chemistry Major. I enjoy music and I listen to music almost all the time. I enjoy playing the guitar, pencil drawing and scripting.



Please show us one (or multiple) of your scripts.
RS Racer or Demise Racer
program DemiseRacer;
{$i srl/srl/misc/smart.scar}
{$i srl/srl.scar}

{<<<<<<<<<<<<<<<<<<Demise Racer>>>>>>>>>>>>>>>>>>}
{ How to Set up: Version 1.0
Just fill in the information in DeclarePlayers,
replace Smart_Server value with desired World. =D
Enjoy my first script!!! }

var

P: Array [0..21] of Integer;
Home, Door, Dance, Think, Laps, Errors, x, y: Integer;
aFound: Extended;

procedure DefDTM;
begin
P[0] := DTMFromString('0');
P[1] := DTMFromString('mrAAAAHic42BgYOhlYmDogOJ5UDwHiOcC8SwgDgCqsQfiJCD2A2JHII4D4nIgVgDiID8/ht72NjAGsZ0c1BjsrQwYKjIDwHx+oBp8mJEAhgEAJRoQOg==');
P[2] := DTMFromString('mlwAAAHicY2dgYJjNzMAwB4gnAnEXEG8G4iNAvA6IJwDl64C4A4j7gXgGEE8E4jVAHBLkwzCruxhMu7mpMwT5KzN09M8E8/mB8rgwIx4MBQB04RCT');
P[3] := DTMFromString('mrAAAAHic42BgYKhjZmDIA+IuIO4D4tlA3AzEtUC8AIinANUsBakD4jYGCH8+EK8H4i1AHBLkw7BwYiWY9vbWZAgMUwOz3dzUGVbPamDgB6rBhxkJYBgAAPr3Ejg=');
P[4] := DTMFromString('mwQAAAHic42RgYOhmZmCYDMQzkPBUIO4B4gIgXgnErUB1tQwQugeIpwHxQiBeDGWD5EKCfBjsrNQZwnzNGZydVcF8GD2rKwUszg9URwgzEoHhAAB40BLc');
P[5] := DTMFromString('mrAAAAHic42BgYJjOzMAwAYirgHgmEC8D4pVAvB2IG4C4HqimA4i7gbgHiJuBeAEQTwbieUAc4O/FYG4my+DsIQ9m21irM0xozmVwcVZlcPdVZOAHqsGHGQlgGAAAaLcQWA==');
P[6] := DTMFromString('mwQAAAHic42RgYAhnZmBIBuIkIA4C4mggrgLiWUAcC8QBQLwZqG41EO8A4l1AvBiIlwPxTiA+CcTHgDjA34vB0VIZTJuayTLYmCgw2Fvqg/nuvooMnv5KDPxAdYQwIxEYDgCWlxEn');
P[7] := DTMFromString('m6wAAAHic42ZgYKhjZmAoAuIWIO4F4lRmiFgFEKcB8UQgzgLidSA1QPWdQNwNpfuBeCYQbwHinUC8AYivAvFxIA7w92KwsVBnMDdUZrAykmdwtFYGi4HFrdXBYjX5gWA+P1A9sZiRBIwEAEN3FaM=');
P[8] := DTMFromString('mAAEAAHic42FgYChhZmDIBOI4IK4C4nogbgfiOUC8BoinA3ElEEcDcTIQTwDqmQbFs4B4EhC3A3EnEE8G4vVAvA6IFwLxMiD2C/UGYytHDQYnTzUw295bnsE9VJnBL04azHf3UgDTTi5qDPxAPaRgRhIxMgAAsiYXdw==');
P[9] := DTMFromString('mggAAAHicY2NgYIhlYmCIBOJEII4A4lQgTgJiW6CcMRQ7ArENEHsAsa+fL8MLRmYwtnVQBWOQGD9QDhtmxIEhAADnvgj9');
P[10] := DTMFromString('m1gAAAHic42JgYJjCzMBQBcQ9QDwPiBcAcQEQVwPxHiCeC8RlQNwAVNsMxJOBeCaUPRWIlwLxOiA+A8T7gTjI14/B2VkJTIOwh5syQ0SMIkNQmDxDWIQ2RBzI5geqJQYzEokRAACtzhTJ');
P[11] := DTMFromString('m1gAAAHic42JgYJjHzMCwD4hbgHgWM4S/FoinAPFCIO4A4l1AXAdU2wLE9UDcAcQ9QDwdiGcA8Rwg7oKK1VVWMDRlWTOkJBswRIaEMtSUlzPkxBgxhAVqMAT5+jG0dc0GY36gWmIwI5EYAQBhzBiA');
P[12] := DTMFromString('mrAAAAHic42BgYNjGzMCwHYjXAnEvELcB8RwgXg3ER4F4AVDNSiCeBMSzgHgjEO+C4kNAnBHryeDnrcbQHmjM4GkmDaZBYqFBmgxV5RUM/EA1+DAjAQwDAI1qEvo=');
P[13] := DTMFromString('m6wAAAHic42ZgYJjFzMCwCIiXAvE6IF4IxH1A3ATEB4F4NRDPhIpXMUBwAxT3A3ENEE8B4g1AvB2IzwDxUyDOTTVmyI73YqjODQXjtgAjhpgoHYbgCG2G9GgPOLbTE2fgB6onFjOSgJEAAJwpGWI=');
P[14] := DTMFromString('mwQAAAHic42RgYChhZmBoBOJ5QDwDiCcCcSYQVwPxZCBeAcTdQHVNQNwKxD1AvAyIZwDxUiDeAcWBQeoMyZHODGaGqgzW5hoMifG6DBGxOgxRiUoMeWnGDLO60hn4geoIYUYiMBwAAIi9Ey0=');
P[15] := DTMFromString('m6wAAAHic42ZgYKhmYmDoBeJ6IE4H4igg9gTibCCeDMQrgbgbiL2AWAOoXhuIBYBYAYiNgFgJiG2B2AOI9YFYBogjgNjBXoUhK9aaobO9GY51deQYrBxkwHJpsS5gMXdHfQZ+oHpiMSMJGAkAADdpEz0=');
P[16] := DTMFromString('mAAEAAHic42FgYJjJzMAwGYiXAPEmID4AxNuAeAYQd0JxO5ReDMR1QD0VQFwDxHOBeAYQrwTiZUDcDcSTgLgBiBcB8TYgzknwZOjtbGOwMFVn6O/uAGM7SxUGBzsdCNsGwq4qK2EoSHRg4AfqIQUzkoiRAQDRpxxe');
P[17] := DTMFromString('m6wAAAHic42ZgYOhnZmDYBsQtQFwKxB1A3AbE84F4BRCvgYo1AnE9UP0EIJ4CxEuheCMQbwfiJUC8E4iPAnEDEGcnOIOxn4sGQ193E4OVmRKYhombGyky2NupMfgEKTLwA9UTixlJwEgAADSgGMI=');
P[18] := DTMFromString('m6wAAAHic42ZgYGhmZmCoAOJ+IO5mhvCnAHEJEPcAcRYQFwPxciBuBapvh+I6IJ4MxZOAeB0QrwbiXUB8EYizE5wZAsKUGXyCFBnmzOxHwSA5kHhwtBSYzQ9UTyxmJAEjAQC1ZBqD');
P[19] := DTMFromString('mFQEAAHic42VgYJjFzMAwA4hnA3E3EK8C4vVA3ALE9UC8FYh3A3ENVM1MIK4G6isH4nYgbgLiZiCeDMQTgHghEM8D4n1AvB+IlwDxBSDOSHRnmDlrMpgOiJFj8AxXB/NhYiDsFqzK4A2Ug6nlB+ojFTOSgVEAAMdcICY=');
P[20] := DTMFromString('mPwEAAHic42dgYChhQuBiKI4G4l4g7oOyI4C4H4gXALEXEFsB8Vog9gXqjwFiUyBWAWIRINYDYl0gDoBiOyC2h2JHIHYAYmcgnj59MkNqnBuY9o2QBdMBXhYo2D1EDS4HUw/C/ED95GJGCjAaAAC6ohzn');
P[21] := DTMFromString('mKgEAAHic42NgYKhhYmAoAeIMIA4H4gggdgLiYiAuBeJCKD0ViCcAsS8QBwNxJFBvPBAnQLEHELsBsT4QFwGxEhA3AnEiELsCcTkQGwCxiZESQ1CwH4O3jxZDb08bGGdkJgP57mDs4acDxg31lQxVVSVwNfxAveRgRjIxKgAAAzkbig==');
Home := DTMFromString('mwQAAAHic42RgYOBEwkIMEMAOxNxQzI4mB1PLA8VsULzvyCeGtjk3UPDKvU/B+O/fv2DMBFRHCDMSgeEAAH3bFac=');
Door := DTMFromString('m6wAAAHic42ZgYJBjZGDgAOKvQLYMkHaB4h8MECwNZDsDsTEQlwH5eUCcBsWpQFwOxc1IuAaIna2NGezM9RnsTDQZfByNGSK8rBi8nCzBYroaygwWRtoMDpaGDGYGmgz8QPXEYkYSMBIAAH76EUc=');
Dance := DTMFromString('mFQEAAHic42VgYLBjZmCwAWJLZgTbAYidoHwrILaAihlCaRkmBgYpIBYBYiEg5gdiPiAWB2IFIJYDYhUgVgNiAyA2AeJbS/gZKr0uMTxcb8iwtimd4eNGXjA/2GAqw6HpPGA2iC7y3gJmg9TzA91HKmYkA6MAANdLGXI=');
Think := DTMFromString('mFQEAAHic42VgYLBkgmBTILaB0rZAbASlnYHYDojNgNgAqlaBkYFBFYjVgFgDiHWBWB+ITaFYEYjFgFgSiIWAWACICwpKGKIiIxmys7LAdFBwCENSYiKDgpQYQ7iLEcPhicUMDE2rGZh6t4HxydmVDPxA95GKGcnAKAAALGoU9A==');
end;

procedure FrDTM;
begin
FreeDTM(P[0]);
FreeDTM(P[1]);
FreeDTM(P[2]);
FreeDTM(P[3]);
FreeDTM(P[4]);
FreeDTM(P[5]);
FreeDTM(P[6]);
FreeDTM(P[7]);
FreeDTM(P[8]);
FreeDTM(P[9]);
FreeDTM(P[10]);
FreeDTM(P[11]);
FreeDTM(P[12]);
FreeDTM(P[13]);
FreeDTM(P[14]);
FreeDTM(P[15]);
FreeDTM(P[16]);
FreeDTM(P[17]);
FreeDTM(P[18]);
FreeDTM(P[19]);
FreeDTM(P[20]);
FreeDTM(P[21]);
FreeDTM(Home);
FreeDTM(Door);
FreeDTM(Dance);
FreeDTM(Think);
end;

procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
Players[0].Pin := '';
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
end;

procedure SmartSet;
begin
Smart_Server := 80;
Smart_Members := False;
Smart_Signed := True;
Smart_SuperDetail := False;
end;

procedure SettingUp;
begin
Laps := 0;
Errors := 0;
DefDTM;
Wait(1000 + Random(500));
end;

procedure HomeTel;
begin
if FindDTM(Home, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 4, 4, True);
Writeln('Teleporting to starting point!');
end else
begin
Writeln('We should head to our starting point!');
Mouse(747, 186, 4, 4, True);
FindDTM(Home, x, y, MIX1, MIY1, MIX2, MIY2);
Mouse(x, y, 4, 4, True);
Writeln('Teleporting to starting point!');
end;
Wait(12000 + Random(1000));
SetAngle(True);
MakeCompass('n');
end;

procedure Reload;
begin
FrDTM;
DefDTM;
SetAngle(True);
MakeCompass('n');
end;

procedure AntiRandoms;
begin
FindNormalRandoms;
LampSkill := 'cooking';
LevelUp;
end;

procedure RecoverRun;
begin
Writeln('We are Resting for Energy!');
SetRest;
while not RunEnergy(99) do
begin
Antirandoms;
SetRest;
Wait(250 + Random(250));
end;
//if RunEnergy(99) then
SetRun(True);
end;

procedure Complete;
begin
SetAngle(False);
Writeln('We have reach our goal: The Grand Exchange in Varrock!!!');
Mouse(686, 486, 4, 4, True);
if FindDTM(Dance, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 4, 4, True);
Writeln('One more time!');
Writeln('I gonna celebrate!');
Writeln('Oh yeah, all right!');
Writeln('Dont stop the dancing!!!');
Wait(6000 + Random(1000));
end else
Writeln('We have no time to dance!');
Laps := Laps + 1
Writeln('Laps Increased!');
Writeln('Laps: ' + IntToStr(Laps) + ' Laps!');
Writeln('Yes, we finished one lap, starting next lap!');
end;

procedure Incomplete;
begin
SetAngle(False);
Writeln('We have not reach our goal, we got completely lost!!!');
Mouse(686, 486, 4, 4, True);
if FindDTM(Think, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 4, 4, True);
Writeln('We have failed!');
Writeln('We should not give up!');
Writeln('Lets try one more time!');
Writeln('We can do this!!!');
Wait(4000 + Random(1000));
end else
Writeln('We have no time to think!');
Errors := Errors + 1
Writeln('Errors Increased!');
Writeln('Errors: ' + IntToStr(Errors) + ' Errors!');
Writeln('Starting lap over!');
end;

Procedure Refresh;
begin
ExitToLobby;
LogInPlayer;
SetAngle(True);
MakeCompass('n');
end;

procedure Ending;
begin
Writeln('We have exited the loop!');
Writeln('We are logging out!');
Logout;
Writeln('We are freeing stored DTMs!');
FrDTM;
Writeln('We are terminating the script!');
Terminatescript;
end;

procedure FDTMR(PX, P, F: Integer);
begin
if FindDTMRotated(PX, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
Writeln('We have found the Point ' + IntToStr(P) + '!');
Mouse(x, y, 4, 4, True);
AntiRandoms;
FFlag(F);
if not RunEnergy(5) then
RecoverRun;
end;
end;

procedure FDTMRMF(PX, P, F, xx, yy, FF: Integer);
begin
if FindDTMRotated(PX, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
Writeln('We have found the Point ' + IntToStr(P) + '!');
Mouse(x, y, 4, 4, True);
AntiRandoms;
FFlag(F);
if not RunEnergy(4) then
RecoverRun;
Mouse(xx, yy, 4, 4, True);
FFlag(FF);
end;
end;

procedure Gate;
begin
if FindDTMRotated(P[9], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
Writeln('We have found the Point 9!');
Mouse((x+4), y, 3, 3, True);
FFlag(8);
Writeln('There is a door ahead of us, but is it open?');
SetAngle(True);
MakeCompass('n');
Wait(500 + Random(500));
if FindColorTolerance(x, y, 4017757, 243, 62, 269, 171, 15) then
begin
Mouse(x, (y+5), 3, 3, True);
Writeln('We find this interesting!');
end;
Wait(500 + Random(200));
Writeln('The door is opened, we should move on!');
Mouse(620, 38, 4, 4, True);
FFlag(12);
end;
end;

Procedure OnPath;
begin
Writeln('We are still on path!');
Writeln('Attempting to correct course!')
end;

begin
SmartSet;
ClearDebug;
SetupSRL;
DeclarePlayers;
LoginPlayer;
SettingUp;
if FindDTMRotated(P[21], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
Writeln('We are at our start point!');
Writeln('We are preparing to start a new lap!');
end else
begin
Writeln('We are not at our start point!');
HomeTel;
end;
repeat
Reload;
FDTMRMF(P[1], 1, 12, 635, 40, 12);
FDTMRMF(P[2], 2, 12, 608, 66, 12);
FDTMR(P[3], 3, 12);
FDTMRMF(P[4], 4, 12, 627, 60, 8);
FDTMR(P[5], 5, 12);
FDTMRMF(P[6], 6, 12, 591, 66, 12);
FDTMRMF(P[7], 7, 12, 628, 50, 12);
FDTMRMF(P[8], 8, 12, 616, 79, 12);
Gate;
FDTMRMF(P[10], 10, 12, 632, 30, 12);
FDTMRMF(P[11], 11, 12, 634, 54, 12);
FDTMR(P[12], 12, 12);
FDTMRMF(P[13], 13, 12, 591, 50, 12);
FDTMRMF(P[14], 14, 12, 615, 25, 12);
FDTMR(P[15], 15, 12);
FDTMRMF(P[16], 16, 12, 638, 46, 12);
FDTMRMF(P[17], 17, 12, 607, 63, 12);
FDTMR(P[18], 18, 12);
FDTMR(P[19], 19, 12);
if FindDTMRotated(P[20], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
Complete;
HomeTel;
Continue;
end else
begin
if FindDTMRotated(P[19], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[18], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[17], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[16], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[15], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[14], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[13], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[12], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[10], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[9], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[7], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[6], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[5], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[4], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[3], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
end;
Incomplete;
if FindDTMRotated(P[21], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
Writeln('We are at our start point!');
Writeln('We are preparing to start a new lap!');
end else
begin
Writeln('We are not at our start point!');
HomeTel;
end;
Refresh;
until (Laps >= 10) or (Errors >= 20) or (not(LoggedIn))
if (Laps >= 10) then
Writeln('We have sucessfully completed 10 Laps!');
if (Errors >= 20) then
Writeln('We have found 20 Errors, ending script!');
Ending;
end.

DemiseZMI[see note on bottom]
program DemiseZMI;
{$i srl/srl/misc/smart.scar}
{$i srl/srl.scar}
{$i SRL/SRL/misc/paintsmart.scar}

{<<<<<<<<<<<<<<<Demise Runecrafter>>>>>>>>>>>>>>>}
{<<<<<<<<<<<<<<<<<<ZMI Version>>>>>>>>>>>>>>>>>>>}
{<<<<<<<<<<<<<<<<<<<<<V 1.0>>>>>>>>>>>>>>>>>>>>>>}

var
ZMITel, Depo, BankGuy, Guy, Mind, Air, Cosmic, Hole, TimeRan: Integer;
NPC, Dwn, Dark, Green, Rpr, Zaltar, Lava1, Lava2, PrayA, TimeBegan: Integer;
BGPouch, GPouch, LPouch, MPouch, SPouch, Monk, M, x, y, XpHr, A, B, Exp: Integer;
P: Array [0..6] of Integer;
aFound: Extended;

{If you have problems with the walking, it is most likely due to the FindFlag.}
{Dev. has defended his flag and I accept his decision; that being said if the
script doesn't work for you, I am terribly sorry for it and apologize for the
inconvinience. I got a different flag, it works great in my computer, anything
else is out of my control, best wishes if you choose to run my script.}

{DemiseScythe}

procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
Players[0].Pin := '';
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
end;

procedure SmartSet;
begin
Smart_Server := 60;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
end;

Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,131072);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
FreeBitmap(Pic);
end;

procedure SetDTM;
begin
GPouch := DTMFromString('mlwAAAHicY2dgYHBiYmCwAGIHIHYFYl8gdgdiayB+BZR/CsT3oRjEfwfFoX6ODOEBzgxpqUkMXp5uDHGxUQxezpYMcWEeDPxAeVyYEQ+GAgDCDw9S');
BGPouch := DTMFromString('m1gAAAHic42JgYHBigmAbILYCYhcg9gJiX6i4PRC7AfFLoNr7QPwMiN8B8Xso/QqIb0D5T4HY2tyYITzch8HBxpzByc6SwcLUkMFAV5MhMNCNQUqSAyxurK/DwA9USwxmJBIjAAB8pRL9');
LPouch := DTMFromString('mwQAAAHic42RgYMhmYmDIAuJCJgg7BYhTgTgXiBOAuByIXwHVPQDi10D8DopfAPFtIH4JxG+AONDLjiErM43Bz9ebwc/dhiEhwoshLsyDQV1eECjLBMb8QJIQZiQCwwEAokoStQ==');
MPouch := DTMFromString('m1gAAAHic42JgYJjGxMAwBYhnAPEsIJ4KxBOZIOK9QDwfyn4JVHsfiB8yQNi3oPQ7IH4DZX8E4kAvO4a83CwGB3tbhoT4GAZ1eUGGpChvBj93G6AsExzzA0liMCORGAEA2D0VzA==');
SPouch := DTMFromString('mlwAAAHicY2dgYNjPBMFHoPQ2ID4JxAeB+AVQ/iEQvwLi21AahN8DsZ+7DUNSYhxDVEQYg5aSEFCECY75gSQuzIgHQwEAp9wPdg==');
ZMITel := DTMFromString('mbQAAAHicY2VgYAhnYmAIAeJIII4B4kAgZmRkYPgLlGMH0v+BNAuQtra2AhJ9DBcPeTIkJSUxLNnuxcAPlEPHjFgwGAAAoR4KPA==');
Depo := DTMFromString('mbQAAAHicY2VgYJjAyMDQBMT9QDwVig2A2BqIrYDYDIj1QGp85RgcbrsyZFmLM1gocDEkmwoz8AP1o2NGLBgMAFuMCEo=');
BankGuy := DTMFromString('mQwAAAHicY2ZgYOhgQuAQID8AiCOA+P0FRYav3yaDaX4gH4YZkTAQAABpGQkM');
Guy := DTMFromString('mQwAAAHicY2ZgYGgF4m4grgNiSyA2AmJTIG4s92BIivVmCA10ZOAH8mGYEQkDAQDsyAWT');
Mind := DTMFromString('mggAAAHicY2NgYDgNxCeA+BwQnwLiPUB8C4ijgDgIit2BOBSIw4C4obqawc6WA4w/9yjBMT9QDhtmxIEhAADTdw53');
Cosmic := DTMFromString('mggAAAHicY2NgYMhgZGDIg+JcIE6F4plAuYlAPAWIZwPxVCCeB8S5GRkMVy/LoeCYiAgGfqAcNsyIA0MAAPWoD9U=');
NPC := DTMFromString('mlwAAAHicY2dgYJjMxMDQBcS9QDwDiKcC8RQg7gPiJ0D5R0D8HIifAfF9IH4FpV+/fsVw8OkvrJgfKI8LM+LBUAAAeDkdOg==');
Dwn := DTMFromString('mbQAAAHicY2VgYDjLyMBwDogvAfFJRgjfEIh1oTQImwGxjLgIAz8fD4ORjjIDJycnmOYH6kfHjFgwGAAANZoG5g==');
Dark := DTMFromString('mwQAAAHic42RgYFjIyMCwCIinAPFKIJ4PxH1A3AbEDVDMA8RfgWoZGCH4JQME/2aAyCkC8fr+UobtU6sYFFS1GOSU1Rl4eXkxMD9QPSHMSASGAwAGuA7p');
Green := DTMFromString('mWAAAAHicY2FgYGBmZGBgB2JGKL4MxeeB+AYQz50zh2Hu3DkM58+dY1i2dCkDP1APMmZEwyAAAELUC6w=');
Rpr := DTMFromString('mbQAAAHicY2VgYGBjZGBIA9JZQBwIZAcB8RIgXgTEK6D0SiAWkpJjOHHiBArmB+pBx4xYMBgAAKH9Dro=');
Zaltar := DTMFromString('mbQAAAHicY2VgYPgNxDKMDAx/GSD4BhCHA3EiEGcDsR8QRwFxaVUVQ15BFkNqfBSYXZCTxcAPFEfHjFgwGAAAfZoMiQ==');
Lava1 := DTMFromString('mwQAAAHic42RgYKhlYmCoBuJEIK4CYh8gjgTiHiCeBMQZQDwZqK4FiBuBOAOIK4G4BojbgTgNiEuAuDTVkeHbWl8U3FPlx2CpLQjn8wPVEcKMRGA4AADviBeE');
Lava2 := DTMFromString('mlwAAAHicY2dgYHAAYgkgdgZiTiAWA2I1IDYBYkUgVmGAAB4gFgZiESDmB+LMCAuGnnJvhu+rveE0DPND1WDDjHgwFAAASZINXA==');
PrayA := DTMFromString('mbQAAAHicY2VgYNBgZGCQB2JFINYBYm0gvgQUvwDEh4D4CBDvBuLUxESGPYukGCotTRna7a0Ztq9fz8APFEfHjFgwGAAA8cQLmQ==');
Hole := DTMFromString('mrAAAAHic42BgYNBgZGBQBmIdJFoPiBWB2ACIrwPV3IHiS0B8EYgrgDgXivn4+DBwt7MdQ42NBcPJAwcY+IFq8GFGAhgGADJqDHE=');
Monk := DTMFromString('mbQAAAHicY2VgYJjMyMDQC8QzgHghEE8F4plA8flAPA2I50Kxn4sNw+TiQgYrfXUGeytzBk97CwZ+oDg6ZsSCwQAAB+kKlg==');
P[0] := DTMFromString('mlwAAAHicY2dgYOhjYmDwAeJOIJ4JxGuAuAuIC4E4AigfCsQeQGwJxJ5ArAPExkDcmmnDwMrEjILPrFMAY36gPC7MiAdDAQAj2AqF');
P[1] := DTMFromString('mrAAAAHic42BgYFjMxMCwEoiXAXEhEDcBcREQ9wNxDxBHA9V4ArEpEOsAsRwQewCxPRDnA3FjmhUDKxMzw5l1CnAM4sMwP1ANPsxIAMMAABO6DTs=');
P[2] := DTMFromString('mFQEAAHic42VgYFjLBMGzgbgSiIuBuAqIs4E4H4h7gXgCVC4KiFOA2A+ozxKIDYDYHojVgVgKiJWBWBKIFYA4B4hzoTgYiEtjjRmAWuH4xGoZMP50XgmMQWxk+cY0CwZ+IE0qZiQDowAAPe8VUA==');
P[3] := DTMFromString('mwQAAAHic42RgYFjFxMCwCIhnAnEzELdC6TIgLgDiOCDWBapTB2I9IJYBYmEgtgRiUyA2AGIFIJ5e6sHAzsgOxufWqoAxjA8T4weqI4QZicBwAAC9iA1L');
P[4] := DTMFromString('mwQAAAHic42RgYMhhYmAoA+IaIHYFYn8odgfiPCBOB2JhoDpRIBYEYk0gNgJiGyA2AGJTIDYE4hQvVYbTa1Qw8JcLWgwsDOxgzA9URwgzEoHhAACZ+BBN');
P[5] := DTMFromString('mwQAAAHic42RgYKhjYmDoB+IoIPYDYl8gTgXiZCDuBeJWIFYFqjMCYn0gtgViUyjbCoiDgTgaiFvSHRhOr1FBwSwM7GAM4/MD1RHCjERgOAAAN6UReg==');
P[6] := DTMFromString('m1gAAAHic42JgYMhkYmBIA+IUIG4G4m4gbgPiDiAOB+JkII4EYmugWkMgVgBiDyAOB+IgII4H4gggDgHiACDOijFmSArVZ4j21mFgYWVl+HJVg+H0RiUwDcIgMRDmB6olBjMSiREAALqEEkU=');
end;

procedure FrDTM;
begin
FreeDTM(GPouch);
FreeDTM(BGPouch);
FreeDTM(LPouch);
FreeDTM(MPouch);
FreeDTM(SPouch);
FreeDTM(ZMITel);
FreeDTM(Depo);
FreeDTM(BankGuy);
FreeDTM(Guy);
FreeDTM(Mind);
FreeDTM(Cosmic);
FreeDTM(NPC);
FreeDTM(Dwn);
FreeDTM(Dark);
FreeDTM(Green);
FreeDTM(Rpr);
FreeDTM(Zaltar);
FreeDTM(Lava1);
FreeDTM(Lava2);
FreeDTM(PrayA);
FreeDTM(Hole);
FreeDTM(Monk);
FreeDTM(P[0]);
FreeDTM(P[1]);
FreeDTM(P[2]);
FreeDTM(P[3]);
FreeDTM(P[4]);
FreeDTM(P[5]);
FreeDTM(P[6]);
end;

procedure AntiRandoms;
begin
FindNormalRandoms;
LampSkill := 'runecrafting';
LevelUp;
end;

procedure WalkTo(PX, P: Integer);
begin
if FindDTMRotated(PX, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Writeln('We have found the Point ' + IntToStr(P) + '!');
Mouse(x, y, 3, 3, True);
FFlag(6);
end;
end;

procedure ClickOn(PX:Integer; Click: Boolean);
begin
if FindDTMRotated(PX, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, Click);
end;
end;

procedure Witdraw;
begin
Writeln('Withdrawing Pure Essence!');
Mouse(448, 106, 3, 3, False);
ChooseOption('ll');
end;

procedure FillA;
begin
if FindDTM(GPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Filling Giant Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('ill');
end;
Wait(150 + Random(50));
if FindDTM(BGPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Filling Giant Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('ill');
end;
Wait(150 + Random(50));
if FindDTM(SPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Filling Small Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('ill');
end;
end;

procedure FillB;
begin
if FindDTM(LPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Filling Large Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('ill');
end;
if FindDTM(MPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Filling Medium Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('ill');
end;
end;

procedure EmptyA;
begin
if FindDTM(GPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Emptying Giant Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('mpty');
Wait(500 + Random(100));
end;
if FindDTM(BGPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Emptying Giant Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('mpty');
Wait(500 + Random(100));
end;
end;

procedure EmptyB;
begin
if FindDTM(LPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Emptying Large Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('mpty');
Wait(300 + Random(100));
end;
end;

Procedure EmptyC;
begin
if FindDTM(SPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Emptying Small Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('mpty');
Wait(500 + Random(100));
end;
if FindDTM(MPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Emptying Medium Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('mpty');
Wait(300 + Random(100));
end;
end;

procedure IsBroken;
begin
if not FindDTM(LPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Pouches are broken!');
if FindDTM(Depo, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Writeln('Depositing Runes!');
Mouse(x, y, 3, 3, True);
end;
Wait(250 + Random(50));
if FindDTM(Cosmic, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 3, 3, True);
Wait(250 + Random(50));
Mouse(405, 107, 3, 3, True);
Wait(150 + Random(50));
Mouse(405, 107, 3, 3, True);
Wait(150 + Random(50));
end;
repeat
CloseWindow;
Wait(50 + Random(50));
until not BankScreen;
Gametab(tab_Magic);
Wait(250 + Random(50));
if FindDTM(NPC, x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 3, 3, True);
Wait(750 + Random(500));
if FindDTM(Dwn, x, y, 443, 292, 479, 318) then
begin
repeat
Mouse(x, y, 3, 3, True);
Wait(50 + Random(50));
until FindDTM(Dark, x, y, MSX1, MSY1, MSX2, MSY2);
end;
if FindDTM(Dark, x, y, MSX1, MSY1, MSX2, MSY2) then
Mouse(x, y, 3, 3, True);
repeat
Wait(50 + Random(50));
until FindDTM(Green, x, y, 208, 451, 310, 477);
if FindDTM(Green, x, y, 208, 451, 310, 477) then
begin
repeat
Mouse(x, y, 3, 3, True);
Wait(500 + Random(50));
until FindDTM(Rpr, x, y, 78, 410, 439, 433);
end;
if FindDTM(Rpr, x, y, 78, 410, 439, 433) then
Mouse(x, y, 3, 3, True);
Wait(650 + Random(50));
if FindDTM(Green, x, y, 208, 451, 310, 477) then
begin
repeat
Mouse(x, y, 3, 3, True);
Wait(500 + Random(50));
until not FindDTM(Green, x, y, 208, 451, 310, 477);
end;
end else
begin
Writeln('Pouches arent broken!');
end;
end;

procedure Tele;
begin
Writeln('Teleporting!');
GameTab(tab_Magic);
Wait(200 + Random(50));
if FindDTM(ZMITel, x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 3, 3, True);
Wait(1900 + Random(25));
end;

procedure Banking;
begin
if BankScreen then
begin
if FindDTM(Depo, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Writeln('Depositing Runes!');
Mouse(x, y, 3, 3, True);
end;
if FindColorTolerance(x, y, 255, 724, 27, 745, 44, 5) then
begin
if FindDTM(Monk, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Writeln('Beginning Health Recovering');
Mouse(x, y, 3, 3, True);
Wait(75 + Random(25));
Mouse(x, y, 3, 3, True);
Wait(75 + Random(25));
Mouse(x, y, 3, 3, True);
Wait(75 + Random(25));
Mouse(x, y, 3, 3, True);
Wait(75 + Random(25));
end;
repeat
if FindDTM(Monk, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('at');
Wait(100 + Random(50));
end;
until not FindDTM(Monk, x, y, MIX1, MIY1, MIX2, MIY2);
end;
if FindDTM(Depo, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Writeln('Depositing Runes!');
Mouse(x, y, 3, 3, True);
end;
Witdraw;
FillA;
Witdraw;
FillB;
Witdraw;
Mouse(652, 76, 3, 3, True);
FFlag(13);
end else
begin
M := 1;
CloseWindow;
end;
end;

procedure Cave;
begin
WalkTo(P[0], 1);
if FindDTMRotated(P[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
Mouse(723, 69, 4, 4, True);
WalkTo(P[1], 2);
WalkTo(P[2], 3);
WalkTo(P[3], 4);
Wait(50 + Random(50));
WalkTo(P[4], 5);
WalkTo(P[5], 6);
WalkTo(P[6], 7);
if not FindDTMRotated(Zaltar, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
repeat
WalkTo(P[4], 5);
Wait(100 + Random(50));
WalkTo(P[5], 6);
Wait(100 + Random(50));
WalkTo(P[6], 7);
until FindDTMRotated(Zaltar, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound);
end;
if FindDTMRotated(Zaltar, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
Mouse(723, 69, 4, 4, True);
Wait(200 + Random(50));
end;

procedure Altar;
begin
A := Round(GetXPBarTotal);
GameTab(tab_Inv);
Writeln('Crafting Runes!');
Wait(200 + Random(25));
ClickOn(Zaltar, True);
Wait(1300 + Random(25));
EmptyA;
ClickOn(Zaltar, True);
Wait(900 + Random(25));
EmptyB;
ClickOn(Zaltar, True);
Wait(900 + Random(25));
EmptyC;
ClickOn(Zaltar, True);
Wait(250 + Random(25));
B := Round(GetXPBarTotal);
IncEx(Exp, (B-A));
end;

procedure ZBank;
begin
MakeCompass('e');
SetAngle(True);
Wait(250 + Random(50));
if FindDTMRotated(BankGuy, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/30, aFound) then
begin
if not BankScreen then
begin
Writeln('Opening Bank!');
if FindDTMRotated(Guy, x, y, MSX1, MSY2, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
repeat
if FindDTMRotated(Guy, x, y, MSX1, MSY2, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('ank');
Wait(750 + Random(25));
end;
until FindDTM(Mind, x, y, MSX1, MSY1, MSX2, MSY2);
repeat
if FindDTM(Mind, x, y, MSX1, MSY1, MSX2, MSY2) then
Mouse(x, y, 3, 3, True);
Wait(250 + Random(25));
until BankScreen;
end else
begin
Mouse(647, 91, 3, 3, True);
FFlag(4);
repeat
if FindDTMRotated(Guy, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('ank');
Wait(750 + Random(25));
end;
until FindDTM(Mind, x, y, MSX1, MSY1, MSX2, MSY2);
repeat
if FindDTM(Mind, x, y, MSX1, MSY1, MSX2, MSY2) then
Mouse(x, y, 3, 3, True);
Wait(250 + Random(25));
until BankScreen;
end;
end;
end;
end;

procedure Report;
begin
TimeRan := (1+((Getsystemtime - TimeBegan) / 1000));
XpHr := Round((3600 * Exp) / (TimeRan));
Writeln('Time: ' + TimeRunning);
Writeln('Experience Gained: ' + IntToStr(Exp) + ' Xp');
Writeln('Experience per Hour: ' + IntToStr(XpHr) + ' Xp/Hr');
PrintOnSmart(['Demise ZMI V1.0', ' ', 'by DemiseScythe', ' ', 'Time: ' + TimeRunning, ' ', 'Experience Gained: ' + IntToStr(Exp) + ' Xp', ' ', 'Experience per Hour: ' + IntToStr(XpHr) + ' Xp/Hr'], Point(10, 30), 255);
end;

Procedure TBank;
begin
Report;
WalkTo(Lava1, 8);
if FindDTMRotated(Lava2, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Writeln('We have found the Point 9!');
Mouse((x+25), y, 3, 3, True);
FFlag(4);
end;
if FindDTMRotated(Lava2, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Writeln('We have found the Point 9!');
Mouse((x+25), y, 3, 3, True);
FFlag(4);
end;
AntiRandoms;
Wait(600 + Random(25));
if FindColorTolerance(x, y, 255, 737, 64, 761, 82, 5) then
begin
ClickOn(PrayA, True);
Wait(200 + Random(25));
end;
ClickOn(Hole, True);
Wait(450 + Random(25));
ClickOn(Hole, True);
Wait(450 + Random(25));
ClickOn(Hole, True);
Wait(450 + Random(25));
end;

procedure SettingUp;
begin
MouseSpeed := 18;
Exp := 0;
M := 0;
SetDTM;
MakeCompass('e');
SetAngle(True);
AntiRandoms;
ToggleXPBar(True);
ZBank;
IsBroken;
ZBank;
Banking;
Cave;
Altar;
TimeBegan := GetSystemTime;
end;

procedure Ending;
begin
Writeln('We have exited the loop!');
Writeln('We are logging out!');
Logout;
Writeln('We are terminating the script!');
Terminatescript;
end;

begin
SmartSet;
ClearDebug;
SetupSRL;
DeclarePlayers;
LoginPlayer;
SettingUp;
repeat
Tele;
AntiRandoms;
TBank;
AntiRandoms;
ZBank;
IsBroken;
AntiRandoms;
ZBank;
Banking;
if (M = 1) then
begin
M := 0;
Writeln('Attempting to fix!');
Continue;
end;
AntiRandoms;
Cave;
AntiRandoms;
Altar;
AntiRandoms;
until (not(LoggedIn));
FrDTM;
Ending;
end.

DemiseNatures [This script works but it is still beta, needs revision in walking and pouch management.]
program DemiseNatures;
{$i srl/srl/misc/smart.scar}
{$i srl/srl.scar}

{<<<<<<<<<<<<<<<Demise Runecrafter>>>>>>>>>>>>>>>}
{<<<<<<<<<<<<<<<<<Nature Version>>>>>>>>>>>>>>>>>}

var
P: Array [0..7] of Integer;
PureEss, EssLeft, Crafted, Ess, Chest, Fam, Interact, M, x, y: Integer;
GPouch, LPouch, MPouch, SPouch, Confirm, Telep, Pouch, Nature: Integer;
Obby, Entrance, Naltar, Duel, Home, Lubank, Booth, Cwar: Integer;
Xp, pHr, RpHr, XpHr, TimeRan, TimeBegan, Cosmic, Astral, NPC: Integer;
Dwn, Dark, Green, Rpr, SPot, BGPouch, R, Portal: Integer;
aFound: Extended;

procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
Players[0].Pin := '';
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
end;

procedure SmartSet;
begin
Smart_Server := 64;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
end;

procedure SetDTM;
begin
Ess := DTMFromString('mvQEAAHictcxLD8FAFAXgU+IRCWXhRzUhupAGsVK0jVa0XumikUhY1QIbm+78S4Qz7SwtmeTLnXvuzG0C8HIZi6Y0pw3ZtCSTAtmvaCaztZyLfwtyyZd9SQHe3F1krVJDyTJIZZm/2OZZVapRRb4V2YOzJxV4r5Pn2IiPB1jmCF1dx8AwsI8i7MIQ11OMYb8HZzJO34hczNuahm0QpH9818U9SXC7nNOs02pB5f5fU/7g6/kAkY8qjA==');
GPouch := DTMFromString('mlwAAAHicY2dgYHBiYmCwAGIHIHYFYl8gdgdiayB+BZR/CsT3oRjEfwfFoX6ODOEBzgxpqUkMXp5uDHGxUQxezpYMcWEeDPxAeVyYEQ+GAgDCDw9S');
BGPouch := DTMFromString('m1gAAAHic42JgYHBigmAbILYCYhcg9gJiX6i4PRC7AfFLoNr7QPwMiN8B8Xso/QqIb0D5T4HY2tyYITzch8HBxpzByc6SwcLUkMFAV5MhMNCNQUqSAyxurK/DwA9USwxmJBIjAAB8pRL9');
LPouch := DTMFromString('mwQAAAHic42RgYMhmYmDIAuJCJgg7BYhTgTgXiBOAuByIXwHVPQDi10D8DopfAPFtIH4JxG+AONDLjiErM43Bz9ebwc/dhiEhwoshLsyDQV1eECjLBMb8QJIQZiQCwwEAokoStQ==');
MPouch := DTMFromString('m1gAAAHic42JgYJjGxMAwBYhnAPEsIJ4KxBOZIOK9QDwfyn4JVHsfiB8yQNi3oPQ7IH4DZX8E4kAvO4a83CwGB3tbhoT4GAZ1eUGGpChvBj93G6AsExzzA0liMCORGAEA2D0VzA==');
SPouch := DTMFromString('mlwAAAHicY2dgYNjPBMFHoPQ2ID4JxAeB+AVQ/iEQvwLi21AahN8DsZ+7DUNSYhxDVEQYg5aSEFCECY75gSQuzIgHQwEAp9wPdg==');
Fam := DTMFromString('mbQAAAHicY2VgYDjExMBwDIj3AfEeID4CxBOB4l1A3AfEU6C4ecY8hptv7zIkZmcwHDh9DMznB4qjY0YsGAwAcyIQkQ==');
Telep := DTMFromString('mbQAAAHicY2VgYGBmZGA4DaStgPRLIC0FpDcC8QYoXgPEm4H4xIkTDIfcRMEYxAZhfqB6dMyIBYMBAOEMDxs=');
Pouch := DTMFromString('mWAAAAHicY2FgYDjMyMBwHIgPAvF+IM4HimUBcQYQFwPx8SJbhhs1zgxNeeEMJ4vtGPiBYsiYEQ2DAABokQrV');
Nature := DTMFromString('mwQAAAHic42RgYMhlYmDIgeIsIM4D4lQgLoGKVQIxOyMDAxMQ/wOq52GEYA4g5gRiMSDmAmLBahGGptpaMA3DqYkJDPWVlQyOdnYMS+bOZeAH6ieEGYnAcAAAEoQPDQ==');
P[0] := DTMFromString('m1gAAAHic42JgYOhmYmCoZ4LQM4F4IRAvA+I1QBwAxP5AnAHE1kC1ikCsAsRaQGwMxOZAbAXESkAcAMSBQFyercLQ2D2ZoaVvGphunTADjsOjQhk6WtIZ2prSGPiBaonBjERiBAAA0IYW0g==');
P[1] := DTMFromString('mlwAAAHicY2dgYJjOxMCwDIi7gLgNiDOAOBeIlwNxMFA+AIh9gFgLiF2A2A+IjYB4Qq0RQ1vPfDiub9JnqMjTBrP5gfK4MCMeDAUADpcQcA==');
P[2] := DTMFromString('mggAAAHicY2NgYFjNxMCwAYjnA/E8IO4E4lQgDgfKFQFxHhAHALE/lJ462ZBBNVIEjDsnzgXjqlxNBn6gHDbMiANDAABKjA0a');
P[3] := DTMFromString('mbQAAAHicY2VgYFjBxMCwAYgbgLgdiMuB2BsongnEvkBsC8RmQFzYp82wfMEsBtNkEQbXZCmGzkkzGfiB4uiYEQsGAwDyqQrX');
P[4] := DTMFromString('mggAAAHicY2NgYFjOxMBQDcSdQOwKxIVAXATENkC5fCA2AGJLILaH0g192gzLF8xi8MvWZeicNJPBNVkKjPmBctgwIw4MAQDhMgwK');
P[5] := DTMFromString('mggAAAHicY2NgYJjNxMDQA8QdQLwMiGcA8WogNgfKBQCxGxA7AbEXFJdWezIohYiAsVOcHIN/lioY8wPlsGFGHBgCAJDQCnU=');
P[6] := DTMFromString('mggAAAHicY2NgYJjPBMELgHg1EC8G4pVAnAqUiwHiPCBOB+IQIPYF4sxyVQb7eCkG+VABhoYOLYa2XjuGnCo1Bn6gHDbMiANDAAAjlgxP');
P[7] := DTMFromString('mrAAAAHic42BgYJjNxMAwH4gXAPEMIK4H4logLgHiAiDOBKoJB2JfIPYE4kQgTgfiBCD2AeLyYjWG8lw1hv4uXYbyKjWG1FIVBsVIQTjmB6rBhxkJYBgAAKhGDss=');
Obby := DTMFromString('mbQAAAHicY2VgYNBmZGDQA2JVRgjbEIhPA8WPAvEpID4PxGeB+OKBEoYrh8oYHl+oZ7h1ooph2/JUBn6gODpmxILBAADN4w9M');
Entrance := DTMFromString('mWAAAAHicY2FgYIhgZGDIAGJrII4H4h1AsTVAvBeIjwLx3NsJDMHB/gwpKQkMWVmpDMpAMX4kzIiGQQAAFq4Jyw==');
Naltar := DTMFromString('m1gAAAHic42JgYIhiZGCIBGJfIE6DssOAWBGIJwCxCBDPA+LTQLUHgPgUFF8F4m1AvASIVwKxKFRtQUE2Q3JCCgaOybFhiM+yZghJMmdIBLL5gXqIwYxEYgQAAGYtFVs=');
Duel := DTMFromString('mbQAAAHicY2VgYNjLxMCwH4h3APEmIN4OxJWMDAwlQFwNxM1A3AbEwl3iDNwBvAzL+sUZLm+TY9i7WJqBH6gfHTNiwWAAAFo5C/0=');
Home := DTMFromString('mwQAAAHic42RgYOBEwkIMEMAOxNxQzI4mB1PLA8VsULzvyCeGtjk3UPDKvU/B+O/fv2DMBFRHCDMSgeEAAH3bFac=');
Lubank := DTMFromString('mbQAAAHicY2VgYGhnYmDoBuJlQFwCxDVAbMIAwW5AbAfE7kD88T8PGPt7W4FxV7UPAz9QHB0zYsFgAAAAfAss');
Booth := DTMFromString('mrAAAAHic42BgYGBmZGBgAuKfQDYPkP4GpPmA9BcgLQikW4F0OhBnQ3ElFIPE24C4Ii+WQUdLiyEjwpohJdSSoSQvnaGpuhAsDsL8QDX4MCMBDAMAz9kQTQ==');
Cwar := DTMFromString('m1gAAAHic42JgYChmYmBoBOIZQNwCxCVAnATE8UDcCmWvB+JQoNpoIK4C4gogzgHiDCCOBGIbILYFYj8g/v//P4O/nx9Dc89sMDbTFGHwt5FhiHCWY/AuVAPTIPn/QLX8RGBGIjECAACd1hW1');
Chest := DTMFromString('mggAAAHicY2NgYFBjZGBQAGI9IDYAYhUgNgPiBUC5mUC8AYjXAPF6IN4GxEVpEQy3L11kCPWwYFi1eDHD/u3bGZ7cusXAD5TDhhlxYAgAANbqEJ0=');
Interact := DTMFromString('mFQEAAHic42VgYIhjYmAoAuJiIPYH4iAgTgLiTCCOAOJIIM5HkgsF4jmMDAwzgHgeEE+H0jAME5/FCFEHomcD8f8Z8iRjVqD7SMWMZGAUAACVsiNq');
Confirm := DTMFromString('m6wAAAHiclcc7CoAwAIPh1NLJU+jQxc1N6O6rvvDa3qn+oINjDXwkKSV5K1X26QMdAhq0WDChxlDwsWHHifHdEStm9EhXPqd85odPbr79GdM=');
Cosmic := DTMFromString('mggAAAHicY2NgYMhgZGDIg+JcIE6F4plAuYlAPAWIZwPxVCCeB8S5GRkMVy/LoeCYiAgGfqAcNsyIA0MAAPWoD9U=');
Astral := DTMFromString('mQwAAAHicY2ZgYJjKyMAwF4inA/FUIH8aEM8H4rMbzzC01NUxpCclMfAD+TDMiISBAABwQAi/');
NPC := DTMFromString('mlwAAAHicY2dgYJjMxMDQBcS9QDwDiKcC8RQg7gPiJ0D5R0D8HIifAfF9IH4FpV+/fsVw8OkvrJgfKI8LM+LBUAAAeDkdOg==');
Dwn := DTMFromString('mbQAAAHicY2VgYDjLyMBwDogvAfFJRgjfEIh1oTQImwGxjLgIAz8fD4ORjjIDJycnmOYH6kfHjFgwGAAANZoG5g==');
Dark := DTMFromString('mwQAAAHic42RgYFjIyMCwCIinAPFKIJ4PxH1A3AbEDVDMA8RfgWoZGCH4JQME/2aAyCkC8fr+UobtU6sYFFS1GOSU1Rl4eXkxMD9QPSHMSASGAwAGuA7p');
Green := DTMFromString('mWAAAAHicY2FgYGBmZGBgB2JGKL4MxeeB+AYQz50zh2Hu3DkM58+dY1i2dCkDP1APMmZEwyAAAELUC6w=');
Rpr := DTMFromString('mbQAAAHicY2VgYGBjZGBIA9JZQBwIZAcB8RIgXgTEK6D0SiAWkpJjOHHiBArmB+pBx4xYMBgAAKH9Dro=');
SPot := DTMFromString('mbQAAAHicY2VgYLBlhGBzILYBYmcgXgAUn8oAoZdAablLNxkKCkoZ5K/dZZC7cptBfPEKBn6gODpmxILBAAA2aAzD');
Portal := DTMFromString('mggAAAHicY2NgYGBnZGBQA+KXQPZtIDYGsv8BaR4gFgZiISC2B2JHIGYCyjU0VINxU1MNQ25uBkNxcR5Der4tAz9QHhtmxIEhAADcEAxf');
end;

procedure FrDTM;
begin
FreeDTM(Ess);
FreeDTM(GPouch);
FreeDTM(BGPouch);
FreeDTM(LPouch);
FreeDTM(MPouch);
FreeDTM(SPouch);
FreeDTM(Fam);
FreeDTM(Telep);
FreeDTM(Pouch);
FreeDTM(Nature);
FreeDTM(P[0]);
FreeDTM(P[1]);
FreeDTM(P[2]);
FreeDTM(P[3]);
FreeDTM(P[4]);
FreeDTM(P[5]);
FreeDTM(P[6]);
FreeDTM(P[7]);
FreeDTM(Obby);
FreeDTM(Entrance);
FreeDTM(Naltar);
FreeDTM(Duel);
FreeDTM(Home);
FreeDTM(Lubank);
FreeDTM(Booth);
FreeDTM(Cwar);
FreeDTM(Chest);
FreeDTM(Interact);
FreeDTM(Confirm);
FreeDTM(Cosmic);
FreeDTM(Astral);
FreeDTM(NPC);
FreeDTM(Dwn);
FreeDTM(Dark);
FreeDTM(Green);
FreeDTM(Rpr);
FreeDTM(SPot);
FreeDTM(Portal);
end;

procedure AntiRandoms;
begin
FindNormalRandoms;
LampSkill := 'runecrafting';
LevelUp;
end;

procedure WalkTo(PX, P: Integer);
begin
if FindDTMRotated(PX, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Writeln('We have found the Point ' + IntToStr(P) + '!');
Mouse(x, y, 3, 3, True);
FFlag(13);
end;
end;

procedure WalkToE(PX, P: Integer);
begin
if FindDTMRotated(PX, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Writeln('We have found the Point ' + IntToStr(P) + '!');
Mouse((x+4), y, 3, 3, True);
FFlag(13);
end;
end;

procedure ClickOn(PX:Integer; Click: Boolean);
begin
if FindDTMRotated(PX, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, Click);
end;
end;

procedure Witdraw;
begin
if FindDTM(Ess, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Writeln('Withdrawing Pure Essence!');
Mouse(x, y, 3, 3, False);
ChooseOption('ll');
end;
end;

procedure FillA;
begin
if FindDTM(GPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Filling Giant Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('ill');
end;
Wait(150 + Random(50));
if FindDTM(BGPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Filling Giant Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('ill');
end;
Wait(150 + Random(50));
if FindDTM(SPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Filling Small Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('ill');
end;
end;

procedure FillB;
begin
if FindDTM(LPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Filling Large Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('ill');
end;
if FindDTM(MPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Filling Medium Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('ill');
end;
end;

procedure EmptyA;
begin
if FindDTM(GPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Emptying Giant Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('mpty');
Wait(500 + Random(100));
end;
if FindDTM(BGPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Emptying Giant Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('mpty');
Wait(500 + Random(100));
end;
if FindDTM(SPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Emptying Small Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('mpty');
Wait(500 + Random(100));
end;
end;

procedure EmptyB;
begin
if FindDTM(LPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Emptying Large Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('mpty');
Wait(300 + Random(100));
end;
if FindDTM(MPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Emptying Medium Pouch!');
Mouse(x, y, 3, 3, False);
ChooseOption('mpty');
Wait(300 + Random(100));
end;
end;

procedure IsPoints;
begin
if IsChatBoxTextAnyLine('required', 0) then
begin
Writeln('Renewing Summoning!');
if FindColorTolerance(x, y, 8560478, 617, 262, 627, 272, 5) then
begin
Mouse(622, 267, 3, 3, False);
ChooseOption('ll');
end;
if FindDTM(SPot, x, y, MSX1, MSY1, MSX2, MSY2) then
Mouse(x, y, 3, 3, True);
Wait(150 + Random(50));
CloseWindow;
Wait(250 + Random(50));
Gametab(tab_Inv);
Wait(250 + Random(50));
if FindDTM(Pouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('rink');
R := 1;
end;
end;
end;

procedure IsSummoned;
begin
if IsChatBoxTextAnyLine('vanishes', 127) then
begin
Writeln('Renewing Familiar!');
if FindColorTolerance(x, y, 8560478, 617, 262, 627, 272, 5) then
begin
Mouse(622, 267, 3, 3, False);
ChooseOption('ll');
end;
if FindDTM(Pouch, x, y, MSX1, MSY1, MSX2, MSY2) then
Mouse(x, y, 3, 3, True);
Wait(150 + Random(50));
CloseWindow;
Wait(250 + Random(50));
Gametab(tab_Inv);
Wait(250 + Random(50));
if FindDTM(Pouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('ummon');
end;
R := 0;
end;
end;

procedure IsBroken;
begin
if not FindDTM(LPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Pouches are broken!');
Mouse(622, 267, 3, 3, False);
ChooseOption('ll');
if FindDTM(Cosmic, x, y, MSX1, MSY1, MSX2, MSY2) then
Mouse(x, y, 3, 3, True);
Wait(200 + Random(50));
if FindDTM(Astral, x, y, MSX1, MSY1, MSX2, MSY2) then
Mouse(x, y, 3, 3, True);
Wait(100 + Random(100));
repeat
CloseWindow;
Wait(50 + Random(50));
until not BankScreen;
Gametab(tab_Magic);
Wait(50 + Random(50));
if FindDTM(NPC, x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 3, 3, True);
Wait(850 + Random(50));
if FindDTM(Dwn, x, y, 443, 292, 479, 318) then
begin
repeat
Mouse(x, y, 3, 3, True);
Wait(50 + Random(50));
until FindDTM(Dark, x, y, MSX1, MSY1, MSX2, MSY2);
end;
if FindDTM(Dark, x, y, MSX1, MSY1, MSX2, MSY2) then
Mouse(x, y, 3, 3, True);
repeat
Wait(50 + Random(50));
until FindDTM(Green, x, y, 208, 451, 310, 477);
if FindDTM(Green, x, y, 208, 451, 310, 477) then
begin
repeat
Mouse(x, y, 3, 3, True);
Wait(500 + Random(50));
until FindDTM(Rpr, x, y, 78, 410, 439, 433);
end;
if FindDTM(Rpr, x, y, 78, 410, 439, 433) then
Mouse(x, y, 3, 3, True);
Wait(650 + Random(50));
if FindDTM(Green, x, y, 208, 451, 310, 477) then
begin
repeat
Mouse(x, y, 3, 3, True);
Wait(500 + Random(50));
until not FindDTM(Green, x, y, 208, 451, 310, 477);
end;
end else
begin
Writeln('Pouches arent broken!');
end;
end;

procedure Tele;
begin
Writeln('Teleporting!');
repeat
if FindDTM(Fam, x, y, 696, 131, 718, 154) then
Mouse(x, y, 3, 3, True);
Wait(100 + Random(100));
IsSummoned;
until FindColorTolerance(x, y, 2169874, 181, 417, 327, 446, 5);
if FindDTM(Telep, x, y, 183, 422, 330, 443) then
Mouse(x, y, 3, 3, True);
Wait(850 + Random(50));
end;

procedure LBanking;
begin
if IsChatBoxTextAnyLine('crumbles', 0) then
begin
if FindColorTolerance(x, y, 8560478, 617, 262, 627, 272, 5) then
begin
Mouse(622, 267, 3, 3, False);
ChooseOption('ll');
end;
Writeln('Equiping Ring!');
if FindDTM(Duel, x, y, MSX1, MSY1, MSX2, MSY2) then
Mouse(x, y, 3, 3, True);
Wait(600 + Random(100));
if FindDTM(Duel, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
Wait(200 + Random(100));
ChooseOption('ear');
end;
end;
end;

procedure Banking;
begin
Wait(100 + Random(50));
LBanking;
if FindDTM(Nature, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Depositing Natures!');
Crafted := Crafted + GetAmount(x, y);
Mouse(x, y, 3, 3, False);
ChooseOption('ll');
end;
if FindDTM(Pouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('eposit');
end;
if FindDTM(Duel, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('eposit');
end;
if FindDTM(SPot, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('eposit');
end;
EssLeft := PureEss - Crafted;
if (EssLeft >= 100) then
begin
Witdraw;
FillA;
Witdraw;
FillB;
Witdraw;
Tele;
end else
begin
//Ge;
end;
end;

procedure Jungle;
begin
MakeCompass('n');
SetAngle(True);
Mouse(667, 59, 3, 3, True);
FFlag(13);
Wait(350 + Random(50));
WalkTo(P[1], 2);
Wait(350 + Random(50));
WalkTo(P[2], 3);
Wait(250 + Random(50));
WalkTo(P[3], 4);
Wait(350 + Random(50));
WalkTo(P[4], 5);
Mouse(x, (y-5), 3, 3, True);
FFlag(13);
Wait(350 + Random(50));
WalkTo(P[5], 6);
Wait(250 + Random(50));
WalkTo(P[6], 7);
Wait(250 + Random(50));
WalkToE(P[7], 8);
Wait(450 + Random(50));
if FindDTMRotated(Entrance, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Wait(950 + Random(50));
repeat
ClickOn(Entrance, True);
Wait(950 + Random(50));
until FindDTMRotated(Portal, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound);
end else
begin
repeat
if not FindDTMRotated(Entrance, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
AntiRandoms;
Wait(350 + Random(50));
WalkTo(P[1], 2);
Wait(350 + Random(50));
WalkTo(P[2], 3);
Wait(250 + Random(50));
WalkTo(P[3], 4);
Wait(350 + Random(50));
WalkTo(P[4], 5);
Mouse(x, (y-5), 3, 3, True);
FFlag(13);
Wait(350 + Random(50));
WalkTo(P[5], 6);
Wait(250 + Random(50));
WalkTo(P[6], 7);
Wait(250 + Random(50));
WalkToE(P[7], 8);
Wait(450 + Random(50));
end;
until FindDTMRotated(Entrance, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound);
Wait(300 + Random(100));
if FindDTMRotated(Entrance, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Wait(950 + Random(50));
repeat
ClickOn(Entrance, True);
Wait(950 + Random(50));
until FindDTMRotated(Portal, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound);
end;
end;
end;

procedure Altar;
begin
GameTab(tab_Inv);
Writeln('Crafting Runes!');
MakeCompass('n');
SetAngle(True);
if FindDTMRotated(Portal, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
ClickOn(Portal, True);
Wait(350 + Random(100));
end else
begin
Mouse(263, 18, 3, 3, True);
FFlag(8);
Wait(350 + Random(100));
end;
repeat
ClickOn(Naltar, True);
Wait(550 + Random(50));
until not FindColorTolerance(x, y, 6908270, 641, 246, 680, 279, 5);
Wait(400 + Random(100));
GameTab(tab_Inv);
Wait(100 + Random(100));
EmptyA;
ClickOn(Naltar, True);
repeat
Wait(750 + Random(50));
ClickOn(Naltar, True);
until not FindColorTolerance(x, y, 6908270, 641, 246, 680, 279, 5);
Wait(400 + Random(100));
GameTab(tab_Inv);
Wait(100 + Random(100));
EmptyB;
ClickOn(Naltar, True);
repeat
Wait(750 + Random(50));
ClickOn(Naltar, True);
until not FindColorTolerance(x, y, 6908270, 641, 246, 680, 279, 5);
end;

procedure LBank;
begin
MakeCompass('n');
SetAngle(True);
if not FindDTMRotated(Lubank, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/30, aFound) then
begin
GameTab(tab_Magic);
if FindDTM(Home, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 4, 4, True);
Writeln('Teleporting to Lunar Island!');
Wait(12000 + Random(1000));
end;
end;
if not BankScreen then
begin
if FindDTMRotated(Booth, x, y, 226, 32, 282, 161, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, False);
Wait(300 + Random(200));
ChooseOption('quick');
Writeln('Opening Booth!');
Wait(1100 + Random(200));
end;
end;
if not BankScreen then
repeat
MakeCompass('n');
SetAngle(True);
if FindDTMRotated(Lubank, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('Walking to Booth!');
Mouse((x+4), (y+10), 3, 3, True);
FFlag(13);
end;
MakeCompass('n');
SetAngle(True);
if FindDTMRotated(Booth, x, y, 226, 32, 282, 161, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, False);
Wait(300 + Random(200));
ChooseOption('quick');
Writeln('Opening Booth!');
Wait(1100 + Random(200));
end;
Wait(800 + Random(200));
until BankScreen or (not(LoggedIn));
end;

procedure Cwars;
begin
MakeCompass('n');
SetAngle(True);
if not BankScreen then
begin
if FindDTMRotated(Chest, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, True);
Writeln('Opening Chest!');
Wait(1300 + Random(150));
end;
end;
if not BankScreen then
begin
if FindDTMRotated(Cwar, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse((x+7), (y+5), 2, 2, True);
FFlag(13);
Writeln('Walking to Chest!');
MakeCompass('n');
SetAngle(True);
if FindDTMRotated(Chest, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, True);
Writeln('Opening Chest!');
Wait(1300 + Random(150));
end;
end else
begin
GameTab(tab_Equip);
Wait(250 + Random(50));
if FindDTM(Duel, x, y, 680, 367, 714, 401) then
begin
M := 1;
Writeln('Teleporting to Castle Wars!');
Mouse(x, y, 3, 3, False);
ChooseOption('astle');
Wait(2500 + Random(50));
if not BankScreen then
repeat
if FindDTMRotated(Cwar, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse((x+7), (y+5), 2, 2, True);
FFlag(13);
Writeln('Walking to Chest!');
MakeCompass('n');
SetAngle(True);
if FindDTMRotated(Chest, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, True);
Writeln('Opening Chest!');
Wait(1300 + Random(150));
end;
end;
until BankScreen or (not(LoggedIn));
end else
begin
M := 0;
LBank;
end;
end;
end;
end;

procedure InteractFam;
begin
CloseWindow;
Writeln('Setting up Familiar Options!');
if FindDTM(Fam, x, y, 696, 131, 718, 154) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('elect');
Wait(1500 + Random(200));
end;
if FindDTM(Interact, x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(570, y, 3, 3, True);
if FindDTM(Confirm, x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(642, y, 3, 3, True);
end;

procedure Report;
begin
TimeRan := (1+((Getsystemtime - TimeBegan) / 1000));
Xp := Crafted * 9 Div 2;
XpHr := (3600 * Xp) / (TimeRan);
RpHr := (3600 * (Crafted)) / (TimeRan);
Writeln('Time: ' + TimeRunning);
Writeln('Experience Gained: ' + IntToStr(Xp) + ' Xp');
Writeln('Experience per Hour: ' + IntToStr(XpHr) + ' Xp/Hr');
Writeln('Natures Crafted: ' + IntToStr(Crafted) + ' Nature Runes');
Writeln('Runes Crafted per Hour: ' + IntToStr(RpHr) + ' Nature Runes/Hr');
end;

procedure SettingUp;
begin
R := 0;
M := 1;
Crafted := 0;
PureEss := 200000;
EssLeft := PureEss - Crafted;
{InteractFam;}
Cwars;
TimeBegan := GetSystemTime;
end;

procedure Ending;
begin
Writeln('We have exited the loop!');
Writeln('We are logging out!');
Logout;
Writeln('We are terminating the script!');
Terminatescript;
end;

begin
SmartSet;
ClearDebug;
SetupSRL;
DeclarePlayers;
LoginPlayer;
MouseSpeed := 18;
SetDTM;
AntiRandoms;
SettingUp;
repeat
IsSummoned;
if (M = 1) then
Cwars;
if (M = 0) then
begin
LBank;
end;
IsPoints;
if (M = 1) then
Cwars;
if (M = 0) then
begin
LBank;
end;
if (R = 1) then
begin
IsSummoned;
if (M = 1) then
Cwars;
if (M = 0) then
begin
LBank;
end;
end;
IsBroken;
if (M = 1) then
Cwars;
if (M = 0) then
begin
LBank;
end;
Banking;
Report;
Jungle;
Altar;
AntiRandoms;
Cwars;
AntiRandoms;
until (not(LoggedIn))
FrDTM;
Ending;
end.

DemiseZMI was tuned up with a different flag developed by Home.
{*******************************************************************************
function FindFlag(var X, Y: Integer): Boolean;
By: Home
Description: Returns true if the flag is found.
*******************************************************************************}
function FindFlag(var X, Y: Integer): Boolean;
var
KMTarget, ITarget, I, Hi, Map, W, H: Integer;
TPA: TPointArray;
begin
Result := False;
Map := BitmapFromString(MMX2 - MMX1, MMY2 - MMY1, '');
CopyClientToBitmap(Map, MMX1, MMY1, MMX2, MMY2);
KMTarget := GetKeyMouseTarget;
ITarget := GetImageTarget;
SetTargetBitmap(Map);
GetBitmapSize(Map, W, H);
FindColors(TPA, 65536, 0, 0, W - 1, H -1);
FilterPointsDist(TPA, 0, 75.5, W / 2, H / 2);
Hi := Length(TPA);
for I := 0 to Hi - 1 do
if ((FastGetPixel(Map, TPA[I].X - 1, TPA[I].Y - 1) - FastGetPixel(Map, TPA[I].X, TPA[I].Y - 1)) = 6381921) then
begin
Result := True;
X := TPA[I].X + MMX1;
Y := TPA[I].Y + MMY1;
Break;
end;
FreeTarget(GetImageTarget);
FreeBitmap(Map);
SetKeyMouseTarget(KMTarget);
SetImageTarget(ITarget);
end;
This flag should make my ZMI work near flawlessly, not just because a flag is faster is it more accurate. If ZMI is put to test, would appreciate it if you used this flag before saying it walks akwardly and misses points. I got nothing against the current flag, but just don't think it is the most appropiate for my script.

PatDuffy

2011-12-28 22:53:01

Please copy/paste the code of your script into the app using
 tags, it makes it easier for us to read it.

Daniel

2011-12-28 22:54:16

Please post your scripts in this application in separate [simba] tags, thanks :)

PatDuffy

2011-12-28 23:16:20

Looking over your scripts, I see you like to use DTM's and DDTM's…a lot, perhaps too much. I also noticed you did not include any TPA's for things that might have been better using a TPA for instead of a DTM, such as an altar.

Also, you did not use AntiRandoms correctly, you have it as

FindNormalRandoms;

when it should be

    if FindNormalRandoms then
if Not LoggedIn then
Exit;

FindNormalRandoms is a function that returns a boolean, not a procedure. In FindNormalRandoms it will log you out if you fail, that's why the if not LoggedIn is needed.

Also, you have a large amount of procedures, and almost no functions. While that isn't exactly a condemning factor, I find it harder to create failsafes using only procedures which brings me to my next point;

You have almost no failsafes that I can see. Take this bit of code for instance:

procedure Banking;
begin
Wait(100 + Random(50));
LBanking;
if FindDTM(Nature, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Depositing Natures!');
Crafted := Crafted + GetAmount(x, y);
Mouse(x, y, 3, 3, False);
ChooseOption('ll');
end;
if FindDTM(Pouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('eposit');
end;
if FindDTM(Duel, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('eposit');
end;
if FindDTM(SPot, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('eposit');
end;
EssLeft := PureEss - Crafted;
if (EssLeft >= 100) then
begin
Witdraw;
FillA;
Witdraw;
FillB;
Witdraw;
Tele;
end else
begin
//Ge;
end;
end;

I see no checks to see if something went wrong while banking. Usually, when I script, I have a scenerio set for almost every if-then statement if something go wrongs to attempt to fix the problem. Look at this snippet from my script in Dev.

if IsUpText('reak') then
begin
Mouse(x,y,0,0,true);
Result:=True;
FreeDTM(Tab);
Exit;
end else
begin
Writeln('Could not find tele-tab');
FreeDTM(Tab);
Result:=False;
end;

I use UpText to check if the item is there, if it is I left-click and return a true result, if the uptext is not there, it means I have not been able to find the tele-tab using DTM's and will return a False result. That way, later in the script when I call upon the function using this, I can have a scenario set for a true result and a false result.

There are other things that I would like to mention aswell, such as lengthy code. There are simpler ways to do some of the things you have done, but I won't go into detail on that since I am of the view that if it works don't touch it :p

Overall I think your on the right track, but your not quite ready for Members yet. I would like to see some TPA's and custom functions in the future. Also, although you are new to the community, I feel you are a positive influence.

DemiseScythe

2011-12-28 23:29:24

You have almost no failsafes that I can see. Take this bit of code for instance:


procedure Banking;
begin
Wait(100 + Random(50));
LBanking;
if FindDTM(Nature, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Depositing Natures!');
Crafted := Crafted + GetAmount(x, y);
Mouse(x, y, 3, 3, False);
ChooseOption('ll');
end;
if FindDTM(Pouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('eposit');
end;
if FindDTM(Duel, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('eposit');
end;
if FindDTM(SPot, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, False);
ChooseOption('eposit');
end;
EssLeft := PureEss - Crafted;
if (EssLeft >= 100) then
begin
Witdraw;
FillA;
Witdraw;
FillB;
Witdraw;
Tele;
end else
begin
//Ge;
end;
end;

There is no failsafes for this part because this part does not get activated until procedure Cwars has successfully completed.

procedure Cwars;
begin
MakeCompass('n');
SetAngle(True);
if not BankScreen then
begin
if FindDTMRotated(Chest, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, True);
Writeln('Opening Chest!');
Wait(1300 + Random(150));
end;
end;
if not BankScreen then
begin
if FindDTMRotated(Cwar, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse((x+7), (y+5), 2, 2, True);
FFlag(13);
Writeln('Walking to Chest!');
MakeCompass('n');
SetAngle(True);
if FindDTMRotated(Chest, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, True);
Writeln('Opening Chest!');
Wait(1300 + Random(150));
end;
end else
begin
GameTab(tab_Equip);
Wait(250 + Random(50));
if FindDTM(Duel, x, y, 680, 367, 714, 401) then
begin
M := 1;
Writeln('Teleporting to Castle Wars!');
Mouse(x, y, 3, 3, False);
ChooseOption('astle');
Wait(2500 + Random(50));
if not BankScreen then
repeat
if FindDTMRotated(Cwar, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse((x+7), (y+5), 2, 2, True);
FFlag(13);
Writeln('Walking to Chest!');
MakeCompass('n');
SetAngle(True);
if FindDTMRotated(Chest, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(x, y, 3, 3, True);
Writeln('Opening Chest!');
Wait(1300 + Random(150));
end;
end;
until BankScreen or (not(LoggedIn));
end else
begin
M := 0;
LBank;
end;
end;
end;
end;

Banking is not an actual procedure, I just took part of my main loop and made a procedure out of it to shorten up the code around my main loop to make the main loop and the rest of the script easier to read. All of the failsafes for the Banking procedure are in the Cwars procedure which takes place beforehand and repeats until its logged out or has opened the bank. Regardless of where you are in RS, you will make it to the bank because it either teleports with a duel ring or home teles and sucessfully opens Lunar Bank. These things might be hard to see from just the code but the failsafes are there and this ran for nearly 6 hours.


RS updated and broke my proggy, besides this is still pre V1.0, just showing it because it is a bit more complex than my DemiseZMI.

Main

2011-12-28 23:36:56

Very nice standards:P Very much keep it up!!

If you were to fix the problems mentioned above, you should be a great scripter one day:P

PatDuffy

2011-12-28 23:37:06

Very well, you have explained the part I pointed out.

I still am firm on my choice however, as there are no TPA's and at this point, I hold that as a requirement for a member's app. Also, there is not enough versatility. A script working for a long time is great, don't get me wrong, but the purpose of a member's app is to show off your skills in every aspect possible.

Claymore

2011-12-28 23:40:45

While there is no arguing the reliability and accuracy of your script, it lacks variety of functions and procedures. BUT i am hoping as you become a SRL Member you will take your time to learn other methods of creating scripts.

I give it a yes.

Harry

2011-12-28 23:43:03

Your name is going to confuse me with http://villavu.com/forum/member.php?u=4930 if you get a yellow name! :p

I vote yes. Obviously shows enough knowledge. Also is in IRC a lot, and seems to have learned pretty fast.

Kyle Undefined

2011-12-28 23:53:08

I'm voting yes.

I've tested your scripts, before the Flag change, and it worked flawless. The code is clean and very nice with all the DTMs. You're a fast learner and know what you're doing so far.

I would like to see you grow your knowledge of the include in the future, expanding to TPAs and the alike.

PatDuffy

2011-12-28 23:57:10

Awh, I feel like a jerk now :(

But I'm standing by my choice.

I do like your scripts and you clearly know what you are doing, but I want to see you know how to handle TPA's before I would vote Yes. If you know how to understand those, the doors are wide open for more difficult and interesting challenges.

superuser

2011-12-29 00:00:08

 FDTMRMF(P[1], 1, 12, 635, 40, 12);
FDTMRMF(P[2], 2, 12, 608, 66, 12);
FDTMR(P[3], 3, 12);
FDTMRMF(P[4], 4, 12, 627, 60, 8);
FDTMR(P[5], 5, 12);
FDTMRMF(P[6], 6, 12, 591, 66, 12);
FDTMRMF(P[7], 7, 12, 628, 50, 12);
FDTMRMF(P[8], 8, 12, 616, 79, 12);
Gate;
FDTMRMF(P[10], 10, 12, 632, 30, 12);
FDTMRMF(P[11], 11, 12, 634, 54, 12);
FDTMR(P[12], 12, 12);
FDTMRMF(P[13], 13, 12, 591, 50, 12);
FDTMRMF(P[14], 14, 12, 615, 25, 12);
FDTMR(P[15], 15, 12);
FDTMRMF(P[16], 16, 12, 638, 46, 12);
FDTMRMF(P[17], 17, 12, 607, 63, 12);
FDTMR(P[18], 18, 12);
FDTMR(P[19], 19, 12);
if FindDTMRotated(P[20], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
Complete;
HomeTel;
Continue;
end else
begin
if FindDTMRotated(P[19], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[18], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[17], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[16], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[15], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[14], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[13], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[12], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[10], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[9], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;
if FindDTMRotated(P[7], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
OnPath;
Continue;
end;

That's a bit weird. Why not simply something like

for i := 0 to High(p) do begin // or High(p) downto 0 ...
if (not FindDTMRotated(p[i], ...)) then begin
...

break;
end;

case i of
0..19:
OnPath();

break;

20:
Complete();
Hometel();

end;

...
end;

I really don't find your code well organized nor your standards good. However, the scripts works nicely tho and I can sense a lot healthy learning spirit..

EDIT:

Small error in code :)

Daniel

2011-12-29 00:35:42

Lol superuser, I found that fragment and since I'm quite sick, scrolling through it made me rather dizzy.

Nonetheless, you earned a yes from me :) Good luck! :)

Bam Bam

2011-12-29 02:14:33

From: PatDuffy
Looking over your scripts, I see you like to use DTM's and DDTM's…a lot, perhaps too much. I also noticed you did not include any TPA's for things that might have been better using a TPA for instead of a DTM, such as an altar.

Also, you did not use AntiRandoms correctly, you have it as

FindNormalRandoms;

when it should be


if FindNormalRandoms then
if Not LoggedIn then
Exit;


I disagree on the grounds that there are other ways your player can become logged out which will also result in the script glitching. Many, many scripts function perfectly and they don't have that. The script should be checking to see if the user is still loggedin before continuing loops anyways.

Regardless Exit; will only force the script to break out of the procedure/function it's executing whereas you would probably want terminatescript; or break;.

Bottom line, you can get away with using FindNormalRandoms; by itself without issue if your script goes to the next player when you discover you're logged out.

-Bam Bam

Edit: I vote yes for effort ;) This shows lots of effort in all the right directions.

Sabzi

2011-12-29 06:47:55

Yes.

Why not make all the dtm inside an array? Then you could make constants that would hold the position of the certain item inside that array. That way when it's needed you can just loop through it(at the freeing for example).
Maybe it won't make it easier to handle them at other parts though, didn't really dig into your script that deep.

Silent

2012-01-01 05:17:06

I vote yes, for reasons stated above by others.

I've also tested your death-walk script that I don't think you posted here, it's awesome.

WT-Fakawi

2012-01-01 06:54:01

Yes. Love the FDTMRMF's :)

hamster31

2012-01-03 00:11:24

Im voting yes based on the fact ur a quick learner. You are amazing with DTM's and i learned a lot from your scripts. For that i thank you.

Markus

2012-01-03 05:55:25

Voted no. Please, make your script a bit resilient! I see a near incomprehensible walking loop in your RS racer. In none of the scripts are any good checks to see if you are actually logged in. There are only procedures, no functions at all! Commenting of script code: nil. Multiplayer support: absent.
For example, the cave procedure (of the ZMI) will just happily spamclick the minimap, and the script won't have a clue if it misclicked or it went the wrong way or whatever.
lol @ poster who said 'code is clean'.

DemiseScythe

2012-01-03 10:14:58

From: Markus
Voted no. Please, make your script a bit resilient! I see a near incomprehensible walking loop in your RS racer. In none of the scripts are any good checks to see if you are actually logged in. There are only procedures, no functions at all! Commenting of script code: nil. Multiplayer support: absent.
For example, the cave procedure (of the ZMI) will just happily spamclick the minimap, and the script won't have a clue if it misclicked or it went the wrong way or whatever.
lol @ poster who said 'code is clean'.


I am not using coordinates to blindly walk in the cave, it clicks on points it finds with DTM. If it doesn't find a DTM it doesn't click at all on the minimap, I frankly don't see your point. If my walking happily spamclicks the minimap then SPS happily spamclicks the minimap because they do exactly the same thing, just different methods. I would like you to test my script and show me where my script doesn't have a clue if it misclicked or it went the wrong way or whatever.

I know my code is not the cleanest but my methods are evolving and the scripts posted above are of the time I made the app, I got 2 new scripts and the ZMI has received updates to make it work even better. As for my DTM not having a clue where they are, this is flawless walking:

program DemiseDeathWalk;
{$i srl/srl/misc/smart.scar}
{$i srl/srl.scar}

{<<<<<<<<<<<<<<<<Demise Deathwalk>>>>>>>>>>>>>>>>}

procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
Players[0].Pin := '';
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
end;

procedure SmartSet;
begin
Smart_Server := 64;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
end;

procedure DeathWalk;
var
xz, yz: Integer;
Q: Array [0..10] of Integer;
K: Array [0..2] of Integer;
aFound: Extended;
begin
Q[0] := DTMFromString('mrAAAAHic42BgYJjGxMDQCMQJQJwHxClAnAHE84A4EojlgWpsgdgeiGWAWAOI/YA4AIgVgTg8MIShu7mVYVJXD5jt7qzDYG2kxeACpEF8fqAafJiRAIYBAA2ADg4=');
Q[1] := DTMFromString('mggAAAHicY2NgYHAAYicgFmKAAFYgNgRiJiBOAGJtIBYGYk6ofFK8C4OTtyaDupYKg6uTIUNodAiDtZ0BAz9QDhtmxIEhAADk3gZv');
Q[2] := DTMFromString('mEQIAAHicvc0hC8JgAITh07AqYloy6C8YqFgsuuoMDjRvujSzbKJ1KIhBxGS1LG34/3wHXzXOg6ccHGdLejelIwp8jCdOSHDFBSVyvEyXIoKHCQZwMMQUC4Q4oM+PjxFmWGKDEC4cdLHFHhluuOOBs+mrzRxj9GCjgzbWK0+7OJBlqTYt1a/xBz/zBS0rGTg=');
Q[3] := DTMFromString('mOwIAAHicvc2xCwEBFMfx3/EHyGKxUQalxEKKW5TrCJckm4FwGQ23yCJF6WYl+Qf4F32HN9vcq0/vvXq9X17SIyV18MIHb9xxtvmJm+1X7DGBhyaqqJkp+ta7uOCImf0vkHdCGw0EGMDDAgfEiLBEFjmUUEcPc6zs3kcFLRRRhmt3u3CrcLPWeDiSo/RfZchLipOgH/UF2/YZmg==');
Q[4] := DTMFromString('mOwIAAHicvc8hC8JgFIXhO+0bWAwWly1LGhfWRbbxaRgTwbKgYwiGCRYHS5ahrCxZLJb9w73Cl23uwgOnHA53IiKHgUiGIyL4OOOGGi980GpvNLgjR6J7DhbwsEKIAHukKGCxl2GmjWFihCkceFBIcEWJCg88dV5iDhsuYpxwQY41dttYNkqJIcO/+/7VF6NHP64DlNkZew==');
Q[5] := DTMFromString('mpAIAAHicxc4tC8JgFIbho/sBGsSyYhKDggg6sLxlSVAG4kczDBZmMwwERfzAMQSLFqMggkX0H3qH043vgSs8h+fAqYjIIy9yxAYHjNCDQQctNNFGFz4C7U0xwRB9rLDGDS988cEbT9xxRYY9EtT5oYEyiijBRQ0efIwRIcEOZ2wxw0B7Vc0BjO6M5hBLvT3hghQLzONQHEesKYhdOcv+zQ9aQhyL');
Q[6] := DTMFromString('mjwIAAHicxc8hC8JwEMbh28A8FMQkSxYF04qwYraMDQwWmQhzsDUNW1zXYdjKyhCMfgC/nT/hgs34P3jCG+5ezhWRty3yQo87KpxxxBYbrBEgwg4JClzRqQYtnnigxgWx7oXw9N43p9jTv4SLMUZwMMQEU8ywgI8I8x8rBIiRokCFG1pVo0SCEzIckOeZWPbACEf/NMEy6M98ANJvG+A=');
Q[7] := DTMFromString('mDQMAAHiczc49C0EBFMbx45ZZwiRZMGKwYJMwyEvKTVK3KKEbGZhuhrvIoJgoshikDAbfz1+dD2C8p3516jk9naSIfAyRO/bYwIaFFproooIcssiggDLq6GEKRzuueOCtvRfNfjcd1GBiiCVcHHDDC08M+KsPGyss1AgmSmigDQszrOFihyPOOOm+haN9VeQRRwJpRBFBCEGEEUNK8yLmk7H4xfCUAH95jc+D/pov2PwhtA==');
Q[8] := DTMFromString('mjwIAAHicxc0ha0JhGAXgT/0BKhgEQaMICwaXhBWxGRQWhiAsqBiurKhhJm0GFYTBMLlh0ubC/p7P4PbF+8JT3sPhVEIIu3QIZ04c+ObCnnfGvNJnQMSSDZ98ceWHX25xp0uDKbO490KHJx7/9uyvmTPkmRYP1GhSp0SOPAWKlKnGeZs+ET1GTFiw58gHW1bx/20ahVTIJCJrPympBP1zd/VoHQQ=');
Q[9] := DTMFromString('mzgIAAHiczc69CwEBGMfx5/gDbBZlEMqElJOBupTlFi+DUkqynpcYRLId7koUNgarUf4+3/LsRvfUp55+z9PTkxCRd0jkAB8uFtjhggeeeOl8gxm66KCNofY2qjCRQx4FlDSvo4E+pvBwwwl3DPilhRpMJBFFDClkUYaDJVbowUYRacR1P6OZhaZ8b4+xxhZHXNUZe8xRwWTkiCHhv4vwSxAYAfG7PnS8Hjc=');
Q[10] := DTMFromString('mpAIAAHicxc6xCwFxGMbxl7qMihuUgcWmrkuWG5SIMmIwGO46udIlJkkZlMFgoa6bKZuSv9D36t2Nv7c+9dbz1PvWReSbF3nihhdSXHDGFnOMMEQfE4SaZZ07Hnhrr4MWPAwwRYQDEr3xwQ5j9PihDQ9LBJihC0dleRM1VFBGCTaqaMCFj5Xa44QrUiS6H7HGBjGihS8FyzKmyA8m5Qz7Nz9t6x4V');
K[0] := DTMFromString('mWAAAAHicY2FgYPgIxKeAWJyRgUEEiG2BbBEg5gfiVCDm5eVlKCrIZWiqr2GIDPQFiyNjRjQMAgB+Dgbc');
K[1] := DTMFromString('mlwAAAHicY2dgYLgGxPuA+D2UfQWIZwGxPCMDgzgQswExCxBzAfFboLgskJYGYj5eXob2hlKG1voShpvn9jBMm9wEFgNhfqA6XJgRD4YCAJYuDi8=');
K[2] := DTMFromString('mrAAAAHic42BgYGBlZGBgAeJfQDY3kGZGw6pALAfEEkAsxghRwwDE34DUayD28XRk4OPjBdN+3s4MoYGeDHFRgQwpCeEMNeXZDPxANfgwIwEMAwBPpgsv');
MouseSpeed := 18;
MakeCompass('e');
SetAngle(True);
Mouse(626, 60, 3, 3, True);
FFlag(6);
Writeln('Beginning Deathwalk by DemiseScythe');
if FindDTMRotated(Q[0], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
FFlag(6);
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[1], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(Q[1], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse((xz+10), (yz+4), 3, 3, True);
FFlag(6);
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(K[0], xz, yz, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(K[0], xz, yz, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
if FindDTMRotated(K[0], xz, yz, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
end;
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(K[1], xz, yz, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(K[1], xz, yz, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
if FindDTMRotated(K[1], xz, yz, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
end;
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(K[2], xz, yz, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(K[2], xz, yz, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
if FindDTMRotated(K[2], xz, yz, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
end;
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[2], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(Q[2], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
FFlag(6);
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[3], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(Q[3], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
FFlag(6);
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[4], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(Q[4], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
FFlag(6);
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[5], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(Q[5], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
FFlag(6);
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[6], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
Wait(500 + Random(25));
if FindDTMRotated(Q[6], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
FFlag(6);
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[7], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(Q[7], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
FFlag(6);
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[8], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(Q[8], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
FFlag(6);
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[9], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(Q[9], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
FFlag(6);
end;
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[10], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
if FindDTMRotated(Q[10], xz, yz, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(xz, yz, 3, 3, True);
FFlag(6);
end;
Wait(500 + Random(25));
Writeln('We have reached our Final Destination!');
FreeDTM(Q[0]);
FreeDTM(Q[1]);
FreeDTM(Q[2]);
FreeDTM(Q[3]);
FreeDTM(Q[4]);
FreeDTM(Q[5]);
FreeDTM(Q[6]);
FreeDTM(Q[7]);
FreeDTM(Q[8]);
FreeDTM(Q[9]);
FreeDTM(Q[10]);
FreeDTM(K[0]);
FreeDTM(K[1]);
FreeDTM(K[2]);
MouseSpeed := 15; //Change to your script standard MS.
end;

begin
SmartSet;
ClearDebug;
SetupSRL;
DeclarePlayers;
LoginPlayer;
Deathwalk;
end.

Yanhua

2012-01-09 04:36:01

I voted YES.

You have great knowledge of the SRL Include and especially with DTMs.

Well done with the DTM tutorial also, new members will greatly benefit from that.

You have been pretty active and helpful around the forums too :)

nielsie95

2012-01-13 14:46:27

Welcome in!