Simba Code:
program KeldagrimMiner;
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| |}
{| Keldagrim Adamantite/Runite/Gold Miner |}
{| By Wister V1.0 |}
{| |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| |}
{| Requirements: |}
{| |}
{| =>70 Mining |}
{| =>(Recomended) Pickaxe in your hand; |}
{| Or in your 1st inventory slot. |}
{| |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| |}
{| Set-Up Instructions: |}
{| |}
{| =>I recomend you to run the script with your |}
{| Character placed in the Keldagrim Mine. Anyway, |}
{| you can run it in the Keldagrim Bank or close from |}
{| it in the path to the mine. |}
{| =>If you want to mine Adamantite, Runite and Gold, go |}
{| to the script's 43 line and just leave: RocksToMine := 0; |}
{| If you want to mine only Adamantite and Runite, replace |}
{| the 0 by 1, at line 43. |}
{| If you only want to mine Adamantite, replace the 0 by 2. |}
{| |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{$DEFINE SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
{$I srl/srl/misc/debug.simba}
Var //Global variables
AddyCounter,RuneCounter,GoldCounter,DepositNumber,StartTime,RocksToMine,KFlag:integer;
Procedure DeclarePlayers;
begin
RocksToMine := 0; //If you want to mine Adamantite, Runite and Gold, leave 0.
//If you want to mine only Adamantite and Runite, replace the 0 by 1.
//If you only want to mine Adamantite, replace the 0 by 2.
KFlag := 0;
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; //Runescape Username
Players[0].Pass := ''; //Runescape Password
Players[0].Nick := ''; //3 or 4 lowercase letters from your runescape username.
Players[0].Active := True;
Players[0].Pin := ''; //Leave Blank if no PIN.
end;
procedure Login;
begin
ClearDebug;
Smart_Server := 0; //Zero for Random World
Smart_Members := True; //True => Member
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL();
DeclarePlayers;
LoginPlayer;
end;
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| You'll be able to see the report every time you make a deposit. |}
{| It can be found at the Debug box. |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
Procedure Report;
Var
TotalXp,Sec,XP_H,MiningRate,MiningRate1,MiningRate2,DepositRate:Integer;
begin
TotalXp := (105*AddyCounter) + (138*RuneCounter) + (65*GoldCounter);
Sec := (1+((GetSystemTime-StartTime)/1000));
XP_H := (TotalXp*3600)/Sec;
MiningRate := (AddyCounter*3600)/Sec;
MiningRate1 := (RuneCounter*3600)/Sec;
MiningRate2 := (GoldCounter*3600)/Sec;
DepositRate := (DepositNumber*3600)/Sec;
writeLn('||-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-||');
writeLn('||-:_:-:_:-:_:-:_:-: Keldagrim Miner :-:_:-:_:-:_:-:_:-||');
writeLn('||Time Running: ' + Padr(TimeRunning,38) + ' ||');
writeLn('||Adamantite Mined: ' + Padr(IntToStr(AddyCounter),34) + ' ||');
if((RocksToMine = 0) or (RocksToMine = 1)) then
writeLn('||Runite Mined: ' + Padr(IntToStr(RuneCounter),38) + ' ||');
if(RocksToMine = 0) then
writeLn('||Gold Mined: ' + Padr(IntToStr(GoldCounter),40) + ' ||');
writeLn('||Exp Earned: ' + Padr(IntToStr(TotalXp),40) + ' ||');
writeln('||Adamantite Mined Per Hour: ' + Padr(IntToStr(MiningRate),25) + ' ||');
if((RocksToMine = 0) or (RocksToMine = 1)) then
writeln('||Runite Mined Per Hour: ' + Padr(IntToStr(MiningRate1),29) + ' ||');
if(RocksToMine = 0) then
writeln('||Gold Mined Per Hour: ' + Padr(IntToStr(MiningRate2),31) + ' ||');
writeLn('||Exp Per Hour: ' + Padr(IntToStr(XP_H),38) + ' ||');
writeLn('||Deposit Per Hour: ' + Padr(IntToStr(DepositRate),34) + ' ||');
writeLn('||-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-||');
end;
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| My AntiBan procedure is composed by 11 diferent moves and they can be |}
{| executed with a probability of 1%, to ensure that the Script isn't |}
{| much repetitive, and to obtain a best mining performance. |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
Procedure AntiBan;
begin
if(not LoggedIn)then
Exit;
case random(1100) of
0:
PickUpMouse;
21:
HoverSkill('random', False);
71:
begin
RandomAngle(True);
SetAngle(SRL_ANGLE_HIGH);
end;
98:
HoverSkill('Mining', False);
111:
begin
MakeCompass(random(90));
ClickNorth(SRL_ANGLE_HIGH);
end;
123:
begin
MakeCompass('E');
ClickNorth(SRL_ANGLE_HIGH);
end;
137:
RandomRClick;
160:
begin
RandomRClick;
HoverSkill('Mining', False);
end;
179:
RandomMovement;
193:
SleepAndMoveMouse(200 + Random(100));
210:
ExamineInv;
end;
end;
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| The way that i have chosen to walk was the DTM walking, in order to |}
{| obtain the best performance, while going to the mine or bank. This |}
{| procedure uses as arguments a DTM path and, at the same time, another |}
{| DTM path which is paralel to the original Path, to ensure that the |}
{| script will not fail any point. The 3th argument is a Flag that is |}
{| activated only if the original path fails at all, in order to start |}
{| from the begining, find where you are and then try to go to the |}
{| destination again. |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
Procedure WalkingDTM(DTMs:TIntegerArray;SafeDTMs:TIntegerArray;SafeFlag:Integer);
Var
i,x,y,WalkCounter,SafeLogout,ApplySafePath:integer;
Position,Position1:boolean;
begin
if(not LoggedIn) then
Exit;
if((SafeFlag = 1) and InvFull) then
begin
FreeDTMs(DTMs);
FreeDTMs(SafeDTMs);
DTMs := [DTMFromString('mggAAAHicY2NgYChjYmCoAOJ6IO4H4tlAPBOIM4FynlDsA8SJQFwIxPrammBsZWbMUFtZxNDVUsdQA6QFgXLYMCMODAEAzT0LzA=='),
DTMFromString('mggAAAHicY2NgYMhjYmCoA+JKIO4H4mlAPAOIC4ByhkBsBMSmQOwKxJFArK+tCcf11cUMzfXlDM115QyCQDlsmBEHhgAAlrgLLg=='),
DTMFromString('mggAAAHicY2NgYEhjYmCoAeJaIG4G4h4gngjE9UC5UCAWB2IxBgi/GYiLszIY9LU14bgwK4YhwMuBQRAohw0z4sAQAABzGApg'),
DTMFromString('mggAAAHicY2NgYEhiYmAoAOI5QDwXiCuBuAGI44BywUAcBsSRQJwJxNpAXJyVAcaFWTEMAV4OYLa+tiaDIFAOG2bEgSEAAOEyC9o='),
DTMFromString('mggAAAHicY2NgYEhmYmDoAeI1QLwOiJuhOAYolwTEfkAcBKVLgdjNyY6hOCuDoTArhiHAywHMjtVnYxAEymHDjDgwBAAA7yQL4g=='),
DTMFromString('mggAAAHicY2NgYChiYmAoAeLJQLwQiKcD8RIgzgHKBQCxJxDHAnEuEKsAcXFWBgqO1Wdj0NfWZBAEymHDjDgwBAAA+RkL8A=='),
DTMFromString('mggAAAHicY2NgYChkYmAoAuISIF4ExFOBeCYQZwLl/IHYBog9gdgQiKOBODMxjqE4KwMFx+qzMQgC5bBhRhwYAgD5www9'),
DTMFromString('mggAAAHicY2NgYIhkYmAoBOJiIC4D4sVAPBOIY4FyEUDsCMS6QGwJxN5AXJSewZCTlASmYThGh41BECiHDTPiwBAAANE5C9c='),
DTMFromString('mggAAAHicY2NgYMhlYmAoA+JeIO4H4m1APAmIs4ByQUAcAMTmQOwKxKpAnBEXx1CUnsGQk5QEpmN02MC0IFAOG2bEgSEAAPJYDBg='),
DTMFromString('mggAAAHicY2NgYEhjYmCoBOKJQDwViGcA8QYgTgLKOQBxCRDbALEKECcAcVF6BhiXRBgy5CWngNnRgjwMgkA5bJgRB4YAAPccDA8='),
DTMFromString('mggAAAHicY2NgYIhgYmDIB+J5QNwGxAuBOA2I04FyAUCcBMR6QKwNxPZA7GBhyZCVkMCQ5qvNUJSewZCXnMJgpqvHIAiUw4YZcWAIAACPkQri')];
SafeDTMs := [DTMFromString('mggAAAHicY2NgYPjDyMAgycTAoADE0kDMCMQcQPwYKHcTiI8A8UYgXgTEK4DYxc6Ooa6qnKGjuYGhrbGOwdXBhUFPU5tBBCiHDTPiwBAAACDMDO4='),
DTMFromString('mggAAAHicY2NgYPjIyMDAycTAIAjEkkDMAMTfgWK3gMyzQLwDiKcDcTMQ1wCxvaUlQ1RIMENNRSlDa30Ng56mNoOrgwuDCFAOG2bEgSEAABBrDIU='),
DTMFromString('mggAAAHicY2NgYLjDyMDAx8TAIAbEEkD8FsgXBtIHgXLHgfgoEJ8C4ltAPBuIvZ1dGQI8nRkKM+PBdHFmNkN5YT6DCFAOG2bEgSEAAFsgDZU='),
DTMFromString('mggAAAHicY2NgYHjKyMDwF4iZmRgYNIBYnwnCPgyU2wHEF4F4JxDvA+IHQFycmQ3HhZnxDAGezgzZSckMIkA5bJgRB4YAALhJDos='),
DTMFromString('mggAAAHicY2NgYHjIyMDwD4hFmRgYLIDYCoi5gHgHUG47EB8F4rVAvAGIbwJxflo6Q3FmNhgXZsYzBHg6M8TocjCIAOWwYUYcGAIAkxcN2Q=='),
DTMFromString('mggAAAHicY2NgYPjKyMDAyMTAIALEmkCsBcTyQHwWKLcZig8B8TUgXgXExZnZWLEIUA4bZsSBIQAAbV0OKw=='),
DTMFromString('mggAAAHicY2NgYPjJyMDwF4j/AbEwEwODLhDrAPERoNwGIJ4OxFOBeDEQ7wDi3JRUhuykZIbizGwULAKUw4YZcWAIAAAYIg9r'),
DTMFromString('mggAAAHicY2NgYHjAyMDwD4gZmIAIiA2AWB+IdwCFNgHxHCDuAOKpQLwKiIszsxlyU1LBNDIWAcphw4w4MAQAAIl5DjQ='),
DTMFromString('mggAAAHicY2NgYPjOyMDwC4hFmRgYJKH4NZB/GSi3AYrnAnErlF2cmQ3GmQmJDNlJyXC+CFAOG2bEgSEAAPbRDyw='),
DTMFromString('mggAAAHicY2NgYHjOyMDwDYh/ALEwEwODGBC/ALJ3AuX2AfEMIJ4CxE1APA2I8zKz4TgrLR3OFgHKYcOMODAEAAA4pg+v'),
DTMFromString('mggAAAHicY2NgYHjMyMDwBYg5mRgYVID4LZCtDKRPAeW2A/EUIO4D4mVAfBSIbaxsGDJSUhnyMrMZstLSGfR19RkKokwYRIBy2DAjDgwBAItJDZU=')];
end;
if((SafeFlag = 1) and (not InvFull)) then
begin
FreeDTMs(DTMs);
FreeDTMs(SafeDTMs);
DTMs := [DTMFromString('mggAAAHicY2NgYHjGyMBwAYhvAPE3IOZjYmD4AqQ3A+VOAPF8IO4H4oNAvAGIs3NzGUwsLRn0TUzA7PhgAzAtCJTDhhlxYAgAAC3ZDwg='),
DTMFromString('mggAAAHicY2NgYLjJyMBwHIj3AvEXIL4DxJtBGCi3E4hXAPFpIJ4CxBeAOCY+niE7N5dB38SEITXCGMy2tLNjEATKYcOMODAEAABjJg98'),
DTMFromString('mggAAAHicY2NgYLjEyMBwGoh3A/EyIH4BxGuBeC5Q7jAU3wTii0C8CYizc3Ph2MTSkiHCV5dB38SEQRAohw0z4sAQAABcWA9p'),
DTMFromString('mggAAAHicY2NgYHjOyMBwFIgPAvFmIF4KxA+BeDtQbg8QP4TiC0D8EYhT09MZsnNz4VjfxIQhNcKYQRAohw0z4sAQAAC3ORCe'),
DTMFromString('mggAAAHicY2NgYDjHyMBwDIjXAfFsKLsbiBcB5fYC8X4gfgrEX4H4ChBn5+YyJKelgmkQjg82YNA3MWEQBMphw4w4MAQAAG9/D+k='),
DTMFromString('mggAAAHicY2NgYLjIyMBwCoiPAvEqIP4MxH9BbKDcISC+BcT3gPgcEG8F4uzcXDBOz8wE02HGPGBaECiHDTPiwBAAANQPEPw='),
DTMFromString('mggAAAHicY2NgYHjEyMBwDIiPAvEhIH4HxD+AeCdQbh8QXwTi10B8H4iPA3FqejpDemYmQ3ZuLpgOM+YBswWBctgwIw4MAQDphxEr'),
DTMFromString('mggAAAHicY2NgYHjJyMBwAog3AvEGIL4BxI+AeC1Q7iAQHwLiq0D8GIjPALGjqytDdm4uHIcZ84BpQaAcNsyIA0MAAKNhEG0='),
DTMFromString('mggAAAHicY2NgYLjEyMDwAohfA/FRIF4FxNOAeB5Q7igQnwTiW0B8HogvArGGvj5DZm4ig4evK0N2bi4cCwLlsGFGHBgCAIcHEC8='),
DTMFromString('mggAAAHicY2NgYDjOyMDwBIoPAPFSID4JxEuAck+A+DkQ/wLit0B8C4h1NbQY8tJiGHzdHBgK0jLA2M3egUEQKIcNM+LAEAAAmQAQKQ==')];
SafeDTMs := [DTMFromString('mggAAAHicY2NgYPjCyMDAxsTA8BJIswNpeSaI2EGg3BYg3gDEc4D4AhDPBOLczCwwNtA3ANPpIfpgWgQohw0z4sAQAACrdg4u'),
DTMFromString('mggAAAHicY2NgYPjGyMDwEIivADEfEwPDJyj/IFDuPBDvBuL7QLwKiJcBcW5mFhgb6Bsw5EcZw/kiQDlsmBEHhgAAgMcQHQ=='),
DTMFromString('mggAAAHicY2NgYLjDyMBwBoiPA/EDIP4BxHuAeCNQbj0QXwfi00D8AoiPAnFuZhYcZ6alMeRHGTMY6Bsw4AKMODAEAAC1oxBF'),
DTMFromString('mggAAAHicY2NgYPjDyMDwAIhvA/FpIN4HxN+B+BhQ7hwQPwfiD0B8D4gZgeLpKSkMuZlZDMkJCWDaQN+AIT/KmEEEKI8NM+LAEAAAvF8Qag=='),
DTMFromString('mggAAAHicY2NgYHjAyMBwD4gPAvEaIF4ExLeAeDNQ7iQQnwfiL0B8H4iZgeK5mVkMmWlpYBqEDfQNGNJD9BlEgPLYMCMODAEAcaoPwg=='),
DTMFromString('mggAAAHicY2NgYHjEyMBwG4hvAvEeIP4CxMxMDAw7gXK3gPglEL8HYnaQGiCdm5kFxukpKWDaQ4CHIUyXnUEEKIcNM+LAEAAAOfkO/g=='),
DTMFromString('mggAAAHicY2NgYPjGyMBwHYhvAPFVIP4LxLuBeB9Q7gwQ3wHir0D8Eoj/A3FuZhZDekoKmAbhMF12MC0ClMOGGXFgCAAAHxsRuQ=='),
DTMFromString('mggAAAHicY2NgYPjKyMBwA4j3A/EeKH4IxHuBcueA+BoQvwTiv0D8GYh9fbwZMtPSGHIzs8AYxA7TZWfABRhxYAgAAMqiEIo='),
DTMFromString('mggAAAHicY2NgYLjDyMBwEIiXAPExIL4AxB+BeBFQ7goQPwZiRiD/HZC+BcSh4eEMuZlZYBymyw6mvTydGESActgwIw4MAQBe2A+Y'),
DTMFromString('mggAAAHicY2NgYLjMyMCwF4jPAfFXIP4FxLeBeAFQ7hsQ8wLZP4D0HyA+BMQOjg4MuZlZYJydGcfg5enEYO/gzCAClMOGGXFgCAAAlAsQFw==')];
end;
MarkTime(SafeLogout);
for i:=0 to High(DTMs) do
begin
if(not LoggedIn) then
break;
if((SafeFlag=1) and (not IsMoving) and (TimeFromMark(SafeLogout)>120000)) then
begin
ClearDebug;
writeln('Could Not Go To The Bank.');
Report;
Logout;
Exit;
end;
MarkTime(WalkCounter);
repeat
Position := FindDTM(DTMs[i],x,y,MMX1,MMY1,MMX2,MMY2);
Position1 := FindDTM(SafeDTMs[i],x,y,MMX1,MMY1,MMX2,MMY2);
until((Position=True) or (TimeFromMark(WalkCounter)>3000));
wait(500);
if(FindDTM(DTMs[i],x,y,MMX1,MMY1,MMX2,MMY2) or (Position=True)) then
begin
Mouse(x,y,0,0,True);
if(RunEnergy(30)) then
SetRun(True);
MarkTime(WalkCounter);
if(i<High(DTMs)) then
begin
wait(200);
repeat
wait(50);
until(FindDTM(DTMs[i+1],x,y,MMX1,MMY1,MMX2,MMY2) or (TimeFromMark(WalkCounter)>3000));
if(IsMoving or FindDTM(DTMs[i+1],x,y,MMX1,MMY1,MMX2,MMY2) or FindDTM(SafeDTMs[i+1],x,y,MMX1,MMY1,MMX2,MMY2)) then
MarkTime(ApplySafePath);
end;
end
else
begin
MarkTime(WalkCounter);
repeat
Position := FindDTM(SafeDTMs[i],x,y,MMX1,MMY1,MMX2,MMY2);
until(Position1 or FindDTM(SafeDTMs[i],x,y,MMX1,MMY1,MMX2,MMY2) or (TimeFromMark(WalkCounter)>3000));
if(Position) then
begin
Mouse(x,y,0,0,True);
writeln('Walking Safe DTM Point Applied.');
end
else
begin
if((SafeFlag=0) and (not IsMoving)) then
begin
writeln('Walking Safe Path Applied. Please Wait...');
WalkingDTM(DTMs,SafeDTMs,1);
i := High(DTMs);
end;
end;
end;
end;
FreeSRLBitmaps;
end;
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| GoToMine is the procedure that sends the original Mine's path and a |}
{| paralel path to the WalkingDTM procedure. |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
Procedure GoToMine;
Var
DTMs,SafeDTMs:TIntegerArray;
begin
if(not LoggedIn) then
Exit;
ClickNorth(SRL_ANGLE_HIGH);
DTMs := [DTMFromString('mggAAAHicY2NgYHjHyMBwH4gfAPEfIP4PxK+BeANQ7jAQzwbiZUDcAcRtQFyUmc5gqq8LxunxsWA+CIsA5bBhRhwYAgCN3w/r'),
DTMFromString('mggAAAHicY2NgYPjIyMDwEIgvA/FnIH4MxFeB+DRQ7jwQ7wbiFUC8DIjvAXFuZhYYG+gboLBFgHLYMCMODAEAwtcQeg=='),
DTMFromString('mggAAAHicY2NgYLjLyMCwB4hPAPF+ID4DxA+BeCNQ7ggQXwfiV0C8HojPA3FuZhaDgb4BCp2ckMAgApTDhhlxYAgAAIiaEA0='),
DTMFromString('mggAAAHicY2NgYPjNyMDwCIgfAPFJIN4LxOeB+ChQ7iQQvwDiD0B8F8rPzcwC4/SUFDBtoG8ApkWActgwIw4MAQACCxFn'),
DTMFromString('mggAAAHicY2NgYHjAyMBwAIj3AfFaIF4MxL+BeCtQ7hwQvwTir0B8D4g/AXFuZhYYJyckgGk9XT0Gf0FeBhGgHDbMiANDAACnIhA+'),
DTMFromString('mggAAAHicY2NgYHjCyMBwB4hvAvE+IP4KxLuAeCdQ7ioQvwTiN0DMDhT7D6RzM7PAOD0lBUx7CPCAaRGgHDbMiANDAAC5jBCO'),
DTMFromString('mggAAAHicY2NgYPjJyMBwA4ivA/FVIN4JxGxMDAz7gXLngPghEH8DqQPia0Ccm5nFkJmWhkKDsAhQDhtmxIEhAADeXhFl'),
DTMFromString('mggAAAHicY2NgYPjAyMBwGYgPAPFeIH4NxDuB+AhQ7goQXwfiV0D8CIgZgOLOjk4MmWlpDLmZWXAM4osApbFhRhwYAgCtihCb'),
DTMFromString('mggAAAHicY2NgYLjNyMDwDog/APF5IN4HxEuBeCVQ7joQ3wHit0B8A4gfAbGDowNDdmYcg5enE0NuZhYciwDlsGFGHBgCANPlEQE='),
DTMFromString('mggAAAHicY2NgYDjCyMBwEogfAfErIN4CxPuAeBpQbgMQPwfiN0D8BIj/ArGlpRGDs5MVQ0FuNIO/rz1DUW46GIsA5bBhRhwYAgCW5hBS')];
SafeDTMs := [DTMFromString('mggAAAHicY2NgYPjCyMDAxsTA8BJIswNpeSaI2EGg3BYg3gDEc4D4AhDPBOLczCwwNtA3ANPpIfpgWgQohw0z4sAQAACrdg4u'),
DTMFromString('mggAAAHicY2NgYPjGyMDwEIivADEfEwPDJyj/IFDuPBDvBuL7QLwKiJcBcW5mFhgb6Bsw5EcZw/kiQDlsmBEHhgAAgMcQHQ=='),
DTMFromString('mggAAAHicY2NgYLjDyMBwBoiPA/EDIP4BxHuAeCNQbj0QXwfi00D8AoiPAnFuZhYcZ6alMeRHGTMY6Bsw4AKMODAEAAC1oxBF'),
DTMFromString('mggAAAHicY2NgYPjDyMDwAIhvA/FpIN4HxN+B+BhQ7hwQPwfiD0B8D4gZgeLpKSkMuZlZDMkJCWDaQN+AIT/KmEEEKI8NM+LAEAAAvF8Qag=='),
DTMFromString('mggAAAHicY2NgYHjAyMBwD4gPAvEaIF4ExLeAeDNQ7iQQnwfiL0B8H4iZgeK5mVkMmWlpYBqEDfQNGNJD9BlEgPLYMCMODAEAcaoPwg=='),
DTMFromString('mggAAAHicY2NgYHjEyMBwG4hvAvEeIP4CxMxMDAw7gXK3gPglEL8HYnaQGiCdm5kFxukpKWDaQ4CHIUyXnUEEKIcNM+LAEAAAOfkO/g=='),
DTMFromString('mggAAAHicY2NgYPjGyMBwHYhvAPFVIP4LxLuBeB9Q7gwQ3wHir0D8Eoj/A3FuZhZDekoKmAbhMF12MC0ClMOGGXFgCAAAHxsRuQ=='),
DTMFromString('mggAAAHicY2NgYPjKyMBwA4j3A/EeKH4IxHuBcueA+BoQvwTiv0D8GYh9fbwZMtPSGHIzs8AYxA7TZWfABRhxYAgAAMqiEIo='),
DTMFromString('mggAAAHicY2NgYLjDyMBwEIiXAPExIL4AxB+BeBFQ7goQPwZiRiD/HZC+BcSh4eEMuZlZYBymyw6mvTydGESActgwIw4MAQBe2A+Y'),
DTMFromString('mggAAAHicY2NgYLjMyMCwF4jPAfFXIP4FxLeBeAFQ7hsQ8wLZP4D0HyA+BMQOjg4MuZlZYJydGcfg5enEYO/gzCAClMOGGXFgCAAAlAsQFw==')];
WalkingDTM(DTMs,SafeDTMs,0);
FreeDTMs(DTMs);
FreeDTMs(SafeDTMs);
repeat
AntiBan;
wait(RandomRange(250,300));
until(not IsMoving);
end;
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| GoToBank is the procedure that sends the original Bank's path and a |}
{| paralel path to the WalkingDTM procedure. |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
Procedure GoToBank;
Var
DTMs,SafeDTMs:TIntegerArray;
begin
if(not LoggedIn) then
Exit;
ClickNorth(SRL_ANGLE_HIGH);
DTMs := [DTMFromString('mggAAAHicY2NgYKhnYmCYDMSzgHgaEDcDcQMQVwPlKoE4BYj9gNgdiO2BWE9Tm6GsKJ+hoaaCobW+hiEhOpIhJjyUQQQohw0z4sAQAAAwygzr'),
DTMFromString('mggAAAHicY2NgYPjOyMDAycTAIAjEUkDMCMR/gWJXgXKXgHgHEC8G4hYgrgXiAC8vhlB/P4aailKGtsY6Bj1NbYbwoEAGEaAcNsyIA0MAADLJDPs='),
DTMFromString('mggAAAHicY2NgYHjOyMAgwgTBb4FsDiAtBsRHGCD4BBDfAuJNQDwJiIszsxkKM+MZAjydwezslGSGsqJ8BhGgHDbMiANDAACRGg5D'),
DTMFromString('mggAAAHicY2NgYHjGyMCgwwTBTED8F8j/AcSHgHK7gHgvEJ8H4u1A/BSIizOzGQoz4xkCPJ3BbBCO0eVgEAHKYcOMODAEAADt3w7i'),
DTMFromString('mggAAAHicY2NgYHjEyMDwA4hFmRgYLKCYDYi3A+V2AvERIF4LxBuAeDUQF2dmw3FhZjxDgKczmC0ClMOGGXFgCAAAqwIOYQ=='),
DTMFromString('mggAAAHicY2NgYPjOyMDwB4h5mRgYtIBYHohlgfgsUG4zFB8A4itAvBaIizOzUXCMLgeYFgHKYcOMODAEAACxrA5d'),
DTMFromString('mggAAAHicY2NgYPjJyMDwB4j/AbEwEwODMhDrAfERoNx6IJ4GxFOBeBsQLwTi3JRUhuLMbDiO0eUA0yJAOWyYEQeGAADt4g69'),
DTMFromString('mggAAAHicY2NgYHjIyMDwD4j/ArEaEwMDExAbAPEOoNxGIJ4HxEuBuB2IJwNxcWY2Q25KKpiO0eUA0yAsApTDhhlxYAgAAMteDms='),
DTMFromString('mggAAAHicY2NgYPjKyMDwF4jFmBgYxIFYEoj1gfgcUG4jEK8H4tlA3ArEF4A4NSaWoTgzmyEzIRFMg3CoIB+DCFAOG2bEgSEAAHu+DaU='),
DTMFromString('mggAAAHicY2NgYHjKyMDwFYh/ALEoEwODGBDrA/EuoNweIJ4OxJOBuAmItwFxXmY2HGekpILpAEE+BhGgHDbMiANDAADEvA46'),
DTMFromString('mggAAAHicY2NgYLjLyMDwGYhZmBgYOIFYCYhtgPgkUG4rEO8E4qlAPAGINwOxjZUNQ1pSMkNeZjYYZ6WlM4QL8zOIAOWwYUYcGAIAO1EM6g==')];
SafeDTMs := [DTMFromString('mggAAAHicY2NgYPjDyMAgycTAoADE0kDMCMQcQPwYKHcTiI8A8UYgXgTEK4DYxc6Ooa6qnKGjuYGhrbGOwdXBhUFPU5tBBCiHDTPiwBAAACDMDO4='),
DTMFromString('mggAAAHicY2NgYPjIyMDAycTAIAjEkkDMAMTfgWK3gMyzQLwDiKcDcTMQ1wCxvaUlQ1RIMENNRSlDa30Ng56mNoOrgwuDCFAOG2bEgSEAABBrDIU='),
DTMFromString('mggAAAHicY2NgYLjDyMDAx8TAIAbEEkD8FsgXBtIHgXLHgfgoEJ8C4ltAPBuIvZ1dGQI8nRkKM+PBdHFmNkN5YT6DCFAOG2bEgSEAAFsgDZU='),
DTMFromString('mggAAAHicY2NgYHjKyMDwF4iZmRgYNIBYnwnCPgyU2wHEF4F4JxDvA+IHQFycmQ3HhZnxDAGezgzZSckMIkA5bJgRB4YAALhJDos='),
DTMFromString('mggAAAHicY2NgYHjIyMDwD4hFmRgYLIDYCoi5gHgHUG47EB8F4rVAvAGIbwJxflo6Q3FmNhgXZsYzBHg6M8TocjCIAOWwYUYcGAIAkxcN2Q=='),
DTMFromString('mggAAAHicY2NgYPjKyMDAyMTAIALEmkCsBcTyQHwWKLcZig8B8TUgXgXExZnZWLEIUA4bZsSBIQAAbV0OKw=='),
DTMFromString('mggAAAHicY2NgYPjJyMDwF4j/AbEwEwODLhDrAPERoNwGIJ4OxFOBeDEQ7wDi3JRUhuykZIbizGwULAKUw4YZcWAIAAAYIg9r'),
DTMFromString('mggAAAHicY2NgYHjAyMDwD4gZmIAIiA2AWB+IdwCFNgHxHCDuAOKpQLwKiIszsxlyU1LBNDIWAcphw4w4MAQAAIl5DjQ='),
DTMFromString('mggAAAHicY2NgYPjOyMDwC4hFmRgYJKH4NZB/GSi3AYrnAnErlF2cmQ3GmQmJDNlJyXC+CFAOG2bEgSEAAPbRDyw='),
DTMFromString('mggAAAHicY2NgYHjOyMDwDYh/ALEwEwODGBC/ALJ3AuX2AfEMIJ4CxE1APA2I8zKz4TgrLR3OFgHKYcOMODAEAAA4pg+v'),
DTMFromString('mggAAAHicY2NgYHjMyMDwBYg5mRgYVID4LZCtDKRPAeW2A/EUIO4D4mVAfBSIbaxsGDJSUhnyMrMZstLSGfR19RkKokwYRIBy2DAjDgwBAItJDZU=')];
WalkingDTM(DTMs,SafeDTMs,0);
FreeDTMs(DTMs);
FreeDTMs(SafeDTMs);
repeat
AntiBan;
wait(RandomRange(250,300));
until(not IsMoving);
end;
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| The name tells you everything, ItemDeposit procedure checks if you |}
{| have the pickaxe in your 1st inventory slot; if you haven't, it will |}
{| deposit everything that you have in the inventory, if you have the |}
{| pickaxe at the 1st inventory slot it just deposit from the 2nd slot |}
{| until the end. If something goes wrong, a safe case will guarantee |}
{| that you don't get caught, doing logout. |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
Procedure ItemDeposit;
Var
DepositCounter,x,y,i,BankDTM,BankDTM1:Integer;
SafePointDTMs:TIntegerArray;
Bank, Bank1:boolean;
begin
if (not LoggedIn) then
Exit;
SetAngle(SRL_ANGLE_HIGH);
BankDTM := DTMFromString('mggAAAHicY2NgYGBmZGD4AqQFGCEYxL4PxOeB+CYUn4Ti00DclWfDUJuTwZCXEs8wffJkhoriQgZOdgYGfgbsmBEHhgAA9e4PEQ==');
BankDTM1 := DTMFromString('mggAAAHicY2NgYNgMxJeA+CgQzwPipUB8EIjPAfFZID4A5d+E4o5cawZ9NRGG2hQzhugAV4b89BSGvJR4Bn6gHDbMiANDAABSXw+O');
SafePointDTMs := [DTMFromString('mggAAAHicY2NgYIhkYmBIB+IiIJ4LxC1QOhso5wKSB+JUIDYGYn0gdrCwZDDT1WMoSs9gyAnSBdN5ySkM/EA5bJgRB4YAAJWpCxY='),
DTMFromString('mggAAAHicY2NgYEhnYmBIBeJSIJ4LxLuAuAmIc4FyrkAcCcSpQOwHxKZAbKytw2Cmq8dQlJ7BkBOky+DPzw1m8wPlsGFGHBgCAHjgCnE='),
DTMFromString('mggAAAHicY2NgYAhkYmBIA+IyIJ4HxPOBuBKIM4ByLkAcAcT6QJwCxPZAbKarB8ZF6RkMeckpDGm+2gy+bq4MgkA5bJgRB4YAAHAuCoY='),
DTMFromString('mggAAAHicY2NgYEhmYmBIAeJ8IJ4DxC1APA+Ic4ByLkAcBsQpQGwMxPpAbGFgyGCmq8eQlZDAkOarzVCUnsGQl5zCIAiUw4YZcWAIAACIAwrn')];
repeat
AntiBan;
wait(100);
Bank := FindDTM(BankDTM,x,y,MSX1,MSY1,MSX2,MSY2);
Bank1 := FindDTM(BankDTM1,x,y,MSX1,MSY1,MSX2,MSY2);
until(not IsMoving);
Bank := FindDTM(BankDTM,x,y,MSX1,MSY1,MSX2,MSY2);
Bank1 := FindDTM(BankDTM1,x,y,MSX1,MSY1,MSX2,MSY2);
i := 0;
MarkTime(DepositCounter);
repeat
if(not LoggedIn) then
break;
if((TimeFromMark(DepositCounter)>60000) and (TimeFromMark(DepositCounter)<240000)) then
begin
writeln('Could Not Find The Bank. Aplying The Safe Path. Please wait...');
GoToBank;
end;
if (TimeFromMark(DepositCounter)>300000) then
begin
ClearDebug;
writeln('Could Not Find The Bank.');
Report;
Logout;
Exit;
end;
if(Bank or Bank1 or FindDTM(BankDTM,x,y,MSX1,MSY1,MSX2,MSY2) or FindDTM(BankDTM1,x,y,MSX1,MSY1,MSX2,MSY2)) then
Mouse(x,y,0,0,True)
else
OpenBankNPC;
Wait(RandomRange(3000,3500));
if (PinScreen) then
begin
repeat
InPin(Players[0].Pin);
until (BankScreen or (not LoggedIn));
wait(RandomRange(500,1000));
end;
if(((TimeFromMark(DepositCounter)>15000) and (TimeFromMark(DepositCounter)<45000)) or ((TimeFromMark(DepositCounter)>240000) and (TimeFromMark(DepositCounter)<285000))) then
begin
ClearDebug;
writeln('Could Not Find The Bank. Going To The Safe Point.');
FindDTM(SafePointDTMs[i],x,y,MMX1,MMY1,MMX2,MMY2);
Mouse(x,y,0,0,True);
repeat
wait(100);
until(not IsMoving);
i := i + 1;
if(i>3) then
i := 0;
end;
until(BankScreen or PinScreen);
ClearDebug;
writeln('The Bank Has Been Found.');
MMouse(573,228,2,2);
wait(250);
if(IsUpText('pic')) then
Deposit(2,28,True)
else
DepositAll;
CloseBank;
FreeDTM(BankDTM);
FreeDTM(BankDTM1);
if (RunEnergy(30)) then
SetRun(True);
IncEx(DepositNumber,1);
end;
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| If you have chosen "RocksToMine := 0;" at line 42, this procedure will |}
{| make you mine Gold during 1 minute, only when you don't |}
{| find Adamantite during 25 secounds. |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
Procedure MineGold(X1:TIntegerArray;Y1:TIntegerArray);
Var
x,y,i,j,FindRock,MineCounter,FinishGold,GCounter,AdamantiteCounter,ToGoldDTM:Integer;
begin
if(not LoggedIn) then
Exit;
ToGoldDTM := DTMFromString('mggAAAHicY2NgYMhkYmAoAeIaIO4D4qlAnAPE3UC5QCAOBeIYIM4F4kQgtrdyYNDXMQLjhpo6hub6JjBbACiHDTPiwBAAAKV4Cxo=');
FindDTM(ToGoldDTM,x,y,MMX1,MMY1,MMX2,MMY2);
Mouse(x,y,0,0,True);
wait(500);
repeat
FindNormalRandoms;
AntiBan;
wait(50);
until(not IsMoving);
MarkTime(FinishGold);
GCounter := 0;
AdamantiteCounter := 0;
if(FindObjCustom(x,y,['old'],[5033981,4967930,4239061,4371419,4835057],3)) then
begin
repeat
Mouse(x,y,0,0,True);
i := InvCount + 1;
GCounter := GCounter + 1;
if(not LoggedIn) then
break;
wait(500);
repeat
FindNormalRandoms;
AntiBan;
wait(50);
until(not IsMoving);
MarkTime(FindRock);
MarkTime(MineCounter);
j := 0;
repeat
MMouse(X1[j],Y1[j],2,2);
j := j + 1;
if(j > 3) then
j := 0;
wait(1000);
if(IsUpText('old')) then
MineCounter := GetSystemTime;
until((i = InvCount) or (TimeFromMark(MineCounter)>5000) or (TimeFromMark(FindRock)>20000) or InvFull);
if((TimeFromMark(MineCounter)>5000) or (TimeFromMark(FindRock)>20000)) then
GCounter := GCounter - 1;
repeat
if(FindObjCustom(x,y,['Ada'],[6517347,7636339,7307375,6056540,6846568,8162939,8558210,8031610,8426624,6648933],3)) then
begin
Mouse(x,y,0,0,True);
AdamantiteCounter := AdamantiteCounter + 1;
i := InvCount + 1;
wait(500);
repeat
wait(50);
until(not IsMoving);
repeat
ClearDebug;
AntiBan;
FindNormalRandoms;
MarkTime(FindRock);
MarkTime(MineCounter);
j := 0;
repeat
MMouse(X1[j],Y1[j],2,2);
j := j + 1;
if(j > 3) then
j := 0;
wait(1000);
if(IsUpText('ite')) then
MineCounter := GetSystemTime;
until((i = InvCount) or (TimeFromMark(MineCounter)>5000) or (TimeFromMark(FindRock)>60000));
if((TimeFromMark(MineCounter)>5000) or (TimeFromMark(FindRock)>60000)) then
AdamantiteCounter := AdamantiteCounter - 1;
until((TimeFromMark(MineCounter)>1000) or (i = InvCount) or (TimeFromMark(FindRock) > 60000));
end;
until((not FindObjCustom(x,y,['Ada'],[6517347,7636339,7307375,6056540,6846568,8162939,8558210,8031610,8426624,6648933],3)) or InvFull)
until((not FindObjCustom(x,y,['old'],[5033981,4967930,4239061,4371419,4835057],3)) or (TimeFromMark(FinishGold)>60000) or InvFull);
end;
IncEx(GoldCounter,GCounter);
IncEx(AddyCounter,AdamantiteCounter);
FreeDTM(ToGoldDTM);
end;
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| Every time that don't find Adamantite, you will moving in 3 |}
{| diferent points. If you have chosen "RocksToMine := 0;", when you |}
{| don't find Adamantite you will move every 5 secounds to a different |}
{| point. If you have chosen "RocksToMine := 1;", you will move every |}
{| 15 secounds. Finally, if you have chosen "RocksToMine := 2;", you will |}
{| move every 20 secounds. If in 4 minutes you can't find any Adamantite, |}
{| a safe case will guarantee that you make logout. |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
Function FindRocks(AddyFlag:Integer;X1:TIntegerArray;Y1:TIntegerArray):Integer;
Var
SafeLogout,ChangeGold,RuniteCounter,x,y,k,k1,ChangePoint,r,MineCounter,FindRock,j:Integer;
FindAddyDTMs,FindAddyDTMs1:TIntegerArray;
begin
if(not LoggedIn) then
Exit;
case RocksToMine of
0:
begin
k := 5000;
k1 := 25000;
end;
1:
k := 15000;
2:
k := 20000;
end;
FindNormalRandoms;
MarkTime(SafeLogout);
MarkTime(ChangeGold);
RuniteCounter := 0;
repeat
if(not LoggedIn) then
break;
FindAddyDTMs := [DTMFromString('mggAAAHicY2NgYChkYmCoBuIWIJ4OxHlA3AfENkA5TSDWA2IrII4HYl0gdnS0YXB0cmTQ09dmKCvPZ3C0t2HIyk5m4AfKYcOMODAEAABRFAop'),
DTMFromString('mggAAAHicY2NgYMhjYmAoBOJaIO4A4slAPBuII4FylkCsAcQ6QGwOxE4gMQsTBkcnRzCOjQtnKCvPZ6ioLGTgB8phw4w4MAQAAH9jCuE='),
DTMFromString('mggAAAHicY2NgYKhnYmAoAOJJQDwDiPOBeBYQ6wLlLIHYGIhtgdgNiD2BOCTUn8HRyZGhpDSXoaKykCE8MpShtDyfgR8ohw0z4sAQAADGUAvO')];
FindAddyDTMs1 := [DTMFromString('mggAAAHicY2NgYKhkYmCoB+IOIJ4GxAVAPAeIrYByGkCsA8QWQFwIxM5A7ObuyBAY7MMQGxfOkJefzuDo5MhQVV3MwA+Uw4YZcWAIAACmhQtP'),
DTMFromString('mggAAAHicY2NgYMhnYmAoBeJ6IM4B4m4gngzEmUA5UyC2AmIvIPYE4iAgdnGxYYiODWNISo4Es6trChmaWioY+IFy2DAjDgwBALy7C7c='),
DTMFromString('mggAAAHicY2NgYGhmYmAoBOJ8IJ4GxDOAeC4QawHlrIE4AYjNgNgJiH2BODwylMHR0YbB2cmeoaQ0l6G8spChuraEgR8ohw0z4sAQAADJsAvV')];
if(InvFull) then
break;
case AddyFlag of
0:
begin
if(KFlag = 0) then
FindDTM(FindAddyDTMs[0],x,y,MMX1,MMY1,MMX2,MMY2)
else
FindDTM(FindAddyDTMs1[0],x,y,MMX1,MMY1,MMX2,MMY2);
KFlag := not KFlag;
Mouse(x,y,0,0,True);
MarkTime(ChangePoint);
FreeDTMs(FindAddyDTMs);
FreeDTMs(FindAddyDTMs1);
end;
1:
begin
if(KFlag = 0) then
FindDTM(FindAddyDTMs[1],x,y,MMX1,MMY1,MMX2,MMY2)
else
FindDTM(FindAddyDTMs1[1],x,y,MMX1,MMY1,MMX2,MMY2);
KFlag := not KFlag;
Mouse(x,y,0,0,True);
MarkTime(ChangePoint);
FreeDTMs(FindAddyDTMs);
FreeDTMs(FindAddyDTMs1);
end;
2:
begin
if(not (RocksToMine = 2)) then
begin
if(KFlag = 0) then
FindDTM(FindAddyDTMs[2],x,y,MMX1,MMY1,MMX2,MMY2)
else
FindDTM(FindAddyDTMs1[2],x,y,MMX1,MMY1,MMX2,MMY2);
KFlag := not KFlag;
Mouse(x,y,0,0,True);
MarkTime(ChangePoint);
FreeDTMs(FindAddyDTMs);
FreeDTMs(FindAddyDTMs1);
ClearDebug;
writeln('Searching For Runite Ore Rocks.');
wait(500);
repeat
FindNormalRandoms;
wait(50);
until(not IsMoving);
if(FindObjCustom(x,y,['Run','ore'],[10986113,11249027,11315076],10) and (not InvFull)) then
begin
repeat
Mouse(x,y,0,0,True);
RuniteCounter := RuniteCounter + 1;
r := InvCount + 1;
wait(500);
repeat
FindNormalRandoms;
wait(50);
until(not IsMoving);
MarkTime(MineCounter);
MarkTime(FindRock);
j := 1;
repeat
AntiBan;
MMouse(X1[j],Y1[j],2,2);
j := j + 1;
if(j > 3) then
j := 1;
wait(1000);
if(IsUpText('ite')) then
MineCounter := GetSystemTime;
until((r = InvCount) or (TimeFromMark(MineCounter)>3000) or (TimeFromMark(FindRock)>60000));
if((TimeFromMark(MineCounter)>3000) or (TimeFromMark(FindRock)>60000)) then
RuniteCounter := RuniteCounter - 1;
until((not FindObjCustom(x,y,['Run','ore'],[10986113,11249027,11315076],10)) or InvFull);
IncEx(RuneCounter,RuniteCounter);
end;
end;
end;
end;
AddyFlag := AddyFlag + 1;
if(AddyFlag > 2) then
AddyFlag := 0;
repeat
ClearDebug;
writeln('Waiting For Adamantite Ores.');
FindNormalRandoms;
wait(50);
until(FindObjCustom(x,y,['Ada'],[6517347,7636339,7307375,6056540,6846568,8162939,8558210,8031610,8426624,6648933],3) or FindObjCustom(x,y,['Run','ore'],[10986113,11249027,11315076],7) or (TimeFromMark(ChangePoint)>k));
if((RocksToMine = 0) and (TimeFromMark(ChangeGold)>k1)) then
begin
MineGold(X1,Y1);
ChangeGold := GetSystemTime;
end;
until(FindObjCustom(x,y,['Ada'],[6517347,7636339,7307375,6056540,6846568,8162939,8558210,8031610,8426624,6648933],3) or FindObjCustom(x,y,['Run','ore'],[10986113,11249027,11315076],7) or (TimeFromMark(SafeLogout)>245000));
Result := AddyFlag;
end;
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
{| MineRocks is the procedure that makes you mine Adamantite/Runite/Gold. |}
{| Every time that the script clicks in a rock, the pointer will move |}
{| around your char to ensure that if someone mines your rock first than |}
{| you, you don't waste time waiting for an ore inventory count or for a |}
{| flag time. With this method, the mining performance can be much better |}
{| when a player comes to mine the same rock than you, and surely it makes|}
{| you look more human while mining the rocks. |}
{|-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-|}
Procedure MineRocks;
Var
x,y,FindAddyDTM,MineCounter,FindRock,SafeLogout,RuniteCounter,AdamantiteCounter,i,j,r,AddyFlag:integer;
X1,Y1:TIntegerArray;
begin
if(not LoggedIn) then
Exit;
FindAddyDTM := DTMFromString('mggAAAHicY2NgYMhjYmCoAeJWIC4B4llAvACIU4Fy5kBsDcQeQOwExFFAbGFqyqCtpQXH9bUVDI31VQz8QDlsmBEHhgAAY0AKWA==');
wait(500);
repeat
FindNormalRandoms;
AntiBan;
wait(50);
until(not IsMoving);
ClickNorth(SRL_ANGLE_HIGH);
if(InvFull) then
begin
writeln('The Inventory Is Full. Going To The Bank.');
GoToBank;
ItemDeposit;
GoToMine;
end;
if((not InvFull) and (not FindObjCustom(x,y,['Ada'],[6517347,7636339,7307375,6056540,6846568,8162939,8558210,8031610,8426624,6648933],3)) and (not FindDTM(FindAddyDTM,x,y,MMX1,MMY1,MMX2,MMY2))) then
begin
FindNormalRandoms;
GoToMine;
FreeDTM(FindAddyDTM);
end;
X1 := [260,221,255,300];
Y1 := [208,166,137,177];
AddyFlag := 0;
if((not FindObjCustom(x,y,['Ada'],[6517347,7636339,7307375,6056540,6846568,8162939,8558210,8031610,8426624,6648933],3)) and LoggedIn) then
begin
MarkTime(MineCounter);
repeat
if(not LoggedIn) then
break;
FindNormalRandoms;
ClearDebug;
writeln('Addy Mine Not Found. Going To The Mine Safe Point.');
AddyFlag := FindRocks(AddyFlag,X1,Y1);
repeat
wait(50);
until(not IsMoving);
if((TimeFromMark(MineCounter)>240000) and (TimeFromMark(MineCounter)<300000)) then
begin
writeln('Could Not Go To The Mine. Aplying The Safe Path.');
GoToMine;
end;
if(TimeFromMark(MineCounter)>300000) then
begin
ClearDebug;
Writeln('Could Not Find The Addy Mine.');
Report;
Logout;
Exit;
end;
until(FindObjCustom(x,y,['Ada'],[6517347,7636339,7307375,6056540,6846568,8162939,8558210,8031610,8426624,6648933],3));
end;
if(not LoggedIn) then
Exit;
ClearDebug;
writeln('The Addy Mine Has Been Found!');
i := InvCount;
RuniteCounter := 0;
AdamantiteCounter := 0;
repeat
if(not LoggedIn) then
break;
FindNormalRandoms;
if (RunEnergy(10)) then
SetRun(True);
ClearDebug;
writeln('Searching For Addy Rocks.');
wait(500);
repeat
wait(50);
until(not IsMoving);
if(FindObjCustom(x,y,['Ada'],[6517347,7636339,7307375,6056540,6846568,8162939,8558210,8031610,8426624,6648933],3)) then
begin
Mouse(x,y,0,0,True);
AdamantiteCounter := AdamantiteCounter + 1;
i := InvCount + 1;
wait(500);
repeat
AntiBan;
wait(50);
until(not IsMoving);
repeat
ClearDebug;
AntiBan;
FindNormalRandoms;
MarkTime(FindRock);
MarkTime(MineCounter);
j := 0;
repeat
MMouse(X1[j],Y1[j],2,2);
j := j + 1;
if(j > 3) then
j := 0;
wait(1000);
if(IsUpText('ite')) then
MineCounter := GetSystemTime;
until((i = InvCount) or (TimeFromMark(MineCounter)>5000) or (TimeFromMark(FindRock)>60000));
if((TimeFromMark(MineCounter)>5000) or (TimeFromMark(FindRock)>60000)) then
AdamantiteCounter := AdamantiteCounter - 1;
until((TimeFromMark(MineCounter)>1000) or (i = InvCount) or (TimeFromMark(FindRock) > 60000));
end
else
begin
FindNormalRandoms;
MarkTime(SafeLogout);
AddyFlag := FindRocks(AddyFlag,X1,Y1);
if(TimeFromMark(SafeLogout)>240000) then
begin
ClearDebug;
writeln('Could Not Find Any Addy Rock.');
Report;
Logout;
Exit;
end;
end;
if(not (RocksToMine = 2)) then
begin
repeat
if(not LoggedIn) then
break;
if(FindObjCustom(x,y,['Run','ore'],[10986113,11249027,11315076],10) and (not InvFull)) then
begin
if(IsUpTextMultiCustom(['Run','ore'])) then
begin
Mouse(x,y,0,0,True);
RuniteCounter := RuniteCounter + 1;
r := InvCount + 1;
wait(500);
repeat
wait(50);
until(not IsMoving);
MarkTime(MineCounter);
MarkTime(FindRock);
j := 1;
repeat
AntiBan;
MMouse(X1[j],Y1[j],2,2);
j := j + 1;
if(j > 3) then
j := 1;
wait(1000);
if(IsUpText('ite')) then
MineCounter := GetSystemTime;
until((r = InvCount) or (TimeFromMark(MineCounter)>3000) or (TimeFromMark(FindRock)>60000) or InvFull);
if((TimeFromMark(MineCounter)>3000) or (TimeFromMark(FindRock)>60000)) then
RuniteCounter := RuniteCounter - 1;
end;
end;
until((not FindObjCustom(x,y,['Run','ore'],[10986113,11249027,11315076],10)) or InvFull);
end;
until(InvFull);
IncEx(AddyCounter,AdamantiteCounter);
IncEx(RuneCounter,RuniteCounter);
FreeSRLBitmaps;
end;
begin
ClearDebug;
DeclarePlayers;
Login;
ActivateClient;
StartTime := GetSystemTime;
repeat
if(not LoggedIn) then
LoginPlayer;
MouseSpeed:=18;
AntiBan;
MineRocks;
GoToBank;
ItemDeposit;
Report;
GoToMine;
until(AllPlayersInactive);
end.