ZephyrsFury
2007-08-01 08:58:01
<!– BEGIN TEMPLATE: formanswers –>
ZephyrsFury - SRL Member Application Form
ZephyrsFury
What is the meaning to life?
Where you Referred to SRL? If yes, by whom?
no
Programming Knowledge
HTML (not really a programming language)
Other Communitys
N/A
How Long have You Played Runescape
3 to 5 years
Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.
I'm 15. I live in Western Australia. My interests include Soccer, Taekwondo, Computer programming (or just the computer in general). Ummm… I like pizza… = )
I have been a part of the SRL community for about 3 months. I released my first script (an autotalker) about 2 months ago and released my Rune Mysteries Quest Runner about 2 weeks ago. Before SRL I had no idea how to program PASCAL but since reading the tuts here and writing the script I now consider myself relatively good. I like to help people with their problems (especially with scripting difficulties).
My other experiences in web designing include creating several websites for me personally and also several professional websites.
——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted
I'm not sure if you wanted the whole script in here or not so I'll just post the whole thing.
Oh and BTW, when I click on 'Manage Attachments' it says I don't have permission to view the page. EDIT: Nvm, I just edited the application after I posted it.
——————————————————
<!– END TEMPLATE: formanswers –>
ZephyrsFury - SRL Member Application Form
ZephyrsFury
What is the meaning to life?
Where you Referred to SRL? If yes, by whom?
no
Programming Knowledge
HTML (not really a programming language)
Other Communitys
N/A
How Long have You Played Runescape
3 to 5 years
Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.
I'm 15. I live in Western Australia. My interests include Soccer, Taekwondo, Computer programming (or just the computer in general). Ummm… I like pizza… = )
I have been a part of the SRL community for about 3 months. I released my first script (an autotalker) about 2 months ago and released my Rune Mysteries Quest Runner about 2 weeks ago. Before SRL I had no idea how to program PASCAL but since reading the tuts here and writing the script I now consider myself relatively good. I like to help people with their problems (especially with scripting difficulties).
My other experiences in web designing include creating several websites for me personally and also several professional websites.
——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted
I'm not sure if you wanted the whole script in here or not so I'll just post the whole thing.
Oh and BTW, when I click on 'Manage Attachments' it says I don't have permission to view the page. EDIT: Nvm, I just edited the application after I posted it.
{------------------------------------------------------------------------------]
[ ]
[ Zephyr's Rune Mysteries Quest Runner Ver 1.22 ]
[ By ZephyrsFury ]
[ ]
[------------------------------------------------------------------------------]
[ >>>> DESCRIPTION <<<< ]
[------------------------------------------------------------------------------]
[ This script will automatically do the Rune Mysteries Quest for you to allow ]
[ you to mine Rune Essence. Start it in the Lumbridge Palace courtyard and it ]
[ will talk to the Duke, talk to Sedridor, talk to Aubury then finish the ]
[ quest by talking to Sedridor again. Includes Antiban and autocolouring. ]
[------------------------------------------------------------------------------]
[ >>>> CURRENT FEATURES <<<< ]
[------------------------------------------------------------------------------]
[ o Does the quest! - It will make it (most of the time). ]
[ o Autocolouring - Uses SRL functions aswell as my own. ]
[ o Antiban - Includes the most recent and effective antiban ]
[ such as LeaveScreenEvery, BoredEvery, random ]
[ 'examining' of mainscreen objects. ]
[------------------------------------------------------------------------------]
[ >>>> NEXT VERSION <<<< ]
[------------------------------------------------------------------------------]
[ o Antirandoms - Will try to incorporate soon. ]
[ o Better Autocolouring - Trying to improve the autocolouring of doors ]
[ and ladders on the minimap. ]
[ o Multi-player - What's the point of macroing with one player? ]
[------------------------------------------------------------------------------]
[ >>>> INSTRUCTIONS <<<< ]
[------------------------------------------------------------------------------]
[ 1. Scripted and tested with SCAR Divi 3.11. Will NOT work with anything else]
[ INCLUDING SCAR 3.06. ]
[ 3. Do the usual - Low Detail, Highest Brightness, etc. ]
[ 4. Make sure you have at least 1 free inventory space. Preferably no items ]
[ so you can run whenever needed (avoiding Jail Guards for example). ]
[ 5. Start in Lumbridge Palace courtyard just at the bottom of the steps. ]
[ 6. Start the script. ]
[------------------------------------------------------------------------------]
[ >>>> ADDITIONAL CREDITS <<<< ]
[------------------------------------------------------------------------------]
[ o Niesie95 - For several key functions from his Tutorial ]
[ Runner. ]
[ o Wizzup? - For the Bank and Aubury DTM's. ]
[ o danrox2004 - For his 'Guide to walking' tut which taught me ]
[ the basics of RadialWalking and symbol finding.]
[ o WT-Fakawi - His 'How to make DDTM's' tut helped me with ]
[ creating and using DDTM's. ]
[ o lordgreggreg - Your Varrock Walker also helped my with DDTM's.]
[ o Yakman - His Radial Walking Aid is invaluable. ]
[ o crossback7 - Thanks for testing the script and suggestions. ]
[ o Born2Code - Thanks for testing also. ]
[ o venom666 - And to you aswell. ]
[ o SRL Developers - For the best RS Cheating library and community.]
[ o Jagex - Couldn't have done it without you or your game.]
[------------------------------------------------------------------------------]
[ I DO NOT AND WILL NOT TAKE RESPONSIBILITY FOR ANY ACTION TAKEN AGAINST YOUR ]
[ ACCOUNT(S) AS A RESULT OF USING MY SCRIPT. USE IT AT YOUR OWN RISK!!! ]
[ ]
[ PLEASE DON'T POST THIS SCRIPT ON ANY OTHER WEBSITES WITHOUT MY KNOWLEDGE ]
[ AND CONSENT. PM ZephyrsFury ON srl-forums.com. ]
[------------------------------------------------------------------------------}
program RuneMysteriesQuestRunner;
{.include SRL/SRL.scar}
{.include SRL/SRL/Extended/xDTM.scar}
{.include SRL/SRL/Extended/xObject.scar}
{.include SRL/SRL/Extended/xAutoTalk.scar}
{.include SRL/SRL/Extended/xAntiban.scar}
{.include SRL/SRL/skill/Magic.scar}
const
SRLStatsID = ''; // SRL Stats ID
SRLStatsPass = ''; // SRL Stats Password
AntiBanConst = 40; // Must be 10+, the lower the number the more antiban
HomeTeleport = False; // Home teleport after Varrock instead of walking?
CheckQuest = True; // Checks the status of the quest. Wastes time but makes it look more human.
//____________________________________________________________________________\\
{ }
{ DON'T HAVE TO TOUCH ANYTHING BELOW HERE }
//____________________________________________________________________________\\
const
VerNumber = '1.22'; //Don't touch!
DTMCheck = True; // Check for Air Tally, Package and notes DTM? For testing...
DoTalk = True; // Talk to Npc's? For testing...
Debugging = 1; // 1 for status bar messages, 2 for full debug, 3 for nothing. For testing...
var
Sx, Sy: integer; RoadColour, VarrockRoadColour, TowerWalkwayColour, Ladder, LadderColour,
DTMPackage, DoorColour, DTMAirTally, DTMNotes, AuburyDTM, BankDTM: integer; Angle: Extended;
TotalTime, LummyTime, ToTowerTime, TowerTime, TowerToVarrockTime, VarrockTime, VarrockToTowerTime,
k, c, i: integer; CrossRoadsDTM, RoadDTM: integer; CRTDTM, RTDTM: TDTM; RMainPoint, CRMainPoint: TDTMPointDef;
DTMCRSubPoints: Array[0..7] of TDTMPointDef; DTMRSubPoints: Array[0..3] of TDTMPointDef; FountainTBox: TBox;
procedure LoadDTMs;
begin
DTMAirTally := DTMFromString('78DA63E4616060E0634001FBB66E651001D28' +
'C40FC1F081885800C160634C0884402692E20C141400D33A65D58' +
'D5C81250230824C408A801798097801A901942F8D50000D514073' +
'3');
DTMPackage := DTMFromString('78DA63CC67626078CE80024A4AD730C801694' +
'6289FB10CA8E61A031A60442281741E50CD2D026AD2806A1E12A1' +
'E62D013520F77C24A0A61EA8E615116AEEE157030065200C8C');
DTMNotes := DTMFromString('78DA639CCBC4C0F08401056CD8B084C108483' +
'302F17F20609C0754739B010D302291407A0A116AA601D53C22A0' +
'A617A8E639013553816ADE1050B314A8E63D116A9E1250B302A8E' +
'60E7E350077FE13D7');
end;
function MsToMin(Ms: LongInt): Integer; // By Niesie95
begin
Result := (Ms/1000)/60;
end;
function MsToSec(Ms: LongInt): Integer; // By Niesie95
begin
Result := Ms/1000;
end;
procedure WriteDebug(Text: string);
begin
if (not(LoggedIn)) then Exit;
case (Debugging) of
1: Status(Text);
2: Writeln(Text);
3: Exit;
end;
end;
procedure AntiBanProc;
var
Freq, Dx, Dy: integer;
begin
if (not(LoggedIn)) then Exit;
if (AntiBanConst < 10) then
Freq := 10
else
Freq := AntiBanConst;
case (Random(Freq)) of
0: begin
MMouse(Random(MSX2), Random(MSY2), 1, 1);
if (IsUpText('opti')) then
begin
GetMousePos(Dx, Dy);
Wait(100);
Mouse(Dx, Dy, 0, 0, false);
ChooseOption(Dx, Dy, 'xamine');
end;
end;
1: begin
if (Random(4) = 1) then
begin
HoverSkill('random', false);
GameTab(4);
end;
end;
2: RandomRClickEvery(2 + Random(8));
3: LeaveScreenEvery(5 + Random(5));
4: PickUpMouse;
5: BoredEvery(9 + Random(24));
6: begin
GameTab(Random(12) + 1);
Wait(1000 + Random(500));
GameTab(4);
end;
7: SleepAndMoveMouse(5000 + Random(1000));
8: MMouse(Random(MSX2), Random(MSY2), 0, 0);
9: begin
if (Random(4) = 1) then
begin
AlmostLogout;
GameTab(4);
end;
end;
end;
end;
procedure SetRetaliateOff;
begin
if (not(LoggedIn)) then Exit;
c := 0;
GameTab(1);
if (FindColorTolerance(Sx, Sy, 1908609, 620, 367, 688, 388, 10)) then
begin
c := c + 1;
repeat
Mouse(Sx, Sy, 3, 3, true);
MarkTime(k);
while (FindColorTolerance(Sx, Sy, 1908609, 620, 367, 688, 388, 10)) do
begin
Wait(2000);
if (TimeFromMark(k) >= 2000) then
Break;
end;
until(not(FindColorTolerance(Sx, Sy, 1908609, 620, 367, 688, 388, 10))) or (c >= 5);
end;
end;
function FindDoorColour: integer;
var
x1, y1, x2, y2, x3, y3, x4, y4 : integer;
DoorBox1, DoorBox2 : TBox;
i, TempColour1, TempColour2 : integer;
begin
for i := 200 to 254 do
begin
if (FindColor(x1, y1, i, MMX1, MMY1, MMX2, MMY2)) then
begin
if (FindColor(x2, y2, i, x1 - 1, y1 - 1, x1 + 1, y1 - 1)) or
(FindColor(x2, y2, i, x1 - 1, y1 - 1, x1 - 1, y1 + 1)) or
(FindColor(x2, y2, i, x1 - 1, y1 + 1, x1 + 1, y1 + 1)) or
(FindColor(x2, y2, i, x1 + 1, y1 - 1, x1 + 1, y1 + 1)) then
begin
TempColour1 := i;
Break;
end;
end;
end;
if (TempColour1 = 0) then Exit;
for i := TempColour1 + 1 to 254 do
begin
if (FindColor(x3, y3, i, MMX1, MMY1, MMX2, MMY2)) then
begin
if (FindColor(x2, y2, i, x3 - 1, y3 - 1, x3 + 1, y3 - 1)) or
(FindColor(x2, y2, i, x3 - 1, y3 - 1, x3 - 1, y3 + 1)) or
(FindColor(x2, y2, i, x3 - 1, y3 + 1, x3 + 1, y3 + 1)) or
(FindColor(x2, y2, i, x3 + 1, y3 - 1, x3 + 1, y3 + 1)) then
begin
TempColour2 := i;
Break;
end;
end;
end;
DoorBox1.x1 := x1 - 5;
DoorBox1.y1 := y1 - 5;
DoorBox1.x2 := x1 + 5;
DoorBox1.y2 := y1 + 5;
DoorBox2.x1 := x3 - 5;
DoorBox2.y1 := y3 - 5;
DoorBox2.x2 := x3 + 5;
DoorBox2.y2 := y3 + 5;
if (TempColour2 = 0) then
Result := TempColour1
else
if (FindColorSkipBox(x4, y4, TempColour1, MMX1, MMY1, MMX2, MMY2, DoorBox1)) then
Result := TempColour1
else
if (FindColorSkipBox(x4, y4, TempColour2, MMX1, MMY1, MMX2, MMY2, DoorBox2)) then
Result := TempColour2
end;
function OpenPalaceDoor(Direction: string): boolean;
begin
if (not(LoggedIn)) then Exit;
c := 0;
repeat
c := c + 1;
case Lowercase(Direction) of
'n': if (c = 1) then MakeCompass('n') else
if (c = 2) then MakeCompass('e') else
if (c = 3) then MakeCompass('s') else
if (c = 4) then MakeCompass('w');
's': if (c = 1) then MakeCompass('s') else
if (c = 2) then MakeCompass('w') else
if (c = 3) then MakeCompass('n') else
if (c = 4) then MakeCompass('e');
'e': if (c = 1) then MakeCompass('e') else
if (c = 2) then MakeCompass('s') else
if (c = 3) then MakeCompass('w') else
if (c = 4) then MakeCompass('n');
'w': if (c = 1) then MakeCompass('w') else
if (c = 2) then MakeCompass('n') else
if (c = 3) then MakeCompass('e') else
if (c = 4) then MakeCompass('s');
end;
MarkTime(k);
repeat
if (FindObj(Sx, Sy, 'oor', 6456994, 5)) then //FindColorSpiralTolerance(Sx, Sy, 2644056, 135, 71, 538, 414, 5)) then
begin
if (IsUpTextMulti('Open', 'pen', 'Ope')) then
begin
WriteDebug('Door was closed... opening');
Mouse(Sx, Sy, 1, 1, true);
if (FindColor(x, y, 255, Sx - 10, Sy - 10, Sx + 10, Sy + 10)) then
begin
Flag;
if (FindObj(Sx, Sy, 'oor', 6456994, 5)) then
begin
MMouse(Sx, Sy, 0, 0);
Result := IsUpTextMulti('Close', 'Clo', 'ose');
end;
end;
Flag;
end else
if (IsUpTextMulti('Close', 'Clo', 'ose')) then
begin
WriteDebug('Door was open');
Result := True;
end;
end;
until(Result = True) or (TimeFromMark(k) >= 2000);
Wait(500 + random(200));
if (Result = True) then
Break;
until(c >= 5);
MakeCompass('n');
end;
function OpenTowerDoor(Direction: char): boolean;
begin
if (not(LoggedIn)) then Exit;
ColorToleranceSpeed(2);
MarkTime(k);
MakeCompass(Direction);
repeat
if (FindObjMulti('oor', 2652829, 2453135, 3364464, 5)) then//FindColorTolerance(Sx, Sy, 3364464, 235, 130, 300, 177, 20)) then
begin
if (IsUpTextMulti('Open', 'pen', 'Ope')) then
begin
GetMousePos(Sx, Sy);
WriteDebug('Door was closed... opening');
Mouse(Sx, Sy, 1, 1, true);
if (FindColor(x, y, 255, Sx - 10, Sy - 10, Sx + 10, Sy + 10)) then
begin
Flag;
if (FindObjMulti('oor', 2652829, 2453135, 3364464, 5)) then
begin
GetMousePos(Sx, Sy);
MMouse(Sx, Sy, 0, 0);
Result := IsUpTextMulti('Close', 'Clo', 'ose');
end;
end;
end else
if (IsUpTextMulti('Close', 'Clo', 'ose')) then
begin
WriteDebug('Door was open');
Result := True;
Break;
end;
end;
until(Result = True) or (TimeFromMark(k) >= 5000);
ColorToleranceSpeed(1);
Wait(1000 + random(500));
end;
function OpenAuburyDoor: boolean;
begin
if (not(LoggedIn)) then Exit;
ColorToleranceSpeed(2);
MarkTime(k);
repeat
if (FindObj(Sx, Sy, 'oor', 4813698, 19)) then//FindColorTolerance(Sx, Sy, 4813698, 235, 130, 300, 177, 20)) then
begin
if (IsUpTextMulti('Open', 'pen', 'Ope')) then
begin
WriteDebug('Aubury Door was closed... opening');
Mouse(Sx, Sy, 1, 1, true);
FFlag(0);
if (FindObj(Sx, Sy, 'oor', 4813698, 19)) then
begin
MMouse(Sx, Sy, 0, 0);
if (IsUpTextMulti('Close', 'Clo', 'ose')) then
begin
Result := True;
Break;
end;
end;
end else
if (IsUpTextMulti('Close', 'Clo', 'ose')) then
begin
WriteDebug('Door was open');
Result := True;
MakeCompass('n');
Break;
end;
end;
until(Result = True) or (TimeFromMark(k) >= 3000);
ColorToleranceSpeed(1);
MakeCompass('n');
Wait(1000 + random(500));
end;
function ClimbPalaceStairs(UpOrDown: string): boolean;
begin
if (not(LoggedIn)) then Exit;
c := 0;
repeat
c := c + 1;
if (FindObj(Sx, Sy, 'airc', 603212, 10)) then// (FindColorSpiralTolerance(Sx, Sy, 606560, 0, 143, 250, 337, 5)) then
begin
Mouse(Sx, Sy, 1, 1, false);
wait(200);
case (Lowercase(UpOrDown)) of
'up': begin
ChooseOption(Sx, Sy, 'limb-up');
Writeln('Climbing up');
MarkTime(k);
while (not(GetColor(583, 78) = 0)) do
begin
Wait(1000);
if (TimeFromMark(k) >= 3000) then Break;
end;
if (GetColor(583, 78) = 0) then
Result := True;
end;
'down': begin
ChooseOption(Sx, Sy, 'limb-down');
Writeln('Climbing down');
MarkTime(k);
while (GetColor(583, 78) = 0) do
begin
Wait(1000);
if (TimeFromMark(k) >= 3000) then Break;
end;
if (not(GetColor(583, 78) = 0)) then
Result := True;
end;
end;
end;
until(Result = True) or (c >= 3);
end;
function MoveToLadder(StartQuadrant, EndQuadrant: integer): boolean;
var
x1, y1, x2, y2, tol: integer;
begin
if (not(LoggedIn)) then Exit;
MakeCompass('n');
case (StartQuadrant) of
1: begin
x1 := MMCX;
y1 := MMY1;
end;
2: begin
x1 := MMX1;
y1 := MMY1;
end;
3: begin
x1 := MMX1;
y1 := MMCY;
end;
4: begin
x1 := MMCX;
y1 := MMCY;
end;
end;
case (EndQuadrant) of
1: begin
x2 := MMX2;
y2 := MMCY;
end;
2: begin
x2 := MMCX;
y2 := MMCY;
end;
3: begin
x2 := MMCX;
y2 := MMY2;
end;
4: begin
x2 := MMX2;
y2 := MMY2;
end;
end;
k := 0;
Tol := 0;
repeat
Sx := MMCX;
Sy := MMCY;
if (FindColorTolerance(Sx, Sy, LadderColour, x1, y1, x2, y2, Tol)) then
begin
WriteDebug('Moving to stairs');
LadderColour := GetColor(Sx, Sy);
Mouse(Sx + 10, Sy - 5, 1, 1, true);
Result := True;
Flag;
end else
begin
Tol := Tol + 1;
Writeln('Could not find ladder... increasing tolerance');
//Wait(200);
end;
until(Result = True) or (Tol = 30);
end;
function ClickSymbol(Symbol :string): boolean;
begin
if (not(LoggedIn)) then Exit;
if (FindSymbol(Sx, Sy, Symbol)) then
begin
WriteDebug('Clicking '+Symbol+' symbol');
Mouse(Sx + 4, Sy + 4, 1, 1, true);
AntiBanProc;
FFlag(0);
Result := True;
end;
end;
function InTalk: Boolean; // From Niesie95's Tutorial Runner
begin
if (FindColorTolerance(x, y, 128, 220, 360, 365, 370, 5)) then
Result := True;
end;
function ClickAnswer(Answer: string): Boolean; //Based on SRL's ClickToContinue function
begin
if (not(LoggedIn)) then Exit;
if (FindNpcChatText(Answer)) then
begin
Mouse(x + Random(35), y + Random(8), 0, 0, True);
Wait(100);
Result := True;
end;
end;
function TalkToNpc(Npc: string):Boolean;
begin
if (not(DoTalk)) then Exit;
if (not(LoggedIn)) then Exit;
case Lowercase(npc) of
'duke horacio': begin
repeat
if (FindObj(Sx, Sy, 'uke', 4196352, 5)) then //FindColorSpiralTolerance(Sx, Sy, 4196352, MSX1, MSY1, MSX2, MSY2, 10)) then
begin
Mouse(Sx, Sy, 1, 1, false);
ChooseOption(Sx, Sy, 'alk-to');
MarkTime(k);
repeat
wait(500);
until(InTalk) or (TimeFromMark(k) >= 3000);
if (InTalk) then
begin
Writeln('We are talking to Duke Horacio');
wait(1000 + random(200));
ClickAnswer('continue');
Wait(1000);
ClickAnswer('quests');
Wait(1000);
c := 0;
repeat
ClickAnswer('continue');
Wait(1000);
c := c + 1;
until(c >= 4);
ClickAnswer('probl');
Wait(1000);
c := 0;
repeat
ClickAnswer('continue');
Wait(1000);
c := c + 1;
until(c >= 3);
Wait(1000 + random(500));
if (DTMCheck) then
begin
if (FindDTM(DTMAirTally, x, y, 549, 197, 744, 464)) then
begin
Result := True;
Break;
end;
end else
Result := True;
end;
end;
until(Result = True);
end;
'sedridor': begin
repeat
if (FindObj(Sx, Sy, 'drid', 16493628, 10)) then // FindColorSpiralTolerance(Sx, Sy, 15309085, MSX1, MSY1, MSX2, MSY2, 10)) then
begin
Mouse(Sx, Sy, 1, 1, false);
ChooseOption(Sx, Sy, 'alk-to');
MarkTime(k);
repeat
wait(500);
until(InTalk) or (TimeFromMark(k) >= 3000);
if (InTalk) then
begin
Writeln('We are talking to Sedridor');
wait(1000 + random(200));
if (FindDTM(DTMAirTally, x, y, 549, 197, 744, 464)) then
begin
ClickAnswer('continue');
Wait(1000);
ClickAnswer('head');
Wait(1000);
c := 0;
repeat
ClickAnswer('continue');
Wait(1000);
c := c + 1;
until(c >= 4);
ClickAnswer('here you');
Wait(1000);
c := 0;
repeat
ClickAnswer('continue');
Wait(1000);
c := c + 1;
until(c >= 10);
ClickAnswer('certainly');
Wait(1000);
c := 0;
repeat
ClickAnswer('continue');
Wait(1000);
c := c + 1;
until(c >= 6);
if (DTMCheck) then
begin
if (FindDTM(DTMPackage, x, y, 549, 197, 744, 464)) then
begin
Result := True;
Break;
end;
end else
Result := True;
end;
if (FindDTM(DTMNotes, x, y, 549, 197, 744, 464)) then
begin
c := 0;
repeat
ClickAnswer('continue');
Wait(1000);
c := c + 1;
until (c >= 29);
if (DTMCheck) then
begin
if (FindDTM(DTMAirTally, x, y, 549, 197, 744, 464)) then
begin
Result := True;
Break;
end;
end else
Result := True;
end;
end;
end;
until(Result = True);
end;
'aubury': begin
repeat
if (FindObj(Sx, Sy, 'bury', 2998011, 10)) then //FindColorSpiralTolerance(Sx, Sy, 2998011, MSX1, MSY1, MSX2, MSY2, 10)) then
begin
Mouse(Sx, Sy, 1, 1, false);
ChooseOption(Sx, Sy, 'alk-to');
MarkTime(k);
repeat
wait(500);
until(InTalk) or (TimeFromMark(k) >= 3000);
if (InTalk) then
begin
Writeln('We are talking to Aubury');
wait(1000 + random(200));
if (FindDTM(DTMPackage, x, y, 549, 197, 744, 464)) then
begin
ClickAnswer('continue');
Wait(1000);
ClickAnswer('package');
Wait(1000);
c := 0;
repeat
ClickAnswer('continue');
Wait(1000);
c := c + 1;
until(c >= 4);
if (DTMCheck) then
begin
if (not(FindDTM(DTMPackage, x, y, 549, 197, 744, 464))) then
Result := True;
Break;
end else
Result := True;
end;
if (not(FindDTM(DTMPackage, x, y, 549, 197, 744, 464))) then
begin
c:=0;
repeat
ClickAnswer('continue');
Wait(1000);
c := c + 1;
until(c >= 5);
if (DTMCheck) then
begin
if (FindDTM(DTMNotes, x, y, 549, 197, 744, 464)) then
Result := True;
Break;
end else
Result := True;
end;
end;
end;
until(Result = True);
end;
end;
end;
function WalkBesideWall(Dir: char): boolean;
var
g, h : integer;
begin
if (not(LoggedIn)) then Exit;
case (LowerCase(Dir)) of
'n': begin
h := -55;
g := -10;
end;
's': begin
h := 40;
g := 20;
end;
end;
x := MMCX;
y := MMCY + h;
if (FindColorSpiralTolerance(x, y, 15461350, MMX1, MMCY + h, MMCX + g, MMCY + h + 2, 20)) then
begin
Mouse(x + 35, y, 5, 5, true);
AntiBanProc;
if (Dir = 'n') then
FFlag(20)
else
FFlag(0);
Result := True;
end else
if (FindColorSpiralTolerance(x, y, 15461350, MMCX + g, MMCY + h, MMX2, MMCY + h + 2, 20)) then
begin
Mouse(x - 50, y, 5, 5, true);
AntiBanProc;
if (Dir = 'n') then
FFlag(20)
else
FFlag(0);
Result := True;
end;
end;
function ClickBetweenFountains: boolean;
begin
if (not(LoggedIn)) then Exit;
if (FindColorTolerance(x, y, 10573655, MMX1, MMY1, MMX2, MMY2, 30)) then
begin
FountainTBox.x1 := x - 30;
FountainTBox.y1 := y - 30;
FountainTBox.x2 := x + 30;
FountainTBox.y2 := y + 30;
if (FindColorSkipBoxTolerance(Sx, Sy, 10573655, MMX1, MMY1, MMX2, MMY2, 30, FountainTBox)) then
begin
if (y > MMCY) and (Sy > MMCY) then Exit
else
if (y < MMCY) and (Sy < MMCY) then Exit
else
begin
WriteDebug('Clicking between the fountains');
Mouse((Sx + x) / 2, (Sy + y) / 2, 0, 0, true);
FFlag(0);
Result := True;
end;
end;
end;
end;
function CheckQuestStatus: boolean;
begin
if (not(LoggedIn)) then Exit;
c := 0;
if (not(CheckQuest)) then
Exit;
repeat
WriteDebug('Checking Quest Status');
c := c + 1;
GameTab(3);
Wait(1000 + random(1000));
if (not(FindText(Sx, Sy, 'yster', StatChars, 560, 233, 717, 449))) then
begin
Mouse(731, 255, 1, 1, true);
Wait(100);
MMouse(732, 448, 1, 1);
Wait(50);
HoldMouse(732, 448, true);
Wait(500 + random(50));
ReleaseMouse(732, 448, true);
end;
if (FindText(Sx, Sy, 'yster', StatChars, 560, 233, 717, 449)) then
begin
Wait(100);
Mouse(Sx, Sy + 3, 10, 1, true);
Wait(500 + random(500));
end;
if (FindColorTolerance(x, y, 128, 50, 57, 208, 84, 5)) then
begin
c := 0;
Result := True;
if (Random(3) = 2) then
begin
MMouse(463, 295, 1, 1);
Wait(50);
HoldMouse(463, 295, true);
Wait(200 + random(50));
ReleaseMouse(463, 295, true);
c := c + 1;
end;
Wait(3000 + random(1000));
repeat
Mouse(458, 69, 1, 1, true);
Wait(2000 + random(500));
until(not(FindColorTolerance(x, y, 128, 50, 57, 208, 84, 5)));
end;
until(Result = True) or (c >= 2);
GameTab(4);
end;
procedure SetCrossRoadsDTM;
begin
CRMainPoint.x := 117;
CRMainPoint.y := 83;
CRMainPoint.areasize := 1;
CRMainPoint.areashape := 0;
CRMainPoint.color := RoadColour;
CRMainPoint.tolerance := 5;
DTMCRSubPoints[0].x := 128;
DTMCRSubPoints[0].y := 49;
DTMCRSubPoints[0].areasize := 1;
DTMCRSubPoints[0].areashape := 0;
DTMCRSubPoints[0].color := RoadColour;
DTMCRSubPoints[0].tolerance := 5;
DTMCRSubPoints[1].x := 150;
DTMCRSubPoints[1].y := 77;
DTMCRSubPoints[1].areasize := 1;
DTMCRSubPoints[1].areashape := 0;
DTMCRSubPoints[1].color := RoadColour;
DTMCRSubPoints[1].tolerance := 5;
DTMCRSubPoints[2].x := 109;
DTMCRSubPoints[2].y := 112;
DTMCRSubPoints[2].areasize := 1;
DTMCRSubPoints[2].areashape := 0;
DTMCRSubPoints[2].color := RoadColour;
DTMCRSubPoints[2].tolerance := 5;
DTMCRSubPoints[3].x := 74;
DTMCRSubPoints[3].y := 82;
DTMCRSubPoints[3].areasize := 1;
DTMCRSubPoints[3].areashape := 0;
DTMCRSubPoints[3].color := RoadColour;
DTMCRSubPoints[3].tolerance := 5;
DTMCRSubPoints[4].x := 116;
DTMCRSubPoints[4].y := 102;
DTMCRSubPoints[4].areasize := 1;
DTMCRSubPoints[4].areashape := 0;
DTMCRSubPoints[4].color := RoadColour;
DTMCRSubPoints[4].tolerance := 5;
DTMCRSubPoints[5].x := 116;
DTMCRSubPoints[5].y := 67;
DTMCRSubPoints[5].areasize := 1;
DTMCRSubPoints[5].areashape := 0;
DTMCRSubPoints[5].color := RoadColour;
DTMCRSubPoints[5].tolerance := 5;
DTMCRSubPoints[6].x := 133;
DTMCRSubPoints[6].y := 83;
DTMCRSubPoints[6].areasize := 1;
DTMCRSubPoints[6].areashape := 0;
DTMCRSubPoints[6].color := RoadColour;
DTMCRSubPoints[6].tolerance := 5;
DTMCRSubPoints[7].x := 93;
DTMCRSubPoints[7].y := 84;
DTMCRSubPoints[7].areasize := 1;
DTMCRSubPoints[7].areashape := 0;
DTMCRSubPoints[7].color := RoadColour;
DTMCRSubPoints[7].tolerance := 5;
CRTDTM.MainPoint := CRMainPoint;
CRTDTM.SubPoints := DTMCRSubPoints;
CrossRoadsDTM := AddDTM(CRTDTM);
end;
procedure SetRoadDTM;
begin
RMainPoint.x := 102;
RMainPoint.y := 111;
RMainPoint.areasize := 1;
RMainPoint.areashape := 0;
RMainPoint.color := RoadColour;
RMainPoint.tolerance := 15;
DTMRSubPoints[0].x := 96;
DTMRSubPoints[0].y := 145;
DTMRSubPoints[0].areasize := 1;
DTMRSubPoints[0].areashape := 0;
DTMRSubPoints[0].color := RoadColour;
DTMRSubPoints[0].tolerance := 15;
DTMRSubPoints[1].x := 135;
DTMRSubPoints[1].y := 117
DTMRSubPoints[1].areasize := 1;
DTMRSubPoints[1].areashape := 0;
DTMRSubPoints[1].color := RoadColour;
DTMRSubPoints[1].tolerance := 15;
DTMRSubPoints[2].x := 124;
DTMRSubPoints[2].y := 121;
DTMRSubPoints[2].areasize := 1;
DTMRSubPoints[2].areashape := 0;
DTMRSubPoints[2].color := RoadColour;
DTMRSubPoints[2].tolerance := 15;
DTMRSubPoints[3].x := 102;
DTMRSubPoints[3].y := 129;
DTMRSubPoints[3].areasize := 1;
DTMRSubPoints[3].areashape := 0;
DTMRSubPoints[3].color := RoadColour;
DTMRSubPoints[3].tolerance := 15;
RTDTM.MainPoint := RMainPoint;
RTDTM.SubPoints := DTMRSubPoints;
RoadDTM := AddDTM(RTDTM);
end;
procedure LummyCastle;
begin
if (not(LoggedIn)) then TerminateScript;
Ladder := BitmapFromString2(False, 'aD20C178DA4DCD3B1600210' +
'803C02BA110C052F773FF232DB17129A608792022AD35A9C95958' +
'CF12F6D0C8637AE97A95BA98D8D82AF39EC60EB8C5BB9B9D27214' +
'C3C78DFA71D17CA18BBE4FC2B71413BC4FEBA62E1FE005B3');
MarkTime(LummyTime);
Writeln('Starting with Lumbridge Palace');
SetRun(True);
GameTab(4);
if (InvCount >= 27) then
begin
Writeln('You need at least one free inventory space.');
TerminateScript;
end;
LadderColour := AutoColorThis(Ladder, 40, MMCX, MMY1, MMX2, MMY2);
if (LadderColour = 0) or (not(FindColor(Sx, Sy, LadderColour, MMCX, MMY1, MMX2, MMY2))) then
begin
Writeln('AutoColouring with bitmaps did not work');
LadderColour := FindLadderColor;
if (LadderColour = 0) or (not(FindColor(Sx, Sy, LadderColour, MMX1, MMCY, MMX2, MMY2))) then
begin
Writeln('FindLadderColor did not work');
if (FindColorTolerance(Sx, Sy, 10837, MMCX + 15, MMY1 + 40, MMX2, MMY2 - 40, 30)) then
LadderColour := GetColor(Sx, Sy)
else
begin
Writeln('FindColorTolerance did not work');
LadderColour := 10837;
end;
end;
end;
Writeln('Ladder colour = ' + IntToStr(LadderColour));
FreeBitmap(Ladder);
RoadColour := FindRoadColor;
ClickBetweenFountains;
Writeln('Entering Lumbridge Palace');
if (not(RadialWalk(RoadColour, 200, 240, 62, 0, -1))) then
begin
if (FindColorTolerance(Sx, Sy, 10573655, MMX1, MMCY, MMX2, MMY2, 30)) then
begin
Mouse(Sx - 50, Sy, 1, 1, true);
WriteDebug('Using water fountain colour to click');
FFlag(5);
end;
end else
begin
WriteDebug('Using RadialWalk to click');
FFlag(5);
end;
if (not(MoveToLadder(3, 3))) then
begin
WriteDebug('Using mouse click to move to ladder');
Mouse(MMCX - 15, MMCY + 5, 1, 1, true);
FFlag(10);
end;
ClimbPalaceStairs('up');
Mouse(639, 28, 1, 1, true);
AntiBanProc;
FFlag(0);
OpenPalaceDoor('n');
if (not FindObj(Sx, Sy, 'uke', 4196352, 5)) then
begin
MouseFlag(660, 85, 1, 1);
Wait(1000 + random(500));
end;
if (not FindObj(Sx, Sy, 'uke', 4196352, 5)) then
begin
MakeCompass('e');
Wait(1000 + -random(500));
end;
if (not FindObj(Sx, Sy, 'uke', 4196352, 5)) then
begin
MakeCompass('s');
Wait(1000 + -random(500));
end;
if (not FindObj(Sx, Sy, 'uke', 4196352, 5)) then
begin
MakeCompass('w');
Wait(1000 + -random(500));
end;
FFlag(0);
TalkToNpc('Duke Horacio');
if (Random(2) = 1) then
begin
Wait(2000 + random(500));
CheckQuestStatus;
end;
Wait(1000 + random(500));
MakeCompass('n');
MouseFlag(622, 90, 1, 1);
if (not(OpenPalaceDoor('n'))) then
begin
MouseFlag(622, 90, 1, 1);
OpenPalaceDoor('n');
end;
if (not(MoveToLadder(3, 4))) then
begin
WriteDebug('Using mouse click to move to ladder');
Mouse(626, 136, 1, 1, true);
Flag;
end;
ClimbPalaceStairs('down');
if (not(RadialWalk(RoadColour, 60, 120, 35, -1, 0))) then
begin
if (FindColorTolerance(Sx, Sy, 10573655, MMX1, MMCY - 30, MMX2, MMY2, 30)) then
begin
Mouse(Sx - 35, Sy, 1, 1, True);
WriteDebug('Using water fountain colour to click');
FFlag(5);
end;
end else
WriteDebug('Using RadialWalk to click');
c := 0;
if (not(ClickBetweenFountains)) then
begin
if (FindColorTolerance(Sx, Sy, 10573655, MMX1, MMCY - 30, MMX2, MMY2, 35)) then
begin
Mouse(Sx, Sy - 30, 1, 1, True);
WriteDebug('Using water fountain colour to click');
FFlag(5);
end else
begin
Mouse(676, 50, 1, 1, true);
WriteDebug('Using mouse clicks');
FFlag(10);
end;
end else
c := c + 1;
if (c = 0) then
ClickBetweenFountains
Writeln('Finished with Lumbridge Palace');
Writeln('Lumbridge Palace took: ' + IntToStr(Round(MsToSec(TimeFromMark(LummyTime)))) + ' sec');
Writeln('');
AddToReport(' Lumbridge Palace: ' + IntToStr(Round(MsToSec(TimeFromMark(LummyTime)))) + ' sec');
end;
procedure LummyToTower(Time: integer);
begin
if (not(LoggedIn)) then TerminateScript;
if (Time = 1) then
MarkTime(ToTowerTime);
MakeCompass('N');
Writeln('Starting with Lumbridge to Tower');
SetRun(False);
GameTab(4);
Wait(500 + random(500));
if (DTMCheck) then
begin
if (Time = 1) then
begin
if (not(FindDTM(DTMAirTally, x, y, 549, 197, 744, 464))) then
begin
Writeln('Lost Air Talisman, Terminating...');
TerminateScript;
end;
end else
if (Time = 2) then
begin
if (not(FindDTM(DTMNotes, x, y, 549, 197, 744, 464))) then
begin
Writeln('Lost Aubury' + #39 + 's Notes, Terminating...');
TerminateScript;
end;
end;
end;
RoadColour := FindRoadColor;
Writeln('Exiting Palace');
WriteDebug('Following road');
RadialWalk(RoadColour, 70, 100, 65, -1, 0);
RadialWalk(RoadColour, 360, 320, 60, 1, 1);
RadialWalk(RoadColour, 280, 340, 60, 1, 1);
WriteDebug('Using mouse clicks to get to tower');
Mouse(586, 73, 1, 1, true);
AntiBanProc;
FFlag(10);
Mouse(590, 72, 3, 3, true);
AntiBanProc;
FFlag(10);
c := 0;
i := 0;
k := 0;
SymbolAccuracy := 0.5;
repeat
if (FindSymbol(Sx, Sy, 'dungeon')) and (i = 0) then
begin
i := i + 1;
WriteDebug('Found Dungeon symbol');
repeat
k := k + 1;
if (Rs_OnMinimap(Sx, Sy + (55 - k))) then
Mouse(Sx , Sy + (55 - k), 1, 1, true);
until(Rs_OnMinimap(Sx, Sy + (55 - k)))
AntiBanProc;
FFlag(0);
end;
if (c = 3) then
begin
WriteDebug('Running to avoid Jail Guards');
SetRun(true);
end;
Mouse(587, 105, 5, 2, true);
if (c < 3) then
AntiBanProc;
FFlag(10);
c := c + 1;
until(FindColorTolerance(Sx, Sy, RoadColour, MMX1 + 20, MMCY, MMCX, MMY2, 10));
SymbolAccuracy := 0.8;
c := 0;
repeat
c := c + 1;
if (not (RadialWalk(RoadColour, 90, 270, 65, 0, -1))) then
begin
RoadColour := FindRoadColor;
c := c - 1;
end;
until(FindColorTolerance(Sx, Sy, 12161662, MMCX - 20, MMCY - 20, MMCX + 20, MMCY + 20, 40));
SetRun(false);
GameTab(4);
MouseFlag(640, 115, 1, 1);
TowerWalkwayColour := FindRoadColor;
repeat
if (not(RadialWalk(TowerWalkwayColour, 135, 230, 60, 0, -1))) then
TowerWalkwayColour := FindRoadColor;
until(not(FindColorTolerance(Sx, Sy, TowerWalkwayColour, 624, 92, 675, 100, 10)));//FindSymbol(Sx, Sy, 'water'));
AntiBanProc;
FFlag(0);
if (Time = 1) then
begin
Writeln('Lumbridge to Wizard' + #39 + 's Tower took: ' + IntToStr(Round(MsToSec(TimeFromMark(ToTowerTime)))) + ' sec');
Writeln('');
AddToReport(' Lummy to Tower: ' + IntToStr(Round(MsToSec(TimeFromMark(ToTowerTime)))) + ' sec');
end else
if (Time = 2) then
begin
Writeln('Varrock to Wizard' + #39 + 's Tower took: ' + IntToStr(Round(MsToSec(TimeFromMark(VarrockToTowerTime)))) + ' sec');
Writeln('');
AddToReport(' Varrock to Tower: ' + IntToStr(Round(MsToSec(TimeFromMark(VarrockToTowerTime)))) + ' sec');
end;
end;
procedure Tower(Time: integer);
begin
if (not(LoggedIn)) then TerminateScript;
Ladder := BitmapFromString2(False, 'aD20C178DA4DCD3B1600210' +
'803C02BA110C052F773FF232DB17129A608792022AD35A9C95958' +
'CF12F6D0C8637AE97A95BA98D8D82AF39EC60EB8C5BB9B9D27214' +
'C3C78DFA71D17CA18BBE4FC2B71413BC4FEBA62E1FE005B3');
MarkTime(TowerTime);
Writeln('Starting with Wizard' + #39 + 's Tower');
GameTab(4);
if (Time = 1) then
begin
if (DTMCheck) then
if (not(FindDTM(DTMAirTally, x, y, 549, 197, 744, 464))) then
begin
Writeln('Lost Air Talisman, Terminating...');
TerminateScript;
end;
end;
if (Time = 2) then
begin
if (DTMCheck) then
if (not FindDTM(DTMNotes, x, y, 549, 197, 744, 464)) then
begin
Writeln('Lost Aubury' + #39 + 's Notes, Terminating...');
TerminateScript;
end;
end;
SetRun(True);
GameTab(4);
c := 0;
repeat
c := c + 1;
DoorColour := FindDoorColour;
Writeln('Door Colour = '+IntToStr(DoorColour));
if (DoorColour = 0) then
Writeln('FindDoorColour did not work, trying again...');
until(not(DoorColour = 0)) or (c >= 3);
if (DoorColour = 0) then
WriteDebug('FindDoorColour did not work');
//if (not(RadialWalk(DoorColour, 270, 190, 40, 1, -1))) then
Sx := MMCX;
Sy := MMCY;
if (FindColorSpiral(Sx, Sy, DoorColour, MMX1, MMCY, MMX2, MMY2)) then
begin
WriteDebug('Using DoorColour to walk to door');
Mouse(Sx, Sy, 1, 1, true);
FFlag(0);
end else
begin
MouseFlag(624, 106, 1, 1)
WriteDebug('Using mouse clicks to walk to door');
end;// else
{begin
//WriteDebug('Using RadialWalk to walk to door');
FFlag(0);
end;}
LadderColour := FindLadderColor;
if (LadderColour = 0) or not (FindColor(Sx, Sy, LadderColour, MMX1, MMCY, MMX2, MMY2)) then
begin
Writeln('FindLadderColor did not work');
LadderColour := AutoColorThis(Ladder, 30, MMX1, MMCY, MMX2, MMY2);
Writeln('Ladder colour = ' + IntToStr(LadderColour));
end
if (LadderColour = 0) or not (FindColor(Sx, Sy, LadderColour, MMX1, MMCY, MMX2, MMY2)) then
begin
Writeln('AutoColouring with bitmaps did not work');
if (FindColorTolerance(Sx, Sy, 5958, MMX1, MMCY, MMX2, MMY2, 20)) then
begin
LadderColour := GetColor(Sx, Sy);
Writeln('Ladder colour = ' + IntToStr(LadderColour));
end else
begin
Writeln('FindColorTolerance did not work');
LadderColour := 5958;
Writeln('Ladder colour = ' + IntToStr(LadderColour));
end;
end;
FreeBitmap(Ladder);
OpenTowerDoor('s');
MouseFlag(656, 63, 1, 1);
OpenTowerDoor('s');
MakeCompass('n');
MoveToLadder(3, 4); //MouseFlag(637, 88, 1, 1);
FFlag(10);
c := 0;
repeat
c := c + 1;
if (c >= 30) then
begin
Writeln('Could not find ladder, Terminating...');
TerminateScript;
end;
if (FindObj(Sx, Sy, 'adder', 1052691, 10)) then//FindColorSpiralTolerance(Sx, Sy, 1052691, 223, 130, 286, 236, 10)) then
begin
MMouse(Sx, Sy, 1, 1);
wait(100);
if (IsUpText('adder')) then
begin
Mouse(Sx, Sy, 1, 1, true);
Writeln('Climbing down ladder');
MarkTime(k);
while (GetColor(589, 95) <> 0) and (TimeFromMark(k) < 3000) do
Wait(1000);
end;
end;
until(GetColor(589, 95) = 0);
WriteDebug('We are underground');
Wait(1000 + random(500));
c := 0;
repeat
c := c + 1;
DoorColour := FindDoorColour;
Writeln('Door Colour = '+IntToStr(DoorColour));
if (DoorColour = 0) then
WriteDebug('FindDoorColour did not work, trying again...');
until(not(DoorColour = 0)) or (c >= 3);
if (DoorColour = 0) then
WriteDebug('FindDoorColour did not work');
//if (not(RadialWalk(DoorColour, 130, 160, 35, -1, -1))) then
if (FindColor(Sx, Sy, DoorColour, MMX1, MMY1, MMX2, MMY2)) then
begin
WriteDebug('Using DoorColour to walk to door');
Mouse(Sx, Sy, 1, 1, true);
FFlag(0);
end else
begin
WriteDebug('Using mouse click to walk to door');
Mouse(665, 109, 1, 1, true);
AntiBanProc;
FFlag(0);
end;// else
{begin
WriteDebug('Using RadialWalk to walk to door');
FFlag(0);
end; }
OpenTowerDoor('e');
MakeCompass('n');
if (not FindObj(Sx, Sy, 'drid', 15309085, 10)) then
begin
MouseFlag(617, 75, 1, 1);
Wait(2000 + random(500));
end;
if (not FindObj(Sx, Sy, 'drid', 15309085, 10)) then
begin
MakeCompass('e');
Wait(2000 + random(500));
end;
if (not FindObj(Sx, Sy, 'drid', 15309085, 10)) then
begin
MakeCompass('s');
Wait(2000 + random(500));
end;
if (not FindObj(Sx, Sy, 'drid', 15309085, 10)) then
begin
MakeCompass('w');
Wait(2000 + random(500));
end;
FFlag(0);
TalkToNpc('Sedridor');
if (Random(2) = 1) and (Time = 1) then
begin
Wait(2000 + random(500));
CheckQuestStatus;
end;
if (Time = 2) then
begin
Wait(3000);
if (FindDTM(DTMAirTally, x, y, 549, 197, 744, 464)) then
Writeln('Found Air Tally, FINISHED QUEST!');
Writeln('Wizard' + #39 + 's Tower took: ' + IntToStr(Round(MsToSec(TimeFromMark(TowerTime)))) + ' sec');
Writeln('');
AddToReport(' Wizard' + #39 + 's Tower: ' + IntToStr(Round(MsToSec(TimeFromMark(TowerTime)))) + ' sec');
Exit;
end;
MakeCompass('n');
if (FindSymbol(Sx, Sy, 'transportation')) then
begin
if (FindColor(Sx, Sy, DoorColour, Sx - 30, Sy - 30, Sx + 30, Sy + 30)) then
begin
MouseFlag(Sx + 2, Sy, 0, 0)
WriteDebug('Used DoorColour to walk to door');
end else
begin
MouseFlag(691, 81, 1, 1);
WriteDebug('Used mouse click to walk to door');
end;
end;
OpenTowerDoor('e');
MakeCompass('n');
MoveToLadder(2, 1);
FFlag(10);
c := 0;
repeat
c := c + 1;
if (c >= 30) then
begin
Writeln('Could not find ladder, Terminating...');
TerminateScript;
end;
if (FindObj(Sx, Sy, 'adder', 2511215, 10)) then //FindColorSpiralTolerance(Sx, Sy, 2511215, 135, 71, 538, 414, 5)) then
begin
MMouse(Sx, Sy, 1, 1);
wait(100);
if (IsUpText('adder')) then
begin
Mouse(Sx, Sy, 1, 1, true);
Writeln('Climbing up ladder');
MarkTime(k);
while (GetColor(589, 95) = 0) and (TimeFromMark(k) < 3000) do
Wait(1000);
end;
end;
until(GetColor(589, 95) <> 0);
WriteDebug('We are up again');
Wait(1000 + random(500));
MouseFlag(656, 87, 1, 1);
OpenTowerDoor('n');
c := 0;
repeat
c := c + 1;
DoorColour := FindDoorColour;
Writeln('Door Colour = '+IntToStr(DoorColour));
if (DoorColour = 0) then
WriteDebug('FindDoorColour did not work, trying again...');
until(not(DoorColour = 0)) or (c >= 3);
if (DoorColour = 0) then
WriteDebug('FindDoorColour did not work');
if (RadialWalk(DoorColour, 15, 40, 25, 1, -1)) then
WriteDebug('Used RadialWalk to walk to door')
else
begin
MouseFlag(656, 65, 1, 1);
WriteDebug('Used mouse click to walk to door');
end;
OpenTowerDoor('s');
MakeCompass('n');
MouseFlag(667, 67, 1, 1);
Writeln('Wizard' + #39 + 's Tower took: ' + IntToStr(Round(MsToSec(TimeFromMark(TowerTime)))) + ' sec');
Writeln('');
AddToReport(' Wizard' + #39 + 's Tower: ' + IntToStr(Round(MsToSec(TimeFromMark(TowerTime)))) + ' sec');
end;
procedure TowerToVarrock;
begin
if (not(LoggedIn)) then TerminateScript;
MarkTime(TowerToVarrockTime);
Writeln('Starting with Tower To Varrock');
SetRun(false);
GameTab(4);
if (DTMCheck) then
if (not(FindDTM(DTMPackage, x, y, 549, 197, 744, 464))) then
begin
Writeln('Lost Research Package, Terminating...');
TerminateScript;
end;
WriteDebug('Following Tower Walkway colour');
c := 0;
repeat
c := c + 1;
if (not(RadialWalk(TowerWalkwayColour, 350, 380, 65, 0, 1))) then
begin
c := c - 1;
TowerWalkwayColour := FindRoadColor;
end;
until(FindColorTolerance(Sx, Sy, RoadColour, MMCX - 15, MMCY - 15, MMCX + 15, MMCY + 15, 10)) and (c >= 2);;
MouseFlag(648, 58, 1, 1);
WriteDebug('Following road');
c := 0;
RoadColour := FindRoadColor;
repeat
c := c + 1;
if (not(RadialWalk(RoadColour, 400, 270, 55, 0, 1))) then
begin
RoadColour := FindRoadColor;
c := c - 1;
end;
if (c = 1) then
begin
WriteDebug('Running to avoid Jail Guards');
SetRun(True);
end;
until(FindColorTolerance(Sx, Sy, 2123751, MMCX, MMCY, MMX2, MMCY + 10, 40)) or (c >= 7);
SetRun(false);
GameTab(4);
RoadColour := FindRoadColor;
WriteDebug('Assembling Cross Roads DDTM');
SetCrossRoadsDTM
repeat
if (not (RadialWalk(RoadColour, 400, 270, 55, 0, 1))) then
RoadColour := FindRoadColor;
until(FindDtmRotated(CrossRoadsDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, 0.1, Angle))
if (FindDtmRotated(CrossRoadsDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, 0.1, Angle)) then
begin
Writeln('Found Cross Roads');
MouseFlag(Sx, Sy, 1, 1);
end;
c := 0;
repeat
c := c + 1;
if (not(RadialWalk(RoadColour, 290, 200, 55, 1, 0))) then
begin
RoadColour := FindRoadColor;
c := c - 1;
end;
until(c >= 3);
c := 0;
i := 0;
Writeln('Walking along the wall.');
repeat
if (c >= 8) then
if (FindSymbol(Sx, Sy, 'anvil')) and (i = 0) then
begin
i := i + 1;
ClickSymbol('anvil');
Mouse(MMCX, 30, 1, 1, true);
FFlag(10);
Break;
end;
if (not(WalkBesideWall('n'))) then
begin
WriteDebug('Using mouse clicks to walk along wall');
Mouse(RandomRange(MMCX - 5, MMCX + 5), RandomRange(30, 40), 1, 1, true);
AntiBanProc;
FFlag(0);
end else
WriteDebug('Using WalkBesideWall');
c := c + 1;
until(FindSymbol(Sx, Sy, 'spin')) or (c >= 20);
if (c >= 20) then
begin
Writeln('We appear to be lost... Terminating');
TerminateScript;
end;
if (FindSymbol(Sx, Sy, 'mining site')) then
begin
Writeln('We are in Barbarian Village, walking east to Varrock.');
WriteDebug('Found mining site symbol');
Mouse(Sx + 10, Sy + 5, 1, 1, true);
AntiBanProc;
FFlag(0);
end else
if (FindSymbol(Sx, Sy, 'spin')) then
begin
Writeln('We are in Barbarian Village, walking east to Varrock.');
WriteDebug('Found spinning wheel symbol');
Mouse(Sx + 10, Sy + 40, 1, 1, true);
AntiBanProc;
FFlag(0);
end;
repeat
Mouse(705, 82, 1, 1, true);
AntiBanProc;
FFlag(0);
until(FindColorTolerance(Sx, Sy, RoadColour, MMCX, MMY1, MMX2, MMY2, 10));
Mouse(Sx, Sy, 1, 1, true);
AntiBanProc;
FFlag(10);
{if (FindSymbol(Sx, Sy, 'transportation')) then
begin
WriteDebug('Found Transportation symbol');
Mouse(Sx, Sy - 35, 1, 1, true);
AntiBanProc;
FFlag(0);
end; }
repeat
if (not(RadialWalk(RoadColour, 125, 45, 60, -1, 0))) then
RoadColour := FindRoadColor;
until(not(FindColorTolerance(Sx, Sy, RoadColour, 670, 50, 675, 98, 5)));
MouseFlag(680, 84, 1, 1);
VarrockRoadColour := FindVarrockRoadColor;
c := 0;
repeat
c := c + 1;
if (not(RadialWalk(VarrockRoadColour, 125, 45, 60, -1, 0))) then
VarrockRoadColour := FindVarrockRoadColor;
until(FindSymbol(Sx, Sy, 'water')) or (c >= 20);
if (c >= 20) then
begin
Writeln('We appear to be lost... Terminating');
TerminateScript;
end;
ClickSymbol('water');
AntiBanProc;
FFlag(0);
Writeln('We are in Varrock');
Writeln('Wizard' + #39 + 's Tower to Varrock took: ' + IntToStr(Round(MsToSec(TimeFromMark(TowerToVarrockTime)))) + ' sec');
Writeln('');
AddToReport(' Tower to Varrock: ' + IntToStr(Round(MsToSec(TimeFromMark(TowerToVarrockTime)))) + ' sec');
end;
procedure Varrock;
begin
if (not(LoggedIn)) then TerminateScript;
AuburyDTM := DTMFromString('78DA63AC666260C86140016FDF3230FC07D28' +
'C40FC1F08188B816AD420724C486AB8A06A4080B18308353544A8' +
'6920AC0600A21C11F8');
BankDTM := DTMFromString('78DA636C666260486140016FDEBC61F80FA41' +
'981F83F1030B603D5E4A0AA79FB96814103AA060418EB816AB251' +
'D57CFD8AAA0600B6210EA4');
MarkTime(VarrockTime);
Writeln('Starting with Varrock');
SetRun(true);
GameTab(4);
if (DTMCheck) then
if (not(FindDTM(DTMPackage, x, y, 549, 197, 744, 464))) then
begin
Writeln('Lost Research Package, Terminating...');
TerminateScript;
end;
repeat
if (not(RadialWalk(VarrockRoadColour, 125, 45, 60, -1, 0))) then
VarrockRoadColour := FindVarrockRoadColor;
until(FindDTMRotated(BankDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, 0.05, Angle)) and (FindSymbol(x, y, 'training dummy'));
if (FindDTMRotated(BankDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, 0.05, Angle)) then
begin
WriteDebug('Found Bank DTM');
Mouse(Sx, Sy - 40, 3, 3, true);
AntiBanProc;
FFlag(0);
end;
if (FindDTMRotated(BankDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, 0.05, Angle)) then
begin
c := 0;
WriteDebug('Found Bank DTM');
repeat
c := c + 1;
if (Rs_OnMinimap(Sx + (40 - c), Sy)) then
Mouse(Sx + (40 - c), Sy, 1, 1, true);
until(Rs_OnMinimap(Sx + (40 - c), Sy));
AntiBanProc;
FFlag(0);
end;
Mouse(625, 136, 1, 1, true);
AntiBanProc;
FFlag(0);
if (FindDTMRotated(AuburyDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, 0.05, Angle)) then
begin
Mouse(Sx, Sy, 1, 1, true);
WriteDebug('Found Aubury DTM');
AntiBanProc;
FFlag(0);
end else
if (FindSymbol(Sx, Sy, 'magic shop')) then
begin
WriteDebug('Using symbol to enter Aubury'+#39+'s shop');
MouseFlag(Sx, Sy + 10, 1, 1);
end else
begin
WriteDebug('Using mouse click to enter Aubury'+#39+'s shop');
Mouse(623, 86, 1, 1, true);
AntiBanProc;
FFlag(0);
end;
Writeln('Entering Aubury'+#39+'s Shop');
if (DTMCheck) then
begin
repeat
TalkToNpc('aubury');
until(FindDTM(DTMNotes, x, y, 549, 197, 744, 464));
end else
TalkToNpc('aubury');
if (Random(2) = 1) then
begin
Wait(2000 + random(500));
CheckQuestStatus;
end;
Mouse(678, 45, 1, 1, true);
if (FlagDistance < 40) then
begin
Mouse(MMCX, MMCY, 4, 4, true);
OpenAuburyDoor;
Mouse(678, 45, 1, 1, true);
end;
AntiBanProc;
FFlag(10);
Mouse(660, 54, 1, 1, true);
AntiBanProc;
FFlag(0);
c := 0;
if (FindDTMRotated(BankDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, 0, Pi, 0.05, Angle)) then
begin
WriteDebug('Found Bank DTM');
Mouse(Sx, Sy - 40, 1, 1, true)
AntiBanProc;
Wait(2000);
FFlag(0);
end;
c := 0;
repeat
c := c + 1;
if (not(RadialWalk(VarrockRoadColour, 250, 320, 60, 1, 0))) then
begin
VarrockRoadColour := FindVarrockRoadColor;
c := c - 1;
end;
if (c >= 4) then
Break;
until(FindSymbol(Sx, Sy, 'water')) and (FindSymbol(Sx, Sy, 'quest'));
ClickSymbol('water');
AntiBanProc;
FFlag(0);
Writeln('Varrock took: ' + IntToStr(Round(MsToSec(TimeFromMark(VarrockTime)))) + ' sec');
Writeln('');
AddToReport(' Varrock: ' + IntToStr(Round(MsToSec(TimeFromMark(VarrockTime)))) + ' sec');
end;
function TeleportHome: boolean;
begin
if (not(LoggedIn)) then TerminateScript;
MarkTime(VarrockToTowerTime);
c := 0;
repeat
c := c + 1;
Writeln('Casting '+#39+'Home Teleport'+#39);
Cast('Home Teleport');
Wait(15000 + Random(4000));
if (not(FindSymbol(Sx, Sy, 'fur trader'))) and (not(FindSymbol(Sx, Sy, 'clothes shop'))) then
begin
Writeln('Successfully cast Home Teleport');
Result := True;
ReportVars[1] := ReportVars[1] + 1;
end else
Writeln('We are still in Varrock');
until(Result = True) or (c >= 3);
end;
procedure VarrockToTower;
begin
if (not(LoggedIn)) then TerminateScript;
MarkTime(VarrockToTowerTime);
Writeln('Starting with Varrock To Tower');
SetRun(false);
GameTab(4);
if (DTMCheck) then
if (not FindDTM(DTMNotes, x, y, 549, 197, 744, 464)) then
begin
Writeln('Lost Aubury' + #39 + 's Notes, Terminating...');
TerminateScript;
end;
c := 0;
repeat
c := c + 1;
if (not(RadialWalk(VarrockRoadColour, 220, 320, 60, 1, 0))) then
VarrockRoadColour := FindVarrockRoadColor;
until(not(FindColorTolerance(Sx, Sy, VarrockRoadColour, 617, 56, 630, 109, 5))) and (c >= 4);
MouseFlag(609, 83, 1, 1);
c := 0;
SymbolAccuracy := 0.7;
repeat
c := c + 1;
if (not(RadialWalk(RoadColour, 220, 320, 60, 1, 0))) then
RoadColour := FindRoadColor;
until(FindSymbol(Sx, Sy, 'fish')) or (c >= 7);
SymbolAccuracy := 0.8;
WriteDebug('Found fish symbol');
c := 0;
repeat
c := c + 1;
Mouse(593, 87, 1, 1, true);
AntiBanProc;
FFlag(0);
until(FindSymbol(Sx, Sy, 'mining site')) or (FindSymbol(Sx, Sy, 'spin')) or (c >= 3);
if (Sx > MMCX) then
begin
Mouse(593, 87, 1, 1, true);
AntiBanProc;
FFlag(0);
end;
if (FindSymbol(Sx, Sy, 'mining site')) or (FindSymbol(Sx, Sy, 'spin')) then
begin
Writeln('We are in Barbarian Village, walking south to Wizard' + #39 + 's Tower.');
if (FindSymbol(Sx, Sy, 'mining site')) then
begin
WriteDebug('Found mining site symbol');
Mouse(Sx + 10, Sy, 1, 1, true);
AntiBanProc;
FFlag(0);
end else
if (FindSymbol(Sx, Sy, 'spin')) then
begin
WriteDebug('Found spinning wheel symbol');
Mouse(Sx + 10, Sy + 40, 1, 1, true);
AntiBanProc;
FFlag(0);
end;
end;
if (not(ClickSymbol('anvil'))) then
begin
Mouse(621, 130, 1, 1, true);
AntiBanProc;
FFlag(0);
end;
Mouse(621, 130, 1, 1, true);
AntiBanProc;
FFlag(0);
c := 0;
Writeln('Walking along the wall.');
repeat
if (not(WalkBesideWall('s'))) then
begin
WriteDebug('Using mouse clicks to walk along wall');
Mouse(RandomRange(645, 655), RandomRange(135, 145), 1, 1, true);
AntiBanProc;
FFlag(10);
end else
WriteDebug('Using WalkBesideWall');
c := c + 1;
until(c >= 5);
WriteDebug('Assembling Road DDTM');
SetRoadDTM;
repeat
if (c >= 20) then
begin
Writeln('We appear to be lost... Terminating');
TerminateScript;
end;
if (not(WalkBesideWall('s'))) then
begin
WriteDebug('Using mouse clicks to walk along wall');
Mouse(RandomRange(645, 655), RandomRange(135, 145), 1, 1, true);
AntiBanProc;
FFlag(10);
end else
WriteDebug('Using WalkBesideWall');
c := c + 1;
until(FindDtmRotated(RoadDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, 0.1, Angle)) and (c >= 11);
if (FindDtmRotated(RoadDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, 0.1, Angle)) then
Writeln('Found Road DDTM');
Mouse(Sx, Sy, 1, 1, true);
AntiBanProc;
FFlag(10);
RoadColour := FindRoadColor;
WriteDebug('Assembling Cross Roads DDTM');
SetCrossRoadsDTM;
c := 0;
repeat
c := c + 1;
if (not(RadialWalk(RoadColor, 60, 120, 60, -1, 0))) then
begin
RoadColour := FindRoadColor;
c := c - 1;
end;
until(FindDtmRotated(CrossRoadsDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, 0.1, Angle)) or (c >= 3);
if (FindDtmRotated(CrossRoadsDTM, Sx, Sy, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, 0.1, Angle)) then
begin
Writeln('Found Cross Roads');
MouseFlag(Sx, Sy, 1, 1);
end;
c := 0;
repeat
c := c + 1;
if (not(RadialWalk(RoadColor, 135, 230, 60, 0, -1))) then
begin
RoadColour := FindRoadColor;
c := c - 1;
end;
if (c = 3) then
begin
WriteDebug('Running to avoid Jail Guards');
SetRun(true);
end;
until(FindColorTolerance(Sx, Sy, 12161662, MMCX-20, MMCY-20, MMCX + 20, MMCY + 20, 40));
SetRun(false);
GameTab(4);
MouseFlag(640, 115, 1, 1);
WriteDebug('Following Tower Walkway colour');
TowerWalkwayColour := FindRoadColor;
repeat
if (not(RadialWalk(TowerWalkwayColour, 135, 230, 60, 0, -1))) then
TowerWalkwayColour := FindRoadColor;
until(not(FindColorTolerance(Sx, Sy, TowerWalkwayColour, 637, 90, 669, 103, 5)));//FindSymbol(Sx, Sy, 'water'));
Writeln('Varrock To Wizard' + #39 + 's Tower took: ' + IntToStr(Round(MsToSec(TimeFromMark(VarrockToTowerTime)))) + ' sec');
Writeln('');
AddToReport(' Varrock To Tower: ' + IntToStr(Round(MsToSec(TimeFromMark(VarrockToTowerTime)))) + ' sec');
ReportVars[2] := ReportVars[2] + 1;
end;
procedure Intro;
begin
Writeln(' ._________. ');
Wait(100);
Writeln(' \____ \ __ ');
Wait(100);
Writeln(' / / | | ____ ');
Wait(100);
Writeln(' / / _____ ._______ | |____.___ ___.____\ /______ ');
Wait(100);
Writeln(' / / / ___ \ ___ \ _ \ \/ / _ \/ ____/ ');
Wait(100);
Writeln(' ./ /__\ ____/| ___/ | | |\ /| | \_/\____ \ ');
Wait(100);
Writeln(' \_________\______\| | |__| |__| \ / |__| /______/ ');
Wait(100);
Writeln(' |___| Ver ' + VerNumber + ' /__/ Rune Mysteries Quest Runner ');
Writeln('');
Status('Zephyr' + #39 + 's Rune Mysteries Quest Runner Ver ' + VerNumber);
AddToReport('------------------------------- ');
AddToReport(' Zephyr' + #39's Rune Mysteries');
AddToReport(' Quest Runner ');
AddToReport('------------------------------- ');
end;
procedure Setup;
begin
SetupSRL;
ScriptID := '235';
SRLID := SRLStatsID;
SRLPassword := SRLStatsPass;
ClearDebug;
ClearReport;
ChangeReportWidth(275);
end;
begin
Setup;
Intro;
LoadDTMs;
MarkTime(TotalTime);
ActivateClient;
Wait(500);
MakeCompass('n');
HighestAngle;
SetRetaliateOff;
LummyCastle;
LummyToTower(1);
Tower(1);
TowerToVarrock;
Varrock;
if (HomeTeleport) then
begin
if (TeleportHome) then
begin
ClickBetweenFountains;
LummyToTower(2);
end else
if (FindSymbol(Sx, Sy, 'fur trader')) or (FindSymbol(Sx, Sy, 'clothes shop')) then
VarrockToTower;
end else
VarrockToTower;
Tower(2);
Writeln('Yay!!! We finished. Total Time: ' + IntToStr(Round(MsToMin(TimeFromMark(TotalTime)))) + ' min');
AddToReport('-------------------------------');
AddToReport(' Total Time: ' + IntToStr(Round(MsToMin(TimeFromMark(TotalTime)))) + ' min');
AddToReport('-------------------------------');
ReportVars[0] := ReportVars[0] + 1;
SendSRLReport;
LogOut;
end.
——————————————————
<!– END TEMPLATE: formanswers –>