Since the new update messed things up a little, I took the time to fix it….all of 5 minutes. Made a DTM for map-walking from the teleport spot to the bank since it kept failing there, and also changed the text it searched for while banking. It's working good for me, and might save others time.
I see no harm in posting the updated version since others have done the same before.
{/////////////////////////////////////////
// ~Astralz by Flight~ //
// //
// Version: 1.1 //
/////////////////////////////////////////}
program Astralz;
{$define SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
//{$i SRL/SRL/Misc/stats.simba}
// {$i SRL/SRL/misc/paintsmart.simba}
Const
//SRL Stats
SRLStats_Username = 'PatDuffy';
SRLStats_Password = 'lolzleftmypassinhere';
//General settings
TeleMethod = 'spell'; //Spell or Home
HPLevel = 79; //Your (max) Constitution/Hitpoints level
Food = 'shark'; //Lobster / Monkfish / Shark
EatAt = 60; //Eat at this health percent or less
RestAt = 50; //Rest at this run energy or less
SwitchWorlds = True; //Switch worlds after break?
//Pouch settings
SS = 5; //Which slot # has your small pouch (0 for not using)
MS = 2; //Which slot # has your medium pouch (0 for not using)
LS = 3; //Which slot # has your large pouch (0 for not using)
GS = 4; //Which slot # has your giant pouch (0 for not using)
RepairMethod = 'spell'; //Spell or Contact
PouchPriority = True; //Use 'PouchPriority'? (STRONGLY recommended when using Giant pouches)
//Break settings
BreakIn = 135; //How long before we take a break? (minutes)
BreakFor = 5; //How long will we break for? (minutes)
Bir = 13; //Random minutes to add/subtract from how long until we break
Bfr = 2; //Random minutes to add/subjtract from break duraction
Var
//Static
Version: String;
XPMod: Extended;
Path_ToAltar: TPointArray;
ReportTime,CommitTime,EssPrice,
AstralPrice,Profit,PostID: Integer;
//Dynamic
RuneCount,Exp,Exp_C,
RuneCount_C: Integer;
//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 := 'Runecrafting';
Active := True;
end;
end;
Function CashStringToInt(S: string): Integer; //Thanks TomTuff!
Var
i, ii: Integer;
Numbs: TStringArray;
Temp: string;
begin
Temp := '';
Numbs := ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'k', 'm', 'b'];
for i := 1 to High(S) do
for ii := 0 to High(Numbs) do
if S[i] = Numbs[ii] then
case ii of
0..9: Temp := Temp + Numbs[ii];
10..12:
begin
Result := StrToInt(Temp);
case ii of
10: Result := Result * 100; //Since price is given to 1 decimal,
11: Result := Result * 100000; //instead of multiplying by the entire
12: Result := Result * 100000000; //factor, you must multiply by factor/10
end;
end;
end;
if (Result = 0) then
Result := StrToInt(Temp);
end;
Function GetPrice(ItemID: Integer): Integer;
begin
Result := CashStringToInt(Between('<td>', '</td>', GetPage('http://services.runescape.com/m=itemdb_rs/viewitem.ws?obj=' + IntToStr(ItemID))));
end;
Procedure LoadVars;
begin
Version := '1.1';
PostID := 860614;
XPMod := 8.7;
MarkTime(ReportTime);
MarkTime(CommitTime);
EssPrice := GetPrice(7936);
AstralPrice := GetPrice(9075);
MouseSpeed := RandomRange(17, 19);
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
Path_ToAltar := [Point(243, 970), Point(291, 978), Point(293, 1031), Point(305, 1086),Point(340, 1123),
Point(376, 1158), Point(399, 1190), Point(433, 1177), Point(449, 1173), Point(460, 1175)];
end;
Procedure CheckVersion;
var
Page,NewVer: String;
begin
Page := GetPage('http://villavu.com/forum/showthread.php?p='+IntToStr(PostID)+'');
NewVer := Between('Current version: ', '<br />', Page);
if Version <> NewVer then
ShowMessage('Your script is out of date!')
else
Exit;
end;
Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
mrYes:
begin
OpenWebPage('http://stats.villavu.com/register');
TerminateScript;
end;
mrNo:
begin
SetupSRLStats(115,'Anonymous','anon1337');
Exit;
end;
mrCancel: TerminateScript;
end;
end else
SetupSRLStats(115,SRLStats_Username,SRLStats_Password);
end;
// procedure ClearSmartCanvas;
// {$IFDEF SMART}
{ var
drawing : TBitmap;
begin
drawing := TBitmap.Create;
drawing.canvas.handle := SmartGetDebugDC;
ClearRSCanvas(drawing.canvas);
try
FreeBitmap(drawing);
except end; }
// {$ELSE}
// begin
// {$ENDIF}
// end;
Procedure Report;
begin
// ClearDebug;
WriteLn('=-=-=-=-=-=-=-= Astralz '+Version+' by Flight =-=-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Runes crafted: '+IntToStr(RuneCount));
WriteLn('Exp gained: '+IntToStr(Exp));
WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
MarkTime(ReportTime);
end;
Procedure Commit;
begin
stats_IncVariable('Astral Runes (Crafted)', RuneCount_C);
stats_IncVariable('Runecrafting EXP (Gained)', Exp_C);
Stats_Commit;
RuneCount_C := 0;
Exp_C := 0;
MarkTime(CommitTime);
end;
{ Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
// SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
Pic2 := BitmapFromString(291, 66, 'meJztXQd8VcXylt679CodpRqad' +
'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' +
'1CiRbQ==');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
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);
DrawBitmap(Pic2, Canvas, 125,5);
FreeBitmap(Pic);
FreeBitmap(Pic2);
end;
}
{ Procedure OnScreen;
Var
XPH,RPH,TTB: Integer;
begin
XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
RPH := Round((RuneCount * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);
PrintOnSmart(['Version: '+Version+' (by Flight)',
'',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'',
'Crafted: '+IntToStr(RuneCount)+' runes ('+IntToStr(RPH)+' / hour)',
'',
'Runecrafting XP: '+IntToStr(Exp)+' ('+IntToStr(XPH)+' / hour)',
'',
'Gained: '+IntToStr(Profit)+' profit'],Point(15,200),16777215);
PrintOnSmart(['Time till break: '+MsToTime(TTB,Time_Bare)],Point(573,432),65280);
end; }
Procedure Shutdown(Reason: String);
begin
// ClearDebug;
Writeln('');
WriteLn('{{{==Script shutdown==}}}');
Writeln('----Reason: '+Reason+'----');
Writeln('');
Wait(RandomRange(1000,1300));
CloseBank;
Report;
Logout;
TerminateScript;
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);
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 5);
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
begin
Exit;
end;
ATPA := TPAtoATPAEx(TPA, 8, 8);
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
begin
FindColorsTolerance(ATPA2[i], 2802162, B.X1-8, B.Y1-8, B.X2+8, B.Y2+8, 3)
end
else if (Ident = 2) then
FindColorsTolerance(ATPA2[i], 3636519, B.X1-8, B.Y1-8, B.X2+8, B.Y2+8, 5);
Result := (Length(ATPA2[i]) > 0);
if Result then
begin
MiddleTPAEx(ATPA2[i], X, Y);
Dist := Distance(MMCX, MMCY, X, Y);
Exit;
end;
end;
end;
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;
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)
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
Exit;
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, 150) then
begin
Result := True;
if DeBug then
// SMART_DrawBox(IntToBox(X-Bounds, Y-Bounds, X+Bounds, Y+Bounds));
GetMousePos(X, Y);
Exit;
end;
end;
end;
end;
end;
Function CalculateEss: Integer;
var
X,Y,MP,LP,GP,SP,
Total,EDTM: Integer;
begin
Result := 0;
EDTM := DTMFromString('mrAAAAHic42BgYHBigmB7IHYBYjcgDgBiWyA2AWI2RgYGXiDmAWIuIGaHssWAmA+I87IyGRJiYhhiIiIYMlJSGIpyc4GmMsExK5BEx8iAkQCGAQC0RgiX');
SP := DTMFromString('mggAAAHicY2NgYLBkYmDwAmI3ILYFYncg9gRiAUYI5gNiISAWBmIOIA73d2JQkJVkiIwIBepmgmNWIAnDyIARB4YAAI1jBGk=');
MP := DTMFromString('mrAAAAHic42BgYHBiYmCwBGJvILYCYi8gtgNiV6gYLyMCC0GxKBT/B+r397AFkkw4MRcDfsBIAMMAAFX9BKA=');
LP := DTMFromString('mbQAAAHicY2VgYHjHxMDwCYh/APELIH4IxNKMDAzCQKwAxMpALAvEnk4WQNVMKJifARMwYsFgAAApUAYj');
GP := DTMFromString('mggAAAHicY2NgYJjFxMCwAIhXAPE8IO4D4m4glmJkYBAEYhkgVgFiZSAWB+IQX0egLiYMzM+AHTDiwBAAADK5BVg=');
Total := CountItems('dtm', EDTM, []);
if FindDTM(SP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 3);
if FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 6);
if FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 9);
if FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 12);
Result := Total;
FreeDTM(EDTM);
FreeDTM(SP);
FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
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, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;
//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;
//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;
//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;
end else if (Method = 2) then
begin
//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;
end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;
//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;
//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;
end;
Result := True;
end;
Function NearBank: Boolean;
var
X,X2,Y,Y2,D,D2: Integer;
begin
Result := (FoundSymbol(1, X, Y, D) or FoundSymbol(2, X2, Y2, D2));
end;
{Function FoundBank: Boolean;
var
X,Y,DTM: Integer;
begin
DTM := DTMFromString('mbQAAAHicY2VgYKhgYmDoAOJ2IO4F4nogjgKKewFxMBAHALEfEGelBDI8+/wOjr29PBgkgeKsSBjEZ8SCwQAAx4EOzw==');
Result := DtmRotated(DTM, X, Y, MMX1, MMY1, MMX2, MMY2);
FreeDTM(DTM);
end;}
Function WalkToBank: Boolean;
var
X,Y,D,I,DTM: Integer;
aFound:Extended;
label
Start;
begin
Result := False;
if not NearBank then Exit;
DTM:=DTMFromString('78DA630C636660D8C98002723282183480342' +
'394CFB815A8E625AA9A96093318E490D59C00AAD947404D3450CD595' +
'435ED55DEA86ACA816A561250D30354731E55CDEC8961A86A8871730' +
'9500D0B235EBB00765816A0');
Start:
if FindDTMRotated(DTM,x,y,MMX1,MMY1,MMX2,MMY2,-Pi/4,Pi/4,Pi/60,aFound) then
begin
HumanMMouse(x,y,3,3);
Mouse(X,y,0,0,mouse_Left);
if FlagPresent then
FFlag(4)
else
While IsMoving do
Wait(1);
Result := True;
end else
begin
if FoundSymbol(1, X, Y, D) then
begin
HumanMMouse(X+5, Y+5, 1, 1);
ClickMouse2(True);
if FlagPresent then
FFlag(4)
else
While IsMoving do
Wait(1);
Result := True;
end else
begin
Inc(I);
if (I > 2) then
Shutdown('Failed to find bank');
MouseMM(MMCX-13, MMCY-5, 2, 2);
While IsMoving do
Wait(1);
GoTo Start;
end;
end;
Wait(1500 + Random(500));
end;
Function WalkToAltar: Boolean;
begin
Result := False;
SPS_WalkPath(Path_ToAltar);
if FlagPresent then
FFlag(2)
else
While IsMoving do
Wait(1);
Result := True;
end;
Function BankTeleport(How: String): Boolean;
var
X,Y,TeleTimer,I,T,
SpellBMP: Integer;
label
Start;
begin
Result := False;
case lowercase(How) of
'spell':
begin
SpellBMP := BitmapFromString(7, 6, 'meJxjmMHAAEO8rWJc3NyMDCA2a4IU' +
'nxgvkAQKGsmzQwQ5TcWADCAJFAzWBgnCtQAFw4Mk+qwZgGw4gohAV' +
'AIRUCWQ3WfFABSE6AIAIEkPdA==');
TeleTimer := 5000;
end;
'home':
begin
SpellBMP := BitmapFromString(6, 7, 'meJz7dGTfJzBK0/UBonpNH30ZOSAC' +
'iiQrOUBEAqSN5VklICJABGRDRJ7uXYksAmFDuEsDY+FsCPf69HwgA' +
'2gakH24qPjGnLYDkVkAYSkrQg==');
TeleTimer := 5000;
end;
end;
Start:
Gametab(tab_Magic);
Wait(RandomRange(375, 550));
if FindBitmapToleranceIn(SpellBMP, X, Y, MIX1, MIY1, MIX2, MIY2, 15) then
begin
I := 0;
HumanMMouse(X, Y, 5, 5);
ClickMouse2(True);
Gametab(tab_Inv);
MarkTime(T)
repeat
FindNormalRandoms;
if (TimeFromMark(T) > TeleTimer) then
Exit;
if NearBank then
break;
until(False)
end else
begin
Inc(I);
if (I > 3) then
Shutdown('Failed to find spell bitmap')
else
begin
Writeln('Failed to find spell '+IntToStr(I)+' time');
goto Start;
end;
end;
Result := NearBank;
FreeBitmap(SpellBMP);
end;
Function OpenBooth: Boolean;
var
X,Y,T: Integer;
label
Start;
begin
Gametab(tab_Inv);
Result := False;
Start:
if FindObjEx_F(8949653, 2508118, 10, 10, MSCX, MSCY, ['Bank','booth'], X, Y, False) then
begin
ClickMouse2(False);
if not WaitOption('Bank', 300) then
goto Start;
FFlag(0);
Wait(1000 + Random(1000));
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 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;
Result := BankScreen;
end;
Function WithdrawEss: Boolean;
var
X,Y,Ess,ItemFail: Integer;
label
Start;
begin
ItemFail := 0;
Start:
if not BankScreen then
Exit;
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
MMouse(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, 0);
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
X,Y: Integer;
begin
Result := False;
if not LoggedIn then Exit;
if InvFull then
begin
if not BankScreen then
OpenBooth
else if BankScreen then
DepositEss;
Wait(RandomRange(350, 625));
end;
if FindObjEx_F(1954517, 6579305, 15, 8, MSCX, MSCY, ['osm','smic','ic rune'], X, Y, False) then
begin
HumanMMouse(X, Y, 5, 5);
Wait(RandomRange(25, 75));
ClickMouse2(True);
Wait(RandomRange(350, 675));
end;
if (Lowercase(Method) = 'contact') then
begin
MouseBox(176, 100, 196, 117, 1);
Wait(RandomRange(275, 475));
MouseBox(176, 100, 196, 117, 1);
Wait(RandomRange(275, 475));
end;
CloseBank;
Result := True;
end;
Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
Result := FindText(x, y, 'Choose a character', UpCharsEx, 190, 30, 325, 55);
end;
Function ContactRepair: Boolean;
var
T,T2,T3, TTT: Integer;
begin
TTT:=0;
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 4000) then
Exit;
if ContactScreen then
break;
until(false)
if ContactScreen then
begin
MouseBox(455, 230, 465, 290, 1);
Wait(RandomRange(275, 480));
MouseBox(380, 80, 435, 160, 1);
end;
Wait(5000 + Random(5000));
MarkTime(T2);
MarkTime(TTT);
repeat
FindNormalRandoms;
if ClickToContinue then
MarkTime(T2);
Wait(RandomRange(125, 275));
if (TimeFromMark(TTT) > 15000) then
break;
if (TimeFromMark(T2) > 6000) then
begin
MouseBox(100, 410, 400, 425, 1);
end;
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,X2,Y2,Slot,MP,LP,
GP,Spell: Integer;
label
Start;
begin
Start:
Case Lowercase(Method) of
'spell':
Spell := BitmapFromString(6, 6, 'meJybsPnUqr2nmQVNHMtXAMni7mUT' +
'Np8CIiAbLgjh6vgXQRgQQSC3Yf46IEIWhIgADQEiZDMjihc6JbYBA' +
'DJlKvQ=');
'contact':
Spell := BitmapFromString(7, 5, 'meJx79fr1K3LRr6cHMUU+HarHFGFk' +
'YAAA0ZFcCA==');
end;
MP := DTMFromString('mggAAAHicY2NgYDjCxMCwC4gPA/F2ID4BxMeB+CVQ7j0QfwDit0D8DoifArG3tyODraUJg5a6CpDHBMesQBKGkQEjDgwBAKipDDM=');
LP := DTMFromString('mggAAAHicY2NgYJjFxMDQBcQLgHghEM8E4glALMjIwCAExNxALAzEYlCsqaYM1MWEgVkZsANGHBgCAPSrBJs=');
GP := DTMFromString('mbQAAAHicY2VgYNjBxMCwC4j3AvEqIF4ExAKMDAwsQCwCxGJALAjEpoZ6QNVMKJiVARMwYsFgAACZvASF');
if (FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) or
FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) or
FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2)) then
begin
Slot := CoordsToItem(X, Y);
Writeln('Decayed pouch detected in slot '+IntToStr(Slot));
GameTab(tab_Magic);
Wait(Random(100));
if FindBitmapIn(Spell, X2, Y2, 550, 200, 720, 435) then
begin
MMouse(X2, Y2, 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, 1);
Wait(RandomRange(1575, 2150));
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
Writeln('Pouches repaied');
end;
end;
end;
end;
if (not FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) and
not FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) and
not FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2)) then
Result := True
else
goto Start;
FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
FreeBitmap(Spell);
end;
Function CheckPouches: Boolean;
var
X,Y,MP,LP,
GP: Integer;
begin
MP := DTMFromString('mggAAAHicY2NgYDjCxMCwC4gPA/F2ID4BxMeB+CVQ7j0QfwDit0D8DoifArG3tyODraUJg5a6CpDHBMesQBKGkQEjDgwBAKipDDM=');
LP := DTMFromString('mggAAAHicY2NgYJjFxMDQBcQLgHghEM8E4glALMjIwCAExNxALAzEYlCsqaYM1MWEgVkZsANGHBgCAPSrBJs=');
GP := DTMFromString('mbQAAAHicY2VgYNjBxMCwC4j3AvEqIF4ExAKMDAwsQCwCxGJALAjEpoZ6QNVMKJiVARMwYsFgAACZvASF');
Result := (FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) or FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) or FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2));
FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
end;
Function CraftRunes: Boolean;
var
X,Y,RNew,ROld,
Seq,A,B: Integer;
label
Start;
begin
Seq := 0;
A := Round((CalculateEss*EssPrice));
IncEx(Exp, Round((CalculateEss*XPMod)));
IncEx(Exp_C, Round((CalculateEss*XPMod)));
ROld := getAmountBox(invBox(1));
Start:
if FindObjEx_F(6514535, 10133921, 15, 10, MSCX+50, MSCY, ['Craft','rune','Altar'], X, Y, False) then
begin
ClickMouse2(True);
if not DidRedClick then
goto Start;
FFlag(0);
if (Seq < 2) then
HumanMMouse(640, 220, 15, 15)
else
HumanMMouse(745, 180, 5, 5);
Wait(RandomRange(975, 1325));
While IsMoving do
Wait(1);
Wait(RandomRange(105, 215));
end;
if (Seq = 0) then
begin
if PouchPriority then
begin
if HandlePouches(2, 2) then
Seq := 1;
end else
if HandlePouches(1, 2) then
Seq := 2;
goto Start;
end;
if (Seq = 1) then
begin
if HandlePouches(3, 2) then
Seq := 2;
goto Start;
end;
if (Seq = 2) then
Result := True;
if Result then
begin
RNew := getAmountBox(invBox(1));
IncEx(RuneCount_C, (RNew-ROld));
IncEx(RuneCount, (RNew-ROld));
B := ((RNew-ROld)*AstralPrice);
IncEx(Profit, (B-A));
//OnScreen;
end;
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
'lobster' : DTM := DTMFromString('mbQAAAHicY2VgYOgB4g4g7gPiyUA8FYjPA/F1IL4CxHeA+DQQrw+TAJJMKJiLARMwYsFgAACaUQgl');
'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);
WaitOption('Eat', 300);
Wait(RandomRange(1000, 1500));
MarkTime(T);
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 HandleBank: Boolean;
var
S: String;
T,T2: Integer;
begin
Result := False;
if BankScreen then
begin
if (HPPercent <= EatAt) then
Eat;
WithdrawEss;
if PouchPriority then
begin
if HandlePouches(2, 1) then
WithdrawEss;
if HandlePouches(3, 1) then
WithdrawEss;
end else
begin
if HandlePouches(1, 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 OpenBooth then
begin
MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 5000) then
Exit;
if BankScreen then
break;
until(false)
WithdrawEss;
end;
HumanMMouse(670, 100, 5, 5);
if (GetMMLevels('run',S) <= RestAt) then
RestUntil(RandomRange(90,100));
Result := True;
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 NearBank then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
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 MainLoop;
begin
if not LoggedIn then Exit;
FindNormalRandoms;
if NearBank then
begin
if InvFull then
WalkToAltar
else
if WalkToBank then
if OpenBooth then
HandleBank;
end else if SPS_PosOnMM(Point(465, 1175)) then
if CraftRunes then
BankTeleport(Lowercase(TeleMethod));
end;
begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
CheckStats;
LoadVars;
//CheckVersion;
//HPPercent;
// ClearSmartCanvas;
// OnScreen;
SPS_Setup(RUNESCAPE_SURFACE, ['0_2','1_2']);
SPS_Continue := True;
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;
MainLoop;
Until(AllPlayersInactive)
end.