Simba Code:
program tSuperheat;{$DEFINE SMART} { tSuperheat }
{$i SRL/srl.simba}
var
SuperHeatBmp, Sx, Sy, X, Y, Count, Magic_XP, Smithing_XP, J, Antibans, Waits,
NFH, GetTime, BankTime, i, StartTime, LoadCount, SHI, Runs: Integer;
User1, Pass1, BankPin1, StatsUser1, StatsPass1, CoalBag, BarType, GoldGaunts, BankLoc: String;
Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := User1;
Pass := Pass1;
BoxRewards := ['amp', 'Xp', 'XP'];
LampSkill := SKILL_SMITHING;
Pin := BankPin1;
Active := True;
end;
end;
Procedure Run;
begin
SRL_SIXHOURFIX := TRUE;
SMART_FIXSPEED := TRUE;
SetupSRL;
SetupSRLStats(753, StatsUser1, StatsPass1);
DeclarePlayers;
LoginPlayer;
Count := 0;
if not LoggedIn then
begin
repeat
LoginPlayerToLob;
until LobbyScreen;
OpenWorldScreen;
if not WorldScreen then
OpenWorldScreen;
if WorldScreen then
begin
RandomWorld(False, False); // set to (True, False) if member
LoginPlayer;
end;
end;
if LoggedIn then
begin
ClickNorth(SRL_ANGLE_HIGH);
ExitSquealOfFortune;
SetChat('off', CHAT_ASSIST);
SetChat('off', CHAT_PUBLIC);
Setchat('off', CHAT_PRIVATE);
FTab(tab_Inv);
end;
if FindNormalRandoms or FindNonInventoryRandoms then
Exit;
Antibans := 0;
Waits := 0;
if not ExistsItem(1) then
begin
Writeln('Place your nature runes in the first inventory slot. Logging out and terminating the script..');
Logout;
TerminateScript;
end;
if (Lowercase(CoalBag) = 'yes') then
if not ExistsItem(2) then
begin
Writeln('Place your coal bag in the second inventory slot. Logging out and terminating the script..');
Logout;
TerminateScript;
end;
end;
{ Form vars }
var
frmDesign: TForm;
BeginButton, SaveButton, LoadButton: TButton;
TitleLabel, UserLabel, PassLabel, PinLabel, InventoryLabel, StatsUserLabel,
StatsPassLabel, CoalBagLabel, BarLabel, GGLabel, BankLabel, AccLabel: TLabel;
User, Pass, BankPin, Inventory, StatsUser, StatsPass: TEdit;
ImageSH: TImage;
Acc, BLList, GGList, CBList, ListBars: TComboBox;
Accs: Array of string;
RefTime: TTimer;
Procedure ButtonClick(Sender: TObject);
begin
frmDesign.ModalResult := mrOk;
if (Acc.TEXT <> '') then
begin
if not FileExists('C:\Simba\TehScripts\Accounts\' + Acc.TEXT) or not FileExists('C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT) then
begin
Writeln('Could not locate your player information.. Terminating script.');
TerminateScript;
end;
Runs := StrToIntDef(ReadINI('Times Run', 'Times Run', 'C:\Simba\TehScripts\Stats\tSuperheat.txt'), 0);
User1 := ReadINI('Name', 'Name', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
Pass1 := ReadINI('Pass', 'Pass', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
StatsUser1 := ReadINI('StatsName', 'StatsName', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
StatsPass1 := ReadINI('StatsPass', 'StatsPass', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
BankPin1 := ReadINI('Pin', 'Pin', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
GoldGaunts := (ReadINI('GoldGaunts', 'GoldGaunts', 'C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT));
CoalBag := (ReadINI('CoalBag', 'CoalBag', 'C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT));
BankLoc := (ReadINI('Location', 'Location', 'C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT));
BarType := (ReadINI('BarType', 'BarType', 'C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT));
LoadCount := StrToIntDef(ReadINI('Total Loads', 'Total Loads', 'C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT), -1);
end else
begin
Runs := StrToIntDef(ReadINI('Times Run', 'Times Run', 'C:\Simba\TehScripts\Stats\tSuperheat.txt'), 0);
User1 := User.TEXT;
Pass1 := Pass.TEXT;
StatsUser1 := StatsUser.TEXT;
StatsPass1 := StatsPass.TEXT;
BankPin1 := BankPin.TEXT;
GoldGaunts := GGList.TEXT;
CoalBag := CBList.TEXT;
BankLoc := BLList.TEXT;
BarType := ListBars.TEXT;
LoadCount := StrToInt(Inventory.TEXT);
end;
ClearDebug;
WriteLn('Thanks for using Teh''s Superheater. Please leave some feedback.');
FreeBitmap(SHI);
end;
Procedure ButtonClick2(Sender: TObject); //saves player info
begin
ClearDebug;
if (User.TEXT <> '') then
begin
WriteINI('Name', 'Name', User.TEXT, 'C:\Simba\TehScripts\Accounts\' + (User.TEXT) + '.txt');
WriteINI('Pass', 'Pass', Pass.TEXT, 'C:\Simba\TehScripts\Accounts\' + (User.TEXT) + '.txt');
WriteINI('StatsName', 'StatsName', StatsUser.TEXT, 'C:\Simba\TehScripts\Accounts\' + (User.TEXT) + '.txt');
WriteINI('StatsPass', 'StatsPass', StatsPass.TEXT, 'C:\Simba\TehScripts\Accounts\' + (User.TEXT) + '.txt');
WriteINI('Pin', 'Pin', BankPin.TEXT, 'C:\Simba\TehScripts\Accounts\' + (User.TEXT) + '.txt');
Acc.Items.Add(User.TEXT + '.txt');
WriteINI('GoldGaunts', 'GoldGaunts', (GGList.TEXT), 'C:\Simba\TehScripts\tSuperheat\' + (User.TEXT) + '.txt');
WriteINI('CoalBag', 'CoalBag', (CBLIST.TEXT), 'C:\Simba\TehScripts\tSuperheat\' + (User.TEXT) + '.txt');
WriteINI('Location', 'Location', (BLLIST.TEXT), 'C:\Simba\TehScripts\tSuperheat\' + (User.TEXT) + '.txt');
WriteINI('BarType', 'BarType', (ListBars.TEXT), 'C:\Simba\TehScripts\tSuperheat\' + (User.TEXT) + '.txt');
WriteINI('Total Loads', 'Total Loads', Inventory.TEXT,'C:\Simba\TehScripts\tSuperheat\' + (User.TEXT) + '.txt');
end else
Writeln('Please enter a username to save your information.');
WriteLn('Info saved to Simba\TehScripts.');
end;
Procedure OnTimer(Sender: TObject);
begin
if (Acc.TEXT <> '') then
begin
User.TEXT := ReadINI('Name', 'Name', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
Pass.TEXT := ReadINI('Pass', 'Pass', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
StatsUser.TEXT := ReadINI('StatsName', 'StatsName', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
StatsPass.TEXT := ReadINI('StatsPass', 'StatsPass', 'C:\Simba\TehScripts\Accounts\' + (Acc.TEXT));
BankPin.TEXT := ReadINI('Pin', 'Pin', 'C:\Simba\TehScripts\Accounts\' + Acc.TEXT);
GGList.TEXT := ReadINI('GoldGaunts', 'GoldGaunts', 'C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT);
CBList.TEXT := ReadINI('CoalBag', 'CoalBag', 'C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT);
BLList.TEXT := ReadINI('Location', 'Location', 'C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT);
Inventory.TEXT := ReadINI('Total Loads', 'Total Loads', 'C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT);
ListBars.TEXT := ReadINI('BarType', 'BarType', 'C:\Simba\TehScripts\tSuperheat\' + Acc.TEXT);
end;
end;
Procedure FinishStats;
var
CurrXP, CurrTime: integer;
begin
if (Runs < 1) then
WriteINI('Times Run', 'Times Run', IntToStr(1), 'C:\Simba\TehScripts\Stats\tSuperheat.txt')
else
WriteINI('Times Run', 'Times Run', IntToStr(Runs + 1), 'C:\Simba\TehScripts\Stats\tSuperheat.txt');
CurrTime := StrToIntDef(ReadINI('Time Running (sec)', 'Time Running (sec)', 'C:\Simba\TehScripts\Stats\tSuperheat.txt'), 0);
CurrXP := StrToIntDef(ReadINI('Total XP Gained', 'Total XP Gained', 'C:\Simba\TehScripts\Stats\tSuperheat.txt'), 0);
WriteINI('Time Running (sec)', 'Time Running (sec)', IntToStr(CurrTime + Round(TimeFromMark(StartTime)/1000)), 'C:\Simba\TehScripts\Stats\tSuperheat.txt');
WriteINI('Total XP Gained', 'Total XP Gained', IntToStr(CurrXP + Magic_XP + Smithing_XP), 'C:\Simba\TehScripts\Stats\tSuperheat.txt');
end;
Procedure CreateFolders();
begin
ClearDebug;
if not DirectoryExists(AppPath + 'TehScripts') then
begin
CreateDirectory(AppPath + 'TehScripts');
CreateDirectory(AppPath + 'TehScripts\tSuperheat');
CreateDirectory(AppPath + 'TehScripts\tAlch');
CreateDirectory(AppPath + 'TehScripts\tTeleport');
CreateDirectory(AppPath + 'TehScripts\tAgility');
CreateDirectory(AppPath + 'TehScripts\tVial');
CreateDirectory(AppPath + 'TehScripts\tQuest');
CreateDirectory(AppPath + 'TehScripts\tWoodcutting');
CreateDirectory(AppPath + 'TehScripts\Accounts');
CreateDirectory(AppPath + 'TehScripts\Stats');
Writeln('Successfully created the directories that are used in my scripts.');
end else
Writeln('Please delete the TehScripts directory in your Simba folder and try again.');
end;
Procedure InitForm;
begin
frmDesign := TForm.Create(nil);;
frmDesign.Left := 270;
frmDesign.Top := 50;
frmDesign.Width := 800;
frmDesign.Height := 500;
frmDesign.Caption := 'Teh''s Superheater';
frmDesign.Font.Color := ClBlack;
frmDesign.Font.Name := 'Calibri';
frmDesign.Color := ClNavy;
BeginButton := TButton.Create(FrmDesign);
BeginButton.Parent := frmDesign;
BeginButton.Left := 650;
BeginButton.Top := 400;
BeginButton.Height := 30;
BeginButton.Width := 105;
BeginButton.Caption := 'Begin Script';
BeginButton.OnClick := @ButtonClick;
SaveButton := TButton.Create(FrmDesign);
SaveButton.Parent := FrmDesign;
SaveButton.Left := 650;
SaveButton.Top := 350;
SaveButton.Height := 30;
SaveButton.Width := 105;
SaveButton.Caption := 'Save Info';
SaveButton.OnClick := @ButtonClick2;
TitleLabel := TLabel.Create(FrmDesign);
TitleLabel.Parent := FrmDesign;
TitleLabel.Left := 275;
TitleLabel.Top := 10;
TitleLabel.Caption := 'Teh''s Superheater';
TitleLabel.Font.Size := 30;
TitleLabel.Font.Color := ClWhite;
TitleLabel.Font.Name := 'Calibri';
RefTime := TTimer.Create(FrmDesign);
RefTime.Interval := 200;
RefTime.OnTimer := @OnTimer;
RefTime.Enabled := True;
User := TEdit.Create(FrmDesign);
User.Parent := FrmDesign;
User.Top := 100;
User.Left := 200;
User.Width := 140;
User.Height := 20;
UserLabel := TLabel.Create(FrmDesign);
UserLabel.Parent := FrmDesign;
UserLabel.Top := 100;
UserLabel.Left := 80;
UserLabel.Caption := 'Username';
UserLabel.FONT.Color := ClWhite;
StatsUser := TEdit.Create(FrmDesign);
StatsUser.Parent := FrmDesign;
StatsUser.Top := 200;
StatsUser.Left := 200;
StatsUser.Width := 140;
StatsUser.Height := 20;
StatsUser.Text := '';
StatsUserLabel := TLabel.Create(FrmDesign);
StatsUserLabel.Parent := FrmDesign;
StatsUserLabel.Top := 200;
StatsUserLabel.Left := 80;
StatsUserLabel.Caption := 'Stats User';
StatsUserLabel.FONT.Color := ClWhite;
StatsPass := TEdit.Create(FrmDesign);
StatsPass.Parent := FrmDesign;
StatsPass.Top := 250;
StatsPass.Left := 200;
StatsPass.Width := 140;
StatsPass.Height := 20;
StatsPass.Text := '';
StatsPassLabel := TLabel.Create(FrmDesign);
StatsPassLabel.Parent := FrmDesign;
StatsPassLabel.Top := 250;
StatsPassLabel.Left := 80;
StatsPassLabel.Caption := 'Stats Pass';
StatsPassLabel.FONT.Color := ClWhite;
Pass := TEdit.Create(FrmDesign);
Pass.Parent := FrmDesign;
Pass.Top := 150;
Pass.Left := 200;
Pass.Width := 140;
Pass.Height := 20;
PassLabel := TLabel.Create(FrmDesign);
PassLabel.Parent := FrmDesign;
PassLabel.Top := 150;
PassLabel.Left := 80;
PassLabel.Caption := 'Password';
PassLabel.FONT.Color := ClWhite;
Accs := GetFiles(AppPath + 'TehScripts\Accounts\', 'txt');
Acc := TComboBox.Create(FrmDesign);
Acc.Parent := FrmDesign;
Acc.Top := 400;
Acc.Left := 450;
Acc.Width := 140;
Acc.Height := 150;
for i := 0 to high(Accs) do
Acc.Items.Add(Accs[i]);
AccLabel := TLabel.Create(FrmDesign);
AccLabel.Parent := FrmDesign;
AccLabel.Top := 400;
AccLabel.Left := 370;
AccLabel.Caption := 'Account?';
AccLabel.FONT.Color := ClWhite;
BankPin := TEdit.Create(FrmDesign);
BankPin.Parent := FrmDesign;
BankPin.Top := 300;
BankPin.Left := 200;
BankPin.Width := 140;
BankPin.Height := 20;
BankPin.Text := '';
BankPin.MaxLength := 4;
PinLabel := TLabel.Create(FrmDesign);
PinLabel.Parent := FrmDesign;
PinLabel.Top := 300;
PinLabel.Left := 80;
PinLabel.Caption := 'Bank Pin';
PinLabel.FONT.Color := ClWhite;
Inventory := TEdit.Create(FrmDesign);
Inventory.Parent := FrmDesign;
Inventory.Top := 150;
Inventory.Left := 450;
Inventory.Width := 140;
Inventory.Height := 20;
Inventory.MaxLength := 4;
Inventory.TEXT := '75';
InventoryLabel := TLabel.Create(FrmDesign);
InventoryLabel.Parent := FrmDesign;
InventoryLabel.Top := 150;
InventoryLabel.Left := 370;
InventoryLabel.Caption := '# of Invs';
InventoryLabel.FONT.Color := ClWhite;
ListBars := TComboBox.Create(FrmDesign);
ListBars.Parent := FrmDesign;
ListBars.Top := 250;
ListBars.Left := 450;
ListBars.Width := 140;
ListBars.Height := 137;
ListBars.Items.Add('Iron');
ListBars.Items.Add('Silver');
ListBars.Items.Add('Steel');
ListBars.Items.Add('Gold');
ListBars.Items.Add('Mith');
ListBars.Items.Add('Addy');
ListBars.Items.Add('Rune');
BarLabel := TLabel.Create(FrmDesign);
BarLabel.Parent := FrmDesign;
BarLabel.Top := 250;
BarLabel.Left := 370;
BarLabel.Caption := 'Bars?';
BarLabel.FONT.Color := ClWhite;
CBList := TComboBox.Create(FrmDesign);
CBList.Parent := FrmDesign;
CBList.Top := 300;
CBList.Left := 450;
CBList.Width := 140;
CBList.Height := 42;
CBList.Items.Add('Yes');
CBList.Items.Add('No');
CoalBagLabel := TLabel.Create(FrmDesign);
CoalBagLabel.Parent := FrmDesign;
CoalBagLabel.Top := 300;
CoalBagLabel.Left := 370;
CoalBagLabel.Caption := 'Coal bag?';
CoalBagLabel.FONT.Color := ClWhite;
BLList := TComboBox.Create(FrmDesign);
BLList.Parent := FrmDesign;
BLList.Top := 200;
BLList.Left := 450;
BLList.Width := 140;
BLList.Height := 175;
BLList.Items.Add('Soul Wars');
BLList.Items.Add('Castle Wars');
BLList.Items.Add('Burthrope');
BLList.Items.Add('Varrock East');
BLList.Items.Add('Varrock West');
BLList.Items.Add('Falador East');
BLList.Items.Add('Falador West');
BLList.Items.Add('Yanille');
BLList.Items.Add('Camelot');
BLList.Items.Add('Catherby');
BLList.Items.Add('Draynor');
BLList.Items.Add('Al-Kharid');
BLList.Items.Add('Edgeville');
BLList.Items.Add('Taverly');
BLList.Items.Add('Warriors Guild');
BLList.Items.Add('Fishing Guild');
BLList.Items.Add('Ardougne North');
BLList.Items.Add('Ardougne South');
BLList.Items.Add('Gnome North');
BLList.Items.Add('Gnome South');
BankLabel := TLabel.Create(FrmDesign);
BankLabel.Parent := FrmDesign;
BankLabel.Top := 200;
BankLabel.Left := 370;
BankLabel.Caption := 'Bank?';
BankLabel.FONT.Color := ClWhite;
GGList := TComboBox.Create(FrmDesign);
GGList.Parent := FrmDesign;
GGList.Top := 100;
GGList.Left := 450;
GGList.Width := 140;
GGList.Height := 42;
GGList.Items.Add('Yes');
GGList.Items.Add('No');
GGLabel := TLabel.Create(FrmDesign);
GGLabel.Parent := FrmDesign;
GGLabel.Top := 100;
GGLabel.Left := 370;
GGLabel.Caption := 'Gaunts?';
GGLabel.FONT.Color := ClWhite;
ImageSH := TImage.Create(FrmDesign);
ImageSH.Parent := FrmDesign;
ImageSH.Left := 643;
ImageSH.Top := 100;
ImageSH.Width := 120;
ImageSH.Height := 186;
SHI := BitmapFromString(120, 186, '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');
DrawBitmap(SHI, ImageSH.canvas, 0, 0);
end;
Procedure SafeInitForm;
var
v: TVariantArray;
begin
SetArrayLength(v, 0);
ThreadSafeCall('InitForm', v);
end;
Procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;
Procedure SafeShowFormModal;
var
v: TVariantArray;
begin
SetArrayLength(v, 0);
ThreadSafeCall('ShowFormModal', v);
end;
Function WaitFindBitmap(Bitmap: integer; var x, y: integer; xs, ys, xe, ye, Tolerance, WaitPerLoop, MaxTime: integer): boolean;
{
Ex: if WaitFindBitmap(SkillsTab, x, y, MIX1, MIY1, MIX2, MIY2, 5, 200, 1000) then Writeln('Found the bitmap');
By: tehq
Updated: 1/12/2013
}
var
t: integer;
begin
t := (getSystemTime + MaxTime);
while (getSystemTime < t) do
begin
if (FindBitmapToleranceIn(Bitmap, x, y, xs, ys, xe, ye, Tolerance)) then
begin
result := true;
break;
end;
wait(WaitPerLoop);
end;
end;
var
Skills, SkillsTab, MTabU, MTabC: integer;
Procedure NavTabs(Rand: integer);
{
Ex: NavTabs(10);
By: tehq
Updated: 1/12/2013
}
begin
Skills := BitmapFromString(21, 14, 'meJyTlIQCERGRj7NkXF1djY2NhYSEBAUFBQQE+Pj4eHl4uNnYgQjIAHIF+PkFwKCppqIkI04St3Z+fn49a+eCZTuL938AIiBDQ0+XH0l7mIMZUBemdojVulZOgWuvak0/CUdAroauDkR7REhgfW4KVttB2vn5XTrXArXYrLmiNWELEIEY008CBSEOUFNRmd/biEs7Pz8vUL3OhhtQq4EmwNzAx80NccCSRfORtb+fgqIdqBdoAsRSCIIYCNeupqKMSzvQ8ZrlS+EmQBCQCxQESglCgIAATu0CAjJahkD1cBMgbKAgUAqoQAisBln7uwno8Q5UDLQObi9CLwQICuLSDjcB6FRgOAARJMEg9IIBVu1GYGBoaGhgYKCvr68HBkAGkAsUNEICcO2ioqIvm0VdSQSQVAckgS6Z7s/9qlnkTY8M8aguRBaCqgJlinykstwlMl1JQAC3EOMG');
SkillsTab := BitmapFromString(30, 31, 'meJyNlttTU1cUxp96sSiHAI6QsZ1QAsRwCUlEiyRIoFouSQgmhhDAVkICWERuAkVG1MYqTG0zFKTqTHWstdMLrZ1ipShQqlJpfehD2+m0Qx/61rf+Cf1ylme7cxIb1nyc2Xtn8TsrK2vtvY1Go0E0vV5fWFio0+kKRMMAUywaJDNKnuRM/uQjc2OWLJpCoUiCCUJiQgKEAWZYTI5lCjI4iD4yt5SUFEYmbP6u8u7r3/Yt/QthgGlMOFZ2m81T74y/PXYmeGJ0/OxpTHk3RmbYuplftdOreTd+hzDAVJOfJ4NjXGoyPVxd0eaonxINgwc3r2ORuUWQBeHlsRnQTJ//gqc2NEsDLOIjGdlRUwnyzSsTpA8vTYVGejTZWTHJgrDpEZMUmmXj5zZskJGLdxb9/fP3V96fCB49NOxveL2lwe+uy1S98CQyMgA45YFE02gy8jM00L9yb/mt/kPHu/1+l9GSq+OTJsvGtsGPCE6iV6S1nZVlI1kk1zsdqysrwV7f6OHWIZ9Hk/UiFpNjkpOStmr19PMRmcLGYnR5YLq/zg7ymz0txzt9g776HHUGH7Cs6gRB2JproMjB1HeMYypwAcOfkV0O24OV+6e6D66HjNgSExM3bdyY8PQzEAaYyrLHyB73fpAHAs39bc29Nda4MReUVPCdoinIF2RJlmJwOx1Ld+YHAgeIrFFn8HmGxewUpid1ClZctdbvFuYPt3j62w+EyeIvyLvRBiLvFBSz1Cl7+q7xtUHY0ZHhH+7dRcxdvoZOr8PnNNbXvGIuMvJwRo7oFJHMmiVcz9K2k562ZfH2/J8/LvxxZ/b21zNjJ4690Xmwq6raa6tqdtm8tn3IMMF5MtsuWA/SFGQKJi1ty/zcrbkbn639tPjP2m9ri998en7sdF/HkaZ9XntVg7XSY6302p0Ex77Kdwplg29zdIogbqewY0MDC5OTy9PTaw+XQP5rae6Li+dGewKtjc6m2upGezhy8M07jBFkqVNkcOoUsi8/vhrsbf/gzNFbdwfn7g9BXcu9lV+Vmqc0Yb2n0beoGm2FjU4rnHEixO0UwlrKykJjQdOEBqjXPmkFE8/HWEn6VhUiz8zIwJEUp1Mk8qmRIRSYwa8yT2pkNCZDQJW1fbO1rNhiegnnXdxOYWR32Q78I+BhBeTCR5Dm+WdBLpfIcTsF5nHVYVvLMkrkSBE2LKUS5ILcXMrG/3QKFinsbLX68rmTJUU6IsRgigGrjZtRJyh7RqZOkdUzKXyOi3bt6uUGy04eFSGlEmR7eUlTrUsh1QZ/pvDFTO9i5Gx15lToXZtlVzQWTKhkuw6FoUxPi+4U/kwhLBZp36DbRUdb4OJwH+D41jwT+QcWeSg2FMItYkcSO4UanGGhx2eK6IOHpdh04fzkkVf9+OJIO1RbUQK5q/fmZKnpNsTIrJ7BQZAsWvlRhYGQim0BfzWWPcGTo+1+/96y3RWl5jztttSURwY/npzM3b6Qcyjm7Uuchh3pFbxhhS5l/C66zhuj7K6o4yz63ghLj2eposlW1uP8H8h8q+A=');
MTabU := BitmapFromString(39, 15, 'meJzFk8tu00AUhps4dYLt2EmstJaVRa+hJBgag5xbq5a4RVXaihJUSLhIrZpCVUSTKkUIJUhsCgsIC9gAXbAqFeqOBQ+AxI5H4GH45YGRa4egSEgc/RqNZ8453zkz471yavtKUhRF2WaRSEQSxYDfP2ck97dK75qVgyc3bzx/NfLxx/2jr/nacdDHxdXYHVPPTi+Njjbj2RLmbxfO18zKg0JZSyR4nkcS+aSBsmfhdlcn3VBBELQR5Utj8Vtr5XNZe6wPrhvq1MtDNpoXGAYTn1dPJ5uFtaOM8Sad2oiFrw4oMfgADS60Wd0Ih8NuKMF1hGIbxO/V1AdTgQCdUrjco7vb+4elF5+GNusE2mofF4qvMQEUjRfjcvq0upg/t6oaO2Ylf2lOdpkd6tg6O6y0zHGAUDyEbJgPScxlcxaHPJgxcLwArSzdxvEOKBewC5+xaAgjKoTQ7K17uz11yrLsghVOoaQLcHG8GO0iRAieT+fHoXazvtZ4H42p3Tt1QDmOY7xe0imS4IUclCccwjqlkBXcfnvn+sNGPbe8zolySJK6QLeWEw4o3gBWAoEA29/v9XhUOUTbAQJ37RBwWMdtxseGOe4UohD+p4cEXO2a5oZGLEOUJOHXEfH+/SzrYxgUQCTzPG4QQjEoCWfu6euDA/4yOCOKxLuhBIdmq8UzHaHUQA9ZRmoIwgQBEqwxaBl2w7+NBrqhBAduRyhGki3isl+prTIIgoxwpslpErpCjOAolJjDp1f7ayzBPfsfNpkrEOkz82SiZWYhuu747K6enP9VHuLpqNntlryYp9IyMyc/p+l8Qs/at+xybNk/Me8Y+BMS6lYe');
MTabC := BitmapFromString(39, 23, 'meJy9lFtPE1EQx6Hl0m5pd5dtt2tTDbRQsQ1VMGm5BkOREC4G8UJrMELAisqlsRow1EtiiA9aE/VFbAI+FInhSR988snENz+CH8Z/d3Sz7qUUHpxMTs7OmXN+Z+bMbHE9XFwPC4IgqcTr9dKoCBxsNtu3tYmfCx1zMR90NOTuk5gWkWtirRgZxs4wjMfjIX/JSHBIUcYV/4UKsjTKgr2iKLrdbqfTiQOdtbWfk+07CamQbHt6vrXEjfsxAtpgLXGtFouzoQFblKuaQT/cb4NqVmkLz3Gsy8XY7c0ebnrgzHDi3NSLT+nsE8QIBe5hpwQFbmD8Qm7xEow+gbPbbGbxAko4UnV6MYc/IgVuKBbZXJzayqUKj65NP38V+Pjr7t733tV9Zw0T8vmvJzq7+8eDwY1Q9xTm70ZOryZSy4PJaCSC2x4KCuFYNhr0fc2O/chNfkm2IxzE1fdyt87Ti0xiUmPpjEc2Bmf3umJv4x3zfv6iVyqlGmhwoemFecR7KKiH40BEzeAFoYCiZnrW0nc2d5HhppsZguby+4OjbzABFIEjvfGTvrHe6BVfbCWR6k8M62tJDdUsIczcUCtA6kJFweBZkWSpK4b0AjQ5PoP0itJZrMIHj4uRHhrBzty6d6hIbfX1I/J2BUpRUKFiVCsRqbRQ1dD8RmY2+957wl8+Ug0UPWK1WilSHIIKQZtolLqGKGTB6+dXrj7IZnom5hysgF4zg26vhqHUnsoSeq2R5x0Mg5At1dVoBCUcIPDWGgUOdrxmqKUZf4n6ujoUP8/z+vQSjpQsykhdBjT9KFwuF35HNQjeYsEdoILDgReE4jK4EnJeXVUFB3QZnEtNJ5ZEYSmHE66wBD2luRL9jhTBdtQ/x3HYhTORfE4WlmUx8vIcyYQbLwvtwiH6SAm3dTsE1axSXys/Q42IdAlZxL+ipijp0kMJZxip2s3MrikD/aqhnXDbmXBhOYzkHDMXs1WNXf+pWGiCESwQ6VkVh/L0I4j62BJ06Q8RSTa7bYXHVp4KelCMr+eCZAwEAgeiDZf0mTR0gIBFxPyNABHJn9DluQeizTaCBeKzVBO0wvzolyp0CMiCiQbnVol6i9pi6HwEeXz5+P9XzeUNAylj1KfIzK7+/A2AxK8X');
if not WaitFindBitmap(MTabC, x, y, MIX1, MIY1, MIX2, MIY2, 5, 200, 1000) then
if WaitFindBitmap(MTabU, x, y, MIX1, MIY1, MIX2, MIY2, 5, 200, 1000) then
Mouse(x + 12, y - 5, Rand, Rand, mouse_Left);
if not WaitFindBitmap(Skills, x, y, MIX1, MIY1, MIX2, MIY2, 5, 200, 1000) then
if WaitFindBitmap(SkillsTab, x, y, MIX1, MIY1, MIX2, MIY2, 5, 200, 1000) then
Mouse(x + 10, y + 15, Rand, Rand, mouse_Left);
FreeBitmap(Skills);
FreeBitmap(SkillsTab);
FreeBitmap(MTabU);
FreeBitmap(MTabC);
end;
Procedure BankDeposit;
begin
case Lowercase(CoalBag) of
'no':
begin
MarkTime(BankTime);
repeat
Deposit(2, 28, True);
until (InvCount = 1) or (TimeFromMark(BankTime) > 15000);
if (TimeFromMark(BankTime) > 15000) then
begin
WriteLn('Failed to deposit bars. Logging out your character and terminating the script.');
Logout;
TerminateScript;
end;
end;
'yes':
begin
MarkTime(BankTime);
repeat
Deposit(3, 28, True);
until (InvCount = 2) or (TimeFromMark(BankTime) > 15000);
if (TimeFromMark(BankTime) > 15000) then
begin
WriteLn('Failed to deposit bars. Logging out your character and terminating the script.');
Logout;
TerminateScript;
end;
end;
end;
end;
{ Bar Vars }
var
NumbCoal, NumbIron, NumbGold, NumbMith, NumbAddy, NumbRune, NumbSilver, Silver,
Coal, Iron, Gold, Addy, Rune, Mith: Integer;
Procedure LoadOreDTMs;
begin
Coal := DTMFromString('mQwAAAHicY2ZgYBBmZGDgAGIpIJ7BAMFzgVhVVYYh3scUTLMC+TDMiISBAACc8gPH');
Iron := DTMFromString('mQwAAAHicY2ZgYDADYm0gtgfiGVA8B4gtFCUYwl0NGEzlxRlYgXwYZkTCQAAAtHMEKg==');
Gold := DTMFromString('mQwAAAHicY2ZgYEgC4gggzgLibCDOA+JCIF7TIcGQ5GfGsKlXkoEVyIdhRiQMBAD7rQYO');
Addy := DTMFromString('mQwAAAHicY2ZgYHgOxHeA+B0Q50BxIRDbuNkwxHubMFg5WzGwAvkwzIiEgQAALOQGYw==');
Mith := DTMFromString('mQwAAAHicY2ZgYLBnZGAwAWJ3IM5hgOACIDYzC2KI9zYB06xAPgwzImEgAAC6AQR1');
Silver := DTMFromString('mQwAAAHicY2ZgYHBgZGAwBWI3IJ7BAMFzgXjixBkMyf7mDJ2d/QysQD4MMyJhIAAAFF4G5Q==');
Rune := DTMFromString('mQwAAAHicY2ZgYBBhZGDgBGIpIJ4O5M8A4rlA7BoSxZDoa8rg4BvCwArkwzAjEgYCAMC+BNM=');
end;
Procedure FreeOreDTMs;
begin
FreeDTM(Iron);
FreeDTM(Coal);
FreeDTM(Gold);
FreeDTM(Mith);
FreeDTM(Addy);
FreeDTM(Rune);
FreeDTM(Silver);
end;
Procedure FreeBmps;
begin
FreeBitmap(SHI);
FreeBitmap(SuperheatBmp);
FreeBitmap(Skills);
FreeBitmap(SkillsTab);
FreeBitmap(MTabU);
FreeBitmap(MTabC);
end;
Procedure ResetOres;
begin
NumbCoal := 0;
NumbIron := 0;
NumbGold := 0;
NumbMith := 0;
NumbAddy := 0;
NumbRune := 0;
NumbSilver := 0;
end;
Procedure MagicTab;
begin
FTab(tab_Magic);
end;
Function FindHeat: boolean;
var
Time: Integer;
begin
Result := false;
MarkTime(Time);
NavTabs(10);
repeat
Result := WaitFindBitmap(SuperheatBmp, Sx, Sy, MIX1, MIY1, MIX2, MIY2, 10, 200, 2000);
until (TimeFromMark(Time) > 4001) or (Result = true);
if Result then
Mouse(Sx + 10, Sy + 10, 10, 10, mouse_Left)
else
MagicTab;
end;
Procedure NotFindHeat;
begin
if FindBlackChatMessage('uperheat') or FindBlackChatMessage('nough') then
begin
Inc(NFH);
Writeln('Failed to superheat that item! Trying to continue the script..');
end;
if (NFH = 4) then
begin
Writeln('Failed to superheat that item! Logging out your character and terminating the script..');
Logout;
TerminateScript;
end;
end;
Procedure OreOT;
begin
if (TimeFromMark(GetTime) > 15000) then
begin
Writeln('Failed to withdraw ores. Logging out your character and terminating the script.');
repeat
Logout;
TerminateScript;
until not LoggedIn;
end;
end;
function WaitOreCount(Count, CountOre, MaxTime: Integer): boolean;
{
Ex: WaitOreCount(ReqOre, CountItems('dtm', Ore, []), 1000);
By: tehq
Updated: 1/13/2013
}
var
T: integer;
begin
if not BankScreen then
if not GameTab(tab_Inv) then
exit;
Result := false;
T := GetSystemTime + MaxTime;
while (GetSystemTime < T) do
begin
if CountOre > Count then
begin
Result := true;
break;
end;
end;
end;
Procedure WithdrawOre(Ore, Amount, InvOre, ReqOre: integer; Uptext, OreName: string);
{
Ex: WithdrawOre(Iron, 17, NumbIron, 13, 'r', 'iron');
By: tehq
Updated: 1/12/2013
}
begin
MarkTime(GetTime);
repeat
if WithdrawItem(Ore, 'dtm', Amount, Uptext, []) then
begin
WaitOreCount(ReqOre, CountItems('dtm', Ore, []), 1250);
ClearDebug;
WriteLn('You currently have ' +IntToStr(CountItems('dtm', Ore, [])) +' '+ OreName + ' ores in your inventory.');
end;
until (CountItems('dtm', Ore, []) > ReqOre) or (TimeFromMark(GetTime) > 15000);
OreOT;
end;
Procedure GetOres;
begin
LoadOreDTMs;
case Lowercase(CoalBag) of
'yes':
begin
case Lowercase(BarType) of
'steel': WithdrawOre(Iron, 17, NumbIron, 13, 'r', 'iron');
'mith': WithdrawOre(Mith, 10, NumbMith, 6, 'r', 'mithril');
'addy': WithdrawOre(Addy, 7, NumbAddy, 4, 'r', 'adamant');
'rune': WithdrawOre(Rune, 5, NumbRune, 2, 'r', 'rune');
'silver': WithdrawOre(Silver, 0, NumbSilver, 24, 'r', 'silver');
'gold': WithdrawOre(Gold, 0, NumbGold, 24, 'r', 'gold');
'iron': WithdrawOre(Iron, 0, NumbIron, 24, 'r', 'iron');
end;
end;
'no':
begin
case Lowercase(Bartype) of
'steel': WithdrawOre(Iron, 9, NumbIron, 5, 'r', 'iron');
'mith': WithdrawOre(Mith, 5, NumbMith, 2, 'r', 'mithril');
'addy': WithdrawOre(Addy, 3, NumbAddy, 1, 'r', 'adamant');
'rune': WithdrawOre(Rune, 3, NumbRune, 1, 'r', 'rune');
'silver': WithdrawOre(Silver, 0, NumbSilver, 24, 'r', 'silver');
'gold': WithdrawOre(Gold, 0, NumbGold, 24, 'r', 'gold');
'iron': WithdrawOre(Iron, 0, NumbIron, 24, 'r', 'iron');
end;
end;
end;
if WaitFunc(@InvFull, 200, 1000) then
CloseBank
else
begin
case Lowercase(CoalBag) of
'yes':
begin
case Lowercase(BarType) of
'steel': WithdrawOre(Coal, 8, NumbCoal, 6, 'a', 'coal');
'mith': WithdrawOre(Coal, 14, NumbCoal, 10, 'a', 'coal');
'addy': WithdrawOre(Coal, 16, NumbCoal, 12, 'a', 'coal');
'rune': WithdrawOre(Coal, 14, NumbCoal, 10, 'a', 'coal');
end;
end;
'no':
begin
case Lowercase(BarType) of
'steel': WithdrawOre(Coal, 0, NumbCoal, 1, 'a', 'coal'); // need numbers
'mith': WithdrawOre(Coal, 20, NumbCoal, 15, 'a', 'coal');
'addy': WithdrawOre(Coal, 18, NumbCoal, 14, 'a', 'coal');
'rune': WithdrawOre(Coal, 0, NumbCoal, 1, 'a', 'coal'); // need numbers
end;
end;
end;
CloseBank;
end;
FreeOreDTMs;
ResetOres;
end;
Procedure Banking;
begin
if FindNormalRandoms or FindNonInventoryRandoms or not LoggedIn then
Exit;
MarkTime(BankTime);
repeat
SetAngle(SRL_ANGLE_HIGH);
case Lowercase(BankLoc) of
'soul wars': OpenBankChest(SRL_BANK_SW);
'castle wars': OpenBankChest(SRL_BANK_CW);
'burthrope': OpenBankChest(SRL_BANK_B);
'varrock east': OpenBankQuiet('veb');
'varrock west': OpenBankQuiet('vwb');
'falador east': OpenBankQuiet('feb');
'falador west': OpenBankQuiet('fwb');
'yanille': OpenBankFast('ynb');
'camelot': OpenBankFast('clt');
'catherby': OpenBankFast('ctb');
'draynor': OpenBankQuiet('db');
'al-kharid': OpenBankQuiet('akb');
'edgeville': OpenBankQuiet('eb');
'taverly': OpenBankFast('tavb');
'warriors guild': OpenBankFast('wgb');
'fishing guild': OpenBankFast('fgb');
'ardougne north': OpenBankFast('nab');
'ardougne south': OpenBankFast('sab');
'gnome north': OpenBankFast('ngb');
'gnome south': OpenBankFast('sgb');
end;
until WaitFunc(@BankScreen, Random(15), 1000) or WaitFunc(@PinScreen, Random(15), 1000) or (TimeFromMark(BankTime) > 25000);
if (TimeFromMark(BankTime) > 25001) then
begin
WriteLn('Failed to open the bank. Logging out your character and terminating the script.');
Logout;
TerminateScript;
end;
if PinScreen then
begin
MarkTime(BankTime);
repeat
InPin(Players[CurrentPlayer].Pin);
until BankScreen or not LoggedIn or (TimeFromMark(BankTime) > 15000);
if (TimeFromMark(BankTime) > 15000) then
begin
WriteLn('Failed to enter your bank pin. Logging out your character and terminating the script.');
Logout;
TerminateScript;
end;
end;
end;
Procedure HandleCoal; // need feedback on this. may not work.
begin
Coal := DTMFromString('mQwAAAHicY2ZgYBBmZGDgAGIpIJ7BAMFzgVhVVYYh3scUTLMC+TDMiISBAACc8gPH');
Banking;
MarkTime(BankTime);
repeat
if (InvCount > 2) then
BankDeposit
else
WithdrawItem(Coal, 'dtm', 0, 'a', []);
NumbCoal := CountItems('dtm', Coal, []);
ClearDebug;
WriteLn('You currently have ' + IntToStr(NumbCoal) + ' coal in your inventory.');
until (NumbCoal = 26) and InvFull or (TimeFromMark(BankTime) > 20000);
if (TimeFromMark(BankTime) > 20000) then
begin
WriteLn('Failed to withdraw the coal for your coal bag. Logging out your character and terminating the script.');
Logout;
TerminateScript;
end;
MarkTime(BankTime);
repeat
MouseItem(2, mouse_Right);
if WaitOptionMulti(['ill', 'Fil', 'Fill'], 2000) then
NumbCoal := CountItems('dtm', Coal, []);
until (InvCount = 2) and (NumbCoal = 0) or FindBlackChatMessage('read') or (TimeFromMark(BankTime) > 15000);
if (TimeFromMark(BankTime) > 15000) or FindBlackChatMessage('read') then
begin
WriteLn('Failed to fill the coal bag. Logging out your character and terminating the script.');
Logout;
TerminateScript;
end else
Writeln('Filled your coal bag.');
ResetOres;
FreeDTM(Coal);
end;
Function Speed(Range, Median: integer): integer;
{
Ex: Speed(7, 16);
By: tehq
Updated: 1/12/2013
}
var
LastSpeed, CurSpeed: integer;
begin
LastSpeed := MouseSpeed;
CurSpeed := (Median + RandomRange(-Range, Range));
while InRange((LastSpeed - CurSpeed), -1, 1) do
CurSpeed := (Median + RandomRange(-Range, Range));
end;
Procedure HeatOre(StartHeat, EndHeat, Ore, MagicXPGain, SmithingXPGain: integer; Gold: boolean);
{
Ex: HeatOre(3, 19, Iron, 53, 17, False);
By: tehq
Updated: 1/13/2013
}
var
LastSlot: TPoint;
z, h: integer;
begin
MagicTab;
LastSlot := ItemCoords(EndHeat);
z := (EndHeat - StartHeat) + 1;
h := 0;
MouseSpeed := Speed(7, 16);
FindHeat;
if WaitFindDTMEx(Ore, x, y, MIX1, MIY1, MIX2, MIY2, 500, 2500) then
begin
while (z > h) do
begin
Mouse(LastSlot.x - 3, LastSlot.y - 3, 13, 13, mouse_left);
if (Gold = true) then
if (Lowercase(GoldGaunts) = 'yes') then
MagicXPGain := (MagicXPGain + 34);
IncEx(Magic_XP, MagicXPGain);
IncEx(Smithing_XP, SmithingXPGain);
Dec(z);
if (z > h) then
WaitFunc(@FindHeat, 250, 3000);
end;
end;
NotFindHeat;
end;
Procedure Superheat;
begin
SuperHeatBmp := BitmapFromString(38, 29, 'meJyVlt9rHFUUx/8CQRCUim62cXdm9sednZn9Nbs7szO73R9prYiahlhtX9Q0FFusNY2/CkqtNiIoqE1JDcE3K0ZU+qbQZxFKQ9QnhSr+KCWkhRrE4oPfO2dyczO7WVs4LHdnZ8/nfs8599xjVJtGYJbXjiyE5b0uLFdpsLKXLTqq4WuPfH1vYSZbcnXbw/PI+33/TiY7pydE7AN1uznbZyU3na/eUzytjF9OmXamUMMezHprMDHCpbWsThAjXN32IRAgdWwZREUvpKwK9mC5bcgMzF9f9FENSmXHTphMFFxi4Y/YP4ycIICZAkJa4rjxy0n3uJorBTLretkjy5TqCEV/oisR3W5kM/RpOR3aOdTBEED4B0Xdc5FDx34YTnuaWcZDaM8UHc30U5YPLom9lVBHs1zvcFzZgwpEL1t0M/kaNG5vn2HTqzDUTzKbxxMeauc5NvWHVh1hksyIlsFcyOdRRY5qzfTuhWTrbeDSVlUzSgm7S0RYvH02kTGTdod/PfhtyrKhVxdE7zaI2B40Gk6TVTw158NhovkGtICYzFrsyE8hdOpKXMnG23NYQ3sqzwsY/xpA7D0j4hM1g3hmbRcURIwdWkoVKsgjiEOdj4XMYfdJdugSXx/+HkGGTB7YIJXiOPRCRZVuziMPKY45gmbM/gOiohdhiYwV78zjCZliTMQfPUFr7cA8L+D1wG5FFNANYhBSOoDpQi01yf2zw8tQB1OZ1Xj9N0G8f2QxpleMD/8KN+CMokswXrGN0GFQP/js3YAc3qBsWkgKRJkf3ODEZy8+kM4Np3KN1z7rnr8ZEt+9quxZinU/HXrsZCjz6VmkG7WNwEZSGcHJXYiI2Cd2m2g9vh6xj+JqdrizH7ijF64337yGh0OjpxS0oLHl2Oip8LVnziDvOEpbtQIhLdJsqWzSViXR2kuuzHd+jSlpdXIBRQIcDOjYg5Pshd/Z9IoRxIETJ+bUXBHdSR9I3IC6nEhtDUR0zqTlhEQo2jWROfgeFg+N/gzjSk9cYceuYg/inVj3kyGtI1I5uM8Tbp3IbwpkZDhdvm/kPHnjbt+/jgVpNPhitXlyxVyvItid22buHjoSnBEeWH6oJQSz/V6x1FF5L616an23lj9wh/mVIfkknGRcIMlEhLd7swnvLaW6S24+W9kGkR8NT6/4avcJdvQXZexH3nO+/Bcms5BHfJoBDhYupv40Tv+dbI2jzoOu3ocokshxbtjDcTT0sq/VdsIPXU/wRgiBIxNBpi2RoWkMIFLBEDG8izmxDY2pfCV5jrsygzzKOJTN50s35T1sEM9dU3Uq101EcfTkc0ELFBi/2avNTLHGXl4gP0QRn8DJxOnjK4KYfWleM8q9RzJMmdRn5GGDv+nswAHRyn5icY2IRJGJWJNYWEhcXFPybnA66r0hldtOZKoJL8dqI5N32L4XyZtwLhbC8CQUuPcY/gKBfQt1wB1NTcCs8taKWz6z7xXl0pqQ1mv4CS9k97+Kl1mlTjVz67OHBMV4Uwc0qReTDz+FkuhVRzj8hBfQUWnWuvVRJ6KaQ22C8rkRE+O252fY3DfdL27Q0VC+W73r7AU85MMkn2AdfomXohnsDeamO8XtkslKESVczdg/H6JyJfjXMIEEe8BXmpb5iP5/g1zf2bv33gznXjuY6/hQ58B/3mkwPsHy0ZERy/bl3EXKUj6Mt5XcTX1j8+GK/BR5QSz+AwriCBM=');
LoadOreDTMs;
case Lowercase(BarType) of
'steel':
begin
case Lowercase(CoalBag) of
'no': HeatOre(2, 10, Iron, 53, 17, False);
'yes': HeatOre(3, 19, Iron, 53, 17, False);
end;
end;
'iron': HeatOre(2, 28, Iron, 53, 12, False);
'silver': HeatOre(2, 28, Silver, 53, 14, False);
'gold': HeatOre(2, 28, Gold, 53, 22, True);
'mith':
begin
case Lowercase(CoalBag) of
'no': HeatOre(2, 6, Mith, 53, 30, False);
'yes': HeatOre(3, 12, Mith, 53, 30, False);
end;
end;
'addy':
begin
case Lowercase(CoalBag) of
'no': HeatOre(2, 4, Addy, 53, 37, False);
'yes': HeatOre(3, 9, Addy, 53, 37, False);
end;
end;
'rune':
begin
case Lowercase(CoalBag) of
'no': HeatOre(2, 4, Rune, 53, 50, False);
'yes': HeatOre(3, 7, Rune, 53, 50, False);
end;
end;
end;
FreeBitmap(SuperHeatBmp);
FreeOreDTMs;
end;
Procedure Progress;
var
Mxph, Sxph: integer;
begin
Mxph := Round((Magic_xp) / (GetTimeRunning / 3600000.0));
Sxph := Round((Smithing_xp) / (GetTimeRunning / 3600000.0));
ClearDebug;
WriteLn('=-=-=-=-=-=-=-= Superheater by Teh =-=-=-=-=-=-=');
WriteLn('Time Running: ' +TimeRunning);
WriteLn('Bars Superheating: ' + (BarType));
WriteLn('Magic XP Gained: ' + IntToStr(Magic_XP));
Writeln('Magic XP/Hour: ' + IntToStr(Mxph));
WriteLn('Smithing XP Gained: ' + IntToStr(Smithing_XP));
Writeln('Smithing XP/Hour: ' + IntToStr(Sxph));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
end;
Procedure Antiban;
begin
case Random(40) of
2:
begin
HoverSkill('Magic', False);
Inc(Antibans);
end;
10:
begin
HoverSkill('Random', False);
Inc(Antibans);
end;
20:
begin
Boredhuman;
Inc(Antibans);
end;
30:
begin
RandomRClick;
Inc(Antibans);
end;
39:
begin
HoverSkill('Smithing', False);
Inc(Antibans);
end;
end;
end;
Procedure Breaking;
begin
case Random(40) of
5:
begin
Wait(16000 + Random(4000));
Inc(Waits);
end;
15:
begin
Wait(12000 + Random(9000));
Inc(Waits);
end;
25:
begin
Wait(9000 + Random(14000));
Inc(Waits);
end;
35:
begin
Wait(3000 + Random(18000));
Inc(Waits);
end;
end;
end;
begin
CreateFolders;
MarkTime(StartTime);
SafeInitForm;
ClearDebug;
SafeShowFormModal;
Freeform(frmDesign);
Run;
AddOnTerminate('FinishStats');
AddOnTerminate('FreeOreDTMs');
AddOnTerminate('FreeBmps');
Banking;
BankDeposit;
repeat
case Lowercase(CoalBag) of
'yes': HandleCoal;
end;
Banking;
BankDeposit;
GetOres;
if FindNormalRandoms or FindNonInventoryRandoms or not LoggedIn then
Exit;
Antiban;
Progress;
Superheat;
if FindNormalRandoms or FindNonInventoryRandoms or not LoggedIn then
Exit;
Breaking;
Banking;
BankDeposit;
Inc(Count);
until (Count = LoadCount);
Writeln('Task completed!');
end.