Code:
program DamianTiaras;
{$DEFINE SMART}
{$i SRL-6/SRL.simba}
{$i srl-6/lib/misc/srlplayerform.simba}
{$I SPS/lib/SPS-RS3.Simba}
var
i, Tiara, SilverBar, BarsCrafted, TiaraCount, LoadsDone, InitialCount, Experience, ScriptRunTime, XPRate: integer;
ScriptTimer, ChopTimer: TTimeMarker;
BankBox, FurnaceBox: TBox;
procedure DeclarePlayers; // Where all your players are to be setup
begin
Players.setup(['me'], 'default');
currentplayer := 0;
end;
procedure loadBMPs;
begin
Tiara := BitmapFromString(30, 15, 'meJxdk+9rUlEYx+/2oryYNHvVft' +
'2yW9ui7EV/yBgSjSEiIiIiE7G1FiLDtcS1JjYRJVwN6kV/Zp97v9d' +
'ncuFwOD+e53O+53ues+w4L5+ktrzU08f3nq8lgn4jSb+9mWTK1vam' +
'm82k3u480q7CaK/89DwgSW+DZcehZf10MZ9nICDrlgiNHuybF2lN2' +
'Q0OXU0ogLFSCECY4KA+tVqFgwMGtUqFfslxLFI9TGUpxZrCYnAbgP' +
'rYbL7b22PQOjwU+S4xvKM11Gb9u9xgN7MSnei5LL5+9hAZMgfUh0Z' +
'DwF63u0hWriDckTEOyzprUaTnii/HEIDP7DZqNQHpJT50NRBmL2LW' +
'VcvlcrHIi+T399/ncgHcc7WLYF1HpyjYyIN+X3A9lj20bvdrMpleX' +
'48Hgx+Xl0R+Oz9XopgxDfZqIo+urrrttuAxh0X+ORoZuX92Zu4tyH' +
'DlQ71a1e7WRrCCJNy2N43ePcwy8mQ4RIDIMQ2yl0po1usmeMd7QEk' +
'z/d7rtY+PsUhZSqRH6u/pVGTTbMLsX1APi2TWIdOYkoUhBHAj+KVC' +
'QSl/ZjPIs/FYZARA/tLpWJ1gLClgBY++xloCrL96n/oUnERs4Qj0Y' +
'w4pf29uYmQCIOd2dykSSoWCqZRKxo80Z1b89WRADj8Ii8OLCy6uYs' +
'BVOCKbG3Y098ITUAjgO9PbBwmez0sF5PX5pwuVo5ZcsPD/3d4aWbV' +
'h5M7JCZGfj45oIhtWNPkMU1MVsOqHlK+np7gKjYcDy40oZrNLWDN8' +
'af524Wd0qbr/z3Ep3Q==');
SilverBar := BitmapFromString(30, 19, 'meJytlU1OwzAUhAsLSAgR7Q5CWh' +
'pS0laiVJyiC87UFVep1AUSZ+RzJjJRfoxDK42sOHK+N5pnO0Uarp/' +
'i1+c7RrScRoskWKQR0pvL0ehzv3eIBWZ9EuhzRqb5wzUSpBpLbPWQ' +
'BH9ivw4HxDIkJ/owf4xWs9vfNzWr62zsibUSX8LwJp/A2WRxMYtFF' +
'nwo1spGhOe3lwmyWZ2O/T4eIeAZ4Pz+Cg3K1oEVuUhvjNVsfC63lr' +
'yaG6ZJo+b2Y7ez+gdWZLPrkoAOdmIb8sdelB2kdz7YTnIfFrGlPbF' +
'95NOxbXIflniJgun7disNCqQXW541tlyd3CjRWcWNrW6klmefEg6s' +
'mLot2XJucruEI9v6RUoH1UTJpwTqdAtQTA7dchqShk6KFniWaGOt7' +
'J0GmdNtp54lGiHYnxFuy4cQYfgHflgigw==');
end;
procedure walkToFurnace;
begin
sps.walkToPos(Point(262,221));
end;
procedure walkToBank;
begin
sps.walkToPos(Point(210,214));
end;
function findBankChest(): boolean;
var
x, y, i: integer;
begin
repeat
mainscreen.findObject(x, y, 4809091, 15, colorSetting(2, 0.07, 0.24), mainscreen.playerPoint, 25, 30, 25, ['ank', 'chest'], MOUSE_LEFT);
//mouse(Point(x, y), MOUSE_MOVE, MOUSE_HUMAN);
wait(randomRange(500, 600));
//i := i + 1;
result := true;
until result;
end;
function depositItems(): boolean; //don't need this function because of quick withdraw option in bank screen
begin
repeat
bankScreen.quickDeposit(QUICK_DEPOSIT_INVENTORY);
if bankScreen.getPackCount() < 1 then
result := true;
until(result) or not bankScreen.isOpen(150);
end;
function withdrawBars(): boolean;
var x, y: integer;
begin
x := randomRange(183, 212);
y := randomRange(569, 586);
repeat
if bankScreen.isOpen(50) then
mouse(Point(x, y), MOUSE_LEFT, MOUSE_HUMAN);
//if bankScreen.isPackFull() then
begin
result := true;
inc(LoadsDone);
end;
until(result)
end;
function clickFurnace(): boolean;
var x, y: integer;
begin
repeat
mainscreen.findObject(x, y, 6123381, 9, colorSetting(2, 0.13, 0.31), mainscreen.playerPoint, 80, 60, 25, ['melt', 'urnace'], MOUSE_LEFT);
wait(randomRange(333, 555));
if productionScreen.isOpen(1500) or progressScreen.isOpen(150) then
result := true;
until(result);
end;
function startCrafting(): boolean;
var x, y: integer;
begin
repeat
if productionScreen.isOpen(100) then
if productionScreen.clickStart() then
result := true;
if progressScreen.isOpen(100) then
result := true;
until(result);
end;
begin
setupSRL();
//declarePlayers();
//Players[currentPlayer].login();
sps.setup('lumbridge_furnace_map', runescape_other);
loadBMPs();
bankBox.edit(200, 200, 235, 235);
furnaceBox.edit(238, 214, 271, 234);
LoadsDone = 0;
//InitialCount := tabBackpack.countBitmap(Tiara, 110);
ScriptTimer.Start();
repeat
if bankscreen.isOpen() then
begin
clearDebug();
writeLn('Bank screen is open.');
if bankScreen.getPackCountBitmap(SilverBar, 110) > 25 then
begin
clearDebug();
if bankScreen.close() then
walkToFurnace();
end else
clearDebug();
writeLn('Withdrawing bars');
withdrawBars();
wait(RandomRange(785, 1024));
end else
begin
if sps.getPlayerPos().isInBox(BankBox) then
begin
writeLn('Player is close to bank.');
if tabBackpack.countBitmap(SilverBar, 110) > 26 then
begin
walkToFurnace();
writeLn('Player has more than 26 silver bars. Walking to furnace.');
end else
begin
writeLn('Looking for bank chest.');
findBankChest();
end;
end;
if sps.getPlayerPos().isInBox(FurnaceBox) then
begin
writeLn('Player is close to the furnace.');
if tabBackpack.countBitmap(SilverBar, 110) > 0 then
begin
writeLn('Player still has silver bars left in your inventory.');
if not progressScreen.isOpen(150) then
if clickFurnace() then
begin
BarsCrafted := LoadsDone*28 + tabBackPack.countBitmap(Tiara, 110) - InitialCount;
writeLn('Crafting tiaras.');
startCrafting();
end;
end;
if tabBackpack.countBitmap(SilverBar, 110) < 1 then
begin
clearDebug();
writeLn('Player has no more silver bars to craft. Walking to bank.');
walkToBank();
end;
end;
end;
BarsCrafted := LoadsDone*28 + tabBackPack.countBitmap(Tiara, 110) - InitialCount;
writeLn('Tiaras made ' + IntToStr(BarsCrafted));
Experience := round(BarsCrafted*52.5);
writeLn('Experience gained: ' + IntToStr(Experience));
ScriptRunTime := round(scriptTimer.getTime()/1000);
writeLn('Time running ' + timeRunning);
if (ScriptRunTime > 0) then
begin
XPRate := round(Experience*3600/ScriptRunTime);
writeLn('XP/hour: ' + IntToStr(XPRate));
end;
until(false);
end.