So I've been working on this script for the past week or so and I feel its finally at a presentable point. So what it does if you couldn't figure it out from the title is mine gold in the Crafting Guild south of Falador. You can choose to either powermine the gold, or to bank it through the use of a Ring of Kinship and a Clan Vexillium. When powermining you can choose to either keep or drop any gems you get. It has a progress report as well. I soon plan on adding alternate banking for those who don't want to use the quick Daemonheim banking method, and also an alternate dropping method using YoHoJo's mouse key drop method.
Simba Code:
program MezzGoldMiner;
{$i SRL/SRL/misc/smart.simba}
{$i srl/srl.simba}
{$i sps/sps.simba}
{$i ObjectDTM\ObjDTMInclude.simba}
{
//===========================================\\
|| Mezzanine's Crafting Guild Gold Miner ||
\\===========================================//
|| How to use ||
|| Powermining: ||
|| ||
|| 1. Equip a brown apron ||
|| ||
|| 2. Have your pick equipped or in the ||
|| first slot of your inventory ||
|| ||
|| 3. Place your character inside the ||
|| crafting guild gold mine ||
|| ||
|| 4. Fill out the script setup below ||
|| (Banking = False) ||
|| ||
|| 5. Hit run! ||
|| ||
|| Banking: ||
|| ||
|| 1. Equip your Clan Vexillium, Ring of ||
|| Kinship, and a brown apron ||
|| ||
|| 2. Have your pickaxe of choice in the ||
|| first slot of your inventory ||
|| ||
|| 3. Place your character inside the ||
|| crafting guild gold mine ||
|| ||
|| 4. Fill out the script setup below ||
|| (Banking = True) ||
|| ||
|| 5. Hit run! ||
|| ||
//===========================================\\
|| CAUTION: If you set loads to 0, you ||
|| will have to stop it manually and ||
|| won't get a cool progress report! ||
\\===========================================//
\\==================//
|| Script Setup ||
\\==================//
}
const
Pin = '1911'; // Only if you're banking and do have a pin
Loads = 2; // How many loads do you want to mine? (0 = forever)
Banking = True; // True : Bank , False : Powermine
KeepSapphire = True;
KeepEmerald = True; // Only for powermining; True : Keep, False : Drop
KeepRuby = True;
KeepDiamond = True;
Member = False; // Are you a member?
AntibanAmnt = 1; // How much do you want to antiban?
{ 0 : Practically never
1 : Not too often (Recommended)
2 : Often
3 : All the time }
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := 'username'; // Player username
Pass := 'ToHellWithBoundaries'; // Player password
BoxRewards := ['XP']; // What reward do you want from randoms?
LampSkill := SKILL_MINING; // What skill do you want from XP lamps?
Active := True;
end;
end;
{
//====================================================================\\
|| End of Script Setup | Only pass if you know what you're doing! ||
//====================================================================\\
}
var
x, y, FirstTele, GoldTimer, LoadsMined, GoldOreDTM, RunePickDTM, SapphireDTM, EmeraldDTM,
RubyDTM, DiamondDTM, GoldOreInLoad, SapphiresInLoad, EmeraldsInLoad,
RubiesInLoad, DiamondsInLoad, TotalGoldOre, TotalSapphires, TotalEmeralds,
TotalRubies, TotalDiamonds, RandomEvents: Integer;
procedure DTMSetup;
begin
GoldOreDTM := DTMFromString('mrAAAAHic42BgYBAAYkYg5mSAACmomDwQiwExL5RmBmI+IBYFYkkgZoeqX98tASSZcGIuBvyAkQCGAQAQtAJd');
SapphireDTM := DTMFromString('mbQAAAHicY2VgYDjExMBwGIi3AvEBID4FxE+A4h8YIPQtIH4OxPxC+UCSCQVzMWACRiwYDADzgAj0');
EmeraldDTM := DTMFromString('mggAAAHicY2NgYDjExMBwAIj3AvFJIN4KxKeA+DFQ7hYQf4Die0D8BIh5YvmBJBMG5mLADhhxYAgAAC1fCos=');
RubyDTM := DTMFromString('mggAAAHicY2NgYMhlYmDIAeJEIC4F4lQgLgNidkYGhn9AeU4gLQLEwowQsRBBHqAoEwbmYsAOGHFgCAAAz0cEaQ==');
DiamondDTM := DTMFromString('mggAAAHicY2NgYHBhYmBwBGJPIPYFYgsgNgdiTkYGhn9AeREgzQXEPEDMBMSTe3uBokwYmIsBO2DEgSEAALh3BJw=');
RunePickDTM := DTMFromString('mbQAAAHicY2VgYLBjYmBwBGJrIPYFYmMgfgwUvwbEn4H4LhBfB2JXEzkgyYSCWRkwASMWDAYA92gGUw==');
//AddyPickDTM :=
end;
procedure CameraSetup;
begin
if not LoggedIn then Exit;
Wait(RandomRange(90, 140));
MakeCompass('S');
SetAngle(0);
end;
function TimeGet: string;
begin
Result := MsToTime(GetTimeRunning, Time_Abbrev);
end;
procedure TimeStamp(WaitTime: Integer); //Credit goes to p1ng for this proc.
var
T: Integer;
Ticker: String;
begin
MarkTime(T);
while (WaitTime > TimeFromMark(T)) do
begin
Wait(500);
Ticker := MsToTime(WaitTime - TimeFromMark(T), Time_Abbrev);
Status('Break remaining: ' + Ticker);
end;
end;
function CheckItemInSlotByDTM(DTM, slot: integer; write: boolean): boolean;
var
pointX, pointY, itemSlot: integer;
begin
if not LoggedIn then Exit;
if (ExistsItemDTM(DTM, pointX, pointY)) then
begin
itemSlot := (CoordsToItem(pointX, pointY));
if (itemSlot = slot) then
begin
if (write) then
writeln('An item with a matching DTM exists in the inventory slot ' + IntToStr(slot));
result := true;
end else
begin
if (write) then
writeln('An item with a matching DTM exists in the inventory, but not in slot ' + IntToStr(slot));
end;
end else
begin
if (write) then
writeln('An item with a matching DTM does not exist in the inventory');
end;
end;
procedure Antiban;
var
a: integer;
begin
if not LoggedIn then Exit;
case AntibanAmnt of
0: a := 5000;
1: a := 800;
2: a := 300;
3: a := 100;
end;
if FindNormalRandoms then
inc(RandomEvents);
case Random(a) of
1: begin
writeln('Checking our mining skill ' + TimeGet);
HoverSkill('mining', False);
end;
2: begin
writeln('Checking a random skill ' + TimeGet);
HoverSkill('random', False);
end;
3: begin
writeln('Bored human ' + TimeGet);
Boredhuman;
Wait(RandomRange(200, 400));
CameraSetup;
end;
4: begin
writeln('Small antiban wait... ' + TimeGet);
TimeStamp(RandomRange(2500, 7000));
end;
5: begin
writeln('Picked up the mouse ' + TimeGet);
PickUpMouse;
end;
6: begin
writeln('Random movement ' + TimeGet);
RandomMovement;
Wait(RandomRange(200, 400));
CameraSetup;
end;
end;
end;
procedure AntibanBreaking;
var
a: integer;
begin
if not LoggedIn then Exit;
case AntibanAmnt of
0: a := 5000;
1: a := 1500;
2: a := 1000;
3: a := 500;
end;
if FindNormalRandoms then
inc(RandomEvents);
case Random(1500) of
1: begin
writeln('Not broken, just antiban-breaking! ' + TimeGet);
TimeStamp(RandomRange(40634, 60127));
writeln('Finished breaking! ' + TimeGet);
end;
2: begin
writeln('Not broken, just antiban-breaking! ' + TimeGet);
TimeStamp(RandomRange(32052, 64844));
writeln('Finished breaking! ' + TimeGet);
end;
3: begin
writeln('Not broken, just antiban-breaking! ' + TimeGet);
TimeStamp(RandomRange(34655, 50874));
writeln('Finished breaking! ' + TimeGet);
end;
4: begin
writeln('Not broken, just antiban-breaking! ' + TimeGet);
TimeStamp(RandomRange(19011, 35109));
writeln('Finished breaking! ' + TimeGet);
end;
5: begin
writeln('Not broken, just antiban-breaking! ' + TimeGet);
TimeStamp(RandomRange(19491, 42931));
writeln('Finished breaking! ' + TimeGet);
end;
6: begin
writeln('Not broken, just antiban-breaking! ' + TimeGet);
TimeStamp(RandomRange(19774, 31830));
writeln('Finished breaking! ' + TimeGet);
end;
end;
if not (LoggedIn) then
LogInPlayer;
if FindNormalRandoms then
inc(RandomEvents);
end;
procedure Failsafe(reason: string);
begin
writeln('Reason for failsafe : ' + reason);
Logout;
TerminateScript;
end;
function AtDaemon: boolean;
begin
result := ObjDTM_InArea('80:80:4:10:7:28:67:10:7:44:67:6:7:48:114:6:7:60:114:5:18:48:18:109:143:110:143:48:112:48', true);
end;
procedure GuildTele;
begin
if not LoggedIn then Exit;
writeln('Teleporting to the clan grounds ' + TimeGet);
MouseEquippedItem('weapon', 0);
ChooseOption('Tel');
repeat
Wait(100);
until(FindNPCChatText('Yes', Nothing));
FindNPCChatText('Yes', ClickLeft);
Wait(RandomRange(5000, 5500));
end;
procedure BankTele;
begin
if not LoggedIn then Exit;
Inc(FirstTele);
writeln('Teleporting to bank ' + TimeGet);
MouseEquippedItem('ring', 0);
if (FirstTele = 1) then
begin
Wait(RandomRange(75, 150))
ClickMouse2(mouse_Right);
end;
ChooseOption('Tel');
Wait(RandomRange(7800, 8200));
end;
procedure WalkToBank;
var
PathToBank: TPointArray;
begin
if not LoggedIn then Exit;
writeln('Walking to the bank ' + TimeGet);
SPS_Setup(RUNESCAPE_SURFACE,['14_4', '13_4', '14_5', '14_3']);
PathToBank := [Point(5634, 1824), Point(5634, 1777)];
SPS_WalkPath(PathToBank);
Wait(RandomRange(1500, 2100));
end;
procedure WalkToGuild;
begin
if not LoggedIn then Exit;
writeln('Walking to the guild ' + TimeGet)
ObjDTM_Walk('28:38:4:10:7:89:59:10:7:66:47:1:7:30:71:1:7:66:127', 5, 100, 3, true);
Wait(RandomRange(250, 500));
ObjDTM_Walk('34:74:3:1:7:41:57:1:7:20:73:1:7:44:103:4:27:69:42:70:35:84:26:79', 5, 100, 3, true);
Wait(RandomRange(250, 500));
ObjDTM_Walk('76:105:3:1:7:102:82:1:7:90:79:1:7:66:83', 1, 100, 3, True);
end;
function FindDaemonBank(Attempt: Integer; var fx, fy: Integer): Boolean;
var
arP, arAP: TPointArray;
arC, arUC: TIntegerArray;
colorMods, colorX, colorY, colorZ: TExtendedArray;
ararP: T2DPointArray;
color, colorTol, tmpCTS, i, j, arL, arL2: Integer;
P: TPoint;
X, Y, Z: Extended;
Current: String;
begin
if not LoggedIn then Exit;
case Attempt of
1:
begin
color := 7884603;
colorTol := 9;
colorMods := [0.04, 0.65];
colorX := [4.68, 12.76];
colorY := [4.67, 12.78];
colorZ := [9.87, 27.79];
current := 'One';
end;
2:
begin
color := 7884603;
colorTol := 9;
colorMods := [0.04, 0.65];
colorX := [4.68, 12.76];
colorY := [4.67, 12.78];
colorZ := [9.87, 27.79];
current := 'Two';
end;
3:
begin
current := 'Three';
color := 9589567;
colorTol := 8;
colorMods := [0.04, 0.10];
colorX := [7.03, 14.47];
colorY := [6.37, 12.96];
colorZ := [18.93, 40.27];
end;
4:
begin
current := 'Four';
color := 9592129
colorTol := 6
colorMods := [0.05, 0.09]
colorX := [8.17, 14.87]
colorY := [7.92, 14.37]
colorZ := [20.81, 38.56]
end;
end;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(colorMods[0], colorMods[1]);
if not(FindColorsTolerance(arP, color, MSX1, MSY1, MSX2, MSY2, colorTol)) then
begin
//WriteLn('Failed to find the bank on attempt ' + current);
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
arUC := arC;
ClearSameIntegers(arUC);
arL := High(arUC);
arL2 := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= colorX[0]) and (X <= colorX[1]) and (Y >= colorY[0]) and (Y <= colorY[1]) and
(Z >= colorZ[0]) and (Z <= colorZ[1]) then
begin
for j := 0 to arL2 do
begin
if (arUC[i] = arC[j]) then
begin
SetLength(arAP, Length(arAP) + 1);
arAP[High(arAP)] := arP[j];
end;
end;
end;
end;
SortTPAFrom(arAP, Point(MSCX, MSCY));
ararP := SplitTPAEx(arAP, 10, 10);
arL := High(ararP);
for i := 0 to arL do
begin
if (Length(ararP[i]) < 10) then Continue;
P := MiddleTPA(ararP[i]);
MMouse(P.x, P.y, 5, 5);
if WaitUptext('ank', 500) then
begin;
Result := True;
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
begin
//Writeln('FindBank could not find the bank on attempt ' + current);
Exit;
end;
GetMousePos(fx, fy);
end;
procedure CountInventory(cType: Integer); // 0 : for banking
var // 1 : for dropping
sappC, emeC, rubiC, diaC: integer;
begin
if not LoggedIn then Exit;
case cType of
0:
begin
sappC := SapphiresInLoad;
emeC := EmeraldsInLoad;
rubiC := RubiesInLoad;
diaC := DiamondsInLoad;
end;
1:
begin
sappC := (SapphiresInLoad - TotalSapphires);
emeC := (EmeraldsInLoad - TotalEmeralds);
rubiC := (RubiesInLoad - TotalRubies);
diaC := (DiamondsInLoad - TotalDiamonds);
end;
end;
GoldOreInLoad := CountItems('dtm', GoldOreDTM, []);
SapphiresInLoad := CountItems('dtm', SapphireDTM, []);
EmeraldsInLoad := CountItems('dtm', EmeraldDTM, []);
RubiesInLoad := CountItems('dtm', RubyDTM, []);
DiamondsInLoad := CountItems('dtm', DiamondDTM, []);
TotalGoldOre := (TotalGoldOre + GoldOreInLoad)
TotalSapphires := (TotalSapphires + sappC)
TotalEmeralds := (TotalEmeralds + emeC)
TotalRubies := (TotalRubies + rubiC)
TotalDiamonds := (TotalDiamonds + diaC)
end;
procedure OpenDaemonBank;
begin
ClickMouse2(mouse_right);
WaitOption('Ban', 100);
repeat
wait(100);
until(BankScreen) or (PinScreen)
if (PinScreen) then
InPin(Pin);
writeln('Currently banking ' + TimeGet);
CountInventory(0)
Deposit(2, 28, true);
Wait(RandomRange(500, 800));
CloseBank;
case random(3) of
0:Antiban;
1:Antiban;
2:AntibanBreaking;
end;
end;
function AtBank: boolean;
begin
result := ObjDTM_InArea('80:80:3:10:7:77:75:10:7:93:75:10:7:97:59:5:94:70:94:97:60:97:60:60:94:60', true);
end;
procedure Bank;
var
t, a: integer;
opened: boolean;
begin
if not LoggedIn then Exit;
MakeCompass('N');
SetAngle(1);
BankTele;
if not (AtDaemon) then
BankTele;
WalkToBank;
if not (AtBank) then
begin
MakeCompass('N')
ObjDTM_Walk('71:82:3:10:7:77:75:10:7:93:75:10:7:97:59:4:77:84:64:84:64:64:78:65', 1, 1000, 2, True);
end;
MarkTime(t);
for a := 1 to 4 do
begin
repeat
if not (opened) then
begin
if (FindDaemonBank(a, x, y)) then
begin
OpenDaemonBank;
opened := true;
end;
end;
until(TimeFromMark(t) > 10000) or (opened);
end;
if not (opened) then
begin
writeln('Could not find the banker!');
TerminateScript;
end;
end;
function AtMine: boolean;
begin
result := ObjDTM_InArea('82:80:4:1:7:74:108:1:7:101:109:1:7:108:87:1:7:99:60:6:56:90:56:104:57:123:119:118:108:60:56:61', true);
end;
procedure BackToMine;
var
t, dx, dy: integer;
begin
GuildTele;
WalkToGuild;
Wait(RandomRange(2000, 3000));
writeln('Looking for the door');
MarkTime(t);
if (FindObjTPA(dx, dy, 1790573, 15, 1, 20, 15, 200, ['pen'])) then
begin
writeln('Found the door')
ClickMouse2(mouse_Left)
Wait(RandomRange(2000, 3000))
ObjDTM_Walk('109:118:3:1:7:126:98:1:7:130:79:5:7:115:126', 1, 1000, 2, True)
{if not (AtMine)then
ObjDTM_Walk('109:118:3:1:7:126:98:1:7:130:79:5:7:115:126', 1, 1000, 2, True);}
SetAngle(0);
end else
Failsafe('Could not find the door!');
end;
function FindOre(var fx, fy: Integer): Boolean;
var
arP, arAP: TPointArray;
arC, arUC: TIntegerArray;
ararP: T2DPointArray;
tmpCTS, i, j, arL, arL2: Integer;
P: TPoint;
R, G, B: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.02, 2.21);
if not(FindColorsTolerance(arP, 4898790, MSX1, MSY1, MSX2, MSY2, 10)) then
begin
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
arUC := arC;
ClearSameIntegers(arUC);
arL := High(arUC);
arL2 := High(arC);
for i := 0 to arL do
begin
ColorToRGB(arC[i], R, G, B);
if (R >= 196) and (R <= 254) and (G >= 162) and (G <= 213) and (B >= 61) and
(B <= 100) then
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 36.97) and (X <= 65.60) and (Y >= 38.39) and (Y <= 68.52) and
(Z >= 10.00) and (Z <= 21.59) then
begin
for j := 0 to arL2 do
begin
if (arUC[i] = arC[j]) then
begin
SetLength(arAP, Length(arAP) + 1);
arAP[High(arAP)] := arP[j];
end;
end;
end;
end;
end;
SortTPAFrom(arAP, Point(MSCX, MSCY));
ararP := SplitTPAEx(arAP, 10, 10);
arL := High(ararP);
for i := 0 to arL do
begin
if (Length(ararP[i]) < 10) then Continue;
P := MiddleTPA(ararP[i]);
MMouse(P.x, P.y, 5, 5);
Wait(RandomRange(100, 200));
if (IsUpText('ine')) then
begin;
Result := True;
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
begin
Antiban;
Exit;
end;
GetMousePos(fx, fy);
end;
procedure MineOre;
var
mineTimer, GoldInInven: integer;
begin
if not (AtMine) then
begin
MakeCompass('N')
ObjDTM_Walk('109:118:3:1:7:126:98:1:7:130:79:5:7:115:126', 1, 1000, 2, True);
end;
MakeCompass('S');
SetAngle(0);
if (FindOre(x, y)) then
begin
GoldInInven := (CountItems('dtm', GoldOreDTM, []));
case random(3) of
0: ClickMouse2(mouse_left);
1: ClickMouse2(mouse_left);
2: begin
ClickMouse2(mouse_right)
WaitOption('Min', 100)
end;
end;
MarkTime(mineTimer);
repeat
if FindNormalRandoms then
inc(RandomEvents);
Antiban;
Wait(500);
until
((CountItems('dtm', GoldOreDTM, [])) = (GoldInInven + 1))
or ((TimeFromMark(mineTimer)) > (RandomRange(15000, 16500)))
or (FindBlackChatMessage('no ore')) or (InvFull)
end;
if ((CountItems('dtm', GoldOreDTM, [])) = (GoldInInven + 1)) then
MarkTime(GoldTimer)
else
if (TimeFromMark(GoldTimer) > (RandomRange(900000, 960000))) then
Failsafe('You havent mined any gold ore in at least 15 minutes');
if not (InvFull) then
begin
case Random(3) of
0: Antiban;
1: Antiban;
2: AntibanBreaking;
end;
end;
end;
procedure DropInven;
var
I: integer;
DropPatt: TIntegerArray;
InvSlotTBox: TBox;
begin
DropPatt := [1,5,9,13,17,21,25,2,6,10,14,18,22,26,3,7,11,15,19,23,27,4,8,12,16,20,24,28];
CountInventory(1)
for I := 0 to 27 do
begin
InvSlotTBox := InvBox(DropPatt[I]);
if findDTM(GoldOreDTM, x, y, InvSlotTBox.X1, InvSlotTBox.Y1, InvSlotTBox.X2, InvSlotTBox.Y2) then
DropItem(DropPatt[I]);
if not (KeepSapphire) then
begin
if findDTM(SapphireDTM, x, y, InvSlotTBox.X1, InvSlotTBox.Y1, InvSlotTBox.X2, InvSlotTBox.Y2) then
DropItem(DropPatt[I]);
end;
if not (KeepEmerald) then
begin
if findDTM(EmeraldDTM, x, y, InvSlotTBox.X1, InvSlotTBox.Y1, InvSlotTBox.X2, InvSlotTBox.Y2) then
DropItem(DropPatt[I]);
end;
if not (KeepRuby) then
begin
if findDTM(RubyDTM, x, y, InvSlotTBox.X1, InvSlotTBox.Y1, InvSlotTBox.X2, InvSlotTBox.Y2) then
DropItem(DropPatt[I]);
end;
if not (KeepDiamond) then
begin
if findDTM(DiamondDTM, x, y, InvSlotTBox.X1, InvSlotTBox.Y1, InvSlotTBox.X2, InvSlotTBox.Y2) then
DropItem(DropPatt[I]);
end;
end;
end;
procedure PickCheck;
begin
if (Banking) then
begin
writeln('Looking for your pick...')
if (CheckItemInSlotByDTM(RunePickDTM, 1, false)) then
begin
writeln('Found pick in inventory slot 1')
end else
Failsafe('There isnt a pick in the first inventory slot!');
end;
end;
procedure FreeTheDTMs;
begin
FreeDTM(GoldOreDTM);
FreeDTM(SapphireDTM);
FreeDTM(EmeraldDTM);
FreeDTM(RubyDTM);
FreeDTM(DiamondDTM);
FreeDTM(RunePickDTM);
end;
procedure SetupSmart;
begin
Smart_Server := 11;
Smart_Members := Member;
Smart_Signed := True;
Smart_SuperDetail := False;
end;
procedure ScriptSetup;
begin
MouseSpeed := (RandomRange(13, 16));
FirstTele := 0;
LoadsMined := 1;
TotalGoldOre := 0;
TotalSapphires := 0;
TotalEmeralds := 0;
TotalRubies := 0;
TotalDiamonds := 0;
RandomEvents := 0;
GoldTimer := 0;
DTMSetup;
ActivateClient;
DeclarePlayers;
if not (LoggedIn) then
LoginPlayer;
PickCheck;
if not (AtMine) then
begin
MakeCompass('N')
ObjDTM_Walk('109:118:3:1:7:126:98:1:7:130:79:5:7:115:126', 1, 1000, 2, True);
end;
CameraSetup;
SetChat('All', 0)
end;
procedure MainLoop;
begin
repeat
if (FindNormalRandoms) then
inc(RandomEvents);
MineOre;
if (InvFull) then
begin
if (Banking) then
begin
Inc(LoadsMined)
Bank;
BackToMine;
if not (LoadsMined = Loads + 1) then
writeln('Starting on load ' + ToStr(LoadsMined));
end else
begin
Inc(LoadsMined);
DropInven;
if not (LoadsMined = Loads + 1) then
writeln('Starting on load ' + ToStr(LoadsMined));
end;
end;
until(LoadsMined = Loads + 1);
end;
procedure ProgressReport;
begin
writeln('')
writeln('//==========================================================//')
writeln('|| Time Running: ' + TimeRunning)
writeln('|| Random events encountered: ' + IntToStr(RandomEvents))
if (banking) then
begin
writeln('|| ' + IntToStr(Loads) + ' Loads banked')
writeln('|| ' + IntToStr(TotalGoldOre) + ' Gold ore banked')
writeln('|| ' + IntToStr(TotalSapphires) + ' Sapphires banked')
writeln('|| ' + IntToStr(TotalEmeralds) + ' Emeralds banked')
writeln('|| ' + IntToStr(TotalRubies) + ' Rubies banked')
writeln('|| ' + IntToStr(TotalDiamonds) + ' Diamonds banked')
writeln('|| ' + IntToStr(TotalGoldOre * 35) + ' Mining XP gained')
end;
if not (banking) then
begin
writeln('|| ' + IntToStr(Loads) + ' Loads dropped')
writeln('|| ' + IntToStr(TotalGoldOre) + ' Gold ore dropped')
writeln('|| ' + IntToStr(TotalGoldOre * 35) + ' Mining XP gained')
if (KeepSapphire) then
writeln('|| ' + IntToStr(TotalSapphires) + ' Sapphires kept');
if not (KeepSapphire) then
writeln('|| ' + IntToStr(TotalSapphires) + ' Sapphires dropped');
if (KeepEmerald) then
writeln('|| ' + IntToStr(TotalEmeralds) + ' Emeralds kept');
if not (KeepEmerald) then
writeln('|| ' + IntToStr(TotalEmeralds) + ' Emeralds dropped');
if (KeepRuby) then
writeln('|| ' + IntToStr(TotalRubies) + ' Rubies kept');
if not (KeepRuby) then
writeln('|| ' + IntToStr(TotalRubies) + ' Rubies dropped');
if (KeepDiamond) then
writeln('|| ' + IntToStr(TotalDiamonds) + ' Diamonds kept');
if not (KeepDiamond) then
writeln('|| ' + IntToStr(TotalDiamonds) + ' Diamonds dropped');
end;
writeln('\\==========================================================\\')
writeln('|| Thank you for using Mezzanine' + 's Crafting Guild Gold Miner!')
writeln('//==========================================================//')
end;
begin
ClearDebug;
SetupSmart;
SetupSRL;
ObjDTM_Setup;
ScriptSetup;
MainLoop;
LogOut;
ProgressReport;
FreeTheDTMs;
end.
I took inspiration from YoHoJo's tutorials (along with many others, but not as much as his) as well as Runaway's ClayCraftBank's banking method. I put a lot of time into this and I hope that you guys enjoy it as much as I have!