SRL Archive - Archive

tehq - SRL Member Application


tehq

2012-04-10 20:06:50

How Long have You Played Runescape?
6 Year(s)


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
Visual Basic, Matlab, and Python. Fairly knowledgeable in Pascal now.


Are you a member of any other communities?
None


Tell us about yourself…
From: tehq
Hello, my name is Eric and I am 21 years old.. My birthday is in 4 days! I am a fourth year university student. This is my second time applying for SRL members. The last time I applied was on Feb 19, 2012. I believe I've improved my scripting abilities a lot since I last applied. I've been dedicating most of my free time to improving my public scripts (links in signature). I've included two private versions of my public scripts for this application. I apologize for the length.



Please show us one (or multiple) of your scripts.
program TehSuperheat;                         { v 2.1 - Members only }
{$DEFINE SMART} { }
{$DEFINE SRL5} { }
{$i SRL/srl.simba} { }


var
SuperHeatDTM, Sx, Sy, X, Y, Count, Magic_XP, Smithing_XP, Silver, Coal, Iron, Gold, Addy,
Rune, Mith, Mxph, Sxph, T, J, Antibans, Waits, NumbCoal, NumbIron, NumbGold, NumbMith,
NumbAddy, NumbRune, NumbSilver : integer;
{ Form vars }
LoadCount, BarType, CoalBag, GoldGaunts, BankLoc, Server1, SHI : integer;
frmDesign : TForm;
BeginButton : TButton;
TitleLabel, UserLabel, PassLabel, PinLabel, InventoryLabel, ServerLabel, StatsUserLabel,
StatsPassLabel, CoalBagLabel, BarLabel, GGLabel, BankLabel : TLabel;
User, Pass, BankPin, Server, Inventory, StatsUser, StatsPass: TEdit;
User1, Pass1, BankPin1, StatsUser1, StatsPass1 : String;
ListBars, CBList, GGList, BLList : TListBox;
ImageSH : TImage;

Procedure DeclarePlayers;

begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

with Players[0] do
begin
Players[0].Name := User1;
Players[0].Pass := Pass1;
Players[0].BoxRewards := ['amp'];
Players[0].LampSkill := SKILL_SMITHING;
Players[0].Pin := BankPin1;
Players[0].Active := True;
end;
end;

Procedure Run;

begin
Smart_Members := False;
Smart_Server := Server1;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
SetupSRLStats(753, StatsUser1, StatsPass1);
DeclarePlayers;
LoginPlayer;
Count := 0;
Wait(500+Random(200));
if FindNormalRandoms or FindNonInventoryRandoms then
Exit;
Antibans := 0;
Waits := 0;
end;

Procedure ButtonClick(Sender: TObject);

begin
frmDesign.ModalResult := mrOk;
User1 := User.TEXT;
Pass1 := Pass.TEXT;
BankPin1 := BankPin.TEXT;
StatsUser1 := StatsUser.TEXT;
StatsPass1 := StatsPass.TEXT;
Server1 := StrToInt(Server.TEXT);
LoadCount := StrToInt(Inventory.TEXT);
BarType := ListBars.ITEMINDEX;
CoalBag := CBList.ITEMINDEX;
GoldGaunts := GGList.ITEMINDEX;
BankLoc := BLList.ITEMINDEX;
ClearDebug;
WriteLn('Your bank location is: '+IntToStr(BankLoc));
WriteLn('You chose: '+IntToStr(GoldGaunts) +' for gold gaunlets');
WriteLn('You chose: '+IntToStr(CoalBag) +' for coal bag');
WriteLn('You chose: '+IntToStr(BarType)+' bars');
WriteLn('Will run for: '+IntToStr(LoadCount)+' inventories on server: '+IntToStr(Server1));
Wait(RandomRange(2000,2100));
ClearDebug;
WriteLn('Thanks for using Teh''s Superheater, please leave feedback');
FreeBitmap(SHI);
end;

Procedure InitForm;

begin
frmDesign := CreateForm;
frmDesign.Left := 480;
frmDesign.Top := 250;
frmDesign.Width := 500;
frmDesign.Height := 400;
frmDesign.Caption := 'Tehq''s Superheater';
frmDesign.Font.Color := ClRed;
frmDesign.Font.Name := 'Calibri';
frmDesign.Color := ClBlack;

BeginButton := TButton.Create(FrmDesign);
BeginButton.Parent := FrmDesign;
BeginButton.Left := 380;
BeginButton.Top := 250;
BeginButton.Height := 30;
BeginButton.Width := 100;
BeginButton.Caption := 'Begin Script';
BeginButton.OnClick := @ButtonClick;

TitleLabel := TLabel.Create(FrmDesign);
TitleLabel.Parent := FrmDesign;
TitleLabel.Left := 10;
TitleLabel.Top := 8;
TitleLabel.Caption := 'Tehq''s Superheater';
TitleLabel.Font.Size := 18;
TitleLabel.Font.Color := ClRed;
TitleLabel.Font.Name := 'Calibri';

User := TEdit.Create(FrmDesign);
User.Parent := FrmDesign;
User.Top := 60;
User.Left := 75;
User.Width := 125;
User.Height := 20;
User.Text := 'Username';
UserLabel := TLabel.Create(FrmDesign);
UserLabel.Parent := FrmDesign;
UserLabel.Top := 60;
UserLabel.Left := 5;
UserLabel.Caption := 'Username';
UserLabel.FONT.Color := ClWhite;

StatsUser := TEdit.Create(FrmDesign);
StatsUser.Parent := FrmDesign;
StatsUser.Top := 250;
StatsUser.Left := 110;
StatsUser.Width := 160;
StatsUser.Height := 20;
StatsUser.Text := '';
StatsUserLabel := TLabel.Create(FrmDesign);
StatsUserLabel.Parent := FrmDesign;
StatsUserLabel.Top := 250;
StatsUserLabel.Left := 5;
StatsUserLabel.Caption := 'SRL Stats User';
StatsUserLabel.FONT.Color := ClWhite;

StatsPass := TEdit.Create(FrmDesign);
StatsPass.Parent := FrmDesign;
StatsPass.Top := 285;
StatsPass.Left := 110;
StatsPass.Width := 160;
StatsPass.Height := 20;
StatsPass.Text := '';
StatsPassLabel := TLabel.Create(FrmDesign);
StatsPassLabel.Parent := FrmDesign;
StatsPassLabel.Top := 285;
StatsPassLabel.Left := 5;
StatsPassLabel.Caption := 'SRL Stats Pass';
StatsPassLabel.FONT.Color := ClWhite;

Pass := TEdit.Create(FrmDesign);
Pass.Parent := FrmDesign;
Pass.Top := 90;
Pass.Left := 75;
Pass.Width := 125;
Pass.Height := 20;
Pass.Text := 'Password';
PassLabel := TLabel.Create(FrmDesign);
PassLabel.Parent := FrmDesign;
PassLabel.Top := 90;
PassLabel.Left := 5;
PassLabel.Caption := 'Password';
PassLabel.FONT.Color := ClWhite;

BankPin := TEdit.Create(FrmDesign);
BankPin.Parent := FrmDesign;
BankPin.Top := 150;
BankPin.Left := 75;
BankPin.Width := 125;
BankPin.Height := 20;
BankPin.Text := '';
BankPin.MaxLength := 4;
PinLabel := TLabel.Create(FrmDesign);
PinLabel.Parent := FrmDesign;
PinLabel.Top := 150;
PinLabel.Left := 5;
PinLabel.Caption := 'Bank Pin';
PinLabel.FONT.Color := ClWhite;

Server := TEdit.Create(FrmDesign);
Server.Parent := FrmDesign;
Server.Top := 180;
Server.Left := 75;
Server.Width := 125;
Server.Height := 20;
Server.Text := '0';
ServerLabel := TLabel.Create(FrmDesign);
ServerLabel.Parent := FrmDesign;
ServerLabel.Top :=180;
ServerLabel.Left := 5;
ServerLabel.Caption := 'Server';
ServerLabel.FONT.Color := ClWhite;

Inventory := TEdit.Create(FrmDesign);
Inventory.Parent := FrmDesign;
Inventory.Top := 210;
Inventory.Left := 75;
Inventory.Width := 125;
Inventory.Height := 20;
Inventory.TEXT := '500';
InventoryLabel := TLabel.Create(FrmDesign);
InventoryLabel.Parent := FrmDesign;
InventoryLabel.Top := 210;
InventoryLabel.Left := 5;
InventoryLabel.Caption := '# Invs';
InventoryLabel.FONT.Color := ClWhite;

ListBars := TListBox.Create(FrmDesign);
ListBars.Parent := FrmDesign;
ListBars.Top := 60;
ListBars.Left := 220;
ListBars.Width := 120;
ListBars.Height := 140;
ListBars.Items.Add('Gold');
ListBars.Items.Add('Iron');
ListBars.Items.Add('Steel');
ListBars.Items.Add('Mith');
ListBars.Items.Add('Addy');
ListBars.Items.Add('Rune');
ListBars.Items.Add('Silver');
BarLabel := TLabel.Create(FrmDesign);
BarLabel.Parent := FrmDesign;
BarLabel.Top := 35;
BarLabel.Left := 217;
BarLabel.Caption := 'What type of bars?';
BarLabel.FONT.Color := ClWhite;

CBList := TListBox.Create(FrmDesign);
CBList.Parent := FrmDesign;
CBList.Top := 328;
CBList.Left := 110;
CBList.Width := 50;
CBList.Height := 44;
CBList.Items.Add('Yes');
CBList.Items.Add('No');
CoalBagLabel := TLabel.Create(FrmDesign);
CoalBagLabel.Parent := FrmDesign;
CoalBagLabel.Top := 340;
CoalBagLabel.Left := 5;
CoalBagLabel.Caption := 'Use coal bag?';
CoalBagLabel.FONT.Color := ClWhite;

BLList := TListBox.Create(FrmDesign);
BLList.Parent := FrmDesign;
BLList.Top := 320;
BLList.Left := 370;
BLList.Width := 115;
BLList.Height := 60;
BLList.Items.Add('Soul Wars');
BLList.Items.Add('Castle Wars');
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');
BankLabel := TLabel.Create(FrmDesign);
BankLabel.Parent := FrmDesign;
BankLabel.Top := 295;
BankLabel.Left := 370;
BankLabel.Caption := 'Where to bank?';
BankLabel.FONT.Color := ClWhite;

GGList := TListBox.Create(FrmDesign);
GGList.Parent := FrmDesign;
GGList.Top := 328;
GGList.Left := 307;
GGList.Width := 50;
GGList.Height := 44;
GGList.Items.Add('Yes');
GGList.Items.Add('No');
GGLabel := TLabel.Create(FrmDesign);
GGLabel.Parent := FrmDesign;
GGLabel.Top := 340;
GGLabel.Left := 170;
GGLabel.Caption := 'Use gold gauntlets?';
GGLabel.FONT.Color := ClWhite;

ImageSH := TImage.Create(FrmDesign);
ImageSH.Parent := FrmDesign;
ImageSH.Left := 370;
ImageSH.Top := 50;
ImageSH.Width := 120;
ImageSH.Height := 186;
SHI := BitmapFromString(120, 186, 'meJztna+X4zrShi8MDAw1NAw0' +
'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' + {superheating bmp}
'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' +
'XP8Fot5h/A==');
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;

Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;

begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');

TPH := High(TP);
for I := 0 to TPH do
begin

TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin

Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1, 8388736);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
FreeBitmap(Pic);

end;

Procedure OnSmart;

begin
Mxph := round((Magic_xp) / (GetTimeRunning / 3600000.0));
Sxph := round((Smithing_xp)/ (GetTimeRunning / 3600000.0));

PrintOnSmart(['Version: 2.0 by Tehq','',''+'Smithing XP Gained: ' +IntToStr(Smithing_XP),'Magic XP Gained: ' +IntToStr(Magic_XP),'',
''+'Smithing XP/Hour: ' +IntToStr(Sxph), ''+'Magic XP/Hour: ' +IntToStr(Mxph),'',
''+MsToTime(GetTimeRunning, Time_Abbrev),''+'Antibans done: ' +IntToStr(Antibans)
,''+'Mini breaks taken: ' +IntToStr(Waits)],Point(32,10), 16777215);
end;

Procedure JE4;

begin
if (J = 4) then
begin
WriteLn('Withdrawing failed, logging out');
repeat
Logout;
TerminateScript;
until (not LoggedIn);
end;
end;

Procedure JE3;

begin
if (J = 3) then
begin
WriteLn('Opening bank failed, logging out');
repeat
Logout;
TerminateScript;
until (not LoggedIn);
end;
end;

Procedure BankDeposit;

begin
case CoalBag of

1 :
begin
T := 0;
repeat
Inc(T);
Deposit(2, 28, True);
until ((invcount = 1) or (T = 7));
if (T = 7) then
begin
WriteLn('Depositing failed, logging out');
repeat
Logout;
TerminateScript;
until (not LoggedIn);
end;
T := 0;
end;

0 :
begin
J := 0;
repeat
Inc(J);
Deposit(3, 28, True);
until ((invcount = 2) or (J = 7));
if (J = 7) then
begin
WriteLn('Depositing failed, logging out');
repeat
Logout;
TerminateScript;
until (not LoggedIn);
end;
J := 0;
end;
end;
end;

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 ResetOres;

begin
NumbCoal := 0;
NumbIron := 0;
NumbGold := 0;
NumbMith := 0;
NumbAddy := 0;
NumbRune := 0;
NumbSilver := 0;
end;

Procedure MagicTab;

begin
Gametab(tab_magic);
end;

Procedure ResetJ;

begin
J := 0;
end;

Procedure FindHeat;

var
Time: Integer;

begin
MarkTime(Time);
repeat
wait(RandomRange(1,2));
until (FindDTM(SuperHeatDTM, sx, sy, MIX1, MIY1, MIX2, MIY2)) or ((TimeFromMark(Time) > 1080));

if (not FindDTM(SuperHeatDTM, sx, sy, MIX1, MIY1, MIX2, MIY2)) or ((TimeFromMark(Time) > 1080)) then
begin
Magictab;
end;
Mouse(sx, sy, 6, 6, mouse_left);
end;

Procedure NotFindHeat;

begin
ResetJ;
if FindBlackChatMessage('uperheat') then
repeat
Inc(J);
Writeln('Can''t superheat that!');
Logout;
TerminateScript;
until ((not LoggedIn) or (J = 4));
if (J = 4) then
begin
WriteLn('Can''t superheat that, logging out');
Logout;
TerminateScript;
end;
ResetJ;
end;

Procedure GetOres;

begin
LoadOreDTMs;

case CoalBag of
0 :
begin
case Bartype of

2 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(iron, 'dtm', 17, 'r', [3]);
wait(RandomRange(950, 1000));
NumbIron := CountItems('dtm', iron, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbIron) +' iron ores');
until ((NumbIron > 14) or (J = 4));
JE4;
ResetJ;
end;

3 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(mith, 'dtm', 10, 'r', [3]);
wait(RandomRange(950, 1000));
NumbMith := CountItems('dtm', mith, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbMith) +' mith ores');
until ((NumbMith > 7) or (J = 4));
JE4;
ResetJ;
end;
{10}
4 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(addy, 'dtm', 7, 'r', [3]);
wait(RandomRange(950, 1000));
NumbAddy := CountItems('dtm', addy, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbAddy) +' addy ores');
until ((NumbAddy > 5) or (J = 4));
JE4;
ResetJ;
end;
{7}
5 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(rune, 'dtm', 5, 'r', [3]);
wait(RandomRange(950, 1000));
NumbRune := CountItems('dtm', rune, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbRune) +' rune ores');
until ((NumbRune > 3) or (J = 4));
JE4;
ResetJ;
end;
{5}
6 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(silver, 'dtm', 0, 'r', [3]);
wait(RandomRange(950, 1000));
NumbSilver := CountItems('dtm', silver, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbSilver) +' silver ores');
until ((NumbSilver > 20) or (J = 4));
JE4;
ResetJ;
end;
{all} {ores}
0 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(gold, 'dtm', 0, 'r', [3]);
wait(RandomRange(950, 1000));
NumbGold := CountItems('dtm', gold, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbGold) +' gold ores');
until ((NumbGold > 20) or (J = 4));
JE4;
ResetJ;
end;
{all}
1 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(iron, 'dtm', 0, 'r', [3]);
wait(RandomRange(950, 1000));
NumbIron := CountItems('dtm', iron, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbIron) +' iron ores');
until ((NumbIron > 20) or (J = 4));
JE4;
ResetJ;
end; {all}
end;
end;

1 :
begin
case Bartype of

2 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(iron, 'dtm', 9, 'r', [3]);
wait(RandomRange(950, 1000));
NumbIron := CountItems('dtm', iron, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbIron) +' iron ores');
until ((NumbIron > 7) or (J = 4));
JE4;
ResetJ;
end;

3 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(mith, 'dtm', 5, 'r', [3]);
wait(RandomRange(950, 1000));
NumbMith := CountItems('dtm', mith, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbMith) +' mith ores');
until ((NumbMith > 3) or (J = 4));
JE4;
ResetJ;
end;
{10}
4 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(addy, 'dtm', 3, 'r', [3]);
wait(RandomRange(950, 1000));
NumbAddy := CountItems('dtm', addy, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbAddy) +' addy ores');
until ((NumbAddy > 2) or (J = 4));
JE4;
ResetJ;
end;
{7}
5 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(rune, 'dtm', 3, 'r', [3]);
Wait(RandomRange(950, 1000));
NumbRune := CountItems('dtm', rune, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbRune) +' rune ores');
until ((NumbRune > 2) or (J = 4));
JE4;
ResetJ;
end;
{5}
6 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(silver, 'dtm', 0, 'r', [3]);
wait(RandomRange(950, 1000));
NumbSilver := CountItems('dtm', silver, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbSilver) +' silver ores');
until ((NumbSilver > 24) or (J = 4));
JE4;
ResetJ;
end;
{all} {ores}
0 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(gold, 'dtm', 0, 'r', [3]);
wait(RandomRange(950, 1000));
NumbGold := CountItems('dtm', gold, []);
wait(RandomRange(300, 400));
WriteLn('There are: ' +IntToStr(NumbGold) +' gold ores');
until ((NumbGold > 24) or (J = 4));
JE4;
ResetJ;
end;
{all}
1 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(iron, 'dtm', 0, 'r', [3]);
wait(RandomRange(950, 1000));
NumbIron := CountItems('dtm', iron, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbIron) +' iron ores');
until ((NumbIron > 24) or (J = 4));
JE4;
ResetJ;
end; {all}
end;
end;
end;

Wait(600+Random(200));
if (invfull) then
closebank;

if (not invfull) then
begin
case CoalBag of

0 :
begin
case BarType of
2 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(coal, 'dtm', 8, 'a', [3]);
wait(RandomRange(950, 1000));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbCoal) +' coal');
until ((NumbCoal > 14) or (J = 4));
JE4;
ResetJ;
end;
{8}
3 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(coal, 'dtm', 14, 'a', [3]);
wait(RandomRange(950, 1000));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbCoal) +' coal');
until ((NumbCoal > 9) or (J = 4));
JE4;
ResetJ;
end;
{14}
4 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(coal, 'dtm', 16, 'a', [3]);
wait(RandomRange(950, 1000));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbCoal) +' coal');
until ((NumbCoal > 8) or (J = 4));
JE4;
ResetJ;
end;
{16} {coal}
5 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(coal, 'dtm', 14, 'a', [3]);
wait(RandomRange(950, 1000));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbCoal) +' coal');
until ((NumbCoal > 10) or (J = 4));
JE4;
ResetJ;
end; {14}
end;
end;

1 :
begin
case BarType of

2:
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(coal, 'dtm', 0, 'a', [3]);
wait(RandomRange(950, 1000));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbCoal) +' coal');
until ((NumbCoal > 13) or (J = 4));
JE4;
ResetJ;
end;
{all}
3 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(coal, 'dtm', 20, 'a', [3]);
wait(RandomRange(950, 1000));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbCoal) +' coal');
until ((NumbCoal > 3) or (J = 4));
JE4;
ResetJ;
end;
{20} {coal}
4 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(coal, 'dtm', 18, 'a', [3]);
wait(RandomRange(950, 1000));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbCoal) +' coal');
until ((NumbCoal > 5) or (J = 4));
JE4;
ResetJ;
end;
{18}
5 :
begin
ResetJ;
repeat
Inc(J);
WithdrawItem(coal, 'dtm', 0, 'a', [3]);
wait(RandomRange(950, 1000));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
WriteLn('You have: ' +IntToStr(NumbCoal) +' coal');
until ((NumbCoal > 18) or (J = 4));
JE4;
ResetJ;
end; {all}
end;
end;
end;
Wait(400+Random(100));
closebank;
end;
FreeOreDTMs;
ResetOres;
end;

Procedure Banking;

begin
if FindNormalRandoms or FindNonInventoryRandoms or (not(LoggedIn)) then
Exit;
ResetJ;
repeat
Inc(J);
SetAngle(SRL_ANGLE_HIGH);
Case Bankloc of
0 : OpenBankChest(SRL_BANK_SW);
1 : OpenBankChest(SRL_BANK_CW);
3 : OpenBankFast('vwb');
2 : OpenBankFast('veb');
4 : OpenBankFast('feb');
5 : OpenBankFast('fwb');
7 : OpenBankFast('clt');
8 : OpenBankFast('ctb');
6 : OpenBankFast('ynb');
end;
Wait(Random(100));
until ((BankScreen) or (PinScreen) or (J = 3));
JE3;
ResetJ;

if (PinScreen) then
begin
ResetJ;
repeat
Inc(J);
InPin(Players[CurrentPlayer].Pin);
Wait(Random(300));
until (BankScreen or (J = 4));
if (J = 4) then
begin
repeat
Logout;
TerminateScript;
until (not LoggedIn);
WriteLn('Couldn''t enter pin, logged out');
end;
end;
end;

Procedure CoalToInv;

begin
Coal:= DTMFromString('mQwAAAHicY2ZgYBBmZGDgAGIpIJ7BAMFzgVhVVYYh3scUTLMC+TDMiISBAACc8gPH');

Case Coalbag of
0 :
begin
Banking;
ResetJ;
repeat
Inc(J);
WithdrawItem(coal, 'dtm', 0, 'a', [3]);
wait(RandomRange(1000, 1100));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
WriteLn('You have: '+IntToStr(NumbCoal) +' coal');
until (((NumbCoal > 20) and (Invfull)) or (J = 4));
if (J = 4) then
begin
repeat
Logout;
TerminateScript;
until (not LoggedIn);
WriteLn('Couldn''t withdraw coal to inv, logging out');
end;
end;
end;
ResetOres;
FreeDTM(Coal);
end;

Procedure CoalInBag;

begin
Coal:= DTMFromString('mQwAAAHicY2ZgYBBmZGDgAGIpIJ7BAMFzgVhVVYYh3scUTLMC+TDMiISBAACc8gPH');

Case Coalbag of
0 :
begin
ResetJ;
repeat
Inc(J);
MouseItem(2, Mouse_Right);
WaitOption('ill', 800);
Wait(RandomRange(800, 900));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
until (((InvCount = 2) and (NumbCoal = 0)) or (FindBlackChatMessage('read')) or (J = 4));
if (J = 4) then
begin
repeat
Logout;
TerminateScript;
until (not LoggedIn);
WriteLn('Couldn''t fill coal bag, logged out');
end;
WriteLn('Filled coal bag.');
end;
end;
ResetJ;
FreeDTM(Coal);
ResetOres;
end;

Procedure Superheat;

var
I : integer;

begin
if FindNormalRandoms or FindNonInventoryRandoms or (not LoggedIn) then
Exit;

SuperHeatDTM := DTMFromString('mbQAAAHicY2VgYJjLxMAwE4inA/EiIF4MxOWMDAxlQFwHxDVAXAnEsoxMDHqMzAx2TMxgGoSxAUYsGAwAHzIGhQ==');
LoadOreDTMs;

case BarType of

2 :

case coalbag of
1 :
begin
MagicTab;
For I := 2 to 10 do
begin
FindHeat;
if ExistsItemDTM(iron, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
IncEx(Smithing_xp, 17);
stats_IncVariable('Magic EXP (Gained)', 53);
stats_IncVariable('Smithing EXP (Gained)', 17);
end;
end;

0 :
begin
MagicTab;
For I := 3 to 19 do
begin
Findheat;
if ExistsItemDTM(iron, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
IncEx(Smithing_xp, 17);
stats_IncVariable('Magic EXP (Gained)', 53);
stats_IncVariable('Smithing EXP (Gained)', 17);
end;
end;
end;

1 :
begin
MagicTab;
for I := 2 to 28 do
begin
FindHeat;
if ExistsItemDTM(iron, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
IncEx(Smithing_xp, 12);
stats_IncVariable('Magic EXP (Gained)', 53);
stats_IncVariable('Smithing EXP (Gained)', 12);
end;
end;

6 :
begin
MagicTab;
for I := 2 to 28 do
begin
FindHeat;
if ExistsItemDTM(silver, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
IncEx(Smithing_xp, 14);
stats_IncVariable('Magic EXP (Gained)', 53);
stats_IncVariable('Smithing EXP (Gained)', 14);
end;
end;

0 :
begin
Magictab;
for I := 2 to 28 do
begin
FindHeat;
if ExistsItemDTM(gold, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
stats_IncVariable('Magic EXP (Gained)', 53);
begin
case GoldGaunts of
1 :
begin
IncEx(Smithing_xp, 22);
stats_IncVariable('Smithing EXP (Gained)', 22);
end;

0 :
begin
IncEx(Smithing_xp, 56);
stats_IncVariable('Smithing EXP (Gained)', 56);
end;
end;
end;
end;
end;
3 :
case coalbag of
1 :
begin
MagicTab;
for I := 2 to 6 do
begin
FindHeat;
if ExistsItemDTM(mith, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
IncEx(Smithing_xp, 30);
stats_IncVariable('Magic EXP (Gained)', 53);
stats_IncVariable('Smithing EXP (Gained)', 30);
end;
end;

0 :
begin
MagicTab;
for I := 3 to 12 do
begin
FindHeat;
if ExistsItemDTM(mith, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
IncEx(Smithing_xp, 30);
stats_IncVariable('Magic EXP (Gained)', 53);
stats_IncVariable('Smithing EXP (Gained)', 30);
end;
end;
end;

4 :
case CoalBag of

1 :
begin
MagicTab;
for I := 2 to 4 do
begin
FindHeat;
if ExistsItemDTM(addy, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
IncEx(Smithing_xp, 37);
stats_IncVariable('Magic EXP (Gained)', 53);
stats_IncVariable('Smithing EXP (Gained)', 37);
end;
end;

0 :
begin
MagicTab;
for I := 3 to 9 do
begin
FindHeat;
if ExistsItemDTM(addy, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
IncEx(Smithing_xp, 37);
stats_IncVariable('Magic EXP (Gained)', 53);
stats_IncVariable('Smithing EXP (Gained)', 37);
end;
end;
end;

5 :
case CoalBag of

1 :
begin
MagicTab;
for I := 2 to 4 do
begin
FindHeat;
if ExistsItemDTM(rune, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
IncEx(Smithing_xp, 50);
stats_IncVariable('Magic EXP (Gained)', 53);
stats_IncVariable('Smithing EXP (Gained)', 50);
end;
end;

0 :
begin
MagicTab;
for I := 3 to 7 do
begin
FindHeat;
if ExistsItemDTM(rune, x, y) then
Mouse(x, y, 15, 15, mouse_left);
NotFindHeat;
IncEx(Magic_xp, 53);
IncEx(Smithing_xp, 50);
stats_IncVariable('Magic EXP (Gained)', 53);
stats_IncVariable('Smithing EXP (Gained)', 50);
end;
end;
end;
end;
FreeDTM(SuperHeatDTM);
FreeOreDTMs;
end;

Procedure Commit;

begin
Stats_Commit;
end;

Procedure Proggy;

var
mxph, sxph: integer;

begin
Mxph := round((Magic_xp) / (GetTimeRunning / 3600000.0));
Sxph := round((Smithing_xp) / (GetTimeRunning / 3600000.0));
ClearDebug;

WriteLn('=-=-=-=-=-=-=-= Superheater by TehQ =-=-=-=-=-=-=');
WriteLn(' Time Running: '+TimeRunning);
WriteLn(' Bars Superheated: ' +IntToStr(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(' Antibans done: ' +IntToStr(Antibans));
WriteLn(' Mini-breaks taken: ' +IntToStr(Waits));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-');
Commit;
end;

Procedure Antiban;

begin
Wait(300+RandomRange(250,300));

Case Random(40) Of
5:
begin
HoverSkill('magic', False);
Antibans := (Antibans + 1);
end;

10:
begin
HoverSkill('random', False);
Antibans := (Antibans + 1);
end;

20:
begin
Boredhuman;
Antibans := (Antibans + 1);
end;

30:
begin
RandomRClick;
Antibans := (Antibans + 1);
end;

35:
begin
HoverSkill('smithing', False);
Antibans := (Antibans + 1);
end;
end;
end;

Procedure Breaking;

begin

Case random(40) Of
5:
begin
Wait(16000+Random(4000));
Waits := (Waits + 1);
end;

15:
begin
Wait(12000+Random(9000));
Waits := (Waits + 1);
end;

25:
begin
Wait(9000+Random(14000));
Waits := (Waits + 1);
end;

35:
begin
Wait(3000+Random(18000));
Waits := (Waits + 1);
end;
end;
end;

begin
SafeInitForm;
SafeShowFormModal;
Freeform(frmdesign);
Run;
begin
ClickNorth(SRL_ANGLE_HIGH);
Banking;
BankDeposit;
repeat
while (LoggedIn and (not(FindNormalRandoms) or (FindNonInventoryRandoms))) do
begin
CoalToInv;
CoalInBag;
Banking;
BankDeposit;
GetOres;
Antiban;
Proggy;
OnSmart;
Superheat;
Breaking;
Banking;
BankDeposit;
Inc(Count);
end;
until ((Count = Loadcount) or (not LoggedIn) or (FindNormalRandoms) or (FindNonInventoryRandoms));
WriteLn('Task completed!');
end;
end.

program TehF2PQuester;
{ V X.0 - Members only }
{$DEFINE SMART} { }
{$DEFINE SRL5}
{$i SRL/srl.simba}
{$i sps/sps.simba}

const
Method = 'walking'; { walking or teleport - Only works with RuneMysteries }
Quest = 'RuneMysteries'; { RuneMysteries, RestlessGhost }
Server = 0 ;

var
All : integer;

Procedure DeclarePlayers;

begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

with Players[0] do
begin
Name := '';
Pass := '';
Nick := ''
BoxRewards := ['amp'];
LampSkill := SKILL_ATTACK;
Pin := '';
Active := True;
end;
end;

Procedure Run;

begin
Smart_Members := True;
Smart_Server := Server;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
LoginPlayer;
Wait(500+Random(200)); {check}
if FindNormalRandoms or FindNonInventoryRandoms then
exit;
SetAngle(SRL_ANGLE_HIGH);
SetRun(true);
SPS_Setup(RUNESCAPE_SURFACE, ['10_9','10_8','10_7','11_7','11_9','12_9','11_10','10_10','12_7','11_8']);
end;

Procedure Greetings;

begin
ClearDebug;
WriteLn('');
WriteLn('=-=-=-=-=-=-=-= F2P Questing by TehQ =-=-=-=-=-=-=');
WriteLn('');
Writeln('Doing quest: ' +(Quest));
WriteLn('');
WriteLn('Method: ' +(Method));
WriteLn('');
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-');
WriteLn('');
end;

Procedure ResetAll;

begin
All := 0;
end;

Procedure IncAll;

begin
Inc(All);
end;


{----------------------------------------------- WALKING ---------------------------------------}


Procedure ToTower;
{check}
var
WalkToTower: TPointArray;

begin
WalkToTower := [Point(4664, 3819), Point(4679, 3819), Point(4694, 3801), Point(4695, 3788), Point(4721, 3784), Point(4739, 3783), Point(4774, 3795), Point(4780, 3842), Point(4809, 3888), Point(4793, 3944), Point(4766, 3985), Point(4730, 4035), Point(4670, 4043), Point(4613, 4044), Point(4556, 4042), Point(4511, 4012), Point(4476, 3967), Point(4457, 3920), Point(4424, 3878), Point(4384, 3840), Point(4337, 3813), Point(4292, 3825), Point(4289, 3884), Point(4289, 3941), Point(4271, 3988)];
SPS_WalkPath(WalkToTower);
WriteLn('Walking to Wizards Tower');
WriteLn('' +TimeRunning);
end;

Procedure WalkToDoor2;

var
ToDoor2: TPoint;

begin
SetAngle(SRL_ANGLE_HIGH);
Wait(RandomRange(480,530));
ToDoor2 := (Point(4268, 4011));
SPS_WalkToPos(ToDoor2);
WriteLn('' +TimeRunning);
end;

Procedure ToGrave;

var {check}
Grave1: TPointArray;
Grave2: TPoint;

begin
Grave1 := [Point(4798, 3823), Point(4780, 3825), Point(4780, 3835), Point(4798, 3868), Point(4813, 3880)];
WriteLn('Walking to Grave');
SPS_WalkPath(Grave1);
Wait(RandomRange(1000,1100));
Grave2 := Point(4828, 3888);
SPS_WalkToPos(Grave2);
WriteLn('' +TimeRunning);
end;

Procedure ToMine;

var {check}
WalkMine: TPointArray;

begin
WalkMine := [Point(4815, 3891), Point(4802, 3926), Point(4791, 3980), Point(4782, 4022), Point(4781, 4073)];
WriteLn('Walking to Mine');
SPS_WalkPath(WalkMine);
Wait(RandomRange(1000,1100));
WriteLn('' +TimeRunning);
end;

Procedure ToVarrock;

var {check}
WalkToVarrock: TPointArray;

begin
WalkToVarrock := [Point(4723, 3788), Point(4763, 3782), Point(4764, 3738), Point(4764, 3682), Point(4760, 3627), Point(4792, 3570), Point(4789, 3509), Point(4790, 3449), Point(4790, 3393), Point(4796, 3333), Point(4749, 3299), Point(4736, 3241), Point(4707, 3196), Point(4684, 3145), Point(4683, 3095), Point(4734, 3091), Point(4785, 3095), Point(4837, 3090), Point(4846, 3051)];
WriteLn('Walking to Varrock');
SPS_WalkPath(WalkToVarrock);
WriteLn('' +TimeRunning);
end;

Procedure RocksToGrave;

var {check}
Back2Grave: TPointArray;
Grave2: TPoint;

begin
Back2Grave := [Point(4792, 4059), Point(4796, 4025), Point(4795, 3982), Point(4804, 3936), Point(4813, 3902), Point(4830, 3890)];
WriteLn('Walking back to Grave');
SPS_WalkPath(Back2Grave);
Wait(RandomRange(1000,1100));
Grave2 := Point(4828, 3888);
SPS_WalkToPos(Grave2);
WriteLn('' +TimeRunning);
end;

Procedure Bobshop;

var {check}
ToBobs: TPointArray;
IntoBob: TPoint;

begin
ToBobs := [Point(4727, 3784), Point(4775, 3799), Point(4759, 3847)];
WriteLn('Walking to Bobs');
SPS_WalkPath(ToBobs);
Wait(RandomRange(1000,1100));
IntoBob := Point(4751, 3848);
SPS_WalkToPos(IntoBob);
WriteLn('' +TimeRunning);
end;

Procedure ToChurch;

var {check}
WalkToChurch: TPointArray;

begin
WalkToChurch := [Point(4728, 3786), Point(4745, 3784), Point(4760, 3785), Point(4771, 3794), Point(4775, 3809), Point(4782, 3820), Point(4800, 3822), Point(4808, 3823)];
WriteLn('Walking to Church');
SPS_WalkPath(WalkToChurch);
WriteLn('' +TimeRunning);
end;

Procedure WalkToHut;

var {check}
ToHut: TPointArray;

begin
ToHut := [Point(4799, 3824), Point(4777, 3828), Point(4783, 3840), Point(4783, 3852), Point(4800, 3873), Point(4810, 3893), Point(4800, 3924), Point(4790, 3954), Point(4783, 3967), Point(4761, 4006), Point(4724, 4035), Point(4692, 4044), Point(4665, 4050)];
WriteLn('Walking to Hut');
SPS_WalkPath(ToHut);
WriteLn('' +TimeRunning);
end;

Procedure IntoHut;

var {check}
InHut: TPoint;

begin
InHut := Point(4663, 4067);
WriteLn('Walking into Hut');
SPS_WalkToPos(InHut);
WriteLn('' +TimeRunning);
end;

Procedure VarrockToShop;

var {check}
ToShop: TPointArray;

begin
ToShop := [Point(4684, 2951), Point(4678, 3006), Point(4682, 3062), Point(4719, 3090), Point(4766, 3094), Point(4813, 3095), Point(4842, 3082), Point(4847, 3047)];
Writeln('Walking to Magic Shop');
SPS_WalkPath(ToShop);
WriteLn('' +TimeRunning);
end;

Procedure InsideShop;

var
Shop: TPoint;
begin
SetAngle(SRL_ANGLE_HIGH);
Wait(RandomRange(600,700));
Shop := Point(4846, 3049);
SPS_WalkToPos(Shop);
WriteLn('' +TimeRunning);
end;

Procedure WalkToFather;

var
Father: TPoint;

begin
SetAngle(SRL_ANGLE_HIGH);
Wait(RandomRange(1500,1600));
Father := Point(4811, 3834);
SPS_WalkToPos(Father);
WriteLn('' +TimeRunning);
end;

Procedure CastleToLumby;

var {check}
CastleToLumb: TPointArray;

begin
CastleToLumb := [Point(4667, 3749), Point(4696, 3766), Point(4734, 3784)];
Writeln('Walking to Lumbridge');
SPS_WalkPath(CastleToLumb);
WriteLn('' +TimeRunning);
end;


{----------------------------------- TELEPORTS -------------------------------}

Procedure FindTeleportVarrock;

var
Time, sx, sy, TeleportDTM : Integer;
Varrock : TBox; {check}

begin
Varrock := PointToBox(Point(4659, 2915), Point(4722, 2969));
TeleportDTM := DTMFromString('mggAAAHicY2NgYOhjZmCYCMTdzBB2F5TfzsjA0ALF3UDcCcUeVuEMzvauDL9//2ZYv/8xg5N8LBjzA83ChhlxYAgAAPXHD1w=');
Gametab(tab_magic);
MarkTime(Time);
ResetAll;
repeat
repeat
wait(RandomRange(10,20));
until (FindDTM(TeleportDTM, sx, sy, MIX1, MIY1, MIX2, MIY2)) or((TimeFromMark(Time) > 780));

if not (FindDTM(TeleportDTM, sx, sy, MIX1, MIY1, MIX2, MIY2)) or ((TimeFromMark(Time) > 780)) then
Gametab(tab_magic);
Mouse(sx, sy, 1, 1, mouse_left);
WriteLn('Teleporting to Varrock');
Wait(RandomRange(100,200));
IncAll;
until ((PointInBox(SPS_GetMyPos, Varrock)) or (All = 3));
ResetAll;
FreeDTM(TeleportDTM);
end;

Procedure FindTeleportLumby;

var {check}
Time, sx, sy, TeleLDTM : Integer;
Lumby : TBox;

begin
TeleLDTM := DTMFromString('mlwAAAHicY2dgYGBjYWDgAGIWKAaxuYCYCYjzGRkYiqA4B4rzoXjfkU8MK/c+BeO/f/+CsY9uGhjzA83FhRnxYCgAAB2VEoQ=');
Gametab(tab_magic);
MarkTime(Time);
ResetAll;
Lumby := PointToBox(Point(4697, 3747), Point(4743, 3814));
repeat
repeat
wait(RandomRange(10,20));
until (FindDTM(TeleLDTM, sx, sy, MIX1, MIY1, MIX2, MIY2)) or((TimeFromMark(Time) > 780));

if not (FindDTM(TeleLDTM, sx, sy, MIX1, MIY1, MIX2, MIY2)) or ((TimeFromMark(Time) > 780)) then
Gametab(tab_magic);
Mouse(sx, sy, 1, 1, mouse_left);
Wait(1000+(random(100)));
Mouse(MCCX, MCCY+35, 1, 1, mouse_left);
WriteLn('Teleporting to Lumbridge');
Wait(RandomRange(100,200));
IncAll;
until ((PointInBox(SPS_GetMyPos, Lumby)) or (All = 3));
ResetAll;
FreeDTM(TeleLDTM);
end;





{-----------------------------------------------------------------RUNE MYSTERIES-------------------------------------------------------}




Procedure TalkDuke;

var
x, y, DukeDTM, ThroughDTM : integer;
{check}
begin
DukeDTM := DTMFromString('mQwAAAHicY2ZgYKhjZmCoBOImIM5hZGAoA+JyIHZz1GCwjmpmsAirY+AHqoNhRiQMBAD77AXl');
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
SetAngle(SRL_ANGLE_HIGH);
ResetAll;
repeat
repeat
if WaitFindDTMEx(DukeDTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 5000) then
MMouse(x, y, 5, 5);
IncAll;
until ((WaitUpText('uke', 500)) or (All = 5));
ClickMouse2(True);
until WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 4500);
ResetAll;
WriteLn('Talking to Duke');
FreeDTM(DukeDTM);
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure ThroughOptions1;

var
x, y, ThroughDTM, QuestsDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
QuestsDTM := DTMFromString('mlwAAAHicY2dgYLgCxAGMDAzpQLoFiLuA+A4QswHFSoB0MRSXAXE+EFdAaSEZRYbjQcoMh9xEGfgl5RhOnDgBxkJScgz8QHlcmBEPhgIAo30PAw==');
ResetAll;
repeat
IncAll;
if WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 2500) then
begin
WriteLn('Found NPC Text. Clicking ahead');
Mouse(x, y, 3, 3, Mouse_left);
end;
until ((WaitFindDTMEx(QuestsDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 4000)) or (All = 5));
ResetAll;
FreeDTM(ThroughDTM);
FreeDTM(QuestsDTM);
WriteLn('' +TimeRunning);
end;

Procedure ThroughOptions4;

var
x, y, ThroughDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
if WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 600, 4200) then
begin
WriteLn('Found NPC Text. Clicking ahead');
Mouse(x, y, 3, 3, Mouse_left);
end;
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure ThroughOptions2;

var
x, y, ThroughDTM, AcceptDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
AcceptDTM:= DTMFromString('mbQAAAHicY2VgYPjDzMCwF4gtWBgYfjBD8D1GBoa7QHwHiJ8D8WUg5te1ZMgxF2CoshVg6HEUZriZxc/AD9SPjhmxYDAAALrgDL4=');
ResetAll;
repeat
IncAll;
if WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 800, 4200) then
begin
WriteLn('Found NPC Text. Clicking ahead');
Mouse(x, y, 3, 3, Mouse_left);
end;
until ((WaitFindDTMEx(AcceptDTM, x, y, MSX1, MSY1, MSX2, MSY2, 400, 3800)) or (All = 4));
ResetAll;
FreeDTM(ThroughDTM);
FreeDTM(AcceptDTM);
WriteLn('' +TimeRunning);
end;

Procedure ThroughOptions3;

var
x, y, ThroughDTM, HeadWizardDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
HeadWizardDTM := DTMFromString('mbQAAAHicY2VgYGBjYWBYAsSlzAwM34D4CxBPYWJgmAzFfUA8DYiFZBQZ5rnKgvGJEyfAmB+oHx0zYsFgAACE2Q1X');
ResetAll;
repeat
IncAll;
if WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 800, 4200) then
begin
Writeln('Found Text. Clicking ahead');
Mouse(x, y, 1, 1, Mouse_left);
end;
until ((WaitFindDTMEx(HeadWizardDTM, x, y, MCX1, MCY1, MCX2, MCY2, 800, 4200)) or (All = 4));
ResetAll;
FreeDTM(ThroughDTM);
FreeDTM(HeadWizardDTM);
WriteLn('' +TimeRunning);
end;

Procedure AnyQuests;

var
x, y, QuestsDTM : integer;

begin
QuestsDTM := DTMFromString('mlwAAAHicY2dgYLgCxAGMDAzpQLoFiLuA+A4QswHFSoB0MRSXAXE+EFdAaSEZRYbjQcoMh9xEGfgl5RhOnDgBxkJScgz8QHlcmBEPhgIAo30PAw==');
if WaitFindDTMEx(QuestsDTM, x, y, MCX1, MCY1, MCX2, MCY2, 800, 2400) then
begin
Writeln('Found Text Option. Clicking');
Mouse(x, y, 4, 4, Mouse_left);
end;
FreeDTM(QuestsDTM);
WriteLn('' +TimeRunning);
end;

Procedure AcceptQuest;

var
x, y, AcceptDTM : integer;

begin
AcceptDTM:= DTMFromString('mbQAAAHicY2VgYPjDzMCwF4gtWBgYfjBD8D1GBoa7QHwHiJ8D8WUg5te1ZMgxF2CoshVg6HEUZriZxc/AD9SPjhmxYDAAALrgDL4=');
if WaitFindDTMEx(AcceptDTM, x, y, MSX1, MSY1, MSX2, MSY2, 600, 1800) then
begin
Mouse(x, y, 3, 3, mouse_left);
Writeln('Accepted Quest');
end;
FreeDTM(AcceptDTM);
writeln('' +TimeRunning);
end;

Procedure OpenDoor;

var
x, y, DoorClosedDTM, DoorOpenDTM, Found : integer;

begin
DoorClosedDTM := DTMFromString('mQwAAAHicY2ZgYHBlYmBwY4LQcxkZGFqBeAMQT6xOZFjRVwDG/EB1MMyIhIEAACytB5g=');
DoorOpenDTM := DTMFromString('mQwAAAHicY2ZgYCgA4kggDgHiGUBcAsTzgbinLJZhWU8+GPMD+TDMiISBAAAypged');
SetAngle(SRL_ANGLE_HIGH);
Found := 0;
repeat
Inc(Found);
if WaitFindDTMEx(DoorClosedDTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 5000) then
MMouse(x, y, 3, 3);
until ((WaitUpText('pen', 500)) or (Found = 5));

if WaitUpText('pen', 500) then
begin
ClickMouse2(True);
WriteLn('Opening door');
Wait(RandomRange(1500,1600));
end;
Found := 0;
FreeDTM(DoorClosedDTM);
FreeDTM(DoorOpenDTM);
WriteLn('' +TimeRunning);
end;




{-----------------------------------------------------------begin wizard's tower----------------------------------------------------}




Procedure OpenWizDoor1;

var
x, y, WizDoor1Closed, WizDoor1Open, Found : integer;

begin
WizDoor1Closed := DTMFromString('mggAAAHicY2NgYNjJzMDwCIhnAPEKIL4AxHuA+AgjA8NBID4AxNeA+BYQ3wPiTH89holTZzBMnjaLoThQmSHfT5GhJdmKgR9oFjbMiANDAADFzxEG');
WizDoor1Open := DTMFromString('mWAAAAHicY2FgYPgAxPeAWI8Rwj4AxJOAeApUPDtAn6Fv4lSGabPmMhSGGjLwA8WQMSMaBgEAi5ELWA==');
SetAngle(SRL_ANGLE_HIGH);
Found := 0;
repeat
Inc(Found);
if WaitFindDTMEx(WizDoor1Closed, x, y, MSX1, MSY1, MSX2, MSY2, 600, 2400) then
MMouse(x, y, 3, 3);
until ((WaitUpText('pen', 600)) or (Found = 5));

if WaitUpText('pen', 600) then
begin
ClickMouse2(True);
WriteLn('Opening door');
Wait(RandomRange(1500,1600));
end;

if WaitUptext('los', 600) then
WriteLn('Door opened');
Found := 0;
FreeDTM(WizDoor1Closed);
FreeDTM(WizDoor1Open);
WriteLn('' +TimeRunning);
end;

Procedure OpenWizDoor2;

var
x, y, WizDoor2Closed, WizDoor2Open, Found : integer;

begin
WizDoor2Closed := DTMFromString('mbQAAAHicY2VgYDBmYWDgAuIoIHYCYmUgvs3IwHAAiP8D8VMgPgvEpREmDPMXLQPjwlAjhggndQZ+oH50zIgFgwEANNYMPw==');
WizDoor2Open := DTMFromString('mWAAAAHicY2FgYEhjZGCQAuIYILYF4jlAsXYg3gnEu4C4OFCZYf6iZWBcWJjDwA8UQ8aMaBgEAAv6Cfs=');
setangle(SRL_ANGLE_HIGH);
Found := 0;
repeat
Inc(Found);
if WaitFindDTMEx(WizDoor2Closed, x, y, MSX1, MSY1, MSX2, MSY2, 600, 2400) then
MMouse(x, y, 3, 3);
until ((WaitUpText('pen', 500)) or (Found = 5));

if WaitUpText('pen', 500) then
begin
ClickMouse2(True);
WriteLn('Opening door');
wait(RandomRange(1500,1600));
end;

if WaitUptext('los', 500) then
WriteLn('Door opened');
FreeDTM(WizDoor2Closed);
FreeDTM(WizDoor2Open);
WriteLn('' +TimeRunning);
end;

Procedure FindDung;

var
x, y, DungeonDTM : integer;

begin
DungeonDTM:= DTMFromString('mbQAAAHicY2VgYJBhhWB5IBYHYiUgzmJkYCgA4nwgzgHiDCD+oKUFxgcOHADjv67SDPxA/eiYEQsGAwDFzwuG');
if WaitFindDTMEx(DungeonDTM, x, y, MMX1, MMY1, MMX2, MMY2, 600, 2800) then
Mouse(x, y, 3, 3, mouse_left);
FreeDTM(DungeonDTM);
WriteLn('' +TimeRunning);
end;

Procedure FindWizStairsDown;

var
x, y, WizStair1DTM : integer;

begin
WizStair1DTM:= DTMFromString('mrAAAAHic42BgYDBiYWCQAGJJIPYB4iAWhFgAiGZiYNAF4j+MDAx/gVgLyGYAYhEo5uPlZQjyd2dIS0tkyMlJZwjwdWWorcwF45rybAZ+oHJ8mJEAhgEAUZ0NZA==');
SetAngle(SRL_ANGLE_HIGH);
ResetAll;
repeat
IncAll;
WaitFindDTMEx(WizStair1DTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 3000);
MMouse(x, y, 5, 5);
until ((WaitUpText('dder', 600)) or (All = 5));
if WaitUpText('dder', 600) then
ClickMouse2(True);
ResetAll;
WriteLn('Going down ladder');
FreeDTM(WizStair1DTM);
WriteLn('' +TimeRunning);
end;

Procedure ToWizDoor;

var
x, y : integer;

begin
SetAngle(SRL_ANGLE_HIGH);
Wait(RandomRange(2500,2700));
if WaitFindColor(x, y, 394227, MMX1, MMY1, MMX2, MMY2, 15, 3000) then
begin
RadialWalkTolerance(394227, 110, 170, 40, 0, 0, 15);
WriteLn('Walked to Wizard''s door');
end;
WriteLn('' +TimeRunning);
end;

Procedure OpenWizDoor3;

var
x, y, WizDoor3Closed, Found : integer;

begin
WizDoor3Closed := DTMFromString('mlwAAAHicY2dgYLjEzMBwBYgvAPF5KBuErwHxQ0agPBC/BeLPQHwGiF8A8U0gdrBQBmNPR02GkpxIhrl9GQxOVqpgMX6gubgwIx4MBQCOXBJo');
SetAngle(SRL_ANGLE_HIGH);
Found := 0;
repeat
Inc(Found);
if WaitFindDTMEx(WizDoor3Closed, x, y, MSX1, MSY1, MSX2, MSY2, 500, 5000) then
MMouse(x, y, 3, 3);
until (WaitUpText('pen', 600) or (Found = 8));

if WaitUpText('pen', 600) then
begin
ClickMouse2(True);
Writeln('Opening door');
Wait(RandomRange(1500,1600));
end;

if WaitUptext('los', 600) then
WriteLn('Door opened');
Found := 0;
FreeDTM(WizDoor3Closed);
WriteLn('' +TimeRunning);
end;

Procedure FindWizard;

var
x, y, i, ThroughDTM : integer;
TPA : TPointArray;
{ATPA : T2DPointArray;}

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
SetAngle(SRL_ANGLE_HIGH);
ResetAll;
repeat
repeat
WaitFindColors(TPA, 15577418, MSX1, MSY1, MSX2, MSY2, 15, 5000);
{ATPA := TPAToATPAEx(TPA, 30, 40); }
SortTPAFrom(TPA, Point(MSCX,MSCY));
for i := 0 to High(TPA) do
begin
x := TPA[i].x;
y := TPA[i].y;
MMouse(x, y, 5, 5);
end;
IncAll;
until ((WaitUpText('edr', 600)) or (All = 8));
if (All = 8) then
begin
WriteLn('Couldn''t find wizard');
Logout;
TerminateScript;
end;
ClickMouse2(True);
until WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 400, 3000);
ResetAll;
WriteLn('Talking to Wizard');
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure HeadWizardOption;

var
x, y, HeadWizardDTM, ThroughDTM : integer;

begin
HeadWizardDTM:= DTMFromString('mbQAAAHicY2VgYGBjYWBYAsSlzAwM34D4CxBPYWJgmAzFfUA8DYiFZBQZ5rnKgvGJEyfAmB+oHx0zYsFgAACE2Q1X');
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
ResetAll;
repeat
IncAll;
if WaitFindDTMEx(HeadWizardDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 3000) then
Mouse(x, y, 3, 3, mouse_left);
until ((WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 3000)) or (All = 5));
ResetAll;
WriteLn('Found Head Wizard Option');
FreeDTM(ThroughDTM);
FreeDTM(HeadWizardDTM);
WriteLn('' +TimeRunning);
end;

Procedure WizOptions;

var
WO : integer;

begin
repeat
Inc(WO);
ThroughOptions4;
until (WO = 14);
WriteLn('' +TimeRunning);
end;

Procedure Certain;

var
x, y, CertDTM : integer;

begin
CertDTM := DTMFromString('mggAAAHicY2NgYPjAzMBgxsLAsBBIHwTi40AsAuSnMDEwJENxPBSnAbGQjCLDPFdZMD5x4gQc8wPNwoYZcWAIAADWdg+P');

if (WaitFindDTMEx(CertDTM, x, y, MCX1, MCY1, MCX2, MCY2, 900, 5000)) then
begin
WriteLn('Found Text Option. Clicking');
Mouse(x, y, 3, 3, Mouse_left);
Wait(RandomRange(800,900));
end;
FreeDTM(CertDTM);
WriteLn('' +TimeRunning);
end;




{------------------------------------------------------begin Varrock-------------------------------------------------------------}




Procedure TalkOwner;

var
x, y, OwnerDTM, ThroughDTM : integer;
{check}
begin
OwnerDTM := DTMFromString('mggAAAHicY2NgYBBkZGDgB2IhKBYBYgEgVoNiFSDWgLJB9PYN6xk2rV4NxjMmTmRYuWghw7plyxhYgWZhw4w4MAQAAKciDUs=');
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
SetAngle(SRL_ANGLE_HIGH);
ResetAll;
repeat
repeat
IncAll;
WaitFindDTMEx(OwnerDTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 4000);
MMouse(x, y, 5, 5);
until ((IsUpText('ury')) or (All = 5));
if (All = 5) then
begin
Writeln('Couldn''t find Aubury');
Logout;
TerminateScript;
end;
ClickMouse2(True);
until WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 300, 2400);
WriteLn('Talking to Aubury');
ResetAll;
FreeDTM(OwnerDTM);
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure SentHere;

var
x, y, SentDTM, ThroughDTM : integer;

begin
SentDTM := DTMFromString('mggAAAHicY2NgYBBiZGCYA8RZQHYkkG4C0h1AfADI3g/Fe4H4EBDvAmIhGUUGLl5eMD5x4gQc8wP1YMOMODAEAACmoQ8B');
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
ResetAll;
repeat
IncAll;
if WaitFindDTMEx(SentDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 4800) then
begin
WriteLn('Found Text. Clicking ahead');
Mouse(x, y, 3, 3, Mouse_left);
end;
until ((WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 400, 2800)) or (All = 4));
ResetAll;
FreeDTM(ThroughDTM);
FreeDTM(SentDTM);
WriteLn('' +TimeRunning);
end;

Procedure OwnerOptions;

var
OO : integer;

begin
repeat
inc(OO);
ThroughOptions4;
until (OO = 7);
WriteLn('' +TimeRunning);
end;

Procedure TeleportWiz;

var
x, y, YesTeleDTM, ThroughDTM : integer;

begin
YesTeleDTM := DTMFromString('mlwAAAHicY2dgYLgDxJOB2JSRgeEQkD4GxM+A+D8QyzIisBQUS0D5QlJyDEFO+gx+9noMJ06cQMGsQL24MCMeDAUAQKoRMw==');
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
ResetAll;
repeat
IncAll;
if WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 5000) then
begin
WriteLn('Found Text. Clicking ahead');
Mouse(x, y, 3, 3, Mouse_left);
end;
until ((WaitFindDTMEx(YesTeleDTM, x, y, MCX1, MCY1, MCX2, MCY2, 400, 4000)) or (All = 4));
ResetAll;
FreeDTM(ThroughDTM);
FreeDTM(YesTeleDTM);
WriteLn('' +TimeRunning);
end;

Procedure TeleToWizard;

var
x, y, ThroughDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
ResetAll;
repeat
IncAll;
Wait(RandomRange(600, 800));
FindNPCChatText('es', clickleft);
until ((WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 4500)) or (All = 8));
ResetAll;
WriteLn('Teleporting to Wizards Tower');
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure TeleToEnd;

var
Teh : integer;

begin
OpenWizDoor1;
WalkToDoor2;
OpenWizDoor2;
FindDung;
FindWizStairsDown;
ToWizDoor;
OpenWizDoor3;
FindWizard;
repeat
Inc(Teh);
ThroughOptions4;
until (Teh = 27);
end;

Procedure Ending;

var
x, y, ThroughDTM, ContinueDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY'); {28 options to finish quest}
ContinueDTM:= DTMFromString('mbQAAAHicY2VgYNjHwsDQC8VJQPwAiLcwMTBsBeINQLwJivkM7BgenzkPxqvCxBgWBYgw8AP1o2NGLBgMAPxUDp8=');
ResetAll;
repeat
IncAll;
if WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 600, 6000) then
begin
WriteLn('Found Text. Clicking ahead');
Mouse(x, y, 3, 3, Mouse_left);
end;
until ((WaitFindDTMEx(ContinueDTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 3500)) or (All = 4));
ResetAll;
FreeDTM(ThroughDTM);
FreeDTM(ContinueDTM);
WriteLn('' +TimeRunning);
end;

Procedure FinishQuestRM;

var
x, y, ContinueDTM : integer;

begin
ContinueDTM:= DTMFromString('mbQAAAHicY2VgYNjHwsDQC8VJQPwAiLcwMTBsBeINQLwJivkM7BgenzkPxqvCxBgWBYgw8AP1o2NGLBgMAPxUDp8=');
if WaitFindDTMEx(ContinueDTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 3000) then
Mouse(x, y, 3, 3, mouse_left);
FreeDTM(ContinueDTM);
WriteLn('' +TimeRunning);
end;

Procedure FinishQuestRG;

var
x, y, Continue2DTM : integer;

begin
Continue2DTM := DTMFromString('mWAAAAHicY2FgYAhjZGC4D6TvAOkoIM5jYmDIAOIsIE4GYj4DO4ZlEbIMiwJEGB6fOc8AAiJQDAKMaBgEAAajCWU=');
if WaitFindDTMEx(Continue2DTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 3000) then
Mouse(x, y, 3, 3, mouse_left);
FreeDTM(Continue2DTM);
WriteLn('' +TimeRunning);
end;

{Procedure FindBob;

begin
SetAngle(SRL_ANGLE_HIGH);
BobDTM := DTMFromString('mbQAAAHicY2VgYKhjZmCoAeIGKAaxcxkZGPKAuACIc4A4G4jtbW0YrCzMGdws9RnMTU3BfFagfnTMiAWDAQBfxAg4');
PickDTM := DTMFromString('mlwAAAHicY2dgYNAGYhkgdgNidyjbFIiNgNgDiFOA2ARKg8SjgDgRiD3NFRg0lWUYxIUF4fT//wxgzM+AGzPiwVAAAGnLCeU=');
repeat
repeat
Wait(RandomRange(480,530));
FindDTMRotatedSE(BobDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound);
MMouse(x, y, 1, 1);
until IsUpText('ob');
ClickMouse2(False);
WaitOption('rade', 800);
until FindDTM(PickDTM, x, y, MSX1, MSY1, MSX2, MSY2);
WriteLn('Trading with Bob');
FreeDTM(BobDTM);
FreeDTM(PickDTM);
WriteLn('' +TimeRunning);
end; }




{---------------------------------------------------------RESTLESS GHOST------------------------------------------------------------}




Procedure FindFather;

var
x, y, FatherDTM, ThroughDTM : integer;

begin
FatherDTM := DTMFromString('mLgAAAHicY2IAAkYI/gCkvgBxTOpSBm0dfQYuIJsLIQ0EAGxHA+s=');
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
SetAngle(SRL_ANGLE_HIGH);
ResetAll;
repeat
repeat
IncAll;
if WaitFindDTMEx(FatherDTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 5000) then
MMouse(x, y, 3, 3);
until ((WaitUpText('ath', 500)) or (All = 4));
if (All = 4) then
begin
WriteLn('Couldn''t find father');
Logout;
TerminateScript;
end;
ClickMouse2(True);
until WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 400, 3200);
ResetAll;
WriteLn('Talking to Father');
FreeDTM(FatherDTM);
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure GhostQuest;

var
x, y, ThroughDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
ResetAll;
repeat
IncAll;
Wait(RandomRange(600,800));
FindNPCChatText('uest', clickleft)
until ((WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 3500)) or (All = 8));
ResetAll;
WriteLn('Begin quest option');
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure FatherOptions;

var
FO : integer;

begin
FO := 0;
repeat
Inc(FO);
ThroughOptions4;
until (FO = 7);
WriteLn('' +TimeRunning);
end;

Procedure HutDoor;

var
x, y, WoodsDoor, Found : integer;

begin
WoodsDoor := DTMFromString('mQwAAAHicY2ZgYPgPxBeAWJORgeEakH4AxI+BOD85lOF+vQ7D1UptBmYgXwSKGZEwEAAAhDEI7g==');
SetAngle(SRL_ANGLE_HIGH);
Found := 0;
repeat
Inc(Found);
if WaitFindDTMEx(WoodsDoor, x, y, MSX1, MSY1, MSX2, MSY2, 500, 5000) then
MMouse(x, y, 3, 3);
until ((WaitUpText('pen', 500)) or (Found = 5));

if WaitUpText('pen', 500) then
begin
ClickMouse2(True);
WriteLn('Opening door');
Wait(RandomRange(1500,1600));
end;

if WaitUptext('los', 500) then
WriteLn('Door opened');
Found := 0;
FreeDTM(WoodsDoor);
WriteLn('' +TimeRunning);
end;

Procedure FindUrh;

var
x, y, Father2DTM, ThroughDTM : integer;

begin
Father2DTM := DTMFromString('mbQAAAHicY2VgYFBgZGCQA2IlRgT7H1CcgRGB/wKpnWsXMKxfMp2ht6UKTJ/cs46BFSiOjhmxYDAAAPYeDF0=');
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
SetAngle(SRL_ANGLE_HIGH);
ResetAll;
repeat
repeat
IncAll;
if WaitFindDTMEx(Father2DTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 5000) then
MMouse(x, y, 3, 3);
until ((WaitUpText('athe', 400)) or (All = 4));
if (All = 4) then
begin
Writeln('Couldn''t find Urhney');
Logout;
TerminateScript;
end;
ClickMouse2(True);
until WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 400, 3400);
ResetAll;
WriteLn('Talking to Urhney');
FreeDTM(Father2DTM);
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure AboutQuest;

var
x, y, ThroughDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
ResetAll;
repeat
IncAll;
Wait(RandomRange(800,1000));
FindNPCChatText('alk', clickleft)
until ((WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 2500)) or (All = 8));
if (All = 8) then
begin
WriteLn('Couldn''t find option');
Logout;
TerminateScript;
end;
ResetAll;
WriteLn('The Father from Lumbridge sent me');
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure Ghosts;

var
x, y, ThroughDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
ResetAll;
repeat
IncAll;
Wait(RandomRange(800,1000));
FindNPCChatText('host', clickleft)
until ((WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 500, 4000)) or (All = 8));
if (All = 8) then
begin
Writeln('Couldn''t find ghost option');
Logout;
TerminateScript;
end;
ResetAll;
WriteLn('Ghosts are haunting Lumbridge!');
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure Father2Options;

var
FO2 : integer;

begin
FO2 := 0;
repeat
Inc(FO2);
ThroughOptions4;
until (FO2 = 10);
FO2 := 0;
WriteLn('' +TimeRunning);
end;

Procedure Ammy;

var
x, y, AmmyDTM : integer;

begin
AmmyDTM := DTMFromString('mggAAAHicY2NgYMhgYmAoAeI0IC4D4goo+zVQ7hYQ3wHiR1D6DRB3NJYyxDnJMgRaSjJ4GIkxRNnLMGyYVcrAD5RDx1xAzIgDQwAAtEMOMQ==');
ResetAll;
repeat
Wait(RandomRange(1000,1100));
IncAll;
until ((WaitFindDTMEx(AmmyDTM, x, y, MIX1, MIY1, MIX2, MIY2, 500, 4500)) or (All = 5));
ResetAll;

if WaitFindDTMEx(AmmyDTM, x, y, MIX1, MIY1, MIX2, MIY2, 500, 4500) then
MMouse(x, y, 3, 3);
if WaitUpText('mul', 600) then
begin
ClickMouse2(true);
Writeln('Amulet on');
end;
ResetAll;
WriteLn('' +TimeRunning);
Wait(RandomRange(300,400));
FreeDTM(AmmyDTM);
end;

Procedure FindCoffin;

var
x, y, CoffinClosed, CoffinOpen : integer;

begin
CoffinClosed := DTMFromString('mggAAAHicY2NgYNBnZGBwAeIQINYDYj8gtgRiBiBmAeLPQOYXBggfRGuqq4CxgpwMg5qKIoOCtCgYswLlsGFGHBgCAFQVBtw=');
CoffinOpen := DTMFromString('mQwAAAHicY2ZgYLgLxGeA+DAQbwPiHUC8HYjFBDgZ2mqLGdrrSxlYgXwuKGZEwkAAAFy8B9E=');
SetAngle(SRL_ANGLE_HIGH);
ResetAll;
repeat
IncAll;
if WaitFindDTMEx(CoffinClosed, x, y, MSX1, MSY1, MSX2, MSY2, 500, 5000) then
Mouse(x, y, 3, 3, mouse_left);

if WaitFindDTMEx(CoffinOpen, x, y, MSX1, MSY1, MSX2, MSY2, 500, 5000) then
Mouse(x, y, 3, 3, mouse_left);
until WaitUpText('pen', 600);

if WaitUpText('pen', 600) then
begin
ClickMouse2(True);
WriteLn('Found coffin');
end;
ResetAll;
FreeDTM(CoffinOpen);
FreeDTM(CoffinClosed);
WriteLn('' +TimeRunning);
end;


Procedure TalkToGhost;

var
x, y, ThroughDTM, GhostDTM : integer;

begin
ResetAll;
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
GhostDTM := DTMFromString('mbQAAAHicY2VgYHgIxU+g+BEQ2wGxCRBbAbEhELsBcXxGKsPStcsY8nOTGCbOmMQQn5rIwAoU50LDjFgwGAAApTMNCQ==');
repeat
IncAll;
if WaitFindDTMEx(GhostDTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 5000) then
MMouse(x, y, 3, 3);
until ((WaitUpText('est', 400)) or (All = 4));
if (WaitUpText('est', 400)) then
ClickMouse2(True);
FreeDTM(ThroughDTM);
FreeDTM(GhostDTM);
ResetAll;
WriteLn('' +TimeRunning);
end;

Procedure ItWorks;

var
x, y, ThroughDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
ResetAll;
repeat
IncAll;
wait(RandomRange(800,1000));
FindNPCChatText('mule', clickleft);
until ((WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 400, 3800)) or (All = 5));
if (All = 5) then
begin
Writeln('Amulet doesn''t work');
Logout;
TerminateScript;
end;
ResetAll;
WriteLn('Wow, this amulet works!');
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure WhyGhost;

var
x, y, ThroughDTM : integer;

begin
ThroughDTM := DTMFromString('mbQAAAHicY2VgYFjAzMBwAogbgbgBiE8C8TwmBoZpULwEiq2TRRgYmZgZ8sJsGMrCLRguXrzIgA0wYsFgAAA+hQuY');
ResetAll;
repeat
IncAll;
Wait(RandomRange(800,1000));
FindNPCChatText('host', clickleft);
until ((WaitFindDTMEx(ThroughDTM, x, y, MCX1, MCY1, MCX2, MCY2, 400, 3600)) or (All = 8));
if (All = 8) then
begin
Writeln('You''re not a ghost?');
Logout;
TerminateScript;
end;
ResetAll;
WriteLn('Why are you a ghost?');
FreeDTM(ThroughDTM);
WriteLn('' +TimeRunning);
end;

Procedure GhostOptions1;

var
GO : integer;

begin
GO := 0;
repeat
Inc(GO);
ThroughOptions4;
until (GO = 4);
GO := 0;
WriteLn('' +TimeRunning);
end;

Procedure GhostOptions2;

var
GO2 : integer;

begin
GO2 := 0;
repeat
Inc(GO2);
ThroughOptions4;
until (GO2 = 5);
GO2 := 0;
WriteLn('' +TimeRunning);
end;

Procedure FindRocks;

var
x, y, RocksDTM : integer;

begin
RocksDTM := DTMFromString('mbQAAAHicY2VgYHBmZGAwAWIdIA4BYh8gzgeKJwFxPRBXA3ECEAcG+DHEx0YxxERHMHh5ujN4uLsysALF0TEjFgwGADVmCFk=');
ResetAll;
repeat
IncAll;
WaitFindDTMEx(RocksDTM, x, y, MSX1, MSY1, MSX2, MSY2, 500, 4500);
MMouse(x, y, 3, 3);
until ((WaitUpText('ock', 800)) or (All = 4));
if (WaitUpText('ock', 800)) then
begin
ClickMouse2(True);
Writeln('Found skull');
end;
ResetAll;
FreeDTM(RocksDTM);
WriteLn('' +TimeRunning);
end;

Procedure FindSkull;

var
x, y, FS, SkullDTM : integer;

begin
SkullDTM:= DTMFromString('mQwAAAHicY2ZgYHBhYmCwAWI3IL4H5L8C4rdAvHrRFIaju1YBWUwMXEAShhmRMBAAAEMnB7I=');
FS := 0;
repeat
Gametab(tab_inv);
Wait(RandomRange(1000,1100));
Inc(FS);
until ((WaitFindDTMEx(SkullDTM, x, y, MIX1, MIY1, MIX2, MIY2, 500, 3500)) or (FS = 5));

if WaitFindDTMEx(SkullDTM, x, y, MIX1, MIY1, MIX2, MIY2, 500, 3500) then
MMouse(x, y, 1, 1);
if WaitUpText('kul', 800) then
begin
ClickMouse2(true);
WriteLn('Found Skull');
end;
FS := 0;
WriteLn('' +TimeRunning);
Wait(RandomRange(300,400));
FreeDTM(SkullDTM);
end;

Procedure EndingRG;

begin
Wait(15000+(random(1000)));
end;

Procedure BuryBones;

var
i, x, y, BonesDTM, AO : integer;

begin
SetAngle(SRL_ANGLE_HIGH);
BonesDTM := DTMFromString('mbQAAAHicY2VgYHBmYmCwBmI7IHYDYh8gfgwUfwTEr4H4LhA/AeIgb3OGvsZ4Bj83E4aybH+GvBQvBmagODpmxILBAAAHVQs5');
AO := 0;
repeat
Gametab(tab_inv);
Wait(RandomRange(300,400));
Inc(AO);
until (WaitFindDTMEx(BonesDTM, x, y, MIX1, MIY1, MIX2, MIY2, 500, 3500));

for i := 0 to 28 do
begin
if WaitFindDTMEx(BonesDTM, x, y, MIX1, MIY1, MIX2, MIY2, 400, 2400) then
MMouse(x, y, 5, 5);
if WaitUpText('on', 600) then
begin
ClickMouse2(true);
WriteLn('Bured a bone');
end;
WriteLn('' +TimeRunning);
Wait(RandomRange(200,300));
end;
AO := 0;
FreeDTM(BonesDTM);
end;

{loop}
begin
Run;
begin
Case Quest of
'RuneMysteries':
begin
Case Method of
'walking':
begin
Greetings;
TalkDuke;
ThroughOptions1;
AnyQuests;
ThroughOptions4;
ThroughOptions4;
ThroughOptions2;
AcceptQuest;
FindTeleportLumby;
CastleToLumby;
ToTower;
OpenWizDoor1;
WalkToDoor2;
OpenWizDoor2;
FindDung;
FindWizStairsDown;
ToWizDoor;
OpenWizDoor3;
FindWizard;
ThroughOptions4;
HeadWizardOption;
WizOptions;
Certain;
ThroughOptions4;
ThroughOptions4;
ThroughOptions4;
FindTeleportLumby;
ToVarrock;
InsideShop;
TalkOwner;
SentHere;
OwnerOptions;
TeleportWiz;
TeleToWizard;
ThroughOptions4;
ToTower;
TeleToEnd;
Ending;
FinishQuestRM;
end;

'teleport':
begin
Greetings;
TalkDuke;
ThroughOptions1;
AnyQuests;
ThroughOptions4;
ThroughOptions4;
ThroughOptions2;
AcceptQuest;
FindTeleportLumby;
CastleToLumby;
ToTower;
OpenWizDoor1;
WalkToDoor2;
OpenWizDoor2;
FindDung;
FindWizStairsDown;
ToWizDoor;
OpenWizDoor3;
FindWizard;
ThroughOptions4;
HeadWizardOption;
WizOptions;
Certain;
ThroughOptions4;
ThroughOptions4;
ThroughOptions4;
FindTeleportVarrock;
VarrockToShop;
InsideShop;
TalkOwner;
SentHere;
OwnerOptions;
TeleportWiz;
TeleToWizard;
ThroughOptions4;
ToTower;
TeleToEnd;
Ending;
FinishQuestRM;
end;
end;
end;

'RestlessGhost':
begin
Greetings;
FindTeleportLumby;
CastleToLumby;
ToChurch;
WalkToFather;
FindFather;
ThroughOptions4;
GhostQuest;
ThroughOptions2;
AcceptQuest;
FatherOptions;
WalkToHut;
HutDoor;
IntoHut;
FindUrh;
ThroughOptions4;
AboutQuest;
ThroughOptions4;
Ghosts;
Father2Options;
Ammy;
FindTeleportLumby;
CastleToLumby;
ToGrave;
FindCoffin;
TalkToGhost;
GhostOptions1;
ItWorks;
ThroughOptions4;
WhyGhost;
GhostOptions2;
ToMine;
FindRocks;
RocksToGrave;
FindCoffin;
FindSkull;
FindCoffin;
EndingRG;
FinishQuestRG;
BuryBones;
end;
end;
end;
WriteLn('It took: '+(TimeRunning)+' to finish ' +(Quest));
Wait(RandomRange(4000,4200));
Logout;
TerminateScript;
end.

cause

2012-04-10 20:53:43

Voted yes, active and decent longevity.

Sin

2012-04-10 21:00:05

Voting Yes, might want to make a little less global variables though :p
Also, it'd be awesome if you bumped your activity upto 80%+ :)

Kyle Undefined

2012-04-10 21:24:43

Holding my vote until I can look through the scripts.

BraK

2012-04-10 23:23:44

Holy global variables Batman! Check my tut on functions to learn to pass variables. It'll make a lot of those into local variables.

tehq

2012-04-11 09:58:03

From: Kyle Undefined
Holding my vote until I can look through the scripts.


Looking forward to it :)

From: BraK
Holy global variables Batman! Check my tut on functions to learn to pass variables. It'll make a lot of those into local variables.

From: Sin
Voting Yes, might want to make a little less global variables though :p


Yeah, i cleared the questing script of the globals right before i applied but i chose to keep them in the superheater. You should have seen the quester before :p

From: cause
Voted yes, active and decent longevity.


From: Sin

Also, it'd be awesome if you bumped your activity upto 80%+ :)


Thanks for your votes and advice!

If you vote no, could you please explain what I lack so i can improve.

Sin

2012-04-11 10:00:00

LOL forgot to vote!

Kyle Undefined

2012-04-11 10:29:15

I'm confused by your JE3/4 procedures, what's the purpose of them?

If you're going to use them, be consistent with it. You call JE4 in some places, and in others you put the code that JE3/4 does again. Like in this section:

Case Coalbag of
0 :
begin
Banking;
ResetJ;
repeat
Inc(J);
WithdrawItem(coal, 'dtm', 0, 'a', [3]);
wait(RandomRange(1000, 1100));
NumbCoal := CountItems('dtm', coal, []);
wait(RandomRange(300, 400));
WriteLn('You have: '+IntToStr(NumbCoal) +' coal');
until (((NumbCoal > 20) and (Invfull)) or (J = 4));
if (J = 4) then
begin
repeat
Logout;
TerminateScript;
until (not LoggedIn);
WriteLn('Couldn''t withdraw coal to inv, logging out');
end;
end;
end;

You should of just called JE4 there, since it's the same code. If you want a custom message, just make it a var that you pass in.

To me, the standards could be better.

I like the use of your failsafes, they just need to be consistent.

I would suggest learning more advanced object/item finding, you rely heavily on DTMs.

Still holding my vote.

Sir Ducksworthy

2012-04-11 12:51:53

Ok after reading through and a fair bit of thought,
Im voting Yes.

Yet to see any bad attitude from you teh

Echo_

2012-04-11 20:01:28

Yes from me :)

tehq

2012-04-12 12:30:27

From: Echo_
Yes from me :)


From: leetsxc
Ok after reading through and a fair bit of thought,
Im voting Yes.

Yet to see any bad attitude from you teh


Thanks guys! Appreciate the support :)

From: Kyle Undefined
I'm confused by your JE3/4 procedures, what's the purpose of them?

If you're going to use them, be consistent with it. You call JE4 in some places, and in others you put the code that JE3/4 does again. Like in this section:

You should of just called JE4 there, since it's the same code. If you want a custom message, just make it a var that you pass in.

To me, the standards could be better.

I like the use of your failsafes, they just need to be consistent.

I would suggest learning more advanced object/item finding, you rely heavily on DTMs.

Still holding my vote.


Thanks for pointing that out. I didn't even notice that while i was writing the script. I probably did this because of the different errors. I will be sure to incorporate your advice into future versions of these scripts :)

P1nky

2012-04-12 13:05:44

Sorry no, seems like you mastered DTM's but I don't see any RRW or TPA's, I like scripts that use a bit of everything.

-Cheers

tehq

2012-04-12 13:27:26

From: P1nky
Sorry no, seems like you mastered DTM's but I don't see any RRW or TPA's, I like scripts that use a bit of everything.

-Cheers


I find that DTMs do the trick just fine and they are more effective, in my opinion, in most cases. I used TPAs and radial walking in one procedure in the questing script to show i know how to use them.

weequ

2012-04-16 22:47:14

Yes from me. I see that you've released a lot of scripts and try to helpful. Just promise to read some tutorials on functions ;)

tehq

2012-04-16 22:52:44

From: weequ
Yes from me. I see that you've released a lot of scripts and try to helpful. Just promise to read some tutorials on functions ;)


Thanks, you've got a deal. I see you noticed the overuse of procedures :p

Jakkle

2012-04-16 23:41:12

I like the fact you did a quest script even if its only a simple one :)
Your activity is good and already have quite a few script.
I'm voting yes.
Good luck :)

rice

2012-04-17 12:52:28

i would like to see more TPAs used other than that you are helpful and active yes.

EtherFreak

2012-04-21 14:11:33

AHHH! The global variables are burning my eyes…
Other then that, clicked on the yes vote.

[XoL]

2012-04-22 00:56:31

Yes from me, although as stated above there are some issues nothing I can't overlook by the amount of help you have given to this community.

I mean honestly you made about 6+ fully working scripts that many people use on a regular basis, and always post help for people on topics regarding coding. (I have read your name helping at least 4 times today)

YES, from me :)

nielsie95

2012-05-06 11:57:19

Better late than never, but: welcome in!