Simba Code:
{/////////////////////////////////////////
// ~ZMI-Extreme by Flight~ //
// //
// Version: 1.5 //
/////////////////////////////////////////}
program ZMIExtreme;
{$DEFINE SMART}
{$i SRL/srl.simba}
{$i SPS/sps.simba}
{$i SRL/SRL/misc/reports.simba}
{$i SRL/SRL/misc/paintsmart.simba}
Const
//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';
//General settings
HPLevel = 99; //Your (max) Constitution/Hitpoints level
Food = 'monkfish'; //Trout, Tuna, Lobster, Swordfish, Monkfish, Shark
EatAt = 80; //Eat at this health percent or less
UsePrayer = False; //Use ranged protection prayers?
RuneType = 'fire'; //Type of rune to use for bank payment (20 runes per session)
RestAt = 55; //Run energy % to rest at (after banking)
SwitchWorlds = True; //Switch worlds after a break?
//Pouch settings
SS = 0; //Which slot # has your small pouch (0 for not using)
MS = 0; //Which slot # has your medium pouch (0 for not using)
LS = 0; //Which slot # has your large pouch (0 for not using)
GS = 0; //Which slot # has your giant pouch (0 for not using)
RepairMethod = 'Contact'; //Spell or Contact
//Break settings
BreakIn = 143; //How long before we take a break? (minutes)
BreakFor = 1; //How long will we break for? (minutes)
Bir = 1; //Random minutes to add/subtract from how long until we break
Bfr = 1; //Random minutes to add/subjtract from break duration
Var
MPoint: TPoint;
Version: String;
Exp,Exp_C,ReportTime,Runs,
CommitTime,FoodC,RepairC,
XPToLvl: Integer;
PP1,PP2,OptionsSet: Boolean;
Path_ToAltar,Path_ToAltar2: TPointArray;
LCols,ACols: TIntegerArray;
//Break variables
w,x,y,z,RealBTime,CurrentBTime,
BreakRounds,TotalBreaks: Integer;
Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := ' ';
Pass := '';
Pin := '';
Level[SKILL_HITPOINTS] := HPLevel;
BoxRewards := ['XP','xp','lamp'];
LampSkill := Skill_Runecrafting;
Active := True;
end;
end;
Procedure LoadVars;
begin
Version := '1.5';
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
Path_ToAltar := [Point(160, 545), Point(160, 600), Point(165, 655), Point(175, 715),
Point(235, 710), Point(285, 720), Point(330, 720)];
Path_ToAltar2 := [Point(160, 545), Point(160, 585), Point(160, 635), Point(165, 685),
Point(190, 725), Point(235, 715), Point(285, 720), Point(330, 720)];
LCols := [789517, 921102, 1052689]; //Ladder colors
ACols := [7500141, 8092534, 8355706]; //Altar colors
Case Lowercase(RuneType) of
'fire': MPoint := Point(340, 125);
'body': MPoint := Point(105, 170);
'mind': MPoint := Point(200, 80);
'air': MPoint := Point(300, 200);
end;
PP1 := (not (LS = 0));
PP2 := (not (GS = 0));
end;
Procedure Report;
begin
ClearDebug;
SRLProgressReport(ResultDebugBox, 'ZMI-Extreme', 'Flight', '1.5',
['Run time', 'Exp gained', 'Loads completed', Capitalize(Food)+' ate',
'Pouches repaired', 'Breaks'],
[MsToTime(GetTimeRunning, Time_Abbrev), Exp, Runs, FoodC, RepairC, TotalBreaks]);
MarkTime(ReportTime);
end;
Procedure Commit;
begin
stats_IncVariable('Runecrafting EXP (Gained)', Exp_C);
Stats_Commit;
Exp_C := 0;
MarkTime(CommitTime);
end;
Procedure Shutdown(Reason: String);
begin
ClearDebug;
Writeln('');
WriteLn('{{{==Script shutdown==}}}');
Writeln('----Reason: '+Reason+'----');
Writeln('');
Wait(RandomRange(1000,1300));
CloseBank;
Report;
Logout;
TerminateScript;
end;
Procedure DrawLogo;
var
Pic: Integer;
Canvas: TCanvas;
begin
SmartSetDebug(True);
Pic := BitmapFromString(367, 40, 'meJztXQebVFW2rZPuubHJICA5Z' +
'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' +
'Etw9ec01T2W3sQpqzN4h7ddMFI+j3nu48Zta+zWKltzPOUnw+Ij6v' +
'SeB95o3fxGExU+sHY1a4FUEjs+X4enraf6DMHFR7JMMeXNPZlauc2' +
'kEr7HaFxaWcBbkKKxsXLH07qbUOmftdfwAIw2beZpJyJlQAdKUL4r' +
'R19EHqE+1B2KgEfz4K3eoqjoNgL4+sN2UddD2b2t0qBTXmMTBI6vw' +
'8wVtdj/BhukoiZyuxX/cerrFJiqm/PCemnNOGzNWo7C0/mAINmEVf' +
'zJLardQCwuA3ff9Dsr/vjE1cIfdh399e1w0yns69FRRNmt80muWfE' +
'xloGEpHyvps/3P26ul4WyoMv8SVgJEFCQzoAtwVxyczM7zKlOxaws' +
'SQ9ye7vHHmDU7hF3XUXdLSCVkh8jthz7TaCxHMXh5KLdDOpKkDbOt' +
'6tZFsq/xULnJxDXzYI7rlvAlB+qyryKOUXl/Ye4DNh5bE5mTuzI6+' +
'gEyYKnaIkXqJG8UiwSnU+L2ZY8mWU5/SyS/p743o6vyBYcFDfJyxZ' +
'wsR95C2QEge2c3f/byZhwnSYUfz20WGvy4WcH9pvdh1/e0SiA/DY/' +
'h3SCocB51sku6CFcAMrqSip2iUNmaZS9iGRWDta8zlm83deALiiE7' +
'dpzqPoKPoXFamgeVT/HxDCAiT00lyvpKUBbwBa6vb9yo650e6ZlOu' +
'IgOgKwy/hsDU+uk4vs4E9Z+YygvOHcP35updsyD40L3T57xnzFK4y' +
'j25LYyDVUOYJMkN6qmCL03UHvwumDYu8xN6jcm6I4oN5XkbXBzHub' +
'MgWPqI99WZXXwCYBLTz6bxGb6hvSfooK8net4rzFC12DG+i1GOFkX' +
'RcSa3TOTLR7mm55Ki2zqa/y9jeXWTvRktzdUJbP55M40lfc1XPxoi' +
'AZ7qIknSiDxERzmKCtZjKHw4H6c7CJSFy8OC0HprZ+rLwWw2JjAGH' +
'cIrXFCGLdmzIwgp52QnAIWS9m+/wUo0zf4MC5yT1jkPu8WavVJpIB' +
'+lequLmwviCPOXcnRqocCUnkq1VR8iSsb9L2fFLGQjPe23qbhSuFw' +
'yNogumNxec2gxEEsGVOb+fwipCwkAo7tQDdqYINgTRUfYHvBpJ7Fb' +
'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' +
'rw==');
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, 90, 15);
FreeBitmap(Pic);
end;
Procedure OnScreen;
Var
XPH,RPH,TTB: Integer;
begin
if (Exp < 1) then
Exp := 1;
XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
RPH := Round((Runs * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);
SMART_DrawTextMulti(True, True, ['Version '+Version+' (by Flight)',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'Runecrafting XP: '+IntToStr(Exp)+' ('+IntToStr(XPH)+' / hour)',
'XP to next lvl: '+IntToStr(XPToLvl-Exp),
'Load done: '+IntToStr(Runs)+' ('+IntToStr(RPH)+' / hour)'],
Point(15, 255), SmallCharsNS, 16777215);
SMART_DrawTextMulti(False, True, ['Time till break: '+MsToTime(TTB,Time_Bare)], Point(575, 445), SmallCharsNS, 65280);
DrawLogo;
end;
Function IsMoving_F: Boolean;
begin
Result := PixelShift(IntToBox(MMCX-30, MMCY-30, MMCX+30, MMCY+30), 200) > 200;
end;
Function RunesMenu: Boolean;
var
X,Y: Integer;
begin
Result := FindText(x, y, 'light', UpCharsEx, 145, 275, 360, 315);
end;
Function UsingQuickPrayers: Boolean;
Var
X,Y: Integer;
begin
Result := FindColorTolerance(X, Y, 9154193, 710, 75, 730, 85, 20);
end;
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;
Procedure ActivateQuickPrayer;
begin
if UsingQuickPrayers then Exit;
HumanMMouse(723, 70, 10, 10);
ClickMouse2(True);
end;
Function LowPrayer: Boolean;
begin
Result := FindColorTolerance(X, Y, 255, 740, 70, 760, 80, 10)
end;
Function GetClosestMMDot(WhatDot: String): TPoint;
var
TPA: TPointArray;
begin
TPA := GetMiniMapDots(WhatDot);
if (Length(TPA) < 1) then
Exit;
SortTPAFrom(TPA, Point(MMCX, MMCY));
Result := TPA[0];
end;
Function FoundSymbol(Ident: Integer; var X, Y, Dist: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
if ((Ident = 1) or (Ident = 2) or (Ident = 5) or (Ident = 6)) then
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMCX+10, MMY2, 10)
else
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 10);
if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;
ATPA := TPAtoATPAEx(TPA, 10, 10);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
if (Ident = 1) then
FindColorsTolerance(ATPA2[i], 16382969, B.X1, B.Y1, B.X2, B.Y2, 5) //Altar (white)
else if (Ident = 2) then
FindColorsTolerance(ATPA2[i], 1244922, B.X1, B.Y1, B.X2, B.Y2, 5) //Altar (yellow)
else if (Ident = 3) then
FindColorsTolerance(ATPA2[i], 2413294, B.X1, B.Y1, B.X2, B.Y2, 5) //Bank
else if (Ident = 4) then
FindColorsTolerance(ATPA2[i], 2370858, B.X1, B.Y1, B.X2, B.Y2, 5) //Hunter
else if (Ident = 5) then
FindColorsTolerance(ATPA2[i], 1787389, B.X1, B.Y1, B.X2, B.Y2, 5) //Big arrow
else if (Ident = 6) then
FindColorsTolerance(ATPA2[i], 2763504, B.X1, B.Y1, B.X2, B.Y2, 5); //Dungeon
Result := (Length(ATPA2[i]) > 0);
if Result then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
Dist := Distance(MMCX, MMCY, X, Y);
Exit;
end;
end;
end;
end;
Function NearSymbol(Which: Integer): Boolean;
var
X,Y,D: Integer;
begin
Result := FoundSymbol(Which, X, Y, D);
end;
Function AboveGround: Boolean;
var
X,Y,D: Integer;
begin
Result := FoundSymbol(4, X, Y, D);
end;
Function NearLadder: Boolean;
var
X,Y,D: Integer;
begin
Result := False;
if FoundSymbol(6, X, Y, D) then
begin
Result := (D < 15);
Exit;
end;
if FoundSymbol(1, X, Y, D) then
Result := (D < 15);
end;
Function FindObjEx_F(ColorA, ColorB, Tol, Bounds, sX, sY: Integer; UpText: TStringArray; Var X, Y: Integer; Debug: Boolean): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(sX, sY, TPA, ColorA, MSX1, MSY1, MSX2, MSY2, Tol)
if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;
ATPA := TPAtoATPAEx(TPA, Bounds, Bounds);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(sX, sY, ATPA2[i], ColorB, B.X1-Bounds, B.Y1-Bounds, B.X2+Bounds, B.Y2+Bounds, Tol)
if Length(ATPA2[i]) > 0 then
begin
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
if WaitUpTextMulti(UpText, 800) then
begin
Result := True;
ColorToleranceSpeed(CTS);
if DeBug then
SMART_DrawBox(IntToBox(X-Bounds, Y-Bounds, X+Bounds, Y+Bounds));
GetMousePos(X, Y);
Exit;
end;
end;
end;
end;
end;
Procedure ReturnValues(colors: TIntegerArray; var HueMods, SatMods: Extended; var color, Tolerance: Integer);
Var
h, s, t: Extended;
I,II : integer;
HSLColor : Array[1..3] of Extended;
HSL : Array[0..1] of Array[1..3] of Extended;
begin;
For I:= 1 to 3 do
begin;
HSL[0][i] := 255;
end;
For I:= 0 to High(Colors) do
begin;
ColortoHSL(Colors[i],HSLColor[1],HSLColor[2],HSLColor[3]);
For II:= 1 to 3 do
begin;
HSL[0][II] := MinE(HSLColor[II],HSL[0][II]);
HSL[1][II] := MaxE(HSLColor[II],HSL[1][II]);
end;
end;
H := (HSL[1][1] - HSL[0][1]);
S := (HSL[1][2] - HSL[0][2]);
T := (HSL[1][3] - HSL[0][3]);
try
HueMods := (H/T);
SatMods := (S/T);
Tolerance := Round(t);
except
HueMods := 0;
SatMods := 0;
Tolerance := Round(0.0);
end;
Color := HSLToColor((HSL[1][1] + HSL[0][1]) div 2,(HSL[1][2] + HSL[0][2]) div 2,(HSL[1][3] + HSL[0][3]) div 2);
end;
Procedure SetPrayers;
var
X,Y,X2,Y2,T,T2: Integer;
PPoint: TPoint;
label
MoveM;
begin
{Right-click prayer icon}
HumanMMouse(724, 70, 8, 8);
ClickMouse2(False);
WaitOption('elect', 400);
{Wait for the quick-prayer selection menu}
MarkTime(T);
repeat
if TimeFromMark(T) > 5000 then
Exit;
if FindColorTolerance(X, Y, 8499692, 610, 445, 630, 465, 10) then
break;
until(false);
{Determine the player's prayer type & choose the right protection prayer}
if (FindText(X, Y, 'urses', StatChars, 630, 200, 690, 230) or FindText(x, y, 'rayers', StatChars, 630, 200, 690, 230)) then
begin
if FindText(X, Y, 'urses', StatChars, 630, 200, 690, 230) then
PPoint := Point(671, 274)
else if FindText(X, Y, 'rayers', StatChars, 630, 200, 690, 230) then
PPoint := Point(670, 343);
{Check if prayers are already set}
if not FindColorTolerance(X2, Y2, 461806, PPoint.X-10, PPoint.Y-10, PPoint.X+10, PPoint.Y+10, 10) then
begin
MoveM:
if not LoggedIn then Exit;
HumanMMouse(671, 274, 4, 4);
if WaitUpText('elect', 400) then
begin
ClickMouse2(True);
Wait(RandomRange(175, 350));
end else
goto MoveM;
end else
Writeln('Prayers already selected');
{Hit confirm}
HumanMMouse(645, 456, 15, 5);
ClickMouse2(True);
end;
{Wait for the prayer selection to be confirmed}
MarkTime(T2);
repeat
if TimeFromMark(T2) > 5000 then
Exit;
if (not FindText(x, y, 'urses', StatChars, 630, 200, 690, 230) and (not FindText(x, y, 'rayers', StatChars, 630, 200, 690, 230))) then
break;
until(false);
OptionsSet := True;
Gametab(Tab_Inv);
Writeln('Quick-prayers set');
end;
Function TeleportOut: Boolean;
var
X,Y,I,DTM: Integer;
Angle: Extended;
label
Start;
begin
Result := False;
ColorToleranceSpeed(1);
DTM := DTMFromString('mWAAAAHicY2FgYNjGxMCwBYj3MkHYjIwMDH+A4v+AmAPItra2YjDUPclw8ZAnGPMDxZExExoGAQBaKgrC');
Start:
if not LoggedIn then Exit;
Gametab(tab_Magic);
Wait(RandomRange(375, 550));
if FindDTMRotated(DTM, X, Y, MIX1, MIY1, MIX2, MIY2, (-Pi/4), (Pi/4), (Pi/60), Angle) then
begin
I := 0;
HumanMMouse(X, Y, 7, 7);
ClickMouse2(True);
Gametab(tab_Inv);
HumanMMouse(580, 115, 15, 15);
if not WaitFunc(@AboveGround, 100, 6000) then
Exit;
end else
begin
Inc(I);
if (I > 3) then
Shutdown('Failed to find spell DTM')
else
begin
Writeln('Failed to find spell '+IntToStr(I)+' time');
FindNormalRandoms;
Gametab(tab_Magic);
Wait(RandomRange(125, 275));
goto Start;
end;
end;
Result := NearSymbol(4);
SetRun(True);
FreeDTM(DTM);
end;
Function FindLadder(Var X, Y: Integer): Boolean;
var
B: TBox;
Loop: Boolean;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
label
Start;
begin
Result := False;
Loop := False;
Start:
FindNormalRandoms;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(130, 170, TPA, 3029573, MSX1, MSY1, MSCX, MSY2, 15)
if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;
ATPA := TPAtoATPAEx(TPA, 20, 20);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(130, 170, ATPA2[i], 921102, B.X1, B.Y1, B.X2, B.Y2, 15)
if Length(ATPA2[i]) > 0 then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
Result := True;
Exit;
end;
end;
end;
ColorToleranceSpeed(CTS);
if Loop then
goto Start;
end;
Function FindChaosAltar(Var X, Y: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
Result := False;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3685505, MSX1, MSY1, MSX2, MSY2, 20)
if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;
ATPA := TPAtoATPAEx(TPA, 30, 30);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(MSCX, MSCY, ATPA2[i], 11908541, B.X1, B.Y1, B.X2, B.Y2, 20)
if Length(ATPA2[i]) > 0 then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
Result := True;
Exit;
end;
end;
end;
end;
Function WalkToLadder: Boolean;
var
X,Y,Dist: Integer;
label
Start;
begin
Result := False;
Start:
if not LoggedIn then Exit;
FindNormalRandoms;
if FoundSymbol(6, X, Y, Dist) then //Dungeon
begin
HumanMMouse(X, Y, 2, 2);
ClickMouse2(True);
Wait(RandomRange(755, 910));
HumanMMouse(255, 210, 30, 30);
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
if NearLadder then
begin
Result := True;
Exit;
end else
goto Start;
end else if FoundSymbol(1, X, Y, Dist) then //Altar
begin
HumanMMouse(X, Y, 2, 2);
ClickMouse2(True);
Wait(RandomRange(755, 910));
HumanMMouse(255, 210, 30, 30);
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
if NearLadder then
begin
Result := True;
Exit;
end else
goto Start;
end else if ((not NearSymbol(6)) and (not NearSymbol(1))) then
begin
Writeln('Failed to find symbols, static walking');
Mouse(580, 120, 4, 4, True);
Wait(RandomRange(255, 360));
if FlagPresent then
FFlag(0)
else
While IsMoving_F do
Wait(1);
goto Start;
end;
end;
Function HandleAltar: Boolean;
var
A,B: Boolean;
X,Y,T,I: Integer;
label
Start;
begin
Result := False;
if not LowPrayer then
begin
Result := True;
Exit;
end;
A := False;
B := False;
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
Start:
MarkTime(T);
repeat
if not LoggedIn then Exit;
FindNormalRandoms;
if FindChaosAltar(X, Y) then
begin
if WaitUpTextMulti(['ay-at', 'aos alt'], 400) then
begin
ClickMouse2(True);
if DidRedClick then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
B := True;
break;
end;
end else
begin
ClickMouse2(False);
if WaitOption('ray-at', 500) then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
B := True;
break;
end;
end;
end;
if (TimeFromMark(T) > 7000) then
begin
A := True;
break;
end;
until(false)
if A then
begin
Inc(I);
Mouse(MMCX, MMCY+10, 2, 2, mouse_left);
FFlag(0);
While IsMoving_F do
Wait(1);
if (I > 3) then
begin
if not FindChaosAltar(X, Y) then
begin
if TeleportOut then
begin
Wait(RandomRange(2100, 2600));
I := 0;
Exit;
end;
end;
end;
Wait((RandomRange(600, 775)));
goto Start;
end;
if B then
begin
While IsMoving_F do
Wait(1);
ActivateQuickPrayer;
Result := True;
Exit;
end;
end;
Function HandleLadder: Boolean;
var
A,B,C: Boolean;
X,Y,T,T2,I: Integer;
label
Start;
begin
Result := False;
A := False;
B := False;
C := False;
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
Start:
MarkTime(T);
repeat
FindNormalRandoms;
if FindLadder(X, Y) then
begin
if WaitUpTextMulti(['limb', 'mb L', 'adder'], 400) then
begin
ClickMouse2(True);
if DidRedClick then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
B := True;
break;
end else
begin
C := True;
break;
end;
end else
begin
ClickMouse2(False);
if WaitOptionMulti(['limb', 'b L'], 500) then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
B := True;
break;
end else
begin
C := True;
break;
end;
end;
end;
if (TimeFromMark(T) > 7000) then
begin
A := True;
break;
end;
until(false)
if A then
begin
if NearSymbol(3) then
begin
Result := True;
Exit;
end;
Inc(I);
Mouse(MMCX, MMCY+10, 2, 2, mouse_left);
FFlag(0);
While IsMoving_F do
Wait(1);
if (I > 3) then
begin
if not FindLadder(X, Y) then
begin
if TeleportOut then
begin
Wait(RandomRange(2100, 2600));
I := 0;
Exit;
end;
end;
end;
Wait((RandomRange(600, 775)));
goto Start;
end;
if B then
begin
MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 5000) then
Exit;
if NearSymbol(3) then
break;
until(false)
Result := NearSymbol(3);
end;
if C then
goto Start;
end;
Function BankToAltar: Boolean;
begin
Result := False;
//No more walking east!
if not InvFull then Exit;
if NearSymbol(4) then Exit;
SetRun(True);
case RandomRange(1, 2) of
1: SPS_WalkPath(Path_ToAltar);
2: SPS_WalkPath(Path_ToAltar2);
end;
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
Result := True;
end;
Function FindBanker(Var X,Y: Integer): Boolean;
var
TPA,PBox: TPointArray;
HMod,SMod: Extended;
L,i,CTS,MSP,Col,
CType,Tol: Integer;
ATPA: T2DPointArray;
label
Start;
begin
Result := False;
if not LoggedIn then Exit;
PBox := TPAFromBox(IntToBox(240, 130, 275, 185));
CTS := GetColorToleranceSpeed;
Start:
if BankScreen then
begin
Result := True;
Exit;
end;
if (CType = 2) then
begin
Col := 6453887;
Tol := 7;
HMod := 0.10;
SMod := 0.11;
end else if (CType = 3) then
begin
Col := 5273721;
Tol := 6;
HMod := 0.07;
SMod := 0.11;
end;
if (CType = 0) then
begin
ColorToleranceSpeed(3);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 6848905, MSX1, MSY1, 510, 330, 4);
ColorToleranceSpeed(CTS);
end else if (CType = 1) then
begin
ColorToleranceSpeed(3);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5800071, MSX1, MSY1, 510, 330, 4);
ColorToleranceSpeed(CTS);
end else if ((CType = 2) or (CType = 3)) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(Hmod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MSX1, MSY1, MSX2, MSY2, Tol);
ColorToleranceSpeed(CTS);
end;
TPA := ClearTPAFromTPA(TPA, PBox);
if (Length(TPA) < 1) then
begin
Inc(CType);
if (CType > 3) then
Exit;
goto Start;
end;
ATPA := TPAToATPAEx(TPA, 40, 40);
SortATPAFrom(ATPA, Point(MSCX,MSCY));
L := High(ATPA);
SetArrayLength(ATPA, L+1);
for i := 0 to L do
begin
MiddleTPAEx(ATPA[i], X, Y);
MSP := MouseSpeed;
MouseSpeed := (RandomRange(26, 33));
HumanMMouse(X, Y, 15, 15);
MouseSpeed := MSP;
if WaitUpTextMulti(['niola'], 400) then
begin
Result := True;
GetMousePos(X, Y);
Exit;
end;
end;
end;
Function OpenBankEniola: Boolean;
var
X,Y,T,T2,
BFail: Integer;
GoOn: Boolean;
label
Start;
begin
Result := False;
GoOn := False;
Start:
if BankScreen then
begin
Result := True;
Exit;
end;
FindNormalRandoms;
if not LoggedIn then Exit;
if FindBanker(X, Y) then
begin
GoOn := True
end else
begin
Inc(BFail);
if (BFail = 1) then
MouseFlag(620, 105, 5, 5, 0);
While IsMoving_F do
Wait(1);
if (BFail > 10) then
begin
TeleportOut;
Exit;
end;
goto Start;
end;
if GoOn then
begin
ClickMouse2(False);
if not WaitOptionMulti(['ank', 'nk E'], 500) then
goto Start;
While IsMoving_F do
Wait(1);
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 3000) then
Exit;
if RunesMenu then
break;
until(false);
if RunesMenu then
begin
HumanMMouse(MPoint.X, MPoint.Y, 7, 7);
ClickMouse2(True);
MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 5000) then
Exit;
if (BankScreen) or (PinScreen) then
break;
Wait(100);
until(false)
if PinScreen then
if (Players[CurrentPlayer].Pin <> '') then
InPin(Players[CurrentPlayer].Pin)
else
Shutdown('No PIN # given');
Wait(RandomRange(175, 350));
end;
end;
Result := BankScreen;
end;
Procedure Eat;
var
DTM,X,Y,X2,
Y2,T: Integer;
begin
if not LoggedIn then Exit;
if not BankScreen then Exit;
Case lowercase(Food) of
'trout' : DTM := DTMFromString('mlwAAAHicY2dgYCgD4kIgzgbiAiCuAOJaIG4EYhUgVgRiTSDWBWJtqJg8EGfERAJJJqxYDkjiwox4MBQAALdhBks=');
'tuna' : DTM := DTMFromString('mlwAAAHicY2dgYFAAYikgFgFiCShfHYh1gFgFiOWBWA2I9YBYFyonC8QpEWFAkgkrFoGahw0z4sFQAABkyQOa');
'lobster' : DTM := DTMFromString('mbQAAAHicY2VgYOgB4g4g7gPiyUA8FYjPA/F1IL4CxHeA+DQQrw+TAJJMKJiLARMwYsFgAACaUQgl');
'swordfish' : DTM := DTMFromString('mlwAAAHicY2dgYGhmZGDoBuKJQNwHxJ2MELFyIJZhgGAFIFYCYmUglofSzTFdQJIJK+YCknI4MCMeDAUA/+8G2A==');
'monkfish': DTM := DTMFromString('mggAAAHicY2NgYJjEyMAwEYgXQPE8IJ4GxB+Bct+A+A0DhP0diH8AsbejJcP8miogiwkFcwFJEEYHjDgwBAAAZ90L0w==');
'shark' : DTM := DTMFromString('mggAAAHicY2NgYLBjZGAwB2JHIHYHYg8g1gfiEqBcAxBXA3EzEJcCcQsQd+RHAUkmDMzFgB0w4sAQAAAltwXX');
end;
if FindDTM(DTM, X, Y, MSX1, MSY1, MSX2, MSY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
WaitOption('Withdraw-5', 300);
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if (HPPercent >= 90) then
break;
if FindDTM(DTM, X2, Y2, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X2, Y2, 5, 5);
ClickMouse2(False);
if WaitOption('Eat', 300) then
begin
Wait(RandomRange(705, 815));
MarkTime(T);
Inc(FoodC);
end;
end;
until(false)
end;
if FindDTM(DTM, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
WaitOption('Deposit-All', 300);
Wait(RandomRange(425, 675));
end;
FreeDTM(DTM);
end;
Function WithdrawEss: Boolean;
var
X,Y,Ess,ItemFail: Integer;
label
Start;
begin
Start:
if not BankScreen then
Exit;
ColorToleranceSpeed(1);
FixBank;
Ess := BitmapFromString(9, 11, 'meJx1zNEKgCAQRNGfDBMRERHbysq' +
'I/r+BIQmWYN7O3RXZRLZlObBaz32/sNZurJQVkzeAMgDlPGM6gMaY' +
'U5owBt/nISQog64MvI9Ufetc+FPQV/tnkLVeK8kYp5U/h2GkMoDyJ' +
'+gB5qx01w==');
if BankScreen then
begin
if FindBitmapToleranceIn(Ess, X, Y, 35, 85, 480, 295, 20) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
Result := WaitOptionMulti(['Withdraw-All', 'w-A'], 300)
end else
begin
if (ItemFail > 3) then
Shutdown('Out of essence');
Inc(ItemFail);
if (ItemFail = 0) then
Writeln('Failed finding essence '+IntToStr(ItemFail)+' time')
else if (ItemFail > 0) then
Writeln('Failed finding essence '+IntToStr(ItemFail)+' times');
Wait(RandomRange(1750, 2205));
goto Start;
end;
end;
FreeBitmap(Ess);
end;
Function DepositEss: Boolean;
var
T,Slot: Integer;
begin
if not BankScreen then exit;
Slot := RandomRange(9, 20);
MouseItem(Slot, mouse_right);
Wait(RandomRange(50, 115));
WaitOption('Deposit-5', 300);
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 3000) then
Result := False;
if not InvFull then
break;
until(False)
Result := (not InvFull);
end;
Function WithdrawRunes(Method: String): Boolean;
var
ABMP,CBMP,X,Y: Integer;
begin
Result := False;
if not LoggedIn then Exit;
if InvFull then
begin
if not BankScreen then
OpenBankEniola
else if BankScreen then
DepositEss;
Wait(RandomRange(350, 625));
end;
ColorToleranceSpeed(1);
ABMP := BitmapFromString(7, 7, 'meJy7efPxzZuPCwvLiosrSkurboK5' +
'EJSfXwIRh4tk5xTk5hUhq8nIyMnKykMWAaK0tCw0EWRDIAhoDtBwN' +
'HMgggArDGec');
CBMP := BitmapFromString(7, 5, 'meJyTvXBJFoaKiytKS6sg7Ny8IiDK' +
'zy8pLCyDiGRk5GRl5WXnFEDEIYJpaVlwcbg5KSkZEHEgggsCAOmnNDQ=');
if FindBitmapToleranceIn(CBMP, X, Y, MSX1, MSY1, MSX2, MSY2, 20) then
begin
HumanMMouse(X, Y, 5, 5);
Wait(RandomRange(25, 75));
ClickMouse2(True);
Wait(RandomRange(350, 675));
end;
if (Lowercase(Method) = 'contact') then
begin
if FindBitmapToleranceIn(ABMP, X, Y, MSX1, MSY1, MSX2, MSY2, 20) then
begin
HumanMMouse(X, Y, 5, 5);
Wait(RandomRange(25, 75));
ClickMouse2(True);
Wait(RandomRange(275, 475));
ClickMouse2(True);
Wait(RandomRange(275, 475));
end;
end;
CloseBank;
Result := True;
FreeBitmap(ABMP);
FreeBitmap(CBMP);
end;
Function HandlePouches(Method, Seq: Integer): Boolean;
begin
Result := False;
if (Method = 1) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
end else if (Method = 2) then
begin
//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
end else if (Method = 4) then
begin
//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
end else if (Method = 5) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
end;
Result := True;
end;
Function FindDecayedPouch(Var Slot: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
Hmod,Smod: Extended;
L,i,Tol,CTS,Col,X,Y: Integer;
ATPA: T2DPointArray;
begin
Result := False;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
ReturnValues([3422525, 3619647, 3751234], Hmod, Smod, Col, Tol);
SetColorSpeed2Modifiers(Hmod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MIX1, MIY1, MIX2, MIY2, Tol);
ColorToleranceSpeed(CTS);
if (Length(TPA) < 1) then
Exit;
ATPA := TPAToATPAEx(TPA, 18, 18);
SortATPAFrom(ATPA, Point(650, 330));
L := High(ATPA);
SetArrayLength(ATPA, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
if (GetArrayLength(ATPA[i])>10) then
begin
MiddleTPAEx(ATPA[i], X, Y);
Slot := CoordsToItem(X, Y);
Result := True;
end;
end;
end;
Function CheckPouches: Boolean;
var
S: Integer;
begin
Result := FindDecayedPouch(S);
end;
Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
//Result := FindText(x, y, 'Choose a character', UpCharsEx, 170, 10, 340, 30);
Wait(1200+Random(300));
Result := True;
end;
Function ContactRepair: Boolean;
var
T,T2,T3: Integer;
begin
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 4000) then
Exit;
if ContactScreen then
break;
until(false)
if ContactScreen then
begin
MouseBox(480, 230, 485, 290, 1);
Wait(RandomRange(275, 480));
MouseBox(380, 80, 435, 160, 1);
end;
MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 6000) then
Exit;
if ClickToContinue then
MarkTime(T2);
Wait(RandomRange(125, 275));
if FindNPCChatText('epai', ClickLeft) then
break;
until(false)
MarkTime(T3);
repeat
FindNormalRandoms;
if (TimeFromMark(T3) > 2000) then
Exit;
if ClickToContinue then
MarkTime(T3);
Wait(RandomRange(125, 275));
until(false)
Result := True;
end;
Function RepairPouches(Method: String): Boolean;
var
X,Y,Slot,Spell: Integer;
label
Start;
begin
ColorToleranceSpeed(1);
Start:
FindNormalRandoms;
if not LoggedIn then Exit;
Case Lowercase(Method) of
'spell':
Spell := BitmapFromString(6, 6, 'meJybsPnUqr2nmQVNHMtXAMni7mUT' +
'Np8CIiAbLgjh6vgXQRgQQSC3Yf46IEIWhIgADQEiZDMjihc6JbYBA' +
'DJlKvQ=');
'contact':
Spell := BitmapFromString(7, 5, 'meJx79fr1K3LRr6cHMUU+HarHFGFk' +
'YAAA0ZFcCA==');
end;
if FindDecayedPouch(Slot) then
begin
Writeln('Decayed pouch detected in slot '+IntToStr(Slot));
GameTab(tab_Magic);
Wait(Random(100));
if FindBitmapIn(Spell, X, Y, 550, 200, 720, 435) then
begin
MMouse(X, Y, 5, 5);
Wait(Random(100));
if (Lowercase(Method) = 'spell') then
begin
if WaitUpText('epair',RandomRange(250,350)) then
begin
ClickMouse2(True);
Wait(RandomRange(20, 75));
MouseItem(Slot, mouse_left);
Wait(RandomRange(1575, 2150));
Inc(RepairC);
Writeln('Pouch repaied');
end;
end else if (Lowercase(Method) = 'contact') then
begin
if WaitUpText('Contact',RandomRange(250,350)) then
begin
ClickMouse2(True);
if ContactRepair then
begin
Inc(RepairC);
Writeln('Pouches repaied');
end;
end;
end;
end;
end;
if not FindDecayedPouch(Slot) then
Result := True
else
goto Start;
FreeBitmap(Spell);
end;
Procedure HandleBank;
var
S: String;
T: Integer;
begin
if BankScreen then
begin
Mouse(370, 305, 6, 6, True);
if (HPPercent <= EatAt) then
Eat;
WithdrawEss;
if PP2 then
begin
if HandlePouches(2, 1) then
WithdrawEss;
if HandlePouches(3, 1) then
WithdrawEss;
end else
begin
if HandlePouches(3, 1) then
WithdrawEss;
end;
end;
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if InvFull then
break;
until(false)
if InvFull then
begin
Wait(RandomRange(375, 550));
if CheckPouches then
if WithdrawRunes(Lowercase(RepairMethod)) then
if RepairPouches(Lowercase(RepairMethod)) then
if OpenBankEniola then
if WithdrawEss then
if CloseBank then
Exit;
if (GetMMLevels('run',S) <= RestAt) then
RestUntil(RandomRange(90, 100));
end;
end;
Function FindAltar(Var X,Y: Integer): Boolean;
var
B: TBox;
Loop: Boolean;
TPA: TPointArray;
Hmod,Smod: Extended;
L,i,Tol,CTS,Col,F,MSP: Integer;
ATPA: T2DPointArray;
label
Start;
begin
Result := False;
Loop := False;
CTS := GetColorToleranceSpeed;
Start:
ColorToleranceSpeed(2);
ReturnValues(ACols, Hmod, Smod, Col, Tol);
SetColorSpeed2Modifiers(Hmod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MSX1, MSY1, MSX2, MSY2, 10);
ColorToleranceSpeed(CTS);
if (Length(TPA) < 1) then
Exit;
ATPA := TPAToATPAEx(TPA, 20, 20);
SortATPAFrom(ATPA, Point(MSCX,MSCY));
L := High(ATPA);
SetArrayLength(ATPA, L+1);
for i := 0 to L do
begin
if (GetArrayLength(ATPA[i]) > 30) then
begin
B := GetTPABounds(ATPA[i]);
MiddleTPAEx(ATPA[i], X, Y);
MSP := MouseSpeed;
MouseSpeed := (RandomRange(26, 33));
HumanMMouse(X, Y, 15, 15);
MouseSpeed := MSP;
if WaitUpTextMulti(['-rune', 'unec', 'rafting'], 555) then
begin
Result := True;
GetMousePos(X, Y);
Exit;
end else
begin
Inc(F);
if (F > 7) then
Exit;
Loop := True;
Break;
end;
end;
end;
if Loop then
goto Start;
end;
Function CraftRunes: Boolean;
var
X,Y,Seq: Integer;
A,B: LongInt;
label
Start;
begin
Seq := 0;
A := Round(GetXPBarTotal);
Start:
if not LoggedIn then Exit;
if FindAltar(X, Y) then
begin
ClickMouse2(True);
if not DidRedClick then
goto Start;
While IsMoving_F do
Wait(1);
if (Seq < 3) then
begin
HumanMMouse(640, 220, 15, 15);
Wait(RandomRange(675, 1125));
While IsMoving_F do
Wait(1);
Wait(RandomRange(105, 165));
end else
begin
GameTab(tab_Magic);
Wait(RandomRange(675, 930));
end;
end else
begin
SetRun(True);
BankToAltar;
FindNormalRandoms;
SetRun(True);
goto Start;
end;
if (Seq = 0) then
begin
if PP1 then //Large pouch
begin
if HandlePouches(4, 2) then
Seq := 1;
end else if not PP1 then
if HandlePouches(5, 2) then
Seq := 3;
goto Start;
end;
if (Seq = 1) then
begin
if PP2 then //Giant pouch
begin
if HandlePouches(2, 2) then
Seq := 2;
goto Start;
end else if not PP2 then
if HandlePouches(5, 2) then
Seq := 3;
goto Start;
end;
if (Seq = 2) then
begin
if HandlePouches(5, 2) then
Seq := 3;
goto Start;
end;
if (Seq = 3) then
Result := True;
if Result then
begin
B := Round(GetXPBarTotal);
Inc(Runs);
IncEx(Exp, (B-A));
IncEx(Exp_C, (B-A));
OnScreen;
end;
end;
Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
h,m,s: integer;
begin
if not LoggedIn then Exit;
if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
if NearSymbol(3) then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
CloseBank;
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
OnScreen;
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
ClickNorth(SRL_ANGLE_HIGH);
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
end;
end;
end;
end;
Procedure SuperDuperLooper;
begin
if not LoggedIn then Exit;
FindNormalRandoms;
if NearSymbol(3) then //Bank
begin
if not InvFull then
if OpenBankEniola then
HandleBank
else
Exit
else if InvFull then
if BankToAltar then
if CraftRunes then
TeleportOut
else
While IsMoving_F do
Wait(1)
else
While IsMoving_F do
Wait(1);
end else if NearLadder then //At the ladder
begin
if UsePrayer then
begin
if HandleAltar then
HandleLadder;
end else
HandleLadder;
end else if (NearSymbol(4) and (not NearLadder)) then //Teleport area
begin
WalkToLadder;
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
end else if ((not NearSymbol(3)) and (not NearSymbol(4)) //We're either at the altar or lost
and (not NearLadder)) then
if not CraftRunes then
TeleportOut;
end;
begin
Smart_Server := 70;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
setupSRL();
DeclarePlayers;
LoginPlayer;
ClickNorth(SRL_ANGLE_HIGH);
SPS_Setup(runecrafting_altars, ['0_1']);
SPS_Continue := True;
LoadVars;
SetupSRLStats(157, SRLStats_Username, SRLStats_Password);
Smart_ClearCanvas;
ToggleXPBar(True);
XPToLvl := XPTillNextLevel(Skill_Runecrafting);
if UsePrayer then
begin
SetPrayers;
ActivateQuickPrayer;
end;
OnScreen;
Repeat
if not LoggedIn then
begin
LoginPlayer;
ClickNorth(SRL_ANGLE_HIGH);
end;
BreakHandler(BreakIn,BreakFor,Bir,Bfr);
if (TimeFromMark(CommitTime)>=30000) then
Commit;
if (TimeFromMark(ReportTime)>=5000) then
Report;
SuperDuperLooper;
Until(AllPlayersInactive)
end.