SRL Archive - RS3 Outdated / Broken Scripts

Wister´s West Keldagrim Miner


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.

superbuster4

2012-04-19 16:07:20

first looks good il test it

Kyle Undefined

2012-04-19 16:24:18

Hmm, that's a unique place, I've honestly never knew it existed until now :p Cool release!

Gestapo

2012-04-19 16:40:26

From: Kyle Undefined
Hmm, that's a unique place, I've honestly never knew it existed until now :p Cool release!


Same :)

wister1

2012-04-19 16:58:17

this was the script i used on my first apply, wasnt good enough but i decided to release thisversion of it (im upgrading it) so that i get new feedback

Gestapo

2012-04-19 17:00:27

I might try it after 99 hunter bro :)

superbuster4

2012-04-19 17:38:27

i cant go their on my skiller because u need a quest but il test it out when my main is unlocked.

wister1

2012-04-19 18:09:56

you need to start A Giant Dwarf Quest

matti303

2012-04-20 03:52:55

Say all the quest you have to do please, not just the dwarfs quest.

wister1

2012-04-20 14:04:06

From: matti303
Say all the quest you have to do please, not just the dwarfs quest.


it´s the only requirement needed…

unknownrpg

2012-04-21 04:23:59

testing script now could u possible make a option for it to mine adament and gold? not just addy? for example i cant mine rune yet but i dont want to stand around n wait for addy ya now?

otherwise scripts seems to be running flawless will post progress after few hours

keep up the good work =) & ty for release

unknownrpg

2012-04-21 04:32:33

had to do 2 quests to be bale to use =p glad to finally see some high req. scripts on here

they may have updated req.'s though it now req. completion of "Forgiveness of a Chaos Dwarf"

wister1

2012-04-21 06:12:58

didnt knew, i looked into rs wiki to check reqs.Also the script does have the option to only mine adamant and gold

at line 43 replace 0 with 2

  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.

unknownrpg

2012-04-21 13:40:12

at line 43 replace 0 with 2 if u do that it litterally does what it says only mines adamant it just walks back and forth waiting for it to respawn.

n i had this happen to me after like 2 hours aswell but i just restarted simba and got this report. same thing just took longer


wister1

2012-04-22 09:33:12

thats 1 free mill :p

CodyP23

2012-04-22 14:19:55

This is great. I ran it yesterday for 8 hours or so and today for around 6 hours. It has not given me a single problem so far. Havent really calculated GP/hr, but the way I see it, anything over 100k/hr is good when you don't have to actually sit and play for hours and hours.

kalle777

2012-04-22 15:33:11

well, saw few problems wiht this script myself, it thinks that the summoning obelisk is addy ore i guess, cos it is the same colour as addy rock, and it keeps clicking sometimes there and keeps clicking untill i move acc.

Also, it goes south behind the bank somewhere and stays there sometimes.

Other than that, works ok.

wister1

2012-04-22 21:25:44

From: kalle777
well, saw few problems wiht this script myself, it thinks that the summoning obelisk is addy ore i guess, cos it is the same colour as addy rock, and it keeps clicking sometimes there and keeps clicking untill i move acc.

Also, it goes south behind the bank somewhere and stays there sometimes.

Other than that, works ok.


the problem is exacly that, both have really close colors, never noticed the bank problem you said but it has a failsafe to prevent it getting lost to/from the bank

unknownrpg

2012-04-24 20:32:10

the banking thing it eventually fixes just takes awhile, but could u possible edit the 2 in line 43 so it mines addy and gold? not just addy? or tell me how 2 please.

wister1

2012-04-24 21:31:09

From: unknownrpg
the banking thing it eventually fixes just takes awhile, but could u possible edit the 2 in line 43 so it mines addy and gold? not just addy? or tell me how 2 please.


i dont get your question, you just have to replace the 0 with a 2, nothing more, thats not that hard i think, you just erase the zero and place a 2 in its place and voilá, adamant and gold only (it only mines gold while waiting for adamant, i might add in the future a fourth option to only mine gold)

unknownrpg

2012-05-01 01:57:00

From: wister1
i dont get your question, you just have to replace the 0 with a 2, nothing more, thats not that hard i think, you just erase the zero and place a 2 in its place and voilá, adamant and gold only (it only mines gold while waiting for adamant, i might add in the future a fourth option to only mine gold)


i know how to replace the 0 with a 2.. maybe i was wording it wrong, i'm saying when u do that it doesn't mine gold it only mines adamant when adamant is gone it will pace back and forth till adamant respawns

superbuster4

2012-05-01 12:00:40

im so angry that i cant use this, main locked and way too many quests to do for this on the skiller but maybe il get around to them and finally use this :duh:

wister1

2012-05-01 19:39:21

From: superbuster4
im so angry that i cant use this, main locked and way too many quests to do for this on the skiller but maybe il get around to them and finally use this :duh:


both quests are real easy lol, you just need a couple hours :tongue:

matti303

2012-05-03 06:58:45

logs out after 1-2hours?

wister1

2012-05-03 07:16:55

From: matti303
logs out after 1-2hours?


it didnt before, no idea now but it doesnt seem the newest update of jagex to afect color bots

rsplayer001

2012-05-10 08:27:11

I can confirm that this script is working great! One suggestion I have it to have a 5th option, to mine Addy and gold ore otherwise there is quite a bit of waiting.

formWriteln: ||-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-||
formWriteln: ||-:_:-:_:-:_:-:_:-: Keldagrim Miner :-:_:-:_:-:_:-:_:-||
formWriteln: ||Time Running: 6 Hours, 1 Minutes and 29 Seconds ||
formWriteln: ||Adamantite Mined: 421 ||
formWriteln: ||Exp Earned: 44205 ||
formWriteln: ||Adamantite Mined Per Hour: 70 ||
formWriteln: ||Exp Per Hour: 7352 ||
formWriteln: ||Deposit Per Hour: 3 ||
formWriteln: ||-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-:_:-||

Mjordan

2012-06-10 20:03:48

This is probably the best high level mining spot in RS. I hardly every see anybody there. I'm going to update this script to the best of my old abilities and see what I can do. I absolutely love this spot, and I just completed all of the requirements to have access.