Code:
program SEVarrockMining
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
{$I SPS/lib/SPS-RS3.Simba}
var
LoadsDone: integer;
procedure declarePlayers();
begin
setLength(players, 1);
with players[0] do
begin
loginName := 'username';
password := 'password';
isActive := true;
isMember := true;
end
currentPlayer := 0;
end;
procedure runToMine();
var
pathToMine:TPointArray;
teleTimer: TTimeMarker;
begin
if not isLoggedIn() then
exit;
pathToMine := [[258, 287], [256, 253], [311, 254], [362, 254], [387, 282], [399, 325],
[410, 366], [411, 404], [415, 477], [395, 479], [396, 519]];
begin
writeLn('Walking to Mine');
teleTimer.start();
if not sps.walkPath(pathToMine) then
begin
writeLn('walkPath() failed, trying blindWalk()');
end;
end;
end;
procedure mineRocks();
var
x, y, i: integer;
TPA: TPointArray;
ATPA: T2DPointArray;
mineTimer: TTimeMarker;
begin
if not isLoggedIn() then
exit;
mineTimer.start();
repeat
findColorsSpiralTolerance(x, y, TPA, 3767494, mainScreen.getBounds(), 16, colorSetting(2, 0.19, 0.80));
if (Length(TPA) < 1) then
exit;
ATPA := TPA.toATPA(30, 30);
ATPA.filterBetween(0, 10);
ATPA.sortFromMidPoint(mainscreen.playerPoint);
smartImage.debugATPA(ATPA);
for i := 0 to high(ATPA) do
begin
mouse(middleTPA(ATPA[i]), MOUSE_MOVE);
if isMouseOverText(['Mine Copper ore rocks'], 500) then
begin
fastClick(MOUSE_LEFT);
smartImage.clear;
break;
end;
end;
tabBackpack.waitForShift(5000);
until tabBackpack.isFull() or (mineTimer.getTime() > 300000);
end;
procedure runToBank
var
pathToBank:TPointArray;
begin
if not isLoggedIn() then
exit;
pathToBank := [[398, 516], [398, 474], [417, 439], [412, 399], [410, 354], [393, 313],
[383, 272], [360, 254], [313, 253], [262, 254], [255, 286]];
if not sps.walkPath(pathToBank) then
begin
writeLn('walkPath() failed()');
end;
end;
procedure findBankers();
var
x, y, i: integer;
TPA: TPointArray;
ATPA: T2DPointArray;
mineTimer: TTimeMarker;
begin
if not isLoggedIn() then
exit;
findColorsSpiralTolerance(x, y, TPA, 6305854, mainScreen.getBounds(), 7, colorSetting(2, 1.08, 2.00));
if (length(TPA) < 1) then
exit;
ATPA := TPA.toATPA(30,30);
ATPA.sortFromMidPoint(mainscreen.playerPoint);
smartImage.debugATPA(ATPA);
for i := 0 to high(ATPA) do
begin
mouse(middleTPA(ATPA[i]), MOUSE_MOVE);
if isMouseOverText(['anker'], 500) then
begin
fastClick(MOUSE_LEFT);
break;
end;
end;
end;
procedure depositOre();
var
bankTimer: TTimeMarker;
begin
if not isLoggedIn() then
exit;
if bankScreen.isOpen() then
begin
bankTimer.start();
repeat
if (bankScreen.getPackCount > 0) then
begin
bankScreen.quickDeposit(QUICK_DEPOSITBOX_INVENTORY);
wait(gaussRangeInt(500, 750));
inc(LoadsDone);
end;
until(bankScreen.isPackEmpty()) or (not isLoggedIn()) or (bankTimer.getTime() > 10000)
end;
bankScreen.close();
end;
procedure progressReport();
var
oreMined, profit, profitPerHour: integer;
begin
oreMined := LoadsDone * 28;
profit := (oreMined * 61);
profitPerHour := round((profit * 60) / (getTimeRunning() / 60000));
writeLn('========================================================');
writeLn('SouthEastVarrockCopperMiner');
writeLn('Time Run: ' + timeRunning);
writeLn('Ores Mined: ' + intToStr(oreMined));
writeLn('Loads Done: ' + intToStr(loadsDone));
writeLn('Profit Made: ' + intToStr(profit));
writeLn('Per Hour: ' + intToStr(profitPerHour));
writeLn('========================================================');
end;
{Main Loop}
begin
clearDebug();
smartEnableDrawing := true;
setupSRL();
declarePlayers();
findBankers();
SPS.setup('SEVarrockMine', RUNESCAPE_OTHER);
repeat
if not isLoggedIn() then
begin
players[currentPlayer].login();
exitTreasure();
mainScreen.setAngle(MS_ANGLE_HIGH);
minimap.setAngle(MM_DIRECTION_NORTH);
end;
if tabBackpack.isFull() then
begin
runToBank();
findBankers();
depositOre();
end;
progressReport();
runToMine();
mineRocks();
runToBank();
findBankers();
depositOre();
until(false);
end