RyGuy
2012-02-15 23:50:13
RAPE
About This Script.
Gold ores must now be in top left bank slot, and gold bars to the right of that!
This is my third script released, the first two beging agility scripts.
You can begin smelting gold at level 40 smithing. It is recommended to have goldsmithing gauntlets for double experience. I made this for the sole purpose of smithing gold at edgeville, so support for other ores and bars will not be added.
The script currently pulls in about 65-70k experience per hour.
Please post if you find any bugs and be as descriptive as possible.
Make sure the gold ore are visible when you open your bank, or else you will be logged out (top right of your first tab is the best spot).
Versions:
1.0 - Initial Release
1.1 - Few bug fixes
1.2 - Added bracelet support!
1.3 - Bugfixes
1.4 - Bugfixes
Known Bugs:
- Let me know if you find any!
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*RyGuys Edgeville Gold Smither Report
*Time: 2 Hours, 21 Minutes and 44 Seconds
*We have gained 158934 Smithing Experience!
*We are gaining 67297 Smithing Experience per Hour!
*We have smithed 2828 Gold Bars (1197per hour)
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~program EdgevilleGoldSmither;
//////////////////////////WRITTEN BY RYGUY//////////////////////////////
////////////////////////////VERSION 1.4/////////////////////////////////
{$DEFINE SMART}
{$i SRL/srl.simba}
var
TimeBegan, StartingXP, Stuck: integer;
aFound: extended;
Const
///////////////////////////PLAYER SETUP//////////////////////////////////
// Smith for Gold Ore --> Gold Bars
Method = 'smith'; // 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, 150, 30, 360, 55)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
Withdraw(0, 0, 28);
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
Withdraw(0, 0, 28);
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
Withdraw(1, 0, 28);
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, 430, 10, 10, True);
FindNormalRandoms;
end;
end else
begin
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, 290, 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');
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');
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');
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
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
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.

