SRL Archive - Outdated Tutorials

[#38] RandomTool


Naike

2009-08-05 19:13:10

Many people have been asking about a way to play a sound when a random
appears, or even make it able to manually solve the random..
Well, do not fear, N1ke! is here! (rhymes :norris:)

RandomTool does all the above, with only one line of code.

[Form picture got taken away, you'll understand when you see the form.]
This form, will appear(If setup has been done), and you'll be able to choose
what to do. If the time runs out, SRL will try to solve it.
If SRL can't solve the random, the "Let SRL solve it" option won't be enabled.

The setup looks like this..

{*******************************************************************************
Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);
by: N1ke!
TimeStamp: 5 Aug, 2009
Description: Sets up RandomTool so it can be used.

TimeOutWait: Time until SRL will try to solve itself, before this you
have the option to solve it yourself. (In MS).

FKeyForFinish: The FKey to break out of the "Solve it yourself" loop.

t_SoundPath: The path for a sound you wish to play, if random detected.
Leave blank if you don't wish to have any sound.
*******************************************************************************}
Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);

Note: SetupRandomTool has to be set AFTER DeclarePlayers.


t_SoundPath only takes .wav(I think?, Freddy please confirm what SCARs
PlaySound can handle and not..).


A correct setup would look like this:

Program New;
{.include srl/srl.scar}

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

Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Active := True;

Writeln(IntToStr(HowManyPlayers) + ' Players');
end;

begin
SetupSRL;
DeclarePlayers;
SetupRandomTool(60000, 2, AppPath + 'AlertSounds\SmallBeat.wav');
LoginPlayer;
end.

This is new in Rev 38, and I hope you enjoy it

~ N1ke!

MasterKill

2009-08-05 19:15:55

:norris: nice!

Maybe add a TProgressBar so you can see how many time you have left to decide :p

Nadeem

2009-08-05 19:15:57

Nice job :)



~NS

Gurkan

2009-08-05 19:18:09

Nice! looks fancy… the script will pause when you press "Solve it yourself" right (as the opposite from closing the whole script down)? keep up the good work n1ke, you're great ;)

Naike

2009-08-05 19:18:17

From: MasterKill
:norris: nice!

Maybe add a TProgressBar so you can see how many time you have left to decide :p


The timer counts down…
No need for a progressbar ^^


From: Gurkan
Nice! looks fancy… the script will pause when you press "Solve it yourself" right (as the opposite from closing the whole script down)? keep up the good work n1ke, you're great ;)


Ohh, yeah. Maybe I was a bit unclear about that part..
The script will pause, until you press the FKey given in the setup.

MasterKill

2009-08-05 19:19:43

From: N1ke!
The timer counts down…
No need for a progressbar ^^


oh yes…………………….. well it looks nice! :norris:!





:norris:!

Naum

2009-08-05 20:10:52

From: Freddy1990
Hmm, gave me out of range error at some point… Btw, SCAR 3.20 can play wav, mp3, mp2, mp1, ogg, aiff, flac, …


Anyway, whereabouts in the SRL include is it placed in?

Naike

2009-08-06 01:53:40

/core/AntiRandoms…

Richard

2009-08-06 02:14:24

Personally, I think it would work better if it was defined inside DeclarePlayers, after player setup of course. In other words, it would be variables, not a whole function, so you could have defaults if they weren't entered. Similar to how it works for SMART. Nice job and idea :)

EDIT: Slight variation that will slightly increase efficiency, and shortened the code:
//-----------------------------------------------------------------//
//-- Scar Standard Resource Library --//
//-- » AntiRandom Routines --//
//-----------------------------------------------------------------//
// * procedure r_ItemClick(sender: TObject) //* by Richard
// * Procedure r_InitForm; // * by N1ke! and Richard
// * Procedure r_SafeInitForm; // * by N1ke!
// * procedure r_ShowFormModal; // * by N1ke!
// * procedure r_SafeShowFormModal; // * by N1ke!
// * procedure r_RunAlert; // * by N1ke!
// * function r_CheckAction: Boolean; // * by N1ke!
// * Procedure r_ResetAll; // * by N1ke!
// * Procedure r_ResetAll; // * by N1ke!
//-----------------------------------------------------------------//

var
RandomTool : TForm;
InfoTxt: Array [0..3] of TLabel;
BChoice: Array [0..1] of TButton;
TimeUntilClose, CountDown: TTimer;
UseBox: TCheckBox;
r_WaitTimeout, r_CountMS, r_FKeyFinish: Integer;
r_SelfSolve: Boolean;
r_SolveAble: TIntegerArray;

{*******************************************************************************
procedure r_ItemClicked(sender: TObject);
by: Richard
TimeStamp: 5 Aug, 2009
Description: Performs the desired action
*******************************************************************************}
procedure r_ItemClicked(sender: TObject);
Begin
Case sender of
BChoice[0]: RandomTool.ModalResult := mrOk; //may have got these buttons mixed up
BChoice[1]: Begin
RandomTool.ModalResult:= mrOk;
r_SelfSolve := True;
end;
TimeUntilClose: RandomTool.ModalResult := mrOk;
CountDown: begin
Inc(r_CountMS);
InfoTxt[3].Caption := 'Timeout in: ' + MsToTime(r_WaitTimeOut-(r_CountMS*1000), 1);
end;
end;
end;

{*******************************************************************************
Procedure r_InitForm;
by: N1ke! and Richard
TimeStamp: 5 Aug, 2009
Description:
*******************************************************************************}
Procedure r_InitForm;
var
I: Integer;
InfoTxtCap: TStringArray;
begin
RandomTool := CreateForm;
With RandomTool do
Begin
With Font do
Begin
Height := -11;
Name := 'MS Sans Serif';
end;
Visible := False;
SetBounds(0, 0, 160, 210);
Position := poScreenCenter;
FormStyle := fsStayOnTop;
BorderIcons := [biSystemMenu];
BorderStyle := bsSingle;
end;

InfoTxt[0] := TLabel.Create(RandomTool);
With InfoTxt[0] do
Begin
Parent := RandomTool;
Left := 30;
Top := 10;
Width := 46;
Height := 13;
Font.Height := -14;
Font.Style := [fsBold];
Caption := 'Random found!';
end;

InfoTxtCap := ['Random: ' + Players[CurrentPlayer].Rand,
'Player stuck: ' + Players[CurrentPlayer].Name,
'Timeout in: ' + MsToTime(r_WaitTimeOut, 1)];

For I:=1 to 3 do
begin
InfoTxt[i] := TLabel.Create(RandomTool);
With InfoTxt[i] do
Begin
Parent := RandomTool;
Left := 10;
Top := 25+I*14;
Width := 46;
Height := 13;
Font.Height := -12;
Caption := InfoTxtCap[I-1];
end;
end;

InfoTxtCap := ['Solve it yourself',
'Let SRL solve it'];

For I:=0 to 1 do
begin
BChoice[I] := TButton.Create(RandomTool);
With BChoice[I] do
Begin
Parent := RandomTool;
Width := 130;
Height := 28;
Left := 10;
Top := 110+(I*30);
Caption := InfoTxtCap[I];
Font.Height := -11;
OnClick := @r_ItemClicked;
end;
end;

BChoice[1].Enabled := InIntArray(r_SolveAble, CurRandom);

TimeUntilClose := TTimer.Create(RandomTool);
With TimeUntilClose do
Begin
Interval := r_WaitTimeOut;
Enabled := True;
OnTimer := @r_ItemClicked;
end;

CountDown := TTimer.Create(RandomTool);
With CountDown do
Begin
Interval := 1000;
Enabled := True;
OnTimer := @r_ItemClicked;
end;

UseBox := TCheckBox.Create(RandomTool);
With UseBox do
Begin
Parent := RandomTool;
Left := 8;
Top := 95;
Width := 200;
Height := 13;
Caption := 'Stop using RandomTool?';
end;
end;

{*******************************************************************************
procedure r_SafeInitForm;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description:
*******************************************************************************}
procedure r_SafeInitForm;
var v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('r_InitForm', v);
end;

{*******************************************************************************
procedure r_ShowFormModal;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description:
*******************************************************************************}
procedure r_ShowFormModal;
begin
RandomTool.ShowModal;
end;

{*******************************************************************************
procedure r_SafeShowFormModal;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description:
*******************************************************************************}
procedure r_SafeShowFormModal;
var v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('r_ShowFormModal', v);
end;

{*******************************************************************************
Procedure r_ResetAll;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description: Resets all vars.
*******************************************************************************}
Procedure r_ResetAll;
begin
r_UseRandomTool := not(UseBox.Checked);
TimeUntilClose.Enabled := False;
CountDown.Enabled := False;
r_CountMS := 0;
CurRandom := 0;
r_SelfSolve := False;
Freeform(RandomTool);
end;

{*******************************************************************************
procedure r_RunAlert;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description: Runs the form.
*******************************************************************************}
procedure r_RunAlert;
begin
r_SafeInitForm;
r_SafeShowFormModal;
end;

{*******************************************************************************
Function r_CheckAction: Boolean;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description: Checks if r_SelfSolve is True.
If so it waits for the player to solve the random.
*******************************************************************************}
Function r_CheckAction: Boolean;
begin
Result := r_SelfSolve;
If Not Result then
Exit;

Writeln('** Press F' + IntToStr(r_FKeyFinish) + ' when you wish to continue. **');
While not IsFKeyDown(r_FKeyFinish)do
Wait(150);
end;

{*******************************************************************************
Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);
by: N1ke!
TimeStamp: 5 Aug, 2009
Description: Sets up RandomTool so it can be used.

TimeOutWait: Time until SRL will try to solve itself, before this you
have the option to solve it yourself.

FKeyForFinish: The FKey to break out of the "Solve it yourself" loop.

t_SoundPath: The path for a sound you wish to play, if random detected.
Leave blank if you don't wish to have any sound.
*******************************************************************************}
Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);
var
I, H, ArrC: Integer;
begin
r_WaitTimeout := TimeOutWait;
If Not InRange(FKeyForFinish, 1, 12) then
begin
srl_Warn('SetupRandomTool', 'Incorrect parameter FKeyForFinish [1..12] only.', warn_AllVersions);
srl_Warn('SetupRandomTool', 'FKeyForFinish is now set to 2.', warn_AllVersions);
r_FKeyFinish := 2;
end else r_FKeyFinish := FKeyForFinish;
r_UseRandomTool := True;
SoundPath := t_SoundPath;

H := High(TeleRandoms);
SetArrayLength(r_SolveAble, H+1);
For I:=0 to H do
If (TeleRandoms[I].SolveRandom <> nil) then
begin
Inc(ArrC);
r_SolveAble[ArrC-1] := I;
end;
SetArrayLength(r_SolveAble, ArrC);
end;

Not sure if it works properly, and I may have got the 2 buttons the wrong way round, I've marked where.

vilon

2009-08-06 10:49:36

Personally, I would have thought of using the event hooks in SRL (SRL_Procs) for doing something like this.
Although: this seems well done, I will try it out for sure. Nice work!

Edit: Tried it out and it worked perfectly!

Naike

2009-08-06 17:18:39

Richard, Ahh ofc.. I forgot senders could do that way ^^

If you test it, and make sure it works, then I be happy to update it.

Richard

2009-08-06 17:24:38

How would I go about tricking the system into thinking I've got a random?

EDIT: You forgot to add the include to SRL.scar :)

Naike

2009-08-06 17:40:29

Just ask around for a account in a random?

Richard

2009-08-06 18:11:39

//-----------------------------------------------------------------//
//-- Scar Standard Resource Library --//
//-- » AntiRandom Routines --//
//-----------------------------------------------------------------//
// * procedure ExitOut(sender: TObject); // * by N1ke!
// * procedure SolveItYourSelf(sender: TObject); // * by N1ke!
// * procedure LabelChange(sender: TObject); // * by N1ke!
// * Procedure r_InitForm; // * by N1ke!
// * Procedure r_SafeInitForm; // * by N1ke!
// * procedure r_ShowFormModal; // * by N1ke!
// * procedure r_SafeShowFormModal; // * by N1ke!
// * procedure r_RunAlert; // * by N1ke!
// * function r_CheckAction: Boolean; // * by N1ke!
// * Procedure r_ResetAll; // * by N1ke!
// * Procedure r_ResetAll; // * by N1ke!
//-----------------------------------------------------------------//

var
RandomTool : TForm;
InfoTxt: Array [0..3] of TLabel;
BChoice: Array [0..1] of TButton;
TimeUntilClose, CountDown: TTimer;
UseBox: TCheckBox;
r_WaitTimeout, r_CountMS, r_FKeyFinish: Integer;
r_SelfSolve: Boolean;
r_SolveAble: TIntegerArray;

{*******************************************************************************
procedure r_ItemClicked(sender: TObject);
by: Richard
TimeStamp: 5 Aug, 2009
Description: Performs the desired action
*******************************************************************************}
procedure r_ItemClicked(sender: TObject);
Begin
Case sender of
BChoice[0]: Begin
RandomTool.ModalResult:= mrOk;
r_SelfSolve := True;
end;
BChoice[1]: RandomTool.ModalResult := mrOk;
TimeUntilClose: RandomTool.ModalResult := mrOk;
CountDown: begin
Inc(r_CountMS);
InfoTxt[3].Caption := 'Timeout in: ' + MsToTime(r_WaitTimeOut-(r_CountMS*1000), 1);
end;
end;
end;

{*******************************************************************************
Procedure r_InitForm;
by: N1ke! and Richard
TimeStamp: 5 Aug, 2009
Description:
*******************************************************************************}
Procedure r_InitForm;
var
I: Integer;
InfoTxtCap: TStringArray;
begin
RandomTool := CreateForm;
With RandomTool do
Begin
With Font do
Begin
Height := -11;
Name := 'MS Sans Serif';
end;
Visible := False;
SetBounds(0, 0, 160, 210);
Position := poScreenCenter;
FormStyle := fsStayOnTop;
BorderIcons := [biSystemMenu];
BorderStyle := bsSingle;
end;

InfoTxt[0] := TLabel.Create(RandomTool);
With InfoTxt[0] do
Begin
Parent := RandomTool;
Left := 30;
Top := 10;
Width := 46;
Height := 13;
Font.Height := -14;
Font.Style := [fsBold];
Caption := 'Random found!';
end;

InfoTxtCap := ['Random: ' + Players[CurrentPlayer].Rand,
'Player stuck: ' + Players[CurrentPlayer].Name,
'Timeout in: ' + MsToTime(r_WaitTimeOut, 1)];

For I:=1 to 3 do
begin
InfoTxt[i] := TLabel.Create(RandomTool);
With InfoTxt[i] do
Begin
Parent := RandomTool;
Left := 10;
Top := 25+I*14;
Width := 46;
Height := 13;
Font.Height := -12;
Caption := InfoTxtCap[I-1];
end;
end;

InfoTxtCap := ['Solve it yourself',
'Let SRL solve it'];

For I:=0 to 1 do
begin
BChoice[I] := TButton.Create(RandomTool);
With BChoice[I] do
Begin
Parent := RandomTool;
Width := 130;
Height := 28;
Left := 10;
Top := 110+(I*30);
Caption := InfoTxtCap[I];
Font.Height := -11;
OnClick := @r_ItemClicked;
end;
end;

BChoice[1].Enabled := InIntArray(r_SolveAble, CurRandom);

TimeUntilClose := TTimer.Create(RandomTool);
With TimeUntilClose do
Begin
Interval := r_WaitTimeOut;
Enabled := True;
OnTimer := @r_ItemClicked;
end;

CountDown := TTimer.Create(RandomTool);
With CountDown do
Begin
Interval := 1000;
Enabled := True;
OnTimer := @r_ItemClicked;
end;

UseBox := TCheckBox.Create(RandomTool);
With UseBox do
Begin
Parent := RandomTool;
Left := 8;
Top := 95;
Width := 200;
Height := 13;
Caption := 'Stop using RandomTool?';
end;
end;

{*******************************************************************************
procedure r_SafeInitForm;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description:
*******************************************************************************}
procedure r_SafeInitForm;
var v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('r_InitForm', v);
end;

{*******************************************************************************
procedure r_ShowFormModal;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description:
*******************************************************************************}
procedure r_ShowFormModal;
begin
RandomTool.ShowModal;
end;

{*******************************************************************************
procedure r_SafeShowFormModal;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description:
*******************************************************************************}
procedure r_SafeShowFormModal;
var v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('r_ShowFormModal', v);
end;

{*******************************************************************************
Procedure r_ResetAll;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description: Resets all vars.
*******************************************************************************}
Procedure r_ResetAll;
begin
r_UseRandomTool := not(UseBox.Checked);
TimeUntilClose.Enabled := False;
CountDown.Enabled := False;
r_CountMS := 0;
CurRandom := 0;
r_SelfSolve := False;
Freeform(RandomTool);
end;

{*******************************************************************************
procedure r_RunAlert;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description: Runs the form.
*******************************************************************************}
procedure r_RunAlert;
begin
r_SafeInitForm;
r_SafeShowFormModal;
end;

{*******************************************************************************
Function r_CheckAction: Boolean;
by: N1ke!
TimeStamp: 5 Aug, 2009
Description: Checks if r_SelfSolve is True.
If so it waits for the player to solve the random.
*******************************************************************************}
Function r_CheckAction: Boolean;
begin
Result := r_SelfSolve;
If Not Result then
Exit;

Writeln('** Press F' + IntToStr(r_FKeyFinish) + ' when you wish to continue. **');
While not IsFKeyDown(r_FKeyFinish)do
Wait(150);
end;

{*******************************************************************************
Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);
by: N1ke!
TimeStamp: 5 Aug, 2009
Description: Sets up RandomTool so it can be used.

TimeOutWait: Time until SRL will try to solve itself, before this you
have the option to solve it yourself.

FKeyForFinish: The FKey to break out of the "Solve it yourself" loop.

t_SoundPath: The path for a sound you wish to play, if random detected.
Leave blank if you don't wish to have any sound.
*******************************************************************************}
Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);
var
I, H, ArrC: Integer;
begin
r_WaitTimeout := TimeOutWait;
If Not InRange(FKeyForFinish, 1, 12) then
begin
srl_Warn('SetupRandomTool', 'Incorrect parameter FKeyForFinish [1..12] only.', warn_AllVersions);
srl_Warn('SetupRandomTool', 'FKeyForFinish is now set to 2.', warn_AllVersions);
r_FKeyFinish := 2;
end else r_FKeyFinish := FKeyForFinish;
r_UseRandomTool := True;
SoundPath := t_SoundPath;

H := High(TeleRandoms);
SetArrayLength(r_SolveAble, H+1);
For I:=0 to H do
If (TeleRandoms[I].SolveRandom <> nil) then
begin
Inc(ArrC);
r_SolveAble[ArrC-1] := I;
end;
SetArrayLength(r_SolveAble, ArrC);
end;

Working version.

weequ

2009-09-10 21:07:31

Awsome work :D

SweDam

2012-03-04 17:22:24

Hey! When im trying to start script it says

[Error] (41:11): Duplicate identifier 'SETUPRANDOMTOOL' at line 40
Compiling failed.

Code i use:

program HeavyRodder;

{$DEFINE SRL5}
{$DEFINE SMART}

{$i SRL/srl.simba}
{$i SRL/SRL/misc/paintsmart.simba}

Const

//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';

//General settings
AlchFish = False; //Fish 'n alch method? (False for standard fish 'n drop)
SwitchWorlds = True; //Switch worlds after break?

//Break settings
BreakIn = 130; //How long before we take a break? (minutes)
BreakFor = 10; //How long will we break for? (minutes)
Bir = 13; //Random minutes to add/subtract from how long until we break
Bfr = 7; //Random minutes to add/subjtract from break duraction

Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := Skill_Fishing
Active := True;
end;
end;

Procedure SetupRandomTool(60000, 2, AppPath + 'AlertSounds\SmallBeat.wav');
var
I, H, ArrC: Integer;
begin
r_WaitTimeout := TimeOutWait, 60000;
If Not InRange(FKeyForFinish, 1, 12) then
begin
srl_Warn('SetupRandomTool', 'Incorrect parameter FKeyForFinish [1..12] only.', warn_AllVersions);
srl_Warn('SetupRandomTool', 'FKeyForFinish is now set to 2.', warn_AllVersions);
r_FKeyFinish := 2;
end else r_FKeyFinish := FKeyForFinish, 2;
r_UseRandomTool := True;
SoundPath := t_SoundPath; AppPath + 'AlertSounds\SmallBeat.wav');

H := High(TeleRandoms);
SetArrayLength(r_SolveAble, H+1);
For I:=0 to H do
If (TeleRandoms[I].SolveRandom <> nil) then
begin
Inc(ArrC);
r_SolveAble[ArrC-1] := I;
end;
SetArrayLength(r_SolveAble, ArrC);
end;


Var
Version: String;
ReportTime,CommitTime,PostID: Integer;
Trout_Caught,Trout_Ca,
Salmon_Caught,Salmon_Ca,
Sturgeon_Caught,Sturgeon_Ca,
FishXP,Fish_XP,MagicXP,Magic_XP: Integer;

//Break variables
w,x,y,z,RealBTime,CurrentBTime,
BreakRounds,TotalBreaks: Integer;


Procedure Loadvars;
begin
Version := '1.35';
PostID := 841068;
MarkTime(CommitTime);
MarkTime(ReportTime);
MouseSpeed := RandomRange(17,19);

w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);

end;

Procedure CheckVersion;
var
Page,NewVer: String;
begin
Page := GetPage('http://villavu.com/forum/showthread.php?p='+IntToStr(PostID)+'');
NewVer := Between('Current version: ', '<br />', Page);

if Version <> NewVer then
ShowMessage('Your script is out of date!')
else
Exit;

end;

Procedure Report;
begin
WriteLn('=-=-=-=-=-=-=-= Heavy-rodder '+Version+' by Flight =-=-=-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Trout caught: '+IntToStr(Trout_Caught));
WriteLn('Salmon caught: '+IntToStr(Salmon_Caught));
WriteLn('Sturgeon caught '+IntToStr(Sturgeon_Caught));
WriteLn('Fishing XP '+IntToStr(FishXP));
WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');

MarkTime(ReportTime);
end;

Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
Pic2 := BitmapFromString(360, 71, 'meJztfQV4k9f7dtt44+5aiTRt0' +
'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' +
'xtMKAxZwsD5i8haOUfEpeMw9bOxAu0z6LSsuCiguBu7+h0clSRj4k' +
'Ai+Uq4ztxKJhEjI8J7JsqXdgm7d+XsD2W+Sg6hZaxKrVK+1ikvCNR' +
'8Pi8vxQ5BY+sg243dSz6KFwH/bB7GjokxsqjI4lLHti37xAvP/Djw' +
'3OKRQLSykqxUUtU7U8D5g/X6VtHc2cXej29f/ipPIaJhW5tFel2gJ' +
'x73zzyI1LAqsiNnWZe3Vz88f2BstgzcEz5TaNMIeP84ZVFfzfKRZp' +
'9/rB4d6sUzVKmU+aFsMQ0zp8T36b1rh0YlgkVBGCHjPXKTrRWXket' +
'0kg1yeqcE5XdF3o9vnId8QfNEgY0VhrMzkuIC/FRCLgN5t4WbGxGH' +
'jtF5Te8Ue2nX0tbRvJZJQVXqiDpLtTSPDwZHtvpSdvUOuHdi66PLx' +
'y4d3r78h+m+HPzkEt2Na5cvr5n0Ra4cIhvMco5JzaJXrezh9tdR9l' +
'hL9NiymDN715VP75wTzGydEBDgr30xBcABwsPCQqUkLxZuVrEvaCs' +
'IvNe3zFnVUQPBE3wiL0rBolOeN4hYr2e6I0Yr8Dy36JOJTRTQyaw4' +
'I9UTOY8ED4rFYqYnwJwR4K8g/vRLEDGIaBAsvj7eNbJo+EO5TNbaK' +
'u1g4f9+/1abGG4bs0AmEdeo0yEGMpmMtMRYoxd5Y0/D1c1zm0dwdC' +
'KiLqCG9dtaAH1WsHB+Mo5SypPz6XwGERgLzDj6rwN+dWQv7vV65gR' +
'MyEuhKDNydWLi2QWDvi309mLjW5UWkrCIAZI8CRHhYT2SfH5pH3T/' +
'zo3VnTQgM1tZpVo/DR77Gqc1nEonKc6OlL3tbwFV/nG6FIJGO4sQl' +
'CyRgHeviI2JDpuKS9jcXXv78DpgZa1NAjGfU3mwYKUymbQsOayjlX' +
'/rxI5tPbSgDkA9BekCCbiqWwYwAPhw6xgeDO34tDZHPs8KlZGAQ4H' +
'WCwsLqxz0GqLZenSoF/AkEGJtFlCyIJGA5FzfPKt7rJBFQtRTSWKI' +
'TCpB180gQfWHh4V0tPDObZi7Z4jZX+gJQ8hJsat8vYHwvLj4iSgyJ' +
'r15VuK0pl7wWJqGshvFmyrfdwZ/AddA1riIaJ3I86dWKujSH4/vPX' +
'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' +
'8LD3a3Or39xwYUPCv8fBu29Yg==');

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);
DrawBitmap(Pic2, Canvas, 100,10);
FreeBitmap(Pic);
FreeBitmap(Pic2);
end;

Procedure OnScreen;
Var
XPH_F,XPH_M,TTB: Integer;
begin
XPH_F := Round((FishXP * 3600) / (GetTimeRunning / 1000));
XPH_M := Round((MagicXP * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

PrintOnSmart(['Version: '+Version+' (by Flight)',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'Fishing XP: '+IntToStr(FishXP)+' ('+IntToStr(XPH_F)+' / hour)',
'Magic XP: '+IntToStr(MagicXP)+' ('+IntToStr(XPH_M)+' / hour)'
],Point(15,236),16777215);
PrintOnSmart(['Time till break: '+MsToTime(TTB,Time_Bare)],Point(573,432),65280);
end;

Procedure Commit;
begin

stats_IncVariable('Leaping Trout (Caught)',(Trout_Caught-Trout_Ca));
stats_IncVariable('Leaping Salmon (Caught)',(Salmon_Caught-Salmon_Ca));
stats_IncVariable('Leaping Sturgeon (Caught)',(Sturgeon_Caught-Sturgeon_Ca));
stats_IncVariable('Fishing EXP (Gained)',(FishXP-Fish_XP));
stats_IncVariable('Magic EXP (Gained)',(MagicXP-Magic_XP));
Stats_Commit;

Trout_Ca := Trout_Caught;
Salmon_Ca := Salmon_Caught;
Sturgeon_Ca := Sturgeon_Caught;
Fish_XP := FishXP;
Magic_XP := MagicXP;

MarkTime(CommitTime);

end;

Function IsMoving_F: Boolean;
begin
Result := PixelShift(IntToBox(MMCX-30, MMCY-30, MMCX+30, MMCY+30), 200) > 200;
end;

//By Benland100, modified to paint mouse movements
procedure WindMouse2(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
var
veloX, veloY, windX, windY, veloMag, dist, randomDist, lastDist, step: extended;
lastX, lastY: integer;
sqrt2, sqrt3, sqrt5: extended;
begin
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
while hypot(xs - xe, ys - ye) > 1 do
begin
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
if (maxStep < 3) then
begin
maxStep:= random(3) + 3.0;
end else
begin
maxStep:= maxStep / sqrt5;
end;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
step:= hypot(xs - lastX, ys - lastY);
wait(round((maxWait - minWait) * (step / maxStep) + minWait));
lastdist:= dist;
SMART_DrawDotsEx(False, [Point(lastX, lastY)], 65280);
end;
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));

end;

{*******************************************************************************
Procedure HumanMMouse(eX, eY: Integer);
By: Flight
Description: Human-like miss-and-correct mouse movement
*******************************************************************************}
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;

randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse2(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;

Function AddToBelt(What: String): Boolean;
var
X,Y,Slot,T,Tool: Integer;
begin
Result := False;
case What of
'Tinderbox':
Tool := DTMFromString('mggAAAHicY2NgYDjMxMBwAojPAPFpID4IxDuA+CVQ7hkQPwLiN0D8AYpNdNgZoiPDgSwmFMwFJEEYHTDiwBAAAIohC78=');
'Barbarian rod':
Tool := DTMFromString('mggAAAHicY2NgYChlYmDIAOJKIC4C4hwgzgXi+0C5d0B8D4ifAfFbIH4IxDaB0Qy6hiZAFhMK5gKSIIwOGHFgCAAAnhsJrw==');
'Knife':
Tool := DTMFromString('mbQAAAHicY2VgYHBkYmBwAGJzILYBYk8g5mJkYOAFYjEgFgZiBiBurK5miLfjBXKY4JgLSIIwMmDEgsEAAB4RA9I=');
'Hammer':
Tool := DTMFromString('mggAAAHicY2NgYLBnYmCwBmIPIDYHYisg9gXiUEYGhhAg9gTiWCCOA2IvILbT5GTw0Odi8PfxAepmgmMuIAnDyIARB4YAAPp7BZI=');
'Chisel':
Tool := DTMFromString('mbQAAAHicY2VgYNjNxMBwCIi3A/E+IN4BxCKMDAzsQCwIxSB+iDkPg56ODlAHExxzAUkQRgaMWDAYAADN9QVM');
'Small fishing net':
Tool := DTMFromString('mbQAAAHicY2VgYDjCxMBwGIjPAvFJIN4HxAaMDAwmQKwDxBZQtqOxKoORugxQBxMccwFJEEYGjFgwGAAAEFgGGQ==');
'Fishing rod':
Tool := DTMFromString('mbQAAAHicY2VgYOhjYmCYCMQLgHg2EE8FYl5GBgY+IGYCYi4gFgZiPR0dhjB7HqAOJjjmApIgjAwYsWAwAACBxQSE');
'Harpoon':
Tool := DTMFromString('mggAAAHicY2NgYMhmYmAoBuIKIE4G4iwgLgViLkYGhv9A+T9ALA5k8zFC2Gbq7Awerq4M/j4+QB4THHMBSRhGBow4MAQAAPbNCBs=');
'Lobster pot':
Tool := DTMFromString('mrAAAAHic42BgYJjFBMETgXgaEM8D4iVAPAXKfg5U8xGIPwDxJyB+C8RPgfgdEL8E4jALHjBmYGBCwcnx8WDMBeSBMDqAiTMSwDAAAK4jD/k=');
end;

if ExistsItemDTM(Tool, X, Y) then
begin
Slot := CoordsToItem(X, Y);
MouseItem(Slot, mouse_right);
Wait(RandomRange(20, 75));
WaitOption('toolbelt', 300);
end else
Result := False;

MarkTime(T);
repeat
if (TimeFromMark(T) > 3000) then
break;
if not ExistsItemDTM(Tool, X, Y) then
break;
if FindBlackChatMessage('already on') then
break;
until(false)

Result := not ExistsItemDTM(Tool, X, Y);

FreeDTM(Tool);
end;

Function FindFishSymbols: TPointArray;
var
B: TBox;
TPA,TPA2: TPointArray;
A,L,i,CTS,Cx,Cy: Integer;
ATPA,ATPA2: T2DPointArray;
begin

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);

FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 5);
ColorToleranceSpeed(CTS);

if Length(TPA) < 1 then
Exit;

ATPA := TPAtoATPAEx(TPA, 13, 13);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);

for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);

with B do
begin
FindColorsTolerance(ATPA2[i], 16279077, B.X1, B.Y1, B.X2, B.Y2, 1);

if (Length(ATPA2[i]) > 0) then
begin
SetArrayLength(TPA2, (Length(TPA2)+1));
MiddleTPAEx(ATPA2[i], Cx, Cy);
TPA2[A] := Point(Cx, Cy);
Inc(A);
end;
end;

end;

SortTPAFrom(TPA2, Point(MMCX, MMCY));
Result := TPA2;
end;

Procedure NextSpot;
var
TP: TPoint;
TPA: TPointArray;
begin
FindNormalRandoms;

TPA := FindFishSymbols;

if (Length(TPA) = 1) then
begin
Writeln('Only 1 spot found, relocating...');
HumanMMouse(TPA[0].X, TPA[0].X-5, 1, 1);
ClickMouse2(True);
SMART_ClearCanvas;
OnScreen;

FFlag(0);
While IsMoving_F do
Wait(1);

Wait(randomrange(1500, 2875));
Exit;
end else if (Length(TPA) > 1) then
begin
TP := Point(TPA[1].X, TPA[1].Y);

HumanMMouse(TP.X, TP.Y, 4, 4);
ClickMouse2(True);
SMART_ClearCanvas;
OnScreen;

FFlag(0);
While IsMoving_F do
Wait(1);

Wait(randomrange(900,1500));
end;
end;

Function InFishingArea: Boolean;
begin
Result := (Length(FindFishsymbols) > 0);
end;

Procedure AreaCheck;
begin
if not InFishingArea then
FindNormalRandoms;
end;

Function Antiban: Boolean;
var
i: Integer;
begin
if not LoggedIn then Exit;
AreaCheck;
i := Random(40)
case i of
1,2:
begin
RandomRClick;
Result := True;
end;
3,4:
begin
RandomMovement;
Result := True;
end;
5:
begin
HoverSkill('Fishing', False);
Result := True;
end;
end;

Wait(RandomRange(250,350));
end;

Procedure GetFishType;
var
A,B,C,X,Y: Integer;
begin
A := DTMFromString('mbQAAAHicY2VgYFjNxMCwAIjXA/FOJgg/gZGBIRaI04A4HYijgbi7OxuomgkF8zNgAkYsGAwARQMG9Q==');
B := DTMFromString('mbQAAAHicY2VgYLjCxMBwAogvAvEjID4LxDaMDAxmQGwPxE5AbAzEhUmJQNVMKJifARMwYsFgAABAigan');
C := DTMFromString('mbQAAAHicY2VgYLjMxMBwC4hPA/EpIL4PxImMDAwRQJwMxDlAHAPEmnZ2QNVMKJifARMwYsFgAABXgAbb');

if FindDTM(A, X, Y, 564,250,598,280) then
begin
Inc(Trout_Caught);
IncEx(FishXP, 50);
end else if FindDTM(B, X, Y, 564,250,598,280) then
begin
Inc(Salmon_Caught);
IncEx(FishXP, 70);
end else if FindDTM(C, X, Y, 564,250,598,280) then
begin
Inc(Sturgeon_Caught);
IncEx(FishXP, 80);
end;

FreeDTM(A);
FreeDTM(B);
FreeDTM(C);
end;

Procedure FastDropSlot(Slot: Integer);
Var
TB: TBox;
begin
Case Slot of
1: TB := IntToBox(564,214,598,244);
2: TB := IntToBox(606,214,640,244);
3: TB := IntToBox(648,214,682,244);
4: TB := IntToBox(690,214,724,244);

5: TB := IntToBox(564,250,598,280);
6: TB := IntToBox(606,250,640,280);
7: TB := IntToBox(648,250,682,280);
8: TB := IntToBox(690,250,724,280);

9: TB := IntToBox(564,286,598,316);
10: TB := IntToBox(606,286,640,316);
11: TB := IntToBox(648,286,682,316);
12: TB := IntToBox(690,286,724,316);

13: TB := IntToBox(564,322,598,352);
14: TB := IntToBox(606,322,640,352);
15: TB := IntToBox(648,322,682,352);
16: TB := IntToBox(690,322,724,352);

17: TB := IntToBox(564,358,598,388);
18: TB := IntToBox(606,358,640,388);
19: TB := IntToBox(648,358,682,388);
20: TB := IntToBox(690,358,724,388);

21: TB := IntToBox(564,394,598,424);
22: TB := IntToBox(606,394,640,424);
23: TB := IntToBox(648,394,682,424);
24: TB := IntToBox(690,394,724,424);

25: TB := IntToBox(564,430,598,460);
26: TB := IntToBox(606,430,640,460);
27: TB := IntToBox(648,430,682,460);
28: TB := IntToBox(690,430,724,460);
end;

MouseSpeed := RandomRange(26,39);
MouseBox(TB.X1, TB.Y1, TB.X2, TB.Y2, mouse_right);
WaitOptionMulti(['Drop', 'rop R', 'op R'], 400);
end;

Procedure DropRemaining;
Var
I,MS,T: Integer;
begin
MS := MouseSpeed;
T := GetTimeRunning;

if not AlchFish then
begin
FastDropSlot(2);
FastDropSlot(3);
end;

FastDropSlot(4);

For I := 8 downto 5 do
begin
if (I = 9) then
Break;
FastDropSlot(I);
end;

For I := 9 to high(12) do
begin
if (I = 13) then
Break;
FastDropSlot(I);
end;

For I := 16 downto 13 do
begin
if (I = 17) then
Break;
FastDropSlot(I);
end;

For I := 17 to high(20) do
begin
if (I = 21) then
Break;
FastDropSlot(I);
end;

For I := 24 downto 21 do
begin
if (I = 25) then
Break;
FastDropSlot(I);
end;

For I := 25 to high(28) do
begin
if (I = 29) then
Break;
FastDropSlot(I);
end;

Writeln('Dropped fish in '+IntToStr(GetTimeRunning-T)+' ms.');
MouseSpeed := MS;
OnScreen;
end;

Procedure ReadyAlch;
var
X,Y,AlchBMP: Integer;
begin
AlchBMP := BitmapFromString(9, 8, 'meJxjYEABTIxMQDR7Wj8QIYuz8EkD' +
'ya0bV9+6cg6IkKXYhdiBioGCv8EA1TyggbJwFHL7FRAJLDjEFtcE5' +
'P768Qguwrvvo8Sui6zl/XBxiAjvlHVAWSBi8cmGmAAUh4gADQHKAr' +
'XApSDqgSJAKQDeIUhV');

if FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(True);
SMART_ClearCanvas;
OnScreen;
end else if not FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
GameTab(tab_Magic);
if FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(True);
SMART_ClearCanvas;
OnScreen;
end;
end;
FreeBitmap(AlchBMP);
end;

Procedure FishnAlch;
var
T: Integer;
RTA: Boolean;
begin
MarkTime(T);
RTA := False;
repeat
AreaCheck;
ClickToContinue;

if (TimeFromMark(T) > 6000) then
break;
if RTA then
begin
if ExistsItem(4) then
begin
MMouseItem(4);
//Give enough time for the previous alch to finish
Wait(RandomRange(1400, 1600));
//If this is too fast, the fishing event will reset for our player
if InvFull then
begin
GameTab(tab_Inv);
DropRemaining;
Exit;
end;
if WaitUpText('Cast', 200) then
begin
ClickMouse2(True);
IncEx(MagicXP, 65);
GetFishType;
ClickToContinue;
OnScreen;
MarkTime(T);
RTA := False;
Wait(RandomRange(1300, 1500));
end;
end;
end else
begin
ReadyAlch;
RTA := True;
end;
until(false)
end;

Procedure FishingWait;
var
T,I,I2: Integer;
begin

I := InvCount;

Marktime(T);
repeat

AreaCheck;
ClickToContinue;
if (TimeFromMark(T) > 6000) then
break;
if InvFull then
break;

GameTab(tab_Inv);
I2 := InvCount;

if (I <> I2) then
begin
Marktime(T);
GameTab(tab_Inv);
I := InvCount;
I2 := InvCount;
if AntiBan then
Marktime(T);
end;

until(false)

end;

Function FindObjSimple_F(Colors: TIntegerArray; TheUpText: TStringArray; midx, midy: integer): Boolean;
Var
T,i,X,Y: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;
Begin
MarkTime(T);
Repeat
SetArrayLength(ATPA, Length(Colors));
for i := 0 to High(Colors) do
FindColorsSpiralTolerance(midx, midy, ATPA[i], Colors[i], MSX1, MSY1, MSX2, MSY2, 10);
TPA := MergeATPA(ATPA);
ATPA := TPAtoATPAEx(TPA, 15, 15);
SortATPAFrom(ATPA, Point(MSCX, MSCY));
if (Length(ATPA) = 0) then
Exit;

MiddleTPAEx(ATPA[0], x, y);

if (TimeFromMark(T) > 5000) then
Exit;

HumanMMouse(x, y, 10, 10);
Wait(randomrange(75,125));
If(IsUpTextMultiCustom(TheUpText)) then
begin
ClickMouse2(True);
if DidRedClick then
begin
SMART_ClearCanvas;
OnScreen;
Result := True;
Break;
end;
end;
Until(Result)
end;

Procedure StartFishing;
var
XP1,XP2,XP3,TroutDTM,
SalmonDTM,SturgeonDTM,
TC,SaC,StC: Integer;
begin
if not LoggedIn then
Exit;

if InvFull then
begin

TroutDTM := DTMFromString('mbQAAAHicY2VgYFjNxMCwAIjXA/FOJgg/gZGBIRaI04A4HYijgbi7OxuomgkF8zNgAkYsGAwARQMG9Q==');
SalmonDTM := DTMFromString('mbQAAAHicY2VgYLjCxMBwAogvAvEjID4LxDaMDAxmQGwPxE5AbAzEhUmJQNVMKJifARMwYsFgAABAigan');
SturgeonDTM := DTMFromString('mbQAAAHicY2VgYLjMxMBwC4hPA/EpIL4PxImMDAwRQJwMxDlAHAPEmnZ2QNVMKJifARMwYsFgAABXgAbb');

TC := CountItems('dtm', TroutDTM, []);
SaC := CountItems('dtm', SalmonDTM, []);
StC := CountItems('dtm', SturgeonDTM, []);

IncEx(Trout_Caught, TC);
IncEx(Salmon_Caught, SaC);
IncEx(Sturgeon_Caught, StC);
XP1 := (TC*50);
XP2 := (SaC*70);
XP3 := (StC*80);
IncEx(FishXP, XP1+XP2+XP3);
Report;
FreeDTM(TroutDTM);
FreeDTM(SalmonDTM);
FreeDTM(SturgeonDTM);
DropRemaining;
end;

MakeCompass('W');
if FindObjSimple_F([11181203,11248801,11379872,11644073,11709866], ['se-Rod','Fishing','spot'], MSCX, MSCY) then
begin
FFlag(0);
Wait(RandomRange(2000,2500));
if AlchFish then
begin
FishnAlch;
end else
FishingWait;
end else
NextSpot;

end;

Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
h,m,s: integer;
begin
if not LoggedIn then Exit;

if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
OnScreen;
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
SetAngle(SRL_ANGLE_HIGH);
MakeCompass('E');
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
end;
end;
end;

begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;

setupSRL();

Loadvars;
DeclarePlayers;
SetupRandomTool(60000, 2, AppPath + 'AlertSounds\SmallBeat.wav');
CheckStats;
CheckVersion;

LogInPlayer;
SetAngle(SRL_ANGLE_HIGH);

SMART_ClearCanvas;

OnScreen;
AddToBelt('Barbarian rod');

Repeat
if not LoggedIn then LoginPlayer;

if (TimeFromMark(CommitTime)>=30000) then
Commit;
if (TimeFromMark(ReportTime)>=5000) then
Report;
BreakHandler(BreakIn,BreakFor,Bir,Bfr);

AreaCheck;

StartFishing;

Until(false)

end.

SweDam

2012-03-04 17:25:34

Wow i'm really sorry for that! I wanted the text to be in a scroll box!

Brandon

2012-03-04 17:26:50

Use simba tags or code tags.. just press edit.

masterBB

2012-03-04 17:33:19

It's already a part of srl. Don't copy the procedure in your script. Just use SetupRandomTool.

Sin

2012-03-04 17:43:13

Wow gravedig much?

masterBB

2012-03-04 17:45:36

From: Sin
Wow gravedig much?


It is in the tutorial section. This isn't a gravedig.

SweDam

2012-03-04 17:54:15

I'm sorry im pretty new to this, how to i add it? I find it in the function list but yeah.. theres the stopsign for me. xD

masterBB

2012-03-04 18:02:20

Here it is. Please look how I did it. You had to remove that procedure. Also could you remove the above code or place it in Simba tags to keep this thread readable, please.

program HeavyRodder;

{$DEFINE SRL5}
{$DEFINE SMART}

{$i SRL/srl.simba}
{$i SRL/SRL/misc/paintsmart.simba}

Const

//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';

//General settings
AlchFish = False; //Fish 'n alch method? (False for standard fish 'n drop)
SwitchWorlds = True; //Switch worlds after break?

//Break settings
BreakIn = 130; //How long before we take a break? (minutes)
BreakFor = 10; //How long will we break for? (minutes)
Bir = 13; //Random minutes to add/subtract from how long until we break
Bfr = 7; //Random minutes to add/subjtract from break duraction

Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := Skill_Fishing
Active := True;
end;
end;


Var
Version: String;
ReportTime,CommitTime,PostID: Integer;
Trout_Caught,Trout_Ca,
Salmon_Caught,Salmon_Ca,
Sturgeon_Caught,Sturgeon_Ca,
FishXP,Fish_XP,MagicXP,Magic_XP: Integer;

//Break variables
w,x,y,z,RealBTime,CurrentBTime,
BreakRounds,TotalBreaks: Integer;


Procedure Loadvars;
begin
Version := '1.35';
PostID := 841068;
MarkTime(CommitTime);
MarkTime(ReportTime);
MouseSpeed := RandomRange(17,19);

w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);

end;

Procedure CheckVersion;
var
Page,NewVer: String;
begin
Page := GetPage('http://villavu.com/forum/showthread.php?p='+IntToStr(PostID)+'');
NewVer := Between('Current version: ', '<br />', Page);

if Version <> NewVer then
ShowMessage('Your script is out of date!')
else
Exit;

end;

Procedure Report;
begin
WriteLn('=-=-=-=-=-=-=-= Heavy-rodder '+Version+' by Flight =-=-=-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Trout caught: '+IntToStr(Trout_Caught));
WriteLn('Salmon caught: '+IntToStr(Salmon_Caught));
WriteLn('Sturgeon caught '+IntToStr(Sturgeon_Caught));
WriteLn('Fishing XP '+IntToStr(FishXP));
WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');

MarkTime(ReportTime);
end;

Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
Pic2 := BitmapFromString(360, 71, 'meJztfQV4k9f7dtt44+5aiTRt0' +
'zT1tNGmblShBaq4uwyXsQEDtsFgQ8eQMcY2nCHD3Snu7m4Dtt/3PW' +
'/DWNeWUkbLgH/uq9cE0pNz3vPIfR95Xjc3F1xwoX7gDj/u702zLrj' +
'gwn8ODw93CslTwsBhUPXp5A3UrAsuuPAugIDHR4SGdLTwu5dkknGo' +
'+mIIDdTsuwYYl4e72wc6OBfqDe7u7igPDwwahUa5fwAGA6xAKBCUx' +
'Os6WvmbN6wrbpzBJKLf2WbfNYAxED0JEh6TTcKgPN53W3ChoQB2gs' +
'fjZFJJRHh4uEGn9ZFKOFQKHvX+ZlMcFhsRERGlIE8u8Cr/aVSPWIF' +
'SJnxzD2igZt8OICnAnKLrIK9gmEG6wBZmychBvVunGDR8git6uFAF' +
'SHIheur1+lKrN9hVuIzUP1HUs1l848zkAKEn6T2k4jAiLoeTHx/mx' +
'cIdHp+/rZdOwcIFB/p7vNlIGqjZtwMUykPA56WnpaYECzEwpS/vsn' +
'OYTZOjByWLz509802Rf2ZKPBmPeouddeFdh4eHB4VCjoyMaBPDsyo' +
'pk/O9Dn1dcmzZpB1zhi0e3nRS76YtM6JxaI/3K9tg0OigIF2chtY4' +
'hPn4+tludqGMiQvWB72hgzdQs28B0EGip6fdZmkaxl72/eRubUtAX' +
'r2s0zDMwICA1jG8raPyjv8wMFlLt1vNBBzmrfbYhXcYEDSoVEpMTE' +
'wbE29Iivj82ulXN848OCbz9ILBD6+fv3/17KVDW/fv2vrN+HFWJZW' +
'A8fiv+1snQLqk02hZCWYWEb2yg/rM972CJSSHmqpWq97EwRuo2bcD' +
'iPtikahFrHpwivjy8X2944QBvpIacwEMk0ImpyXYU/xp1w6un1fqm' +
'2dgBvhrUR7vx+y70NBALIRCNptMLaK53xV637txcc9Qc3ogw1/o2c' +
'Mh3DR/wrWrV548fnjv/KGNw9LamXi28EDcS3PUOwQ0CqXRaPJD2Wk' +
'B9NuHfhuXKweOXWKSCPm82tj5f9Ts2wFQiGC9PklL29gr9Nic3uFy' +
'UoheV2O4gwijkMvbx8rH5cjvnNgBQaPM7vtejNGFtwAwAzKZZDQaW' +
'xi5U5t5P3pwf10XLZhTsIRYlmGKjwrwFxC+mzrx+Nrv/3jyqPyzdK' +
'MXuTQugMsgvePWg4yLREpyWL1Y+G299Wfn94tQkIk4D4fVRCQQ3rV' +
'm3w7A40kkYrLDrBN5nv5p6LL2apMPJUgXWGPcwONwJlMMKNb9E8vK' +
'v2is4RFS4iwkT8+3320X3jWAF3h6EkIMBtCwozNl96+f39RNGyolg' +
'ZKNj3MIeBw8xp2E80iL9h+RLrm46qvj09qAmzSP4CjEgnc8bqBQHl' +
'4KRTubpJ2Z9/jmxU8aSakEVGkUx0shfxM10UDNvh1AB/k8bmFsQIa' +
'O8eDKqc5Wfq6BpfL1qU4hgGzwuNxmCaHZesa9C0dHZUotvpRgfRBw' +
'rf+k5y68OwBrweGwfn6aNrHenW3864c37h4YGaUgx6ppNquVSiY5H' +
'QGN8jBGhsmYuN86a87/MixURsoNZvooZO/4AqkngWC3WRP8aOVT2h' +
'2f0iJUTgbiZIqJ9iTg36TjDdTs2wFEA18fnzIjd1Qj6Y3dS+xKagu' +
'LTCzkV48bIGd0gYGgTeaW+l7ZOCtWRWtpEktEQpdIcQGNRkml0sIE' +
'A8SK4/OHHplY6FDTQJ7Ex9poFPILC4G4ERUVicd4TGvqdeb7XloBo' +
'YmB5a2Qvssm5Fz9a50eMbnA69GtSwOSRFwyJjfJwmYx36TbDdTsWw' +
'OwBUOwPiOQsWdsk/IxjXy5hBy7gUGjVvkYjIVKoaTFW/US4qkFQ3f' +
'01onp2LQ4M4VE/E+67cK7A3ABFovZKNEqZeAm5Stula8qjuRo+ISM' +
'JAeLQa9MucHYjFGRBIzHTy2Vh8ZmimnY4gi2TCJ6lx0FtHlkRHhXm' +
'+DEyqnln+eGSIktbD7eXgoM6o32Ahqo2bcGIEXxjtiUAPqtY1u+yZ' +
'dLGDiLKRqPw1b5GMoD0WJtzXzQYk8fP2hr4sV4k10ixQXnsgZEgzA' +
'ZCcjqlXVTF7ZRQeosSw6BfIr+pwKpiBtRoOJ39w3a0l0L/1Fo8eFx' +
'2O+sTnFq8+KshPkt/e6cPTgoWZStZ4aGhlR3kHeh2bcGmHQOm9U83' +
'fJlnvzO6X35oawWUVwIetWXZZAV0Zhog4S4rV/kye+66sTEUrNcLB' +
'S8F5zq3wFGBmb/4Y6vfgAKxcfHp5VJyCKigUVcWjXB6kuBgGCzmgl' +
'4XJUPgxXF2u0KFu74jPbTm3mDYGkUG0Elk/6TntcFWAxGrw/qFSc8' +
'tHDc/kllDjU1LSmBRqG8oVE0ULNvDcAilL4+vdL8to5veWx2L0gZa' +
'Ql2CrnqvpgzPDaPN8AAb+xdNiXfi+GJTnJYP+CdFBTKg0omghbz4e' +
'DR7/7q9n8EiKoMBj093kzGeTTSMW7vXzGpiYJGQOUEM8Guqjw2sCI' +
'ul1OYZkrS0u4c29wnTkT3RMfExGAx7+gdLmR0dHpuqqObnf/wwf3P' +
'c+Qd4n0hq77haaUGavZtgoDHW8zmltHcqwc3Lm2rLoxgB/hrq0sP5' +
'4poZhDzq8bym3uWJGvpyf50f63fWx5pxSVcd5QH8lNHT/7786/zRR' +
'gMmsflOKINY0aPnPXttPRI5ftyrPEtA/KmTqdL0tIldCzojguLRsT' +
'4kNEebnnxUQwatcozB7IRERERq6Z+W+h9Y9fCeA0tM4ihUvq+s1EZ' +
'qJSfRtM6hreyvebC+plxGlp6UhyZRHzD7jZQs28N4HvAIorSzRMaK' +
'0BktYrmNk8K47JZ7tU+RqVQ0hOsAULP47N77vrIAEbS1KHnsJhvba' +
'TQBzBRFpPh4+2l1wUYAjR+UhbktdotDofFCgWCAI0yUEIj4urq+Fg' +
'sRiIWN87J+qJFzNH9O5aMad80J51OwtfDMD4swKSwWay8eGR/pGkY' +
'+96JrRObKBhElL+AAFIdck3lDwN/E4tFJQl6u4p6cd303zr7iWjYf' +
'IeBzWT85/7izEcVPxXVISr+CewIzD41wW70Ip/4YeCW/saMQIYhWF' +
'/3Bb0GavY/B3Q1MCCgnZm344vio7N6WnwpoD1ftiLazszvYOE9/f1' +
'hBzPPi40DeonDvo07KfCcwf35fF5YWFiuIyw/hB2pIEfIyX3ihf16' +
'dqYQUOiXrKnBL4pEwrwoeYwP5etC7aypE5ulRNdOG5yHEGCwzRvF9' +
'XIITmz66dCs3u0tfJvZRHhPFqzeJpwXsmwqqoKJ3d0n8NLysbEqKp' +
'CNEquPQPCPfXznOVKH3RIiJS5tp766aVZ6IMOPT4iMjHxzK3qTsOO' +
'0LgadJhEJvBUyXy+Zt0wsE/NFAq6Azw/WB3WJk0/Ikz+6caFtDK80' +
'igtyoi5Mt4GarXfAdwIVh946w1odf4VCJqfE2+I01Kv7Vv7YQtkii' +
'qNRK6uTRtAyZpMpQk7aOcxxfHr7IAkRmIlMKmnokUL7oBdYLGZISE' +
'iz+JBwOcmbjcvQMb7Mle8eaj0yf+jh/bvGtUuyBIhqvOAA4c4QHIx' +
'yd0vxp1/aumB5B/++mToFn15Lp4FpeHkpijKsrWO4x5dPOjG3T1kU' +
't62J916c33vLcNpPqi0Cg3JvEsK6c2jN9yU+PAqG7omuviIK86jRa' +
'EAOF4Wz757aPbO5D5eMKbL7VQkvrwWwdkh88EUMChG+9HUrOXh4eH' +
'gSCFKJxGiMyo4NbWmRtYrhdrLyuyfIuqbr22dGt8yy921TAAZwetk' +
'XB0an+guJBWFskeAVVyoaqNk3BxgwuAn6L42PlEbB4bgcjtLHy1/t' +
'q/GWyQQsBvHV5XTgscuk0tYWSbMw1v0Lh2cU+rQtzOExKFW6/3xFN' +
'CEkR8+AGf8yV8EkopPjrGRiw8ox+F4i0VOlUuUkWkAI25SUqU29ys' +
'dknlsw8ObOnx5eOPjnsycn5/bOD2UVhnO8BIzqTx05YhQZAfyil0M' +
'In881sPJDWEov+csmCIKGXCYrzLAVRbCPLxpz+seBEB4DBJ6xNuQg' +
'feXfeUciiPtz6ou4Dzgm/MCQK//UfRXoXwDahtRZbIUIgP65lfLmj' +
'h8b6RhYlFtxZNVj0uBKXC6ncYo1REIsn1h8fGqrKC9yoJAIZOPfbT' +
'uCbYBvggLVBwXF2cyNk6LbFDVOChbXvZ4YPCvokikmuoVFbpASs/T' +
'M8bnylZ381/YKX9vf/tuAuBW9YhZ1DFrYWrXz44Rnz55OaiI3+1Is' +
'MUYioTa52kDNvjmclw2D1fIUh1nKAu6MgZhvMBjyrdrMIEaSlt4mh' +
'tsjN6q0sMCXi689cgCPgolT8Qjwi2eXfrZm9jijN9lpaR4ezrVEMD' +
'wP4O0wO+Cev7bXXF47FVw4J5ipUatqWRH9a/XSw7kg+S+qwyErKlS' +
'KMSoSMpQ3Gz+qkfTqrsXnfhl+bFLRvbP7nz198r///e/J7cun53TP' +
'CWYJqJhgnX/1OIkcaY6KhGw4JEV8c/ciUGHIIr+PokZfApcD9V2Q7' +
'iiMYB+ZP+zswhEtjVw5C5edaOGwWFUoNxGPJeHeqhp9oZSdkwIRgk' +
'DA06gUPo/n4+0FvNcUHWU2m6KNUVGR4RAt4Z+RYSFhOo1GRGugrjq' +
'PGTcLY+tEnqdmdtw/IFTGxKE83FLjLBTS3/tx8LhIJKLVYrarqPPK' +
'fO+d2tnOxIMuNUk0stms141rziwJ8tNsiim2KkGBwhzFqWkTGisWz' +
'5ncxKSke76i7JRTiioUitxEE3LK3cDcPjT298cPT83tc3J2T7Cuh9' +
'fPP7x09MH58nund989vgX5j5Pbx2XLO7QuEwv5L0vHDdTsX42/qUN' +
'BoNDrg4Crg7OXNGsi59GMYcEJfjQlF/9xhnTXuIITq789tmP1/j27' +
'Fn43Yeig/gIqtsalQxgmi8nMiwv3xHpAgjj109BNqxYDh6HgUf4yl' +
'j7ALzgoMDhIBwYJhtiyeV4yUP0t81d10ghp2Oz4GDq16lL5i2bBpM' +
'GeQcX4a/0M+kBDoFbjLZEwcNjXqdKMx+PCwkJDpCQI2tv6hDy8eHh' +
'eqS+ErAHJ4tUzRx3Yv+/OrRvAN65v/f6LHFlJJEcXoK2uI5xHEyFu' +
'jEiXXN/2g8mHkq2vOW6gUB48HjcnNR749oEZ3c//+mVHC19CxzZJM' +
'omFgipzCvFWp5T069a+JNGAb+BNFnf351ScyaCLRUJfH+8Af3+DIT' +
'g62hhvt2YnxJQk6Dvb+KkBDIOUlOhHyw9lQyBtFMQAaQY/WUGMz3J' +
'9e5Rk/gsa/0pUHDMONkiI2XrGo8vHBiSJCFiP9EC6n0b9Iqc4vQn6' +
'3N7M7+EQPLh0bEFLpZiOLQhlwcew6NcLaDBNNBoVsmRxgh4MQy8hl' +
'hm5y9qpT8zo8OjGhe3DE/MMzNQ4KxFbS0ZD6hYCiS1KDIFwN6XA69' +
'658sPjsjpaeMESIjzABR0MBzYsvXvn9h9PHv3vzz/g5//9789b+38' +
'dn6foXuDQqrxrNOMGatatnhwK7J1GpWbYQsl4jyYhzMm9G0O8HdG1' +
'GNLonqG2O0fWb+im/SRD2tMhBEkOEQ8yLDxhHhVX/QtgCtRqFfiRm' +
'IYB/n99x09XLl1YPvfrBXNmfNk8sL2J1yKaWxrFLY3klBk5feNFez' +
'5vdnnd9Fw9M9GPrgsMxNQ045Cy6XRaQIB/uiOmhZELn4xUkG0qyvB' +
's1Yj+3ZvHyITUOo0V+iaVSkoTgkJkpL0jEi+tmgDyEOKVDwc/uG93' +
'cAEuBbNhzmc39y774/cH+75p81ljNTzM6qdzoZPI4i3afSTQlfXTg' +
'BvDeH29q+oUYNEMBj05wQF/u21U7tWt8/rGC6UMXEFyjFQsQv+z2Y' +
'paZ+zS4sLFXw/5durXKp7nK93RmSNePex/AvE4LBbkp9bPz241Q4R' +
'vaZW3N/MgyDcL4+QZWG1ieMPSJLOKfX7rZz0wteOlTXPAd36/f+vp' +
'4wfwH7ePbbm2c+HlzXMvlW/c9uP44cXmIAnlZQvI/w6eBHyc3ULAe' +
'IzNll3b9B0YG9rDLTcxuvL2a8WlFUlxuqmJgXlu9eSDo9MivUigUC' +
'xmE9GT8No74zxugsMO1LdxCGt1R83BcdnnF31y59CaZw9vX137DTg' +
'plYByqKkiDu1lSQ2CmFKpLE0MjvEm7xhih9Q/rZmXVuCJx7hD5m2X' +
'FpIRpQQ3X/3zd5f3rX5y9yo4+J9PH8PoBiWLQZ5nWvQ0QtWjJg3Ur' +
'Fv9ORSkVEg6ZRY5j4weky3d/8vniycO3P7D2LMrJlxeM6mtmcejYG' +
'AewVMgD8IPZMyMEBGPVXUl0Fndy2GzkHEeZh/KkbHpv9849/Dq6Wu' +
'HNlw/tvPurWs3Tx+4Wr7h9KrJR38YdPzHYbdP7zv5XZcuNgGLhG6c' +
'GM1iVN04c8ZbuVyeGmcCZsIjY2wqKjyTrT0CyieVHJo35OSutUvHd' +
'uzXoxPwn1fSSIiNyYnxQKK2DTSBvmgVw6V5oiButCpuyiFhMB7uDn' +
'8ueNCSNiqwmdsndv7Q1do0N4NJrmqHWAwalCY8h/F58osrxoVIiUA' +
'nfLxk1df5TaaYrCDmwlYqSBNjsmViBq4wKVIhk1YPjxW1zrSDc3VH' +
'Ni+d0SsTBGPtO8FA5hlUkk5KQwZeZz9BKhsQPXWBAQWJkc3D2THeF' +
'HgIkMU2DI4/9OOIa0e2PLx1+dr2Bafm9S8fk7m9p//cEt9PG0k7Wf' +
'gQVTpbBd82994z1HJiVrcLy8ee/r7PkrZqsLfS9GgO9fVctdYeIvG' +
'zqSOIT8Hs/9i29yM92B484RBD8IuHBgGZw2Fnp8ZDQC6f1gWkX2MD' +
'U0jFZCRYEBN6HYUCQUMiEeek2JO1tNnFPrdO7bm0euLlbQtuX7/88' +
'MH9Z78/vLxqPGQ6MP78WAOLQX9ZI3K5rDAlKlZF3fd506sbZ0KG5Z' +
'IxLCK6zOEfbYwUcZkEjDvM1JCPeoAxXFk3FSLSk1sXT83skKVn4tH' +
'uTew6Jq3q0daGaLYeHcqtYoPAT6PJDGL68Qkbu/vfPrrp9sWTl9bN' +
'KP/E0TSMxfBEQUYuzrDEOWIjgwNCA3wDfKUCNr06G0Q2KIXCEhsiB' +
'gcni+8eWXdz1y8nvine3E07qYlicIoYOOfiNqpLa6c9/f3Rk/s3T3' +
'3XqSSSDYHRoqQE6XRV9uVhjKC1tVptUaw/BLQ4DXVFB/Xpub1AGtw' +
'/tePJzfPACkDVburuD/IqXKepJUQ6mwJx1CdRurpn5P2LR0dnysAg' +
'g8TE7MwMfsUj4lBwbQrS5EwcZNsb2+cD8TuydOLIJgGWUP8qe6xYD' +
'MZmMcEfziz0OTW7Ozw08EGFTPzCYJ1fB7wXRHobE+/ehaPgYvAMW9' +
'qVSl+f6ocYnSXdstOTBiWJ7ty8NjhZEqoPqHWdxx3iszEitHdGQP8' +
'urUAD1jHhQw+lXFo7m6R3vHDDoNgre1fcOb71+PT2O3r5T8736uUQ' +
'Ng1j21XUAKEnPAcwURoBRcQh+YJOQKl4BLMvBcwM7A38FKQKSBj4a' +
'quS6iUV1lfcqDhm7AupH5zl9v4VMBeQW4vtaj6P43y8YGOQKxPi40' +
'qjOFs/zb6+c2GvOCEEmaZJUSJE+r2GvgPHBNKSn2qFlL15SPzd03t' +
'/KPWFFDClqff8iR/v3fjr/dvXIYN8kSsDKQpMpsaNXQhiQFfyUmMT' +
'/KhAnq9s+BakE5h0kpaWmuiQiYU4LLInBz8sGqkwKxHy6d6BkY8uH' +
'oLRgRQC44G5S7EZyUTPhmn27yo99ehQTjhr5kAcsympR8c3/uPRHU' +
'ijU5t6RypIYDZKLiE9MVYk4OGxCLl2bsjW2CI4PqKRvckwEWfn9z+' +
'3YOBnWbK0AHqgyBNmFsgem4QGy1w0rtuu7ZtPbV+xoYsW/gqFsNAY' +
'ENr/2FmoGGNgYGCLaD4J5wHh68y8vvdPbrt9YCUEnD//eAY6DijZr' +
'd0LIQkC/8mKj6aQXlrICIiZQi5r1zR9Qafwh/fu/NpeDYNKC2TE2u' +
'0MMvJbWLRHcKBfrJqm4uJXdNDcPboB2r++e+mEPEUbE9dPyqnsmXg' +
'cNtZqgl6t7KA5ODpVTMeVRXEkIv6LuIHFYoBetrL7wKM4PrvXoc/z' +
'IhSklAB6SIihxnV+EFAqpbKrQ7q6j+nMqinNwtmGl1RFe9G+RqNuH' +
'68clyNbs3JZcqiCQcTUxXPhM+Dp48eNPn1oz8Gp7YBLwEPQCgiQd8' +
'h4FDAoEg4FwjlHz2xnFZemhOdnxKenpZmjQsMCVcF+Xnq1PEavLC4' +
'u6tXECkNGwgsL2b8W8Tn1pVRAQxmNRhkD+1GC8M7htUlaOuhHR6yd' +
'gEWSlLOYpNlk6mzjr+lnv3Nqz1eN5WI6tjg+yEshr1HkvgxOpgFBA' +
'wTIjlE513f8PDRVImVg4zW0ovxsFhHzzZih++cMevrg1u4h5mgvck' +
'xMNBZdQ8CnUinxDhvQlU0DrDf2LOsTJwIjL4pgR0SEUymkF5MI/2L' +
'SaU0SI8FW5xb7AA8/MbkUYhRYkYZPAK+pfDqrXpv9e0WoHh3K7a+V' +
'zMYVK5kgdq789jXEWAhZQA6BBUHeSU90cFjMV6Y05yJJo0Qr2OHeY' +
'bYLiz+FYQJ7hGwFfYfpaOFQN85uZPShw/8qeYS5w1ps7hsKDgVsUx' +
'+kqzzpTmWn0WhamCVErEdqAO3o+CYPzu49+/Pws9sXHzu079KlS48' +
'fPXx85fjJ6a3By+A5FBilXFbNNBLZreOwC/IbT20VevPK+V2fJAE/' +
'BxUfFhpC9kTKmMDIYIAFSUZwHOjMyWkt4fk/u3/94pKR3WMFHBI6O' +
'8FE9fw714AAT4w1c8iYfcPMG7ohVy+L7Boei+H8W+cGStPkKFCg2/' +
'qEXFk7GVQz5Ov0RDuNWsP1ImRfgEhMcNggaJ/5deKG3qHAXvxeXjw' +
'WhUKJRMJmqSaHmnZyydj1Q5PABkL0urq8ZsIJiGbTxg4amyVL8acD' +
'yQSp0jrBv1maLS01xRiqC1QpfKV8MYfGpuCpBDTQKgzq+ekd5DCPu' +
'xtMKAxZwsD5i8haOUfEpeMw9bOxAu0z6LSsuCiguBu7+h0clSRj4k' +
'Ai+Uq4ztxKJhEjI8J7JsqXdgm7d+XsD2W+Sg6hZaxKrVK+1ikvCNR' +
'8Pi8vxQ5BY+sg243dSz6KFwH/bB7GjokxsqjI4lLHti37xAvP/Djw' +
'3OKRQLSykqxUUtU7U8D5g/X6VtHc2cXej29f/ipPIaJhW5tFel2gJ' +
'x73zzyI1LAqsiNnWZe3Vz88f2BstgzcEz5TaNMIeP84ZVFfzfKRZp' +
'9/rB4d6sUzVKmU+aFsMQ0zp8T36b1rh0YlgkVBGCHjPXKTrRWXket' +
'0kg1yeqcE5XdF3o9vnId8QfNEgY0VhrMzkuIC/FRCLgN5t4WbGxGH' +
'jtF5Te8Ue2nX0tbRvJZJQVXqiDpLtTSPDwZHtvpSdvUOuHdi66PLx' +
'y4d3r78h+m+HPzkEt2Na5cvr5n0Ra4cIhvMco5JzaJXrezh9tdR9l' +
'hL9NiymDN715VP75wTzGydEBDgr30xBcABwsPCQqUkLxZuVrEvaCs' +
'IvNe3zFnVUQPBE3wiL0rBolOeN4hYr2e6I0Yr8Dy36JOJTRTQyaw4' +
'I9UTOY8ED4rFYqYnwJwR4K8g/vRLEDGIaBAsvj7eNbJo+EO5TNbaK' +
'u1g4f9+/1abGG4bs0AmEdeo0yEGMpmMtMRYoxd5Y0/D1c1zm0dwdC' +
'KiLqCG9dtaAH1WsHB+Mo5SypPz6XwGERgLzDj6rwN+dWQv7vV65gR' +
'MyEuhKDNydWLi2QWDvi309mLjW5UWkrCIAZI8CRHhYT2SfH5pH3T/' +
'zo3VnTQgM1tZpVo/DR77Gqc1nEonKc6OlL3tbwFV/nG6FIJGO4sQl' +
'CyRgHeviI2JDpuKS9jcXXv78DpgZa1NAjGfU3mwYKUymbQsOayjlX' +
'/rxI5tPbSgDkA9BekCCbiqWwYwAPhw6xgeDO34tDZHPs8KlZGAQ4H' +
'WCwsLqxz0GqLZenSoF/AkEGJtFlCyIJGA5FzfPKt7rJBFQtRTSWKI' +
'TCpB180gQfWHh4V0tPDObZi7Z4jZX+gJQ8hJsat8vYHwvLj4iSgyJ' +
'r15VuK0pl7wWJqGshvFmyrfdwZ/AddA1riIaJ3I86dWKujSH4/vPX' +
'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' +
'8LD3a3Or39xwYUPCv8fBu29Yg==');

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);
DrawBitmap(Pic2, Canvas, 100,10);
FreeBitmap(Pic);
FreeBitmap(Pic2);
end;

Procedure OnScreen;
Var
XPH_F,XPH_M,TTB: Integer;
begin
XPH_F := Round((FishXP * 3600) / (GetTimeRunning / 1000));
XPH_M := Round((MagicXP * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

PrintOnSmart(['Version: '+Version+' (by Flight)',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'Fishing XP: '+IntToStr(FishXP)+' ('+IntToStr(XPH_F)+' / hour)',
'Magic XP: '+IntToStr(MagicXP)+' ('+IntToStr(XPH_M)+' / hour)'
],Point(15,236),16777215);
PrintOnSmart(['Time till break: '+MsToTime(TTB,Time_Bare)],Point(573,432),65280);
end;

Procedure Commit;
begin

stats_IncVariable('Leaping Trout (Caught)',(Trout_Caught-Trout_Ca));
stats_IncVariable('Leaping Salmon (Caught)',(Salmon_Caught-Salmon_Ca));
stats_IncVariable('Leaping Sturgeon (Caught)',(Sturgeon_Caught-Sturgeon_Ca));
stats_IncVariable('Fishing EXP (Gained)',(FishXP-Fish_XP));
stats_IncVariable('Magic EXP (Gained)',(MagicXP-Magic_XP));
Stats_Commit;

Trout_Ca := Trout_Caught;
Salmon_Ca := Salmon_Caught;
Sturgeon_Ca := Sturgeon_Caught;
Fish_XP := FishXP;
Magic_XP := MagicXP;

MarkTime(CommitTime);

end;

Function IsMoving_F: Boolean;
begin
Result := PixelShift(IntToBox(MMCX-30, MMCY-30, MMCX+30, MMCY+30), 200) > 200;
end;

//By Benland100, modified to paint mouse movements
procedure WindMouse2(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
var
veloX, veloY, windX, windY, veloMag, dist, randomDist, lastDist, step: extended;
lastX, lastY: integer;
sqrt2, sqrt3, sqrt5: extended;
begin
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
while hypot(xs - xe, ys - ye) > 1 do
begin
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
if (maxStep < 3) then
begin
maxStep:= random(3) + 3.0;
end else
begin
maxStep:= maxStep / sqrt5;
end;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
step:= hypot(xs - lastX, ys - lastY);
wait(round((maxWait - minWait) * (step / maxStep) + minWait));
lastdist:= dist;
SMART_DrawDotsEx(False, [Point(lastX, lastY)], 65280);
end;
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));

end;

{*******************************************************************************
Procedure HumanMMouse(eX, eY: Integer);
By: Flight
Description: Human-like miss-and-correct mouse movement
*******************************************************************************}
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;

randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse2(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;

Function AddToBelt(What: String): Boolean;
var
X,Y,Slot,T,Tool: Integer;
begin
Result := False;
case What of
'Tinderbox':
Tool := DTMFromString('mggAAAHicY2NgYDjMxMBwAojPAPFpID4IxDuA+CVQ7hkQPwLiN0D8AYpNdNgZoiPDgSwmFMwFJEEYHTDiwBAAAIohC78=');
'Barbarian rod':
Tool := DTMFromString('mggAAAHicY2NgYChlYmDIAOJKIC4C4hwgzgXi+0C5d0B8D4ifAfFbIH4IxDaB0Qy6hiZAFhMK5gKSIIwOGHFgCAAAnhsJrw==');
'Knife':
Tool := DTMFromString('mbQAAAHicY2VgYHBkYmBwAGJzILYBYk8g5mJkYOAFYjEgFgZiBiBurK5miLfjBXKY4JgLSIIwMmDEgsEAAB4RA9I=');
'Hammer':
Tool := DTMFromString('mggAAAHicY2NgYLBnYmCwBmIPIDYHYisg9gXiUEYGhhAg9gTiWCCOA2IvILbT5GTw0Odi8PfxAepmgmMuIAnDyIARB4YAAPp7BZI=');
'Chisel':
Tool := DTMFromString('mbQAAAHicY2VgYNjNxMBwCIi3A/E+IN4BxCKMDAzsQCwIxSB+iDkPg56ODlAHExxzAUkQRgaMWDAYAADN9QVM');
'Small fishing net':
Tool := DTMFromString('mbQAAAHicY2VgYDjCxMBwGIjPAvFJIN4HxAaMDAwmQKwDxBZQtqOxKoORugxQBxMccwFJEEYGjFgwGAAAEFgGGQ==');
'Fishing rod':
Tool := DTMFromString('mbQAAAHicY2VgYOhjYmCYCMQLgHg2EE8FYl5GBgY+IGYCYi4gFgZiPR0dhjB7HqAOJjjmApIgjAwYsWAwAACBxQSE');
'Harpoon':
Tool := DTMFromString('mggAAAHicY2NgYMhmYmAoBuIKIE4G4iwgLgViLkYGhv9A+T9ALA5k8zFC2Gbq7Awerq4M/j4+QB4THHMBSRhGBow4MAQAAPbNCBs=');
'Lobster pot':
Tool := DTMFromString('mrAAAAHic42BgYJjFBMETgXgaEM8D4iVAPAXKfg5U8xGIPwDxJyB+C8RPgfgdEL8E4jALHjBmYGBCwcnx8WDMBeSBMDqAiTMSwDAAAK4jD/k=');
end;

if ExistsItemDTM(Tool, X, Y) then
begin
Slot := CoordsToItem(X, Y);
MouseItem(Slot, mouse_right);
Wait(RandomRange(20, 75));
WaitOption('toolbelt', 300);
end else
Result := False;

MarkTime(T);
repeat
if (TimeFromMark(T) > 3000) then
break;
if not ExistsItemDTM(Tool, X, Y) then
break;
if FindBlackChatMessage('already on') then
break;
until(false)

Result := not ExistsItemDTM(Tool, X, Y);

FreeDTM(Tool);
end;

Function FindFishSymbols: TPointArray;
var
B: TBox;
TPA,TPA2: TPointArray;
A,L,i,CTS,Cx,Cy: Integer;
ATPA,ATPA2: T2DPointArray;
begin

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);

FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 5);
ColorToleranceSpeed(CTS);

if Length(TPA) < 1 then
Exit;

ATPA := TPAtoATPAEx(TPA, 13, 13);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);

for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);

with B do
begin
FindColorsTolerance(ATPA2[i], 16279077, B.X1, B.Y1, B.X2, B.Y2, 1);

if (Length(ATPA2[i]) > 0) then
begin
SetArrayLength(TPA2, (Length(TPA2)+1));
MiddleTPAEx(ATPA2[i], Cx, Cy);
TPA2[A] := Point(Cx, Cy);
Inc(A);
end;
end;

end;

SortTPAFrom(TPA2, Point(MMCX, MMCY));
Result := TPA2;
end;

Procedure NextSpot;
var
TP: TPoint;
TPA: TPointArray;
begin
FindNormalRandoms;

TPA := FindFishSymbols;

if (Length(TPA) = 1) then
begin
Writeln('Only 1 spot found, relocating...');
HumanMMouse(TPA[0].X, TPA[0].X-5, 1, 1);
ClickMouse2(True);
SMART_ClearCanvas;
OnScreen;

FFlag(0);
While IsMoving_F do
Wait(1);

Wait(randomrange(1500, 2875));
Exit;
end else if (Length(TPA) > 1) then
begin
TP := Point(TPA[1].X, TPA[1].Y);

HumanMMouse(TP.X, TP.Y, 4, 4);
ClickMouse2(True);
SMART_ClearCanvas;
OnScreen;

FFlag(0);
While IsMoving_F do
Wait(1);

Wait(randomrange(900,1500));
end;
end;

Function InFishingArea: Boolean;
begin
Result := (Length(FindFishsymbols) > 0);
end;

Procedure AreaCheck;
begin
if not InFishingArea then
FindNormalRandoms;
end;

Function Antiban: Boolean;
var
i: Integer;
begin
if not LoggedIn then Exit;
AreaCheck;
i := Random(40)
case i of
1,2:
begin
RandomRClick;
Result := True;
end;
3,4:
begin
RandomMovement;
Result := True;
end;
5:
begin
HoverSkill('Fishing', False);
Result := True;
end;
end;

Wait(RandomRange(250,350));
end;

Procedure GetFishType;
var
A,B,C,X,Y: Integer;
begin
A := DTMFromString('mbQAAAHicY2VgYFjNxMCwAIjXA/FOJgg/gZGBIRaI04A4HYijgbi7OxuomgkF8zNgAkYsGAwARQMG9Q==');
B := DTMFromString('mbQAAAHicY2VgYLjCxMBwAogvAvEjID4LxDaMDAxmQGwPxE5AbAzEhUmJQNVMKJifARMwYsFgAABAigan');
C := DTMFromString('mbQAAAHicY2VgYLjMxMBwC4hPA/EpIL4PxImMDAwRQJwMxDlAHAPEmnZ2QNVMKJifARMwYsFgAABXgAbb');

if FindDTM(A, X, Y, 564,250,598,280) then
begin
Inc(Trout_Caught);
IncEx(FishXP, 50);
end else if FindDTM(B, X, Y, 564,250,598,280) then
begin
Inc(Salmon_Caught);
IncEx(FishXP, 70);
end else if FindDTM(C, X, Y, 564,250,598,280) then
begin
Inc(Sturgeon_Caught);
IncEx(FishXP, 80);
end;

FreeDTM(A);
FreeDTM(B);
FreeDTM(C);
end;

Procedure FastDropSlot(Slot: Integer);
Var
TB: TBox;
begin
Case Slot of
1: TB := IntToBox(564,214,598,244);
2: TB := IntToBox(606,214,640,244);
3: TB := IntToBox(648,214,682,244);
4: TB := IntToBox(690,214,724,244);

5: TB := IntToBox(564,250,598,280);
6: TB := IntToBox(606,250,640,280);
7: TB := IntToBox(648,250,682,280);
8: TB := IntToBox(690,250,724,280);

9: TB := IntToBox(564,286,598,316);
10: TB := IntToBox(606,286,640,316);
11: TB := IntToBox(648,286,682,316);
12: TB := IntToBox(690,286,724,316);

13: TB := IntToBox(564,322,598,352);
14: TB := IntToBox(606,322,640,352);
15: TB := IntToBox(648,322,682,352);
16: TB := IntToBox(690,322,724,352);

17: TB := IntToBox(564,358,598,388);
18: TB := IntToBox(606,358,640,388);
19: TB := IntToBox(648,358,682,388);
20: TB := IntToBox(690,358,724,388);

21: TB := IntToBox(564,394,598,424);
22: TB := IntToBox(606,394,640,424);
23: TB := IntToBox(648,394,682,424);
24: TB := IntToBox(690,394,724,424);

25: TB := IntToBox(564,430,598,460);
26: TB := IntToBox(606,430,640,460);
27: TB := IntToBox(648,430,682,460);
28: TB := IntToBox(690,430,724,460);
end;

MouseSpeed := RandomRange(26,39);
MouseBox(TB.X1, TB.Y1, TB.X2, TB.Y2, mouse_right);
WaitOptionMulti(['Drop', 'rop R', 'op R'], 400);
end;

Procedure DropRemaining;
Var
I,MS,T: Integer;
begin
MS := MouseSpeed;
T := GetTimeRunning;

if not AlchFish then
begin
FastDropSlot(2);
FastDropSlot(3);
end;

FastDropSlot(4);

For I := 8 downto 5 do
begin
if (I = 9) then
Break;
FastDropSlot(I);
end;

For I := 9 to high(12) do
begin
if (I = 13) then
Break;
FastDropSlot(I);
end;

For I := 16 downto 13 do
begin
if (I = 17) then
Break;
FastDropSlot(I);
end;

For I := 17 to high(20) do
begin
if (I = 21) then
Break;
FastDropSlot(I);
end;

For I := 24 downto 21 do
begin
if (I = 25) then
Break;
FastDropSlot(I);
end;

For I := 25 to high(28) do
begin
if (I = 29) then
Break;
FastDropSlot(I);
end;

Writeln('Dropped fish in '+IntToStr(GetTimeRunning-T)+' ms.');
MouseSpeed := MS;
OnScreen;
end;

Procedure ReadyAlch;
var
X,Y,AlchBMP: Integer;
begin
AlchBMP := BitmapFromString(9, 8, 'meJxjYEABTIxMQDR7Wj8QIYuz8EkD' +
'ya0bV9+6cg6IkKXYhdiBioGCv8EA1TyggbJwFHL7FRAJLDjEFtcE5' +
'P768Qguwrvvo8Sui6zl/XBxiAjvlHVAWSBi8cmGmAAUh4gADQHKAr' +
'XApSDqgSJAKQDeIUhV');

if FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(True);
SMART_ClearCanvas;
OnScreen;
end else if not FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
GameTab(tab_Magic);
if FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(True);
SMART_ClearCanvas;
OnScreen;
end;
end;
FreeBitmap(AlchBMP);
end;

Procedure FishnAlch;
var
T: Integer;
RTA: Boolean;
begin
MarkTime(T);
RTA := False;
repeat
AreaCheck;
ClickToContinue;

if (TimeFromMark(T) > 6000) then
break;
if RTA then
begin
if ExistsItem(4) then
begin
MMouseItem(4);
//Give enough time for the previous alch to finish
Wait(RandomRange(1400, 1600));
//If this is too fast, the fishing event will reset for our player
if InvFull then
begin
GameTab(tab_Inv);
DropRemaining;
Exit;
end;
if WaitUpText('Cast', 200) then
begin
ClickMouse2(True);
IncEx(MagicXP, 65);
GetFishType;
ClickToContinue;
OnScreen;
MarkTime(T);
RTA := False;
Wait(RandomRange(1300, 1500));
end;
end;
end else
begin
ReadyAlch;
RTA := True;
end;
until(false)
end;

Procedure FishingWait;
var
T,I,I2: Integer;
begin

I := InvCount;

Marktime(T);
repeat

AreaCheck;
ClickToContinue;
if (TimeFromMark(T) > 6000) then
break;
if InvFull then
break;

GameTab(tab_Inv);
I2 := InvCount;

if (I <> I2) then
begin
Marktime(T);
GameTab(tab_Inv);
I := InvCount;
I2 := InvCount;
if AntiBan then
Marktime(T);
end;

until(false)

end;

Function FindObjSimple_F(Colors: TIntegerArray; TheUpText: TStringArray; midx, midy: integer): Boolean;
Var
T,i,X,Y: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;
Begin
MarkTime(T);
Repeat
SetArrayLength(ATPA, Length(Colors));
for i := 0 to High(Colors) do
FindColorsSpiralTolerance(midx, midy, ATPA[i], Colors[i], MSX1, MSY1, MSX2, MSY2, 10);
TPA := MergeATPA(ATPA);
ATPA := TPAtoATPAEx(TPA, 15, 15);
SortATPAFrom(ATPA, Point(MSCX, MSCY));
if (Length(ATPA) = 0) then
Exit;

MiddleTPAEx(ATPA[0], x, y);

if (TimeFromMark(T) > 5000) then
Exit;

HumanMMouse(x, y, 10, 10);
Wait(randomrange(75,125));
If(IsUpTextMultiCustom(TheUpText)) then
begin
ClickMouse2(True);
if DidRedClick then
begin
SMART_ClearCanvas;
OnScreen;
Result := True;
Break;
end;
end;
Until(Result)
end;

Procedure StartFishing;
var
XP1,XP2,XP3,TroutDTM,
SalmonDTM,SturgeonDTM,
TC,SaC,StC: Integer;
begin
if not LoggedIn then
Exit;

if InvFull then
begin

TroutDTM := DTMFromString('mbQAAAHicY2VgYFjNxMCwAIjXA/FOJgg/gZGBIRaI04A4HYijgbi7OxuomgkF8zNgAkYsGAwARQMG9Q==');
SalmonDTM := DTMFromString('mbQAAAHicY2VgYLjCxMBwAogvAvEjID4LxDaMDAxmQGwPxE5AbAzEhUmJQNVMKJifARMwYsFgAABAigan');
SturgeonDTM := DTMFromString('mbQAAAHicY2VgYLjMxMBwC4hPA/EpIL4PxImMDAwRQJwMxDlAHAPEmnZ2QNVMKJifARMwYsFgAABXgAbb');

TC := CountItems('dtm', TroutDTM, []);
SaC := CountItems('dtm', SalmonDTM, []);
StC := CountItems('dtm', SturgeonDTM, []);

IncEx(Trout_Caught, TC);
IncEx(Salmon_Caught, SaC);
IncEx(Sturgeon_Caught, StC);
XP1 := (TC*50);
XP2 := (SaC*70);
XP3 := (StC*80);
IncEx(FishXP, XP1+XP2+XP3);
Report;
FreeDTM(TroutDTM);
FreeDTM(SalmonDTM);
FreeDTM(SturgeonDTM);
DropRemaining;
end;

MakeCompass('W');
if FindObjSimple_F([11181203,11248801,11379872,11644073,11709866], ['se-Rod','Fishing','spot'], MSCX, MSCY) then
begin
FFlag(0);
Wait(RandomRange(2000,2500));
if AlchFish then
begin
FishnAlch;
end else
FishingWait;
end else
NextSpot;

end;

Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
h,m,s: integer;
begin
if not LoggedIn then Exit;

if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
OnScreen;
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
SetAngle(SRL_ANGLE_HIGH);
MakeCompass('E');
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
end;
end;
end;

begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;

setupSRL();

Loadvars;
DeclarePlayers;
SetupRandomTool(60000, 2, AppPath + 'AlertSounds\SmallBeat.wav');
CheckStats;
CheckVersion;

LogInPlayer;
SetAngle(SRL_ANGLE_HIGH);

SMART_ClearCanvas;

OnScreen;
AddToBelt('Barbarian rod');

Repeat
if not LoggedIn then LoginPlayer;

if (TimeFromMark(CommitTime)>=30000) then
Commit;
if (TimeFromMark(ReportTime)>=5000) then
Report;
BreakHandler(BreakIn,BreakFor,Bir,Bfr);

AreaCheck;

StartFishing;

Until(false)

end.

SweDam

2012-03-04 18:24:42

Omg seriously that's the only thing i need? ''SetupRandomTool(60000, 2, AppPath + 'AlertSounds\SmallBeat.wav');''

THANK YOU SO MUCH!

Do i have to use the new SRL beta version?

http://villavu.com/forum/showthread.php?t=75384&highlight=randomtool

SweDam

2012-03-04 18:38:03

It just says

"[Error] C:\Simba\Includes\SRL/SRL/core/antirandoms/randomtool.simba(257:27): Identifier expected at line 256
Compiling failed."