Simba Code:
program EdgevilleGoldSmither;
//////////////////////////WRITTEN BY RYGUY, UPDATED AND MAINTAINED BY NOOB KING//////////////////////////////
////////////////////////////VERSION 1.6/////////////////////////////////
{$DEFINE SMART}
{$i SRL/srl.simba}
var
TimeBegan, StartingXP, Stuck: integer;
aFound: extended;
Const
///////////////////////////PLAYER SETUP//////////////////////////////////
// Smith for Gold Ore --> Gold Bars
Method = 'Craft'; // Craft for Gold Bars --> Gold Bracelets
// SmithAndCraft for Gold Ore --> Bracelets
// Gold ore MUST be in first bank slot! (top left) (for smith and smithandcraft)
// Gold bars MUST be in second bank slot! (for craft)
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Pin := '';
Players[0].Nick := '';
Players[0].Active:=True;
end;
////////////////////DO NOT TOUCH BELOW THIS LINE/////////////////////////
procedure AntiBan;
begin
FindNormalRandoms;
if not(LoggedIn)then
begin
Exit;
end;
case Random(80) of
0: RandomRClick;
1: HoverSkill('Smithing', false);
2: PickUpMouse;
3: RandomMovement;
4: HoverSkill('Smithing', false);
5: ExamineInv;
6: RandomRClick;
7: PickUpMouse;
8: RandomMovement;
9: BoredHuman;
end;
end;
procedure WaitNone();
begin
end;
function SmithScreen: Boolean;
var
x, y: integer;
begin
if FindText(x, y, 'What would you like to make?', UpCharsEx, 160, 80, 360, 105)then
begin
Result := True;
end else
begin
Result := False;
end;
end;
procedure RunToBank;
var
x, y, WalkToBank, Bank, Tried: integer;
begin
Bank := DTMFromString('m6wAAAHic42ZgYFAD4kgGCNAAYiYg9gRieyAWQKLnATELAypgA2J2IOYAYlYgZoRikDpfT2uGD2/OM1y9uJ3hxdMTYD4ybu/qBWM3DwUGEaB6OSQsgoaRxUHmM0MxE5KdMMwExayoTgUA2PATHg==');
FindNormalRandoms;
if (BankScreen)then
begin
FreeDTM(Bank);
Exit;
end;
if FindDTMRotated(Bank, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
repeat
if FindDTMRotated(Bank, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
FindNormalRandoms;
Mouse(x, y, 10, 10, True);
Flag;
Wait(1000 + random(100));
Inc(Tried);
end;
until (BankScreen) or (PinScreen) or (Tried > 5);
end;
if PinScreen then
if (Players[CurrentPlayer].Pin <> '')then
InPin(Players[CurrentPlayer].Pin)
else
begin
FreeDTM(Bank);
Logout;
WriteLn('No pin given')
TerminateScript;
end;
if not (BankScreen)then
begin
WalkToBank := DTMFromString('mrAAAAHic42BgYGAFYjUgVgBiNigfBliAWAaIdYFYHiqmCcVKULFAH3sG72IzBqVIITBOjvZleP+XE47/A9XIIWENND4jEDPhwTAAAHpLDRw=');
begin
if FindDTMRotated(WalkToBank, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/30, aFound)then
begin
Mouse(x, y, 2, 2, True);
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
Wait(1000 + random(50));
while (IsMoving) do (WaitNone);
end;
end;
FreeDTM(WalkToBank);
end else exit;
FreeDTM(Bank);
FindNormalRandoms;
end;
procedure OpenBankBooth;
var
x, y, Bank, Tried: integer;
begin
Bank := DTMFromString('m6wAAAHic42ZgYFAD4kgGCNAAYiYg9gRieyAWQKLnATELAypgA2J2IOYAYlYgZoRikDpfT2uGD2/OM1y9uJ3hxdMTYD4ybu/qBWM3DwUGEaB6OSQsgoaRxUHmM0MxE5KdMMwExayoTgUA2PATHg==');
if (BankScreen)then
begin
FreeDTM(Bank);
Exit;
end;
begin
repeat
Inc(Tried);
Wait(150 + random(100));
x := MSCX;
y := MSCY;
if FindDTMRotated(Bank, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
Mouse(x, y, 10, 10, True);
Flag;
Wait(1000 + random(100));
FindNormalRandoms;
end;
until (BankScreen) or (PinScreen) or (Tried > 10);
end;
begin
if PinScreen then
if (Players[CurrentPlayer].Pin <> '')then
InPin(Players[CurrentPlayer].Pin)
else
begin
FreeDTM(Bank);
Logout;
WriteLn('No pin given');
TerminateScript;
end;
end;
FreeDTM(Bank);
end;
procedure Banking;
var
Tried, Tried2: integer;
begin
if not(BankScreen)then
begin
Exit;
end;
DepositAll;
repeat
Inc(Tried);
Wait(20);
if (FindNormalRandoms)then
begin
ClickNorth(SRL_ANGLE_HIGH);
OpenBankBooth;
end;
until (BankScreen) or (Tried > 15);
case Lowercase(Method) of
'smith':
begin
repeat
Inc(Tried2);
if(BankScreen) then
begin
MouseBankSlot(1, mouse_Right);
WaitOption('ithdraw-All', 500);
Wait(800 + random(50));
FindNormalRandoms;
end;
until (InvCount = 28) or (Tried2 > 2);
if(Tried2 > 2)then
begin
WriteLn('Failed to find Gold')
Logout;
TerminateScript;
end;
end;
'smithandcraft':
begin
repeat
Inc(Tried2);
if(BankScreen)then
begin
MouseBankSlot(1, mouse_Right);
WaitOption('ithdraw-All', 500);
Wait(800 + random(50));
FindNormalRandoms;
end;
until (InvCount = 28) or (Tried2 > 2);
if(Tried2 > 2)then
begin
WriteLn('Failed to find Gold')
Logout;
TerminateScript;
end;
end;
'craft':
begin
repeat
Inc(Tried2);
if(BankScreen)then
begin
MouseBankSlot(1, mouse_Right);
WaitOption('ithdraw-All', 500);
Wait(800 + random(50));
FindNormalRandoms;
end;
until (InvCount = 28) or (Tried2 > 2);
if(Tried2 > 2)then
begin
WriteLn('Failed to find Gold')
Logout;
TerminateScript;
end;
end;
end;
end;
procedure RunToFurnace;
var
x, y, WalkToFurnace: integer;
begin
WalkToFurnace := DTMFromString('mlwAAAHicY2dgYDABYh0g5gZieSA2BWIlBgiQhtJcQGwExK5A7ATEQkD84cF9hsAALzA2ThBmaOudxuBTYMygHMbP8B8oL4eENZDYjEiYCQ1DAQDhRgvs');
if not(InvCount = 28)then
begin
FreeDTM(WalkToFurnace);
Exit;
end;
if(InvCount = 28)then
begin
if FindDTMRotated(WalkToFurnace, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/30, aFound)then
begin
Mouse(x, y, 0, 0, True);
Wait(1000 + random(100));
FindNormalRandoms;
while (IsMoving) do (WaitNone);
end;
end;
FreeDTM(WalkToFurnace);
end;
function BarsInInv: Boolean;
var
x, y, GoldBar: integer;
begin
GoldBar := DTMFromString('mlwAAAHicY2dgYHBiYmCwB2J3IHYFYmcgDgRiEyB+AJR/BsSPgfgWEH8A4odA/AKIFzWIMcR48jJcWi4L5DGhYBEgCcOsaJgRD4YCAN+0DAY=');
if FindDTMRotated(GoldBar, x, y, MIX1, MIY1, MIX2, MIY2, -Pi, Pi, Pi/30, aFound)then
begin
Result := True;
end;
FreeDTM(GoldBar);
FindNormalRandoms;
end;
function GoldInInv: Boolean;
var
x, y, GoldOre: integer;
begin
GoldOre := DTMFromString('mQwAAAHicY2ZgYDjMyMCwH4h3AnEOkF8KxHlAvKlXgiHaw4gh1suYQRLIh2FGJAwEADOOBuU=');
if FindDTMRotated(GoldOre, x, y, MIX1, MIY1, MIX2, MIY2, -Pi, Pi, Pi/30, aFound)then
begin
Result := True;
end else
begin
Result := False;
end;
FreeDTM(GoldOre);
FindNormalRandoms;
end;
function IsCrafting: Boolean;
var
GoldBracelet, T1, T2: integer;
begin
GoldBracelet := DTMFromString('mbQAAAHicY2VgYGAFYm4GCOACYnaoGCNUjB0qfmGLLJBkYji1ToZhU58kw7w6MQY5oAg6ZsSCwQAAbswGmw==');
T1 := CountItems('dtm', GoldBracelet, []);
Wait(4000 + random(500));
T2 := CountItems('dtm', GoldBracelet, []);
if (T2 > T1)then
begin
Result := True;
end else
begin
Result := False;
end;
FreeDTM(GoldBracelet);
end;
function IsSmithing: Boolean;
var
GoldBar, T1, T2: integer;
begin
GoldBar := DTMFromString('mlwAAAHicY2dgYHBiYmCwB2J3IHYFYmcgDgRiEyB+AJR/BsSPgfgWEH8A4odA/AKIFzWIMcR48jJcWi4L5DGhYBEgCcOsaJgRD4YCAN+0DAY=');
T1 := CountItems('dtm', GoldBar, []);
Wait(4000 + random(500));
T2 := CountItems('dtm', GoldBar, []);
if (T2 > T1)then
begin
Result := True;
end else
begin
Result := False;
end;
FreeDTM(GoldBar);
end;
procedure Smithing;
var
x, y, Furnace, GoldBar, NumOfBars, Count: integer;
label
Start;
begin
Start:
Furnace := DTMFromString('mlwAAAHicY2dgYDBhZGBwAGJ7KO0NxAFAHAHEMxgguAmIVwPxdCCeAsTzgDgtKYKhV1aYwdragsHAQI+hUwbCnikvymAElMeFgcYyMOHAUAAAq60M0g==');
GoldBar := DTMFromString('mlwAAAHicY2dgYHBiYmCwB2J3IHYFYmcgDgRiEyB+AJR/BsSPgfgWEH8A4odA/AKIFzWIMcR48jJcWi4L5DGhYBEgCcOsaJgRD4YCAN+0DAY=');
if (GoldInInv)then
begin
if FindDTMRotated(Furnace, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
Mouse(x, y, 15, 15, True);
Flag;
Wait(500 + random(100));
Mouse(260, 480, 10, 10, True);
FindNormalRandoms;
end;
end else
begin
Writeln('No Gold Found');
FreeDTM(Furnace);
FreeDTM(GoldBar);
Exit;
end;
if (IsSmithing)then
begin
repeat
begin
Stuck := 0;
AntiBan;
Wait(2500 + random(1000));
NumOfBars := CountItems('dtm', GoldBar, []);
FindNormalRandoms;
end;
until (NumOfBars = 28) or not FindDTMRotated(Furnace, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound);
end else
begin
RunToFurnace;
FreeDTM(GoldBar);
FreeDTM(Furnace);
Inc(Count);
if(Count > 3)then
begin
Exit;
end;
goto Start;
end;
FreeDTM(GoldBar);
FreeDTM(Furnace);
FindNormalRandoms;
end;
procedure Crafting;
var
x, y, GoldBracelet, Furnace, GoldBar, NumOfBracelets, Count: integer;
label
Start;
begin
Start:
Furnace := DTMFromString('mlwAAAHicY2dgYDBhZGBwAGJ7KO0NxAFAHAHEMxgguAmIVwPxdCCeAsTzgDgtKYKhV1aYwdragsHAQI+hUwbCnikvymAElMeFgcYyMOHAUAAAq60M0g==');
GoldBracelet := DTMFromString('mbQAAAHicY2VgYGAFYm4GCOACYnaoGCNUjB0qfmGLLJBkYji1ToZhU58kw7w6MQY5oAg6ZsSCwQAAbswGmw==');
GoldBar := DTMFromString('mlwAAAHicY2dgYHBiYmCwB2J3IHYFYmcgDgRiEyB+AJR/BsSPgfgWEH8A4odA/AKIFzWIMcR48jJcWi4L5DGhYBEgCcOsaJgRD4YCAN+0DAY=');
FindNormalRandoms;
if(BarsInInv) then
begin
if FindDTMRotated(Furnace, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
if FindDTMRotated(GoldBar, x, y, MIX1, MIY1, MIX2, MIY2, -Pi, Pi, Pi/30, aFound)then
begin
Mouse(x, y, 5, 5, True);
Wait(650 + random(150));
FindNormalRandoms;
end else
begin
WriteLn('Failed to find the bars, exiting');
FreeDTM(GoldBracelet);
FreeDTM(GoldBar);
FreeDTM(Furnace);
Exit;
end;
if FindDTMRotated(Furnace, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
Mouse(x, y, 15, 15, true);
while(IsMoving) do (WaitNone);
Wait(1000 + random(100));
FindNormalRandoms;
end else
begin
WriteLn('Failed to find furnace, exiting');
FreeDTM(GoldBracelet);
FreeDTM(GoldBar);
FreeDTM(Furnace);
Exit;
end;
if(SmithScreen)then
begin
Mouse(130, 340, 5, 5, false);
WaitOption('All', 150 + random(50));
FindNormalRandoms;
end;
if (IsCrafting)then
begin
repeat
begin
Stuck := 0;
AntiBan;
Wait(2500 + random(1000));
NumOfBracelets := CountItems('dtm', GoldBracelet, []);
FindNormalRandoms;
end;
until (NumOfBracelets = 28) or not FindDTMROTated(Furnace, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound);
end else
begin
RunToFurnace;
FreeDTM(GoldBracelet);
FreeDTM(Furnace);
FreeDTM(GoldBar);
Inc(Count);
if(Count > 3)then
begin
Exit;
end;
goto Start;
end;
end;
end;
FreeDTM(GoldBracelet);
FreeDTM(GoldBar);
FreeDTM(Furnace);
FindNormalRandoms;
end;
procedure WhatMethod;
begin
case Lowercase(Method) of
'smith':
begin
Smithing;
end;
'smithandcraft':
begin
Smithing;
Crafting;
end;
'craft':
begin
Crafting;
end;
end;
end;
procedure Report;
var
SmithExp, SmithExpHr, CraftExp, CraftExpHr, TimeRan, BarsSmithed, BarsSmithedHr, BraceletsCrafted, BraceletsCraftedHr: integer;
begin
case Lowercase(Method) of
'smith':
begin
TimeRan := (1+((GetSystemTime - TimeBegan) / 1000));
SmithExp := (GetXPBarTotal - StartingXP);
SmithExpHr := Round((SmithExp * 3600) / (TimeRan));
BarsSmithed := Round(SmithExp / 56.2);
BarsSmithedHr := Round(SmithExpHr / 56.2);
WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('*RyGuys Edgeville Gold Smither Report, Updated By Noob King.');
WriteLn('*Time: ' + TimeRunning);
WriteLn('*We have gained ' + IntToStr(SmithExp) + ' Smithing Experience! (' + IntToStr(SmithExpHr) + ' per hour)');
WriteLn('*We have smithed ' + IntToStr(BarsSmithed) + ' Gold Bars! (' + IntToStr(BarsSmithedHr) + ' per hour)');
WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
end;
'smithandcraft':
begin
TimeRan := (1+((GetSystemTime - TimeBegan) / 1000));
BraceletsCrafted := Round((GetXPBarTotal - StartingXP) / 81.2);
SmithExp := Round(BraceletsCrafted * 56.2);
SmithExpHr := Round((SmithExp * 3600) / (TimeRan));
CraftExp := Round(BraceletsCrafted * 25);
CraftExpHr := Round((CraftExp * 3600) / (TimeRan));
BraceletsCraftedHr := Round((SmithExpHr + CraftExpHr) / 81.2);
WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('*RyGuys Edgeville Gold Smither Report, Updated By Noob King.');
WriteLn('*Time: ' + TimeRunning);
WriteLn('*We have gained ' + IntToStr(SmithExp) + ' Smithing Experience! (' + IntToStr(SmithExpHr) + ' per hour)');
WriteLn('*We have gained ' + IntToStr(CraftExp) + ' Crafting Experience! (' + IntToStr(CraftExpHr) + ' per hour)');
WriteLn('*We have crafted ' + IntToStr(BraceletsCrafted) + ' Gold Bracelets! (' + IntToStr(BraceletsCraftedHr) + ' per hour)');
WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
end;
'craft': //81.2
begin
TimeRan := (1+((GetSystemTime - TimeBegan) / 1000));
CraftExp := (GetXPBarTotal - StartingXP);
CraftExpHr := Round((CraftExp * 3600) / (TimeRan));
BraceletsCrafted := Round(CraftExp / 25);
BraceletsCraftedHr := Round(CraftExpHr / 25);
WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('*RyGuys Edgeville Gold Smither Report, Updated By Noob King.');
WriteLn('*Time: ' + TimeRunning);
WriteLn('*We have gained ' + IntToStr(CraftExp) + ' Craft Experience! (' + IntToStr(CraftExpHr) + ' per hour)');
WriteLn('*We have crafted ' + IntToStr(BraceletsCrafted) + ' Gold Bracelets! (' + IntToStr(BraceletsCraftedHr) + ' per hour)');
WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
end;
end;
end;
begin
SRL_SixHourFix := True;
Smart_FixSpeed := True;
SetUpSRL;
ActivateClient;
DeclarePlayers;
LoginPlayer;
ToggleXPBar(True);
StartingXP := (GetXPBarTotal);
ClickNorth(SRL_ANGLE_HIGH);
TimeBegan := GetSystemTime;
repeat
if not (LoggedIn)then
begin
TerminateScript;
end;
Inc(Stuck);
RunToBank;
OpenBankBooth;
Banking;
RunToFurnace;
WhatMethod;
Report;
if (Stuck > 3)then
begin
WriteLn('We are stuck, logging out')
Logout;
TerminateScript;
end;
until(AllPlayersInactive);
end.