wister1
2012-04-19 15:21:28
This is my first script released to the public, it´s designed for a specific area which there werent any scripts released, until now that is…
I give you all my own miner for the West Keldagrim Mine.
Keldagrim is a large underground city, home to the Dwarves. It is a member's only city. To access Keldagrim, you'll need to start the quest, The Giant Dwarf.
This script can mine adamant/rune/gold, but it only mines gold while waiting for either adamant, rune or both.
Requirements:
- Member;
- Forgiveness of a Chaos Dwarf;
- The Giant Dwarf quest started;
- 70 mining for adamant;
- 85 mining for runite.
You can start the script in the mine or anywhere from there to the bank.


The cash varies from 200k-350k per hour, but it mostly depends on how many runite ores it gathers.
Dont expect it to be perfect but it was tested alot, that is, when i did it some time ago, cant garantee the same now.
This is a one time release (at least until now), there probably wont be any updates to this script since im working on others, so if you guys find some bugs tell me but i dont garantee i will fix them (until im finished with the scripts im doing) but it should work fine until the next nuke(?).
Gimme your opinions, it will help me, and if you feel like i deserve a plus rep wont do hard :p
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. 