Nebula
2012-02-05 21:45:14
How Long have You Played Runescape?
6 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Just pascal
Are you a member of any other communities?
I was a part of MmoExchange.net but I requested a ban from there not too long ago because I didn't like the atmosphere. Now I'm only a member of villavu.
Tell us about yourself…
Please show us one (or multiple) of your scripts.
The first script is a Aio Longbow fletcher. It crafts any longbow flawlessly at the soul wars bank chest and has a nice paint :3
The second script is a monkfish script. I plan to release this script to the public in a few days, after just a few more changes to make it more user friendly.
The third and last script is a little sorceress garden bot I made just for fun. It is very unstable and at the moment has around a 25% success rate. It uses dtms for walking. In the future I will work on this script as I gain more srl/pascal knowledge. It is nowhere near complete, I just thought I would put this in my application to show some variety.
6 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Just pascal
Are you a member of any other communities?
I was a part of MmoExchange.net but I requested a ban from there not too long ago because I didn't like the atmosphere. Now I'm only a member of villavu.
Tell us about yourself…
From: Nebula
My name is Alex, I'm 16 years old, and I live in America :). I like to write scripts for what I need to do in RS, then go hang out with my friends and such while the script is running. I'm a sophomore in high school and I'm on the school's wrestling team so I don't have a lot of free time, But I enjoy writing scripts in my free time.
Please show us one (or multiple) of your scripts.
The first script is a Aio Longbow fletcher. It crafts any longbow flawlessly at the soul wars bank chest and has a nice paint :3
The second script is a monkfish script. I plan to release this script to the public in a few days, after just a few more changes to make it more user friendly.
The third and last script is a little sorceress garden bot I made just for fun. It is very unstable and at the moment has around a 25% success rate. It uses dtms for walking. In the future I will work on this script as I gain more srl/pascal knowledge. It is nowhere near complete, I just thought I would put this in my application to show some variety.
program NebulaAioFletcher;
{$DEFINE SMART}
{$i srl/srl.simba}
///////////////////////////// Instructions: ////////////////////////////////////
//////////////// Start in front of the SoulWars Bank chest /////////////////////
///////////////// Put logs on the right side of your bank //////////////////////
//////////////////// Have your knife in your toolbelt //////////////////////////
////////// Fill Out the Loads you want to complete and XP per log //////////////
//////////////// It is not recommended to wear grey clothing ///////////////////
/////////////////////////////////////////////// ////////////////////////////////
var
x, y, i, Count, TheKnife, Alog, TotalXp ,XPPH, LogsCut, LogsPerHour:Integer;
items, Clock : TIntegerArray;
const
Loads = 100; //how many loads you want to fletch.
World = 91; //The world you want to use. Make sure it is a members world.
ExpPerLog = 1; //how much Xp each log gives. Oak:37.5 Willow:62.5 Maple:100
// Yew:175 Magic:250
procedure DeclarePlayers;
begin
HowManyPlayers := 1; // don't touch this.
NumberOfPlayers(HowManyPlayers); // don't touch this.
CurrentPlayer := 0; // don't touch this.
Players[0].Name := 'username here'; // Username
Players[0].Pass := 'password here'; // Password
Players[0].Active := True; // don't touch this.
Players[0].Pin := ''; // Bank Pin. leave blank if you don't have one set.
end;
//****Do not touch anything below this if you do not know what you are doing****
//****Do not touch anything below this if you do not know what you are doing****
Procedure LoadDTMS;
begin
TheKnife := DTMFromString('mlwAAAHicY2dgYPgPxGyMDAyMQPwNyP4KxJxA9j8gvRhIzwbiWUC8GYg3APFUIF4JxLGRkUAVTFixCJDEhRnxYCgAAHrSCjE=');
Alog := DTMFromString('mrAAAAHic42BgYBBmZmCQBWJJIBYEYm4gZgdieSCWBuIaRgaGeihuAuIWKF0JxMVA7GgpAjSFCSf+DyS58GBGAhgGAPIFBqY=');
end;
Procedure Beginning;
begin
MakeCompass('W');
SetAngle(0);
GameTab(Tab_Inv);
end;
Procedure Antiban;
begin
Wait(RandomRange(1000, 3000));
Case Random(35) of
1: Mouse(531, 62, 11, 11, true);
2: begin
HoverSkill('Fletching', false);
Wait(RandomRange(2000, 7000));
Gametab(Tab_Inv);
end;
3: begin
Gametab(Tab_Stats);
Wait(randomrange(750, 2400));
Gametab(Tab_Inv);
end;
4: begin
Gametab(Tab_Friends);
Wait(randomrange(750, 2400));
Gametab(Tab_Inv);
end;
5: RandomMovement;
6: MouseBox(0, 0, 753, 492, 2);
7: Case Random(2) of
1: MakeCompass(RandomRange(0,10));
2: MakeCompass(RandomRange(350, 360));
end;
8: SetAngle(RandomRange(0,30));
10: MouseBox(5, 482, 454, 500, 1);
11: PickUpMouse;
12: RandomMovement;
13: MouseBox(0, 0, 753, 492, 2);
14: MMouse(333, 225, 300, 215);
15: MMouse(333, 225, 300, 215);
16: MMouse(333, 225, 300, 215);
17: SetAngle(RandomRange(0,30));
18: Case Random(2) of
1: MakeCompass(RandomRange(0,10));
2: MakeCompass(RandomRange(350, 360));
end;
end;
end;
Procedure Banking;
begin
Count := 0;
repeat
Inc(count);
CloseBank;
If Not FindNormalRandoms then
begin
Gametab(Tab_Inv);
repeat
OpenBankChestEdge(SRL_BANK_SW);
until(BankScreen);
If PinScreen then
InPin(Players[CurrentPlayer].Pin);
DepositAll;
wait(randomrange(300,600));
If (FindDTM(alog, x, y, 346, 89, 475, 288 )) then
begin
Mouse(x, y, 3, 3, false);
WaitOption('All', 1500);
Wait(randomrange(300,700));
CloseBank;
end;
end else
begin
Writeln('Somehow there was a random event in soulwars. Shutting down.');
Logout;
TerminateScript;
end;
Until((true) or (Count>2))
if (Count>2) then
begin
writeln('Banking failed');
Logout;
TerminateScript;
end;
end;
Procedure Fletching;
begin
if (FindDTM(alog, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
IncEx(TotalXp, (ExpPerLog*28))
IncEx(LogsCut, 28)
items := [1, 2, 5, 6, 9, 10];
MouseItem(items[Random(High(items))], 1);
Wait(RandomRange(800,1100));
If (FindDTM(TheKnife, x, y, MCX1, MCY1, MCX2, MCY2)) then
begin
Mouse(x, y, 5, 5, true);
wait(randomrange(500,750));
end;
MMouse(257, 427, 30, 20);
If not WaitUpText('Make', 2000) then
MMouse(257, 427, 30, 20);
ClickMouse2(true);
repeat
Antiban;
until(FindDTM(alog, x, y, MIX1, MIY1, MIX2, MIY2)= false);
Wait(randomrange(200, 1400));
end else
begin
writeln('no logs');
Logout;
TerminateScript;
end;
end;
Procedure WriteProggy;
begin
ClearDebug;
Clock := [0,0,0];
XPPH := Round((TotalXp * 3600) / (GetTimeRunning / 1000));
LogsPerHour := Round((LogsCut * 3600) / (GetTimeRunning / 1000));
ConvertTime(GetTimeRunning,Clock[0],Clock[1],Clock[2])
Writeln('|||---Nebulas Aio longbow cutter---|||')
Writeln('Time Running- ' +tostr(Clock[0])+':'+tostr(Clock[1])+':'+tostr(Clock[2]))
Writeln('XP gained-' + IntToStr(TotalXp))
Writeln('Exp Per hour-' + IntToStr(XPPH))
Writeln('Logs cut-' + IntToStr(LogsCut))
Writeln('Logs Cut Per Hour-' +IntToStr(LogsPerHour))
end;
Procedure FreeDTMS;
begin
FreeDTM(TheKnife);
FreeDTM(Alog);
end;
begin
MouseSpeed := RandomRange(13,17);
smart_server := World;
smart_members := true;
smart_signed := true;
smart_superDetail := false;
ClearDebug;
SetupSRL;
DeclarePlayers;
LoginPlayer;
LoadDTMS;
Beginning;
repeat
inc(i);
banking;
wait(RandomRange(800, 1300));
fletching;
WriteProggy;
until(i=loads);
Writeln('Finished');
FreeDTMS;
end. program NebulaMonkFisher;
{$DEFINE SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
Var
x, y, f, i, g, k, count, monkfish:integer;
BankWalk, spot1, spot2, spot3:TPointArray;
items: TIntegerArray;
aFound: extended;
PBox: TBox;
const
Loads = 3; //Amount of loads to do
Procedure DeclarePlayers;
begin
HowManyPlayers := 1; // Don't touch this
NumberOfPlayers(HowManyPlayers);// Don't touch this
CurrentPlayer := 0; // Don't touch this
Players[0].Name := '';// Username
Players[0].Pass := ''; // Password
Players[0].Active := True; // Don't touch this
Players[0].Pin := ''; // Bank Pin, Leave blank if you don't have one
Wait(randomrange(1500,5000));
end;
Procedure Antiban;
begin
Case random(30) of
1: Mouse(531, 62, 11, 11, true);
2: begin
HoverSkill('Fishing', false);
Wait(RandomRange(2000, 7000));
Gametab(Tab_Inv);
end;
3: begin
Gametab(Tab_Stats);
Wait(randomrange(750, 2400));
Gametab(Tab_Inv);
end;
4: begin
Gametab(Tab_Friends);
Wait(randomrange(750, 2400));
Gametab(Tab_Inv);
end;
5: RandomMovement;
6: MouseBox(0, 0, 753, 492, 2);
7: Case Random(2) of
1: MakeCompass(RandomRange(0,10));
2: MakeCompass(RandomRange(350, 360));
end;
8: SetAngle(RandomRange(0,30));
10: MouseBox(5, 482, 454, 500, 1);
11: PickUpMouse;
12: RandomMovement;
13: MouseBox(0, 0, 753, 492, 2);
14: MMouse(333, 225, 300, 215);
15: MMouse(333, 225, 300, 215);
16: MMouse(333, 225, 300, 215);
17: SetAngle(RandomRange(0,30));
18: Case Random(2) of
1: MakeCompass(RandomRange(0,10));
2: MakeCompass(RandomRange(350, 360));
end;
end;
end;
Procedure LoadDTMS;
begin
monkfish := DTMFromString('mggAAAHicY2NgYBBmZmCQB2JJIOYDYi4gVgficEYGBj8gjgVifyCOguJsD2ugLiYMzM+AHTDiwBAAAFOTA7s=');
end;
Procedure Beginning;
begin
MakeCompass('N');
SetAngle(0);
Writeln('done with beginning');
GameTab(Tab_Inv);
end;
Function WalkToBank: Boolean;
begin
SPS_Setup(RUNESCAPE_SURFACE,['2_4']);
BankWalk := [Point(1155, 1880)];
SPS_WalkPath(BankWalk);
end;
Procedure WalkFishingSpot1;
begin
SPS_Setup(RUNESCAPE_SURFACE,['2_4']);
spot1 := [Point(1180, 1835)];
SPS_WalkPath(spot1);
end;
Procedure WalkFishingSpot2;
begin
SPS_Setup(RUNESCAPE_SURFACE,['2_4']);
spot2 := [Point(1220, 1838)];
SPS_WalkPath(spot2);
end;
Procedure WalkFishingSpot3;
begin
SPS_Setup(RUNESCAPE_SURFACE,['2_4']);
spot3 := [Point(1145, 1841)];
SPS_WalkPath(spot3);
end;
Function StartFishing: Boolean;
begin
i := 0;
if not findnormalrandoms then
begin
count := 1
f := 0
g := 0
repeat
inc(count);
x := MSCX;
y := MSCY;
Writeln('Searching');
Wait(randomrange(400,700));
If (FindObjTPA(x, y, 11379098, 10, 1, 20, 20, 2,['Harpoon'])) then
begin
writeln('Found possible spot');
Mouse(x, y, 4, 4, False);
Wait(RandomRange(500, 900));
If (WaitOption('Net', 3000)) then
begin
Inc(f);
Writeln('Found spot');
i :=5
Break;
end;
Break;
end;
until((Count>4) or (f>0))
If (count>4) then
begin
g := 5
end;
end else
begin
Writeln('found random');
Logout;
TerminateScript;
end;
end;
Procedure WhileFishing;
begin
PBox := IntToBox(245, 130, 285, 195);
repeat
if (AveragePixelShift(PBox, 500, 2500)>=600) then
AntiBan;
until ((AveragePixelShift(PBox, 250, 2500)<600) or (InvFull));
Writeln('pixelshift done');
end;
Procedure ArriveAtBank;
begin
WalkFishingSpot1;
WalkToBank;
writeln('done walking to bank');
end;
Procedure Banking;
begin
if not findnormalrandoms then
begin
writeln('done walking to bank2;')
Writeln('Banking');
f := 0;
Wait(randomrange(600,1400));
repeat
Wait(randomrange(250, 600));
Inc(f);
x := MSCX;
y := MSCY;
if (FindObjTPA(x, y, 2846095, 15, 1, 4, 5, 4, ['Talk'])) then
begin
Mouse(x, y, 3, 3, false);
if (WaitOption('Bank Ar', 1000)) then
begin
g := 0
repeat
Inc(g);
Wait(RandomRange(45, 55))
until((BankScreen) or (g>60));
end;
end else
begin
MakeCompass(RandomRange(90,270));
end;
until((BankScreen) or (f>4));
items := [2, 3, 5, 6, 9, 10];
MouseItem(items[Random(High(items))], 0);
WaitOption('All', 1200);
Wait(randomRange(400, 800));
CloseBank;
end;
end;
Procedure FreeDTMs;
begin
FreeDTM(monkfish);
end;
begin
MouseSpeed := RandomRange(14,16);
smart_server := 49;
smart_members := false;
smart_signed := true;
smart_superDetail := false;
ClearDebug;
SetupSRL;
DeclarePlayers;
LoginPlayer;
LoadDTMS;
Beginning;
writeln('Starting')
repeat
repeat
repeat
Startfishing;
if (g = 5) then
begin
WalkFishingSpot1;
wait(RandomRange(600,1200));
Startfishing;
if (g = 5) then
begin
WalkFishingSpot2;
wait(RandomRange(600,1200));
Startfishing;
if (g = 5) then
begin
WalkFishingSpot1;
wait(RandomRange(600,1200));
Startfishing;
if (g = 5) then
begin
WalkFishingSpot3;
wait(RandomRange(600,1200));
Startfishing;
if (g = 5) then
begin
end;
end;
end;
end;
end;
until(i = 5);
Wait(RandomRange(2000,4000));
WhileFishing;
until(InvFull);
if (InvFull) then
begin
inc(k);
Wait(Randomrange(1300,4000));
ArriveAtBank;
Banking;
Writeln('Done!');
end;
until(k=loads);
end. program SorcGarden;
{$DEFINE SMART}
{$i srl/srl.simba}
Var
x, y, StartSpot, Elemental1, WalkSpot1, Elemental2, WalkSpot2, Elemental3, WalkSpot3 :integer;
Elemental4, WalkSpot4, Elemental5, Walkspot5, Elemental6, WalkSpot6, DoorSpot, count :integer;
aFound: extended;
Procedure DeclarePlayers;
begin
HowManyPlayers := 1; // Don't touch this
NumberOfPlayers(HowManyPlayers);// Don't touch this
CurrentPlayer := 0; // Don't touch this
Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Active := True; // Don't touch this
Players[0].Pin := ''; // Bank Pin, Leave blank if you don't have one
end;
Procedure LoadDTMS;
begin
StartSpot := DTMFromString('mrAAAAHic42BgYHjGxMBwHQmfgeJLULwHqGY9EM8G4lYg3gfE64B4IRBPA+KwdCWG4ERdhsBEBYaEbBWGBQtXMGzctIth5/o6MP4PVCOCBZ+A0owEMAwAAOOXGYg=');
Elemental1 := DTMFromString('mlwAAAHicY2dgYHjBxMBwFYr3AfEDIH4ExE+BeD9Q/jQQPwLizUC8GIiPAHEPEH/8z8kwf84yOA6IkWdIzHNgCAXS/EB5XJgRD4YCAKSCFdU=');
Walkspot1 := DTMFromString('m6wAAAHic42ZgYHjMxMBwGIjXAPFVJPyACSLHxMzAoADFmxkQ+DAQPwLi90A8A4j7gLgbZB4QvwHi6AxlhvlzlmHg0Bh5hqwqDQavcE2GwBRFhoAkRYb/QPUiRGJGEjASAAD3CB+U');
Elemental2 := DTMFromString('mlwAAAHicY2dgYJBjZmCQBGIxKP2EiYGBC0ibAXEzUD4RiOuBeA4QdwLxciCOB+KP/zkZskrUGUKSlBjSSswYFi5YAcY+0doM/EB5ERyYEQ+GAgBefQ9M');
WalkSpot2 := DTMFromString('mAAEAAHic42FgYPjPxMDwG4r/AfEnIL4FxMLMDAyKQPwcyFYH0ueh8tOBehYD8VogPgjEi4B4BRC3Q3EnlF4JxF1A/OP3K4agRFmG4HgNhvRaM4bju5vB2D9aDYxhbBCdVavK8B+oR4QEzEgiRgYADswjUQ==');
Elemental3 := DTMFromString('mlwAAAHicY2dgYFBiZmAwBGIpIP7BxMDAD6S9gFgOiOcA5acD8VYg3gvEp6H8i0D88T8nQ2C0NkNIkhLDwgUrwBjEj8wyYuAHyovgwIx4MBQAAAWfEKQ=');
WalkSpot3 := DTMFromString('mkwEAAHicE2ZgYPjOxMDwGohfoGGQ2C4gPgfEd6H4NBDvBOInUCzEzMAgDcRKQMwMxGeB5m0D4r1AfASILwDxYyB+C8S3oPg5EP8F4mtQfAWItwLxFiB+j0S/+P+NIatKgyE0Rh6Mg+IUGIIjTRnSqywZ5s9ZhoJ3rqoB41VzisDYP1yTwS9SDqwvAIj/A80ToRJmpCLGAgBSATnx');
Elemental4 := DTMFromString('mwQAAAHic42RgYHjAxMBwGoovAPEBIF4DxOeA+CAQ/wTiMqC6aiBuB+IZQNwPxC1AHA3E84F4OhD//MLAEJCmxBCQoscQW2HOMHfJSjAOTlEE0z6Jigz8QHWEMCMRGA4AWAwYsQ==');
WalkSpot4 := DTMFromString('m1gAAAHic42JgYLjNxMBwGojPA/EZID4AxF+A+AoQr4HKHQTiJqDaeiCeBsRxQDwBiOcBcRQQtwBxORAvBuL/v78xBKToMaQ2WTPkN2kzzF2ykiGpRYchOEURzA5IUwLT/4FqRYjAjERiBAAAD0cdiA==');
Elemental5 := DTMFromString('mrAAAAHic42BgYGBlZmC4wwTBD4D4PhBfBOKjQHwFiE8D1ewE4mVAPAeIrwHxGSA+DMT7gfjTfQaGkFQlhvAkCM5stGZYuHglGJ/c38HAD1QjggczEsAwAABuNRf+');
WalkSpot5 := DTMFromString('m6wAAAHic42ZgYJBjZmC4w4TA94H4LhC/BWIGoNxFJgiWBbJPAoWOAvFOIF4BxFeBeB4Qz4bih0D8EYhvAHFSqTpDSJIeQ0iqEkN4khJDWrk5Q3GjNpjtE6fDsHDxSjAOSFBk+A9UL0IkZiQBIwEAtSQdeg==');
Elemental6 := DTMFromString('m1gAAAHic42JgYNjExMCwF4iPAfEJKD4KxJuB+AYQnwXic0BcC1Q7BYgnAHEjEBcA8XwgXgWlO4C4HIj/v2Fg8EtQYEgrVWMIjtNmCE1SZAhJV2LwA+LQTGWG4/vbwZgfqFaECMxIJEYAAIGSGjI=');
WalkSpot6 := DTMFromString('m1gAAAHic42JgYNjDBMHHgPgEEB8B4u1AvB6IC4D4LBT3AtVOAeKJQFwOxKFAvAgqNgmIu6DiXrZSDH4JCgwZ9ZoMoUmKDLUNWgzh2cpgscx6D4bj+9vBWASolhjMSCRGAACzrRjt');
DoorSpot := DTMFromString('mggAAAHicY2NgYGBhZmB4xsTAYACkJYH4O5AtDxIDyv0G4h9ArMcIwSZA/P/XB4ZFS5YwBKbLMuTnKzBkJMsxZHnwMfwHqhPBghlxYAgAAOq0D4Q=');
end;
Procedure Beginning;
begin
MakeCompass('N');
SetAngle(0);
Writeln('done with beginning');
GameTab(Tab_Inv);
end;
Procedure WalkToDoorspot;
begin
repeat
writeln('searching doorspot');
until((FindDTMRotated(DoorSpot, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/5, aFound)= true))
Writeln('Found Doorspot');
Mouse(x, y, 0, 0, true);
writeln('clicked Doorspot');
FFlag(2);
Wait(randomrange(1200, 1400));
end;
Procedure OpenDoor;
begin
count := 0
repeat
x :=MSCX
y :=MSCY
inc(count);
if (not FindObjTPA(x, y, 4876933, 15, 2, 7, 2, 7, ['Open'])) then
begin
if (not FindObjCustom(x, y, ['Open', 'n Ga', 'Gate'], [4876933], 5)) then
begin
writeln('Couldnt open door');
Logout;
TerminateScript;
end;
end else
Wait(randomrange(75, 150));
If (IsUpText('Open')) then
begin
ClickMouse2(true);
writeln('found door');
wait(randomrange(1700, 1900));
break;
end;
until(count>10);
if (count>10) then
begin
writeln('couldnt find door');
end;
end;
Procedure GoToStart;
begin
repeat
Writeln('searching');
until(FindDTMRotated(StartSpot, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/2, aFound)=true);
Writeln('Found StartSpot');
Mouse(x+2, y+4, 0, 0, true);
writeln('clicked');
Wait(RandomRange(2200, 2400));
end;
Procedure Part1;
begin
repeat
writeln('searching');
until((FindDTMRotated(Elemental1, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/5, aFound)= true))
Writeln('Found Elemental 1');
FindDTMRotated(WalkSpot1, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/5, aFound);
Wait(randomrange(400,500));
Mouse(x, y, 0, 0, true);
writeln('clicked');
Wait(RandomRange(2500,2700))
end;
Procedure Part2;
begin
repeat
writeln('searching2');
until((FindDTMRotated(Elemental2, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/2, aFound)= true))
Writeln('Found Elemental 2');
FindDTMRotated(WalkSpot2, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/2, aFound);
Mouse(x-4, y+3, 0, 0, true);
writeln('clicked');
Wait(randomrange(3200,3600));
end;
Procedure Part3;
begin
repeat
writeln('searching3');
until((FindDTMRotated(Elemental3, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/2, aFound)= true))
Writeln('Found Elemental 3');
FindDTMRotated(WalkSpot3, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, 5, aFound);
Wait(randomrange(1200,1400));
Mouse(x, y, 0, 0, true);
writeln('clicked');
Wait(randomrange(3500,4000));
end;
Procedure Part4;
begin
repeat
writeln('searching4');
until((FindDTMRotated(Elemental4, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/2, aFound)= true))
Writeln('Found Elemental 4');
FindDTMRotated(WalkSpot4, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/2, aFound);
Mouse(x, y+2, 0, 0, true);
writeln('clicked');
Wait(randomrange(4000,5000));
end;
Procedure Part5;
begin
repeat
writeln('searching5');
until((FindDTMRotated(Elemental5, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/2, aFound)= true))
Writeln('Found Elemental 5');
FindDTMRotated(WalkSpot5, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/2, aFound);
Mouse(x, y+2, 0, 0, true);
writeln('clicked');
Wait(randomrange(3500,4000));
end;
Procedure Part6;
begin
repeat
writeln('searching6');
until((FindDTMRotated(Elemental6, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/2, aFound)= true))
Writeln('Found Elemental 6');
FindDTMRotated(WalkSpot6, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/2, aFound);
Mouse(x+2, y+2, 0, 0, true);
writeln('clicked');
Wait(randomrange(3500,4000));
end;
Procedure PickAHerb;
begin
writeln('picking herb');
x :=MSCX
y :=MSCY
If (FindObjTPA(x, y, 673560, 25, 2, 15, 15, 50, ['Pick'])) then
begin
Mouse(x, y, 0, 0, true);
writeln('Found Herb');
end;
end;
Procedure FreeDTMs;
begin
FreeDTM(StartSpot);
FreeDTM(DoorSpot);
FreeDTM(Elemental1);
FreeDTM(WalkSpot1);
FreeDTM(Elemental2);
FreeDTM(WalkSpot2);
FreeDTM(Elemental3);
FreeDTM(WalkSpot3);
FreeDTM(Elemental4);
FreeDTM(WalkSpot4);
FreeDTM(Elemental5);
FreeDTM(WalkSpot5);
end;
begin
MouseSpeed := RandomRange(14,16);
smart_server := 49;
smart_members := false;
smart_signed := true;
smart_superDetail := false;
ClearDebug;
SetupSRL;
DeclarePlayers;
LoginPlayer;
LoadDTMs;
Beginning;
repeat
WalkToDoorSpot;
OpenDoor;
GoToStart;
Part1;
Part2;
Part3;
Part4;
Part5;
Part6;
PickAHerb;
until(invcount>=27)
FreeDTMs
end. program SorcGarden;
{$DEFINE SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
var
x, y, Failsafe, Failsafe2, Failsafe3, HerbCount, TotalRuns, SuccessfullRuns, ApprenticeColor, Herbs, HPH: integer;
StartSpot, P: TPoint;
BankPath: TPointArray;
aFound: Extended;
Procedure DeclarePlayers;
begin
HowManyPlayers := 1; // Don't touch this
NumberOfPlayers(HowManyPlayers);// Don't touch this
CurrentPlayer := 0; // Don't touch this
Players[0].Name := 'username'; // Username
Players[0].Pass := 'password'; // Password
Players[0].Active := True; // Don't touch this
Players[0].Pin := ''; // Bank Pin, Leave blank if you don't have one
end;
Procedure Beginning;
begin
MakeCompass('N');
SetAngle(0);
Writeln('done with beginning');
GameTab(Tab_Inv);
SPS_Setup(runecrafting_altars,['0_2']);
writeln(sps_getmypos);
end;
Function CheckFailsafe: Boolean;
begin
SPS_GetMyPos;
P := SPS_GetMyPos;
if (P.y>885) then
begin
result := false;
end else
result := true;
end;
function SPS_WaitColorToleranceAtPoint(P: TPoint; Color, tol: Integer): boolean;
var
MM: TPoint;
x, y: integer;
begin
if not LoggedIn then Exit;
MM := SPS_PosToMM(P);
if (MM.X > 0) then
begin
repeat
MM := SPS_PosToMM(P);
If (CheckFailsafe = false) then
break;
Wait(1);
until(FindColorTolerance(x, y, color, (MM.X)-3, (MM.Y)-3, (MM.X)+3, (MM.Y)+3, tol));
writeln('found walkspot');
Result := True;
end;
end;
Procedure WalkToGate;
begin
Sps_WalkToPos(point(90, 890));
Wait(RandomRange(700,1000));
end;
function GateColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.02, 0.47);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 5405855, MSX1, MSY1, MSX2, MSY2, 9);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 14.38) and (X <= 32.43) and (Y >= 14.18) and (Y <= 31.94) and (Z >= 7.92) and (Z <= 17.30) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
function FindGate: boolean;
begin
P := SPS_GetMyPos;
If (P.y >= 890) then
begin
repeat
Failsafe := 0;
repeat
inc(Failsafe);
x := MSCX;
y := MSCY;
if (FindObjTpa(x, y, GateColor, 10, 2, 1, 5, 5, ['en Gat'])) then
begin
Mouse(x, y, 0, 0, false);
if (WaitOption('Gate', 600)) then
result :=true;
end;
until((result = true) or (failsafe > 2));
if (Failsafe > 2) then
begin
writeln('Gate couldnt be located');
Logout;
TerminateScript;
end;
wait(randomrange(800,900));
Sps_walktopos(point(85, 889));
inc(TotalRuns);
P := SPS_GetMyPos;
until (P.y < 890);
end;
end;
Procedure WalkToStartSpot;
begin
inc(TotalRuns);
Sps_walktopos(point(85, 887));
end;
Procedure Part1;
begin
writeln('searching');
if (SPS_WaitColorToleranceAtPoint(point(78, 880), 915967, 40)) then
begin
wait(RandomRange(250,350));
Sps_walktopos(point(75, 870));
writeln('Clicked Spot One');
end;
end;
Procedure Part2;
begin
writeln('searching');
if (SPS_WaitColorToleranceAtPoint(point(78, 862), 915967, 40)) then
begin
SPS_WaitColorToleranceAtPoint(point(76, 865), 915967, 40)
Sps_walktopos(point(73, 847));
writeln('Clicked Spot Two');
end;
end;
Procedure Part3;
begin
writeln('searching');
if (SPS_WaitColorToleranceAtPoint(point(78, 837), 915967, 40)) then
begin
SPS_WaitColorToleranceAtPoint(point(78, 843), 915967, 40)
Sps_walktopos(point(86, 870));
writeln('Clicked Spot Three');
end;
end;
Procedure Part4;
begin
writeln('searching');
if (SPS_WaitColorToleranceAtPoint(point(90, 867), 915967, 40)) then
begin
SPS_WaitColorToleranceAtPoint(point(90, 854), 915967, 40)
Sps_walktopos(point(95, 876));
writeln('Clicked Spot Four');
end;
end;
Procedure Part5;
begin
MouseSpeed := randomrange(60, 70);
writeln('searching');
if (SPS_WaitColorToleranceAtPoint(point(110, 880), 915967, 60)) then
begin
Sps_walktopos(point(137, 880));
writeln('lol5');
writeln('Clicked Spot Five');
end;
end;
Procedure Part6;
begin
writeln('searching');
if (SPS_WaitColorToleranceAtPoint(point(132, 870), 915967, 60)) then
begin
SPS_WaitColorToleranceAtPoint(point(141, 865), 915967, 60)
Sps_walktopos(point(144, 882));
writeln('lol5');
writeln('Clicked Spot Six');
end;
end;
function HerbColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.05, 1.29);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 1596711, MSX1, MSY1, MSX2, MSY2, 20);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 0.75) and (X <= 12.44) and (Y >= 1.27) and (Y <= 19.40) and (Z >= 0.30) and (Z <= 7.24) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
Function HandleHerbs: boolean;
begin
Wait(RandomRange(800,1000));
HerbCount := InvCount;
Failsafe := 0;
Failsafe2 := 0;
repeat
inc(Failsafe);
x := MSCX;
y := MSCY+(RandomRange(40, 50));
if (FindObjTPA(x, y, HerbColor, 30, 2, 5, 5, 13, ['ick Her'])) then
begin
wait(randomrange(100,200));
if (IsUpText('ick He')) then
begin
mouse(x, y, 0, 0, true);
result :=true;
end;
end;
until((true) or (failsafe > 3));
if (Failsafe > 3) then
begin
writeln('herbs couldnt be located');
Logout;
TerminateScript;
end;
repeat
inc(failsafe2);
Wait(RandomRange(50,100));
until ((InvCount = (HerbCount+2)) or (InvCount = (HerbCount+1)) or (Failsafe2 > 30));
If (Failsafe2 > 45) then
begin
writeln('herb issue');
Logout;
TerminateScript;
end;
Failsafe2 :=0;
repeat
inc(Failsafe2);
Wait(randomrange(100,200));
SPS_GetMyPos;
P := SPS_GetMyPos;
if (P.y>100) then
Wait(RandomRange(1250,1750));
break;
until(Failsafe2 > 75);
if (Failsafe2 >75) then
begin
writeln('herb issue 2');
Logout;
TerminateScript;
end;
end;
Function HandleFountain: Boolean;
begin
Failsafe :=0
repeat
Sps_walktopos(point(95, 933));
Wait(RandomRange(800,1200));
x :=MSCY;
y :=MSCX;
If (FindObjTpa(x, y, 16050909, 25, 2, 5, 5, 20, ['Fountain'])) then
begin
wait(RandomRange(250,350));
if (IsUpText('Fountain')) then
begin
Mouse(x, y, 0, 0, true);
writeln('clicked fountain');
Wait(randomrange(9000,10000));
result := true
end;
end;
until((result = true) or (failsafe > 3));
if (failsafe > 3) then
begin
writeln('Couldnt find fountain');
Logout;
TerminateScript;
end;
end;
function ChestColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.10, 0.07);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 6056824, MSX1, MSY1, MSX2, MSY2, 6);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 11.05) and (X <= 19.35) and (Y >= 11.33) and (Y <= 19.85) and (Z >= 9.18) and (Z <= 15.92) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
Function HandleBanking: Boolean;
begin
Failsafe := 0;
failsafe2 := 0;
SPS_Setup(runescape_surface,['12_10']);
writeln(sps_getmypos);
BankPath := [Point(5121, 4113), Point(5120, 4092), Point(5107, 4091), Point(5097, 4102), Point(5086, 4110), Point(5063, 4127), Point(5059, 4146), Point(5065, 4167), Point(5065, 4175), Point(5067, 4179)];
SPS_WalkPath(BankPath);
wait(randomrange(1300,1600));
repeat
inc(failsafe2);
repeat
inc(failsafe);
x := MSCX;
y := MSCY;
if (FindObjTpa(x, y, ChestColor, 3, 2, 5, 4, 15, ['chest'])) then
begin
wait(randomrange(250, 350));
if (IsUpText('chest')) then
begin
Mouse(x, y, 0, 0, true);
result := true
end;
end;
until((result = true) or (failsafe > 2))
if (failsafe >2) then
begin
writeln('banking issue');
Logout;
TerminateScript;
end else
begin
Failsafe := 0;
Repeat
inc(Failsafe);
wait(RandomRange(100,200));
until((BankScreen) or (Failsafe > 60));
if (Failsafe > 60) then
begin
writeln('second banking issue');
Logout;
TerminateScript;
end else
begin
DepositAll;
Wait(RandomRange(650, 950));
CloseBank;
end;
end;
until((InvCount = 0) or (failsafe2 > 2));
if (failsafe2 > 2) then
begin
writeln('third banking issue');
Logout;
TerminateScript;
end else
begin
InvertTPA(BankPath);
SPS_WalkPath(BankPath);
wait(RandomRange(1600,1750));
end;
end;
function ApprenticeMainColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.04, 1.12);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 9684674, MSX1, MSY1, MSX2, MSY2, 30);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 19.94) and (X <= 78.46) and (Y >= 21.78) and (Y <= 85.84) and (Z >= 18.46) and (Z <= 72.11) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
function ApprenticeSecondColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.07, 0.18);
FindColorsSpiralTolerance(MMCX, MMCY, arP, 8618091, MMX1, MMY1, MMX2, MMY2, 30);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 6.79) and (X <= 35.27) and (Y >= 7.47) and (Y <= 39.20) and (Z >= 8.85) and (Z <= 46.27) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
Function HandleApprentice: Boolean;
begin
Failsafe := 0;
Failsafe2 := 0;
Repeat
Case Random(2) of
0: ApprenticeColor := ApprenticeMainColor;
1: ApprenticeColor := ApprenticeSecondColor;
end;
inc(Failsafe);
x := MSCX;
y := MSCY;
MouseSpeed := (RandomRange(40,50));
if (FindObjTPA(x, y, ApprenticeColor, 15, 2, 3, 3, 5, ['Talk-'])) then
begin
Mouse(x, y, 2, 2, false);
If (WaitOption('elep', 600)) then
begin
wait(RandomRange(3750, 4250));
result := true;
end;
end;
until((result = true) or (Failsafe > 3));
if (Failsafe > 3) then
begin
repeat
inc(FailSafe3);
repeat
MakeCompass(RandomRange(0, 360));
inc(Failsafe2);
x := MSCX;
y := MSCY;
if (FindObjTPA(x, y, 8952988, 20, 2, 3, 3, 5, ['Talk-'])) then
begin
Mouse(x, y, 2, 2, false);
If (WaitOption('elep', 600)) then
begin
wait(RandomRange(3750, 4250));
result := true;
end;
end;
until((result = true) or (Failsafe2 > 2));
until((result = true) or (failsafe3 > 4));
end;
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], UpChars, 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 MakeProggy;
Var
SmartLines: TStringArray;
Clock: TIntegerArray;
begin
ClearDebug;
Clock := [0,0,0];
HPH := Round((Herbs * 3600) / (GetTimeRunning / 1000));
ConvertTime(GetTimeRunning,Clock[0],Clock[1],Clock[2]);
SetArrayLength(SmartLines, 3);
SmartLines[0]:= 'Time Ran:' + ToStr(Clock[0])+':'+tostr(Clock[1])+':'+tostr(Clock[2]) ;
SmartLines[1]:= 'Success Rate:' + FloatToStr(SuccessfullRuns / TotalRuns * 100) + '%';
SmartLines[2]:= 'Herbs Per hour:' + ToStr(HPH);
PrintOnSmart(SmartLines,Point(10,254),clWhite);
end;
begin
MouseSpeed := RandomRange(14,16);
smart_server := 59;
smart_members := false;
smart_signed := true;
smart_superDetail := false;
ClearDebug;
SetupSRL;
DeclarePlayers;
LoginPlayer;
Beginning;
TotalRuns := 1;
SuccessFullruns := 1;
MakeProggy;
TotalRuns := 0;
SuccessFullruns := 0;
repeat
if not invfull then
repeat
repeat
Beginning;
WalkToGate;
FindGate;
// WalkToStartSpot;
Part1;
If (CheckFailsafe = false) then
break;
Part2;
If (CheckFailsafe = false) then
break;
Part3;
If (CheckFailsafe = false) then
break;
Part4;
If (CheckFailsafe = false) then
break;
Part5;
If (CheckFailsafe = false) then
break;
Part6;
If (CheckFailsafe = false) then
break;
HandleHerbs;
Inc(SuccessfullRuns);
IncEx(Herbs, 2);
MakeProggy;
until (InvFull);
until (InvFull);
if (InvFull) then
begin
HandleFountain;
HandleBanking;
HandleApprentice;
end;
until(false);
end. program NebulaApeAtollAgility;
{$DEFINE SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
var
x, y, i, Failsafe, Failsafe2, RopeSpot, TotalXp, XPPH, LapsDone, LapsPerHour: Integer;
Clock: TIntegerArray;
SteppingStone: TAutoColorInfo;
ToStone: TPointArray;
aFound: Extended;
{--Don't touch anything above this line if you don't know what you're doing--}
Procedure DeclarePlayers;
begin
HowManyPlayers := 1; // Don't touch this
NumberOfPlayers(HowManyPlayers); // Don't touch this
CurrentPlayer := 0; // Don't touch this
Players[0].Name := 'UsernameHere'; // Username
Players[0].Pass := 'PasswordHere'; // Password
Players[0].Active := True; // Don't touch this
end;
{--Don't touch anything below this line if you don't know what you're doing--}
Procedure CameraReset;
begin
MakeCompass(RandomRange(160, 200));
SetAngle(0);
end;
Procedure DoSteppingStone;
begin
FailSafe := 0;
with SteppingStone do
begin
UpText := 'ump';
MaxDist := 50;
Color := 2840674;
HueMod := 0.05;
SatMod := 0.17;
LumTol := 10;
MinR := 81; MaxR := 115;
MinG := 73; MaxG := 104;
MinB := 35; MaxB := 52;
MinX := 6.23; MaxX := 12.41;
MinY := 6.80; MaxY := 13.54;
MinZ := 2.64; MaxZ := 5.11;
end;
repeat
wait(RandomRange(400,500));
if (FindObjRecordEx(x, y, SteppingStone, MSX1, MSY1, MSX2, MSY2, False, True)) then
begin
inc(Failsafe);
wait(RandomRange(150,200));
if (IsUpText('ump')) then
begin
Mouse(x, y, 0, 0, true);
writeln('Found Stepping Stone');
Wait(RandomRange(200,800));
CameraReset;
Wait(RandomRange(700,1000));
break;
end;
end;
until(Failsafe > 6);
if (Failsafe >6) then
begin
begin
Failsafe := 0;
repeat
inc(Failsafe);
writeln('Cant find stepping stone, rotating camera');
MakeCompass(RandomRange(0, 360));
until((FindObjRecordEx(x, y, SteppingStone, MSX1, MSY1, MSX2, MSY2, False, True)) or (Failsafe > 3));
end;
if (Failsafe > 3) then
begin
writeln('couldnt find stepping stone, shutting down');
Logout;
TerminateScript;
end else
begin
Mouse(x, y, 0, 0, true);
writeln('found stepping stone2');
Wait(RandomRange(400,1000));
CameraReset;
Wait(RandomRange(1800,2200));
end;
end;
IncEx(TotalXp, 40);
end;
function TreeOneColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.05, 0.47);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 3567767, MSX1, MSY1, MSX2, MSY2, 20);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 4.57) and (X <= 42.29) and (Y >= 4.41) and (Y <= 42.37) and (Z >= 2.03) and (Z <= 16.32) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
Procedure FindTheTree;
begin
Failsafe := 0;
x := MSCX;
y := MSCY;
If FindObjTpa(x, y, TreeOneColor, 7, 2, 5, 15, 20, ['Climb']) then
Begin
Mouse(x, y, 0, 0, true);
writeln('found tree one');
Wait(RandomRange(4000,5000));
end else
begin
begin
repeat
Inc(failsafe);
case random(3) of
0: MakeCompass('N');
1: MakeCompass('S');
2: MakeCompass(RandomRange(-50, -55));
3: MakeCompass(Randomrange(135, 140));
end;
until((FindObjTpa(x, y, TreeOneColor, 15, 2, 5, 15, 25 , ['Climb'])) or (failsafe>6));
if(failsafe>6) then
begin
writeln('couldnt find tree one, shutting down');
Logout;
TerminateScript;
end else
begin
mouse(x, y, 0, 0, true);
writeln('found tree one');
Wait(RandomRange(3500,4000));
end;
end;
end;
IncEx(TotalXp, 40);
end;
function MonkeyBarsColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
R, G, B: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.06, 0.24);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 2966352, MSX1, MSY1, MSX2, MSY2, 6);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToRGB(arC[i], R, G, B);
if (R >= 62) and (R <= 99) and (G >= 52) and (G <= 83) and (B >= 34) and (B <= 55) then
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 3.61) and (X <= 8.74) and (Y >= 3.70) and (Y <= 8.92) and (Z >= 2.10) and (Z <= 4.77) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
Procedure FindMonkeyBars;
begin
repeat
Failsafe := 0;
x := (MSCX + 20);
y := (MSCY - 20);
If FindObjTpa(x, y, MonkeyBarsColor, 20, 2, 2, 10, 10, ['Swing']) then
Begin
Wait(RandomRange(250, 300));
If IsUpText('Swing') then
begin
Mouse(x, y, 0, 0, true);
writeln('found monkey bars1');
Wait(RandomRange(100, 2000));
Case Random(2) of
0: Begin
SetAngle(0);
MakeCompass(RandomRange(85, 95));
end;
1: Begin
MakeCompass(RandomRange(85, 95));
SetAngle(0);
end;
end;
WaitColorCount(4229205, MMX1, MMY1, MMX2, MMY2, 30, 20, 100000000, 15000);
writeln('found colorcount');
Wait(RandomRange(750,1200));
Break;
end;
end else
begin
repeat
Inc(failsafe);
MakeCompass(RandomRange(255, 285));
until((FindObjTpa(x, y, MonkeyBarsColor, 7, 2, 2, 5, 5, ['Swing'])) or (failsafe>3));
if(failsafe>3) then
begin
writeln('couldnt find the monkey bars, shutting down');
Logout;
TerminateScript;
end else
begin
Wait(RandomRange(200,300));
If IsUpText('Swing') then
begin
mouse(x, y, 0, 0, true);
Wait(RandomRange(100, 2000));
Case Random(2) of
0: Begin
SetAngle(0);
MakeCompass(RandomRange(85, 95));
end;
1: Begin
MakeCompass(RandomRange(85, 95));
SetAngle(0);
end;
end;
WaitFindColor(x, y, 3434837, MMX1, MMY1, MMX2, MMY2, 20, 10000);
writeln('found colorcount');
Break;
end;
end;
end;
Until(false);
IncEx(TotalXp, 40);
end;
function SkullSlopeColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
R, G, B: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.06, 0.23);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 3237233, MSX1, MSY1, MSX2, MSY2, 5);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToRGB(arC[i], R, G, B);
if (R >= 96) and (R <= 129) and (G >= 86) and (G <= 116) and (B >= 41) and (B <= 58) then
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 8.74) and (X <= 15.79) and (Y >= 9.51) and (Y <= 17.17) and (Z >= 3.55) and (Z <= 6.37) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
Procedure FindSkullSlope;
begin
Failsafe := 0;
x := (MSCX +- 5);
y := (MSCY + (RandomRange(10,20)));
SetAngle(0);
If FindObjTpa(x, y, SkullSlopeColor, 10, 2, 3, 3, 5, ['limb-']) then
Begin
wait(RandomRange(250, 400));
if (IsUpText('limb-')) then
begin
Mouse(x, y, 0, 0, true);
writeln('found skull slope1');
Wait(RandomRange(1500,2000));
end else
begin
repeat
SetAngle(0);
If FindObjTpa(x, y, SkullSlopeColor, 5, 2, 3, 3, 5, ['limb-']) then
begin
wait(RandomRange(400, 450));
if (IsUpText('limb-')) then
begin
Mouse(x, y, 0, 0, true);
writeln('found skull slope2');
Wait(RandomRange(1500,2000));
break;
end;
end;
until(true);
end;
end else
begin
begin
repeat
Inc(failsafe);
MakeCompass(RandomRange(80, 100));
SetAngle(0);
until((FindObjTpa(x, y, SkullSlopeColor, 10, 2, 3, 3, 5 , ['limb-'])) or (failsafe>6));
if(failsafe>6) then
begin
writeln('couldnt the skull slope one, shutting down');
Logout;
TerminateScript;
end else
begin
wait(RandomRange(400, 450));
if (IsUpText('limb-')) then
begin
mouse(x, y, 0, 0, true);
writeln('found skull slope3');
Wait(RandomRange(1500,2000));
end;
end;
end;
end;
IncEx(TotalXp, 60);
end;
{Credit to [I believe] Marcus for this. I needed to edit it to Make the script
Run smother (lower tolerance, No tile offset). This is basically Sps_Setup}
procedure SPS_Setup2(surface: integer; areas: TStringArray);
begin
SPS_Areas := areas;
case surface of
RUNESCAPE_SURFACE:
with SPS_Surface do
begin
Name := 'Runescape Surface';
ImagePath := SPS_IMG_PATH + 'runescape_surface\';
FactorX := 400;
FactorY := 400;
TileOffsetX := -0;
TileOffSetY := -0;
Tolerance := 0.7;
end;
DUNGEON_ESSENCE_MINE:
with SPS_Surface do
begin
Name := 'Essence Mine';
ImagePath := SPS_IMG_PATH + 'essence_mine\';
FactorX := 400;
FactorY := 1;
TileOffsetX := -1;
TileOffSetY := -1;
Tolerance := 0.5;
end;
DWARVEN_MINE:
with SPS_Surface do
begin
Name := 'Dwarven Mine';
ImagePath := SPS_IMG_PATH + 'dwarven_mine\';
FactorX := 400;
FactorY := 340;
TileOffsetX := -1;
TileOffSetY := -1;
Tolerance := 0.35;
end;
RUNECRAFTING_ALTARS:
with SPS_Surface do
begin
Name := 'Runecrafting Altars';
ImagePath := SPS_IMG_PATH + 'RUNECRAFTING_ALTARS\';
FactorX := 400;
FactorY := 400;
TileOffsetX := -1;
TileOffSetY := -1;
Tolerance := 0.2;
end;
end;
SPS_Surface.Constant := surface;
if (SPS_Debug) then
begin
SPS_DebugStr('[SPS] SPS_Surface: ' + SPS_Surface.Name);
SPS_DebugStr('[SPS] SPS_Areas: ' + toStr(SPS_Areas));
end;
SPS_Loaded := false;
end;
{Credit to [I believe] Marcus for this. I needed to edit it to Make the script
Run smother (Move Camera while walking). This is basically Sps_WalkToPos}
Procedure WalkToRopeSwing;
var
MM: TPoint;
begin
if not LoggedIn then Exit;
MM := SPS_PosToMM(Point(2844, 5762));
if (MM.X > 0) then
begin
Mouse(MM.X, MM.Y, 0, 0, True);
Wait(RandomRange(100, 1250));
case Random(2) of
0: begin
SetAngle(1);
MakeCompass(90);
end;
1: begin
MakeCompass(90);
SetAngle(1);
end;
end;
if WaitFunc(@IsMoving, 1, 3000 + random(500)) then
while IsMoving do
Flag;
end;
end;
function VineRopeColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
R, G, B: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.05, 0.21);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 1991005, MSX1, MSY1, MSX2, MSY2, 10);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToRGB(arC[i], R, G, B);
if (R >= 72) and (R <= 113) and (G >= 76) and (G <= 118) and (B >= 22) and (B <= 37) then
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 5.54) and (X <= 13.38) and (Y >= 6.77) and (Y <= 16.32) and (Z >= 1.81) and (Z <= 4.13) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
Procedure SwingRopevine;
begin
Failsafe := 0;
Failsafe2 := 0;
repeat
inc(failsafe);
x := (MSCX - (RandomRange(5, 15)));
y := (MSCY - (RandomRange(30, 50)));
repeat
Inc(Failsafe2);
If FindObjTpa(x, y, VineRopeColor, 20, 2, 4, 95, 225, ['Swing']) then
Begin
Wait(RandomRange(100,200));
If IsUpText('Swing') then
begin
Mouse(x, y, 0, 0, true);
writeln('found vine swing1');
break;
end;
end;
until(Failsafe2 > 1);
if (Failsafe2 > 1) then
begin
wait(RandomRange(600,800));
If FindObjTpa(x, y, VineRopeColor, 20, 2, 3, 60, 110, ['Swing']) then
begin
Wait(RandomRange(100,200));
If IsUpText('Swing') then
begin
Mouse(x, y, 0, 0, true);
writeln('found vine swing2');
break;
end;
end;
end else
break;
until(Failsafe > 2);
if (Failsafe >2) then
begin
writeln('couldnt find ropevine');
Logout;
TerminateScript;
end;
IncEx(TotalXp, 100);
end;
function TreeTwoColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
R, G, B: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.03, 0.11);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 3958407, MSX1, MSY1, MSX2, MSY2, 7);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToRGB(arC[i], R, G, B);
if (R >= 112) and (R <= 158) and (G >= 84) and (G <= 119) and (B >= 49) and (B <= 70) then
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 10.61) and (X <= 21.48) and (Y >= 10.22) and (Y <= 20.58) and (Z >= 4.41) and (Z <= 8.49) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
Procedure HandleTreeTwo;
begin
repeat
SetAngle(0);
Wait(RandomRange(1200,2000));
Failsafe := 0;
x := (MSCX - 70);
y := MSCY;
If FindObjTpa(x, y, TreeTwoColor, 15, 2, 8, 8, 35, ['ropic']) then
Begin
wait(RandomRange(200,250));
if (IsUpText('ropic')) then
begin
Mouse(x, y, 0, 0, true);
writeln('found tree two');
Wait(RandomRange(4000,6000));
break;
end;
end else
begin
begin
repeat
x := MSCX;
y := MSCY;
Inc(failsafe);
case random(3) of
0: MakeCompass('N');
1: MakeCompass('S');
2: MakeCompass(RandomRange(-50, -55));
3: MakeCompass(Randomrange(135, 140));
end;
until((FindObjTpa(x, y, TreeTwoColor, 15, 2, 10, 10, 40, ['ropic'])) or (failsafe>6));
if(failsafe>6) then
begin
writeln('couldnt find tree two, shutting down');
Logout;
TerminateScript;
end else
begin
Wait(RandomRange(200, 300));
if (IsUpText('ropic')) then
begin
mouse(x, y, 0, 0, true);
writeln('found tree two');
Wait(RandomRange(6000,7000));
break;
end;
end;
end;
end;
until(false);
WaitColorCount(4229205, MMX1, MMY1, MMX2, MMY2, 30, 20, 100000000, 15000);
Inc(LapsDone);
Wait(RandomRange(100,700));
case Random(100) of
0..2: Wait(RandomRange(4000, 15000)); // Blowing your nose
3..4: Wait(RandomRange(30000, 90000)); // Answer the door quickly
4: Wait(RandomRange(90000, 180000)); // Take a quick dump
end;
IncEx(TotalXp, 300);
writeln('done :3');
end;
Procedure WalkToStone;
begin
ToStone := ([Point(2869, 5697), Point(2862, 5705), Point(2852, 5720)]);
SPS_WalkPath(ToStone);
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], UpChars, 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 WriteProggy;
Var
SmartLines: TStringArray;
begin
Clock := [0,0,0];
XPPH := Round((TotalXp * 3600) / (GetTimeRunning / 1000));
LapsPerHour := Round((LapsDone * 3600) / (GetTimeRunning / 1000));
ConvertTime(GetTimeRunning,Clock[0],Clock[1],Clock[2])
SetArrayLength(SmartLines, 5);
SmartLines[0]:= 'Time Running- ' +tostr(Clock[0])+':'+tostr(Clock[1])+':'+tostr(Clock[2])
SmartLines[1]:= 'XP gained-' + ToStr(TotalXp)
SmartLines[2]:= 'Exp Per hour-' + ToStr(XPPH)
SmartLines[3]:= 'Laps Completed-' + IntToStr(LapsDone)
SmartLines[4]:= 'Laps Per Hour-' +IntToStr(LapsPerHour)
PrintOnSmart(SmartLines,Point(10,254),clWhite);
end;
begin
smart_server := 91;
smart_members := false;
smart_signed := true;
smart_superDetail := false;
ClearDebug;
SetupSRL;
DeclarePlayers;
LoginPlayer;
SPS_Setup2(RUNESCAPE_SURFACE,['6_14', '7_14', '7_13']);
writeln(sps_getmypos);
PrintOnSmart(['Notice your script stops working after you open the SMART window?'], Point(100, 0), clWhite);
PrintOnSmart(['Stop opening it!'], Point(250, 30), clWhite);
wait(RandomRange(1000,1100));
WriteProggy;
repeat
MouseSpeed := RandomRange(25,35);
DoSteppingStone;
WriteProggy;
MouseSpeed := RandomRange(25,35);
FindTheTree;
WriteProggy;
MouseSpeed := RandomRange(25,35);
FindMonkeyBars;
WriteProggy;
MouseSpeed := RandomRange(25,35);
FindSkullSlope;
WriteProggy;
MouseSpeed := RandomRange(25,35);
WalkToRopeSwing;
WriteProggy;
MouseSpeed := RandomRange(25,35);
SwingRopeVine;
WriteProggy;
MouseSpeed := RandomRange(25,35);
HandleTreeTwo;
WriteProggy;
MouseSpeed := RandomRange(25,35);
WalkToStone;
WriteProggy;
until(false);
end.