Simba Code:
program sdfFlyFisher;
{$DEFINE SMART}
{$i srl-6/srl.simba}
const
{GENERAL SETTINGS}
DropLower = 24; //Lower bound of inventory count to start dropping fish at
//CHANGE LOWER TO ~24+ IF BARB FISHING
DropUpper = 27; //Upper bound of inventory count to start dropping fish at
TroutSlot = 1; //Actionbar slot bound to Trout
SalmonSlot = 2; //Actionbar slot bound to Salmon
UrnSlot = 8; //Actionbar slot bound to Decorated fishing urn (FULL)
RunFor = 16200; //How long to run for in seconds. Note 3600s/hr.
debug = false;
debugspots = false; //draw boxes around fishing spots?
silentmode = false; //won't beep if new chat text is found.
UseOpenGL = false;
MouseDebug = True; //water colours change with modes.
DisableCountLog = True;
BarbFishing = True;
LTroutSlot = 1; //Leaping trout slot
LSalmonSlot = 2; //Leaping salmon
LSturgeonSlot = 3; //Leapin sturgeon
{*ADDITIONAL NOTES*}
//Failsafes have not yet been implemented, it is strongly advised that you babysit this script.
var
MSCenter: TPoint;
MSCenterX, MSCenterY, TroutDTM, SalmonDTM, ProgBG, StartXP, CurrentXP,
XPTotal, XPperHour, Ticks, DropAt, UrnDTM, UrnsTeled, FeatherDTM, chatLength: integer;
FishSpotCol, FishSpotTol, RodCol,
RodTol, TroutSlotCol, TroutSlotTol, SalmonSlotCol, SalmonSlotTol, InvFullDTM, FindTries: Integer;
LTroutCol, LTroutTol, LSalmonCol, LSalmonTol, LSturgeonCol, LSturgeonTol, ControlsWindow: Integer;
LTroutHue, LTroutSat, LSalmonHue, LSalmonSat, LSturgeonHue, LSturgeonSat: Extended;
FishSpotHue, FishSpotSat, RodHue, RodSat, TroutSlotHue,
TroutSlotSat, SalmonSlotHue, SalmonSlotSat: Extended;
MSBounds, PlayerBox: TBox;
CurStatus: String;
Rotated, fullurn, C1D1, SkipFix1, SkipFix2: Boolean;
procedure declarePlayers();
begin
setLength(players, 1);
currentPlayer := 0;
with players[0] do
begin
loginName := ' ';
displayName := ' ';
password := ' ';
isActive := true;
isMember := true;
bankPin := '';
world := -1;
end;
end;
procedure SetDTMs;
begin
TroutDTM := DTMFromString('mlwAAAHicY2dgYFjGxMCwAYi3A/FuIN4IxAuBeBUQxzNCcCgQ+wFxIBAnAHEIEB/YsQOoG6iIgRGKmeCYC0mUFAwFAGAjCZg=');
SalmonDTM := DTMFromString('mlwAAAHicY2dgYLjBxMBwE4jPAfFDIH4CxFeA+DQQRzIyMCQCcRIQhwKxHxCHAHEsEM9JjgDqBjIYmJBoCOaCipCKoQAAr6AJ6A==');
UrnDTM := DTMFromString('mQwAAAHicY2ZgYDBiYWCwB2J9ID7IxMBwAYjPA7Hn5HcMzh13GXzn/GUQAaqDYUYkDAQAUhEIrQ==');
ProgBG := BitmapFromString(224, 56, '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');
InvFullDTM := DTMFromString('mLgAAAHicY2JgYJDkZGDwAmJmZgYGFiA+PEmC4cAkQQZWoBwIM0IxAwMAVsQDYQ==');
ControlsWindow := DTMFromString('mbQAAAHicY2VgYBDhZmCQAGJ+KAaxXwDFn0DxWyj+sdOP4flSJzA+ncsNxlxAcVY0zIgFgwEAcUINbQ==');
end;
procedure Fr33DTMs;
begin
FreeDTM(TroutDTM);
FreeDTM(SalmonDTM);
FreeDTM(UrnDTM);
FreeDTM(InvFullDTM);
FreeBitmap(ProgBG);
FreeDTM(ControlsWindow);
writeln('Terminated during: ' +CurStatus);
end;
procedure DebugMouseClicks();
var
mX, mY: Integer;
begin
if MouseDebug then
begin
GetMousePos(mX, mY);
if inRange(mX, 0, 800) and inRange(mY, 0, 600) then smartImage.drawCircle(point(mX,mY), 0, false, clLime) //Point draw
else writeln('Mouse is offscreen, not drawing since it causes script to end on exception.');
end;
end;
function TRSChatBox.getXP: Integer; //Thanks to Ashaman88.
var
b: TBox;
s: String;
tpa : TPointArray;
atpa : T2DPointArray;
i,cts,p: Integer;
begin
b := self.getBounds();
b.edit(+(b.x2-b.x1)-140, +10, -5, -94);
findColorsTolerance(tpa, 10856614, b, 21, colorSetting(2, 1.46, 0.14)); //colours updated.
if length(tpa) < 2 then
begin
print('chatBox.getXP(): No XP found', TDebug.SUB);
Exit;
end;
atpa := tpa.cluster(5);
atpa.sortFromFirstPoint(point(b.x2,b.y2)); //sorts from second set of coords of xp bounds
b:= atpa[low(atpa)].getbounds; //uses only XP text (ignores the +gained xp)
b.edit(-2,-2,+2,+2);
smartImage.drawBox(b);
s:=Replace(tesseractgettext(b.x1,b.y1,b.x2,b.y2, FILTER_SMALL_CHARS), ' ', '', [rfReplaceAll]);
P := Pos('x', S);
if P > 0 then
Result := StrToIntDef(ExtractFromStr(Copy(s, P, Length(S)), Numbers), 0)
else
Result := StrToIntDef(ExtractFromStr(S, Numbers), 0);
print('chatBox.getXP(): XP found: ' + tostr(result), TDebug.SUB);
end;
procedure LoadVars
begin
if UseOpenGL then
begin //OpenGL Colours. Water and ripples rendered differently :(
writeln('USING OPENGL COLOURS');
FishSpotCol := 15719353; //15059379; //15322035;
FishSpotTol := 15; //15;
FishSpotHue := 0.32; //0.10; //0.11;
FishSpotSat := 2.49; //1.56; //2.86;
RodCol := 204335;
RodTol := 3;
RodHue := 0.08;
RodSat := 1.00;
TroutSlotCol := 9408666; //9671835;
TroutSlotTol := 19; //6;
TroutSlotHue := 0.08; //0.35;
TroutSlotSat := 0.17; //0.23;
SalmonSlotCol := 6646938; //7239068;
SalmonSlotTol := 15; //7;
SalmonSlotHue := 0.06; //0.03;
SalmonSlotSat := 0.96; //1.33;
{if BarbFishing then //no openGL colours added for barb fishing.
begin
LTroutCol := ;
LTroutTol := ;
LTroutHue := ;
LTroutSat := ;
LSalmonCol := ;
LSalmonTol := ;
LSalmonHue := ;
LSalmonSat := ;
LSturgeonCol := ;
LSturgeonTol := ;
LSturgeonHue := ;
LSturgeonSat := ;
//rod and fishing spots might need to change, but should in theory be the same.
end;}
end else //uses colours for DirectX - note that DirectX performs MUCH better but lacks drawing on the canvas.
begin
writeln('USING DIRECTX COLOURS');
FishSpotCol := 14995359;
FishSpotTol := 22;
FishSpotHue := 0.24;
FishSpotSat := 2.00;
RodCol := 204335;
RodTol := 2;
RodHue := 0.18;
RodSat := 2.17;
TroutSlotCol := 9671835;
TroutSlotTol := 6;
TroutSlotHue := 0.35;
TroutSlotSat := 0.23;
SalmonSlotCol := 7239068;
SalmonSlotTol := 7;
SalmonSlotHue := 0.03;
SalmonSlotSat := 1.33;
if BarbFishing then
begin
LTroutCol := 8161687;
LTroutTol := 10;
LTroutHue := 0.87;
LTroutSat := 0.88;
LSalmonCol := 5921641;
LSalmonTol := 6;
LSalmonHue := 0.19;
LSalmonSat := 0.13;
LSturgeonCol := 4548159;
LSturgeonTol := 16;
LSturgeonHue := 0.96;
LSturgeonSat := 0.26;
end;
end;
end;
procedure initscript;
begin
mouseOffClient(OFF_CLIENT_RANDOM);
MSBounds := mainscreen.getBounds();
MSCenterX := Round(MSBounds.X2/2);
MSCenterY := Round(MSBounds.Y2/2);
MSCenter := [MSCenterX, MSCenterY];
if BarbFishing then PlayerBox := [MSCenterX-30, MSCenterY-18, MSCenterX+30, MSCenterY+18]
else PlayerBox := [MSCenterX-30, MSCenterY-30, MSCenterX+30, MSCenterY+30];
smartImage.DrawBox(PlayerBox, false, clLime); //rod detection occurs inside this region.
SetDTMs;
AddOnTerminate('Fr33DTMs');
DropAt := RandomRange(DropLower, DropUpper);
StartXP := chatBox.getXP();
LoadVars;
end;
function actionbarfix: Boolean; //true if successfully finds more than one of each fish and fixes actionbar.
var
I, SCount, TCount: Integer;
p: TPoint;
begin
result := false;
SCount := TabBackpack.CountDTM_MOD(SalmonDTM); //should only send drop keys if both salmon and trout are found in inventory
TCount := TabBackpack.CountDTM_MOD(TroutDTM);
if SCount >= 1 then
begin
if TCount >=1 then
begin
PlaySound(ScriptPath+ '\notif.wav');
wait(randomRange(50,800));
if not actionBar.unlock() then actionBar.lock();
DebugMouseClicks();
mouseOffClient(OFF_CLIENT_LEFT);
SendKeys(IntToStr(TroutSlot),10+Random(10),10+Random(10));
wait(RandomRange(100,300));
SendKeys(IntToStr(SalmonSlot),10+Random(10),10+Random(10));
result := true;
end else exit;
end;
end;
function DetectChat(): Boolean;
var
tempTPA: TPointArray;
begin
//finds the blue chat text in the chatbox area
result := findColors(tempTPA, 16755071, Chatbox.getChatArea());
if result then
begin
if not inRange(chatLength, length(tempTPA)-10, length(tempTPA)+10) and not silentmode then
begin
if debug then writeln('New chat detected. Attempting to store current chat length.');
PlaySound(ScriptPath+ '\notif_long.wav'); //if the stored chatlength different to the current chat length, then it plays a sound. If it's the same length as the stored one (i.e. no new messages) then it doesn't play a sound.
smartImage.DrawText(' CHATTER DETECTED ', Point(184,367), LoginChars, false, 47232);
end else if debug then writeln('Chatbox has not changed. No new chat detected.');
chatLength := length(tempTPA); //updates and stores the new chatLength
end else
begin
if debug then writeln('No chat detected.');
chatLength := 0;
smartImage.clearArea(IntToBox(183,366,440,381));
exit(false);
end;
end;
function TRSTabBackpack.countDTM_MOD(dtm: integer): integer; //yes....this was done before I knew about disabling SRL print.
var
i, l: integer;
begin
result := 0;
if (not self.open()) then
exit();
result := findItem(dtm, self.getSlotBoxes());
if (result = 0) then
begin
if not DisableCountLog then print('tabBackpack.countDTM(): Found no DTM matches', TDebug.SUB);
exit();
end;
if not DisableCountLog then print('tabBackpack.countDTM(): Counted ' + intToStr(result) + ' items');
end;
procedure AntiBan;
var
i: Integer;
begin
i := Random(99)
if debug then writeln('Antiban value: ' +IntToStr(i));
case i of
0..2: hoverSkill(SKILL_FISHING);
3..5: hoverRandomSkill();
6..99: Exit;
end;
mouseOffClient(OFF_CLIENT_RANDOM);
end;
function feathercheck: Boolean; //check if the yellow exists in this slot? Yellow from the number count.
var
tempTPA: TPointArray;
begin
result := findColors(tempTPA, 65535, tabBackpack.getSlotBox(1));
end;
function CountFish: Integer;
var
SCount, TCount: Integer;
begin
SCount := TabBackpack.CountDTM_MOD(SalmonDTM);
TCount := TabBackpack.CountDTM_MOD(TroutDTM);
Result := SCount + TCount;
end;
procedure progress;
var
TerminateIn, RanFor: Integer;
begin
Ticks := Ticks + 1; //do a store last known good xp thing like in fletcher
if Ticks > 10 then
begin
CurrentXP := chatBox.getXP();
XPTotal := Round(CurrentXP - StartXP);
XPperHour := Round(XPTotal * (3600.0 / (GetTimeRunning / 1000.0)));
Ticks := 0;
end;
RanFor := Round(GetTimeRunning/1000);
TerminateIn := Round(Runfor-Ranfor);
begin //onscreen stuff
smartimage.drawbitmap(progBG,Point(576,544));
smartImage.DrawText('Run Time: ' +msToTime(GetTimeRunning, TIME_SHORT), Point(582, 548), upchars, false, 47232);
smartImage.DrawText('Dropping at ' +IntToStr(DropAt) +' invCount', Point(582, 560), upchars, false, 47232);
smartImage.DrawText('Exp: ' +IntToStr(XPTotal) +' (' +IntToStr(XPperHour) +'/H)', Point(582, 571), upchars, false, 47232);
smartImage.DrawText('Status: ' +CurStatus, Point(583, 582), upchars, false, 47232);
end;
begin //debug box stuff
clearDebug();
writeln('Run Time: ' +msToTime(GetTimeRunning, TIME_SHORT));
writeln('Exp: ' +IntToStr(XPTotal) +' (' +IntToStr(XPperHour) +'/H)');
writeln('Status: '+CurStatus);
writeln('Dropping at approx. ' +IntToStr(DropAt) +' invCount');
writeln('Terminating in: ' +IntToStr(TerminateIn) +'s');
writeln('XP update in: ' +IntToStr(Round(10 - Ticks)));
If UseOpenGL then writeln('Using OpenGL colours!!') else writeln('Using DirectX colours!!');
end;
end;
procedure urncheckvalid;
var
x,y: integer;
begin
if findDTM(urnDTM,x,y,actionBar.getSlotBox(urnSlot)) then
begin
fullurn := True;
end;
end;
procedure urnfullcheck;
var
point: TPoint;
ChatBoxArea: TBox;
x,y: integer;
begin
urncheckvalid;
if fullurn then
begin
MouseBox(actionBar.getSlotBox(urnSlot),Mouse_Left,Mouse_Human); //Clicks on urn in actionbar
DebugMouseClicks();
wait(randomRange(100,750));
UrnsTeled := UrnsTeled + 1;
fullurn := false;
mouseOffClient(OFF_CLIENT_RANDOM);
wait(randomRange(1000,2000)); //time allow for urn to be teleported
end;
end;
function CloseControlsWindow(): Boolean;
var
closex, closey: integer;
begin
result := false;
if findDTM(ControlsWindow, closex, closey, IntToBox(759,22,783,44)) then
begin
mouseBox(IntToBox(759,22,783,44),MOUSE_LEFT,MOUSE_HUMAN); //Looks for and click on the 'x' to close menu
exit(true);
end;
end;
procedure dropfish;
var
TroutSlotTPA, SalmonSlotTPA: TPointArray;
x, y, DropTry: Integer;
DropTimer, FullTimer: TTimeMarker;
SalCount, TroCount: Integer;
LTroutValid, LSalmonValid, LSturgeonValid: Boolean;
LTroutTPA, LSalmonTPA, LSturgeonTPA: TPointArray;
label SkipAttFix;
begin
if BarbFishing then
begin
DropTimer.start();
if tabBackpack.count() >= DropAt then
begin
CloseControlsWindow;
repeat
//right click drop on slot until the slot shows inactive color (or active color is not shown)
if DropTimer.getTime > 15000+Random(6000) then break;
DetectChat();
CloseControlsWindow;
wait(randomRange(50,90));
LTroutValid := findColorsTolerance(LTroutTPA, LTroutCol, actionBar.getSlotBox(LTroutSlot), LTroutTol, colorSetting(2, LTroutHue, LTroutSat));
if not LTroutValid then break; //if not found, then break and moves onto next fish to drop
mousebox(actionBar.getSlotBox(LTroutSlot), mouse_right, mouse_human);
DebugMouseClicks();
wait(randomrange(50,150));
chooseOption.select(['rop'], 500);
DebugMouseClicks();
LTroutValid := findColorsTolerance(LTroutTPA, LTroutCol, actionBar.getSlotBox(LTroutSlot), LTroutTol, colorSetting(2, LTroutHue, LTroutSat));
if not LTroutValid then break; //if not found, then break and moves onto next fish to drop
until not findColorsTolerance(LTroutTPA, LTroutCol, actionBar.getSlotBox(LTroutSlot), LTroutTol, colorSetting(2, LTroutHue, LTroutSat));//LTroutValid;
repeat
//right click drop on slot until the slot shows inactive color (or active color is not shown)
if DropTimer.getTime > 15000+Random(6000) then break;
DetectChat();
CloseControlsWindow;
wait(randomRange(50,90));
LSalmonValid := findColorsTolerance(LSalmonTPA, LSalmonCol, actionBar.getSlotBox(LSalmonSlot), LSalmonTol, colorSetting(2, LSalmonHue, LSalmonSat));
if not LSalmonValid then break; //if not found, then break and moves onto next fish to drop
mousebox(actionBar.getSlotBox(LSalmonSlot), mouse_right, mouse_human);
DebugMouseClicks();
wait(randomrange(50,150));
chooseOption.select(['rop'], 500);
DebugMouseClicks();
LSalmonValid := findColorsTolerance(LSalmonTPA, LSalmonCol, actionBar.getSlotBox(LSalmonSlot), LSalmonTol, colorSetting(2, LSalmonHue, LSalmonSat));
if not LSalmonValid then break; //if not found, then break and moves onto next fish to drop
until not findColorsTolerance(LSalmonTPA, LSalmonCol, actionBar.getSlotBox(LSalmonSlot), LSalmonTol, colorSetting(2, LSalmonHue, LSalmonSat));//not LSalmonValid;
repeat
//right click drop on slot until the slot shows inactive color (or active color is not shown)
if DropTimer.getTime > 15000+Random(6000) then break;
DetectChat();
CloseControlsWindow;
wait(randomRange(50,90));
LSturgeonValid := findColorsTolerance(LSturgeonTPA, LSturgeonCol, actionBar.getSlotBox(LSturgeonSlot), LSturgeonTol, colorSetting(2, LSturgeonHue, LSturgeonSat));
if not LSturgeonValid then break; //if not found, then break and moves onto next fish to drop
mousebox(actionBar.getSlotBox(LSturgeonSlot), mouse_right, mouse_human);
DebugMouseClicks();
wait(randomrange(50,150));
chooseOption.select(['rop'], 500);
DebugMouseClicks();
LSturgeonValid := findColorsTolerance(LSturgeonTPA, LSturgeonCol, actionBar.getSlotBox(LSturgeonSlot), LSturgeonTol, colorSetting(2, LSturgeonHue, LSturgeonSat));
if not LSturgeonValid then break; //if not found, then break and moves onto next fish to drop
until not findColorsTolerance(LSturgeonTPA, LSturgeonCol, actionBar.getSlotBox(LSturgeonSlot), LSturgeonTol, colorSetting(2, LSturgeonHue, LSturgeonSat));//not LSturgeonValid;
DropAt := RandomRange(DropLower,DropUpper);
CloseControlsWindow;
DetectChat();
mouseOffClient(OFF_CLIENT_RANDOM);
wait(randomRange(1500,2300)); //wait time allowed for rod to reappear
//smallRandomMouse(); //buggy.
end;
end else
begin
if tabbackpack.isFull() then
begin
if debug then writeln('INVENTORY IS FULL, SEEING IF FULL DIALOGUE BOX IS FOUND');
if findDTM(InvFullDTM, x, y, intToBox(245,543,328,563)) then
begin
mousebox(intToBox(250,546,325,560), MOUSE_LEFT, MOUSE_HUMAN);
DebugMouseClicks();
if not ActionBarFix() then
begin
if not actionBar.unlock() then actionBar.lock();
FullTimer.start();
repeat
SendKeys(IntToStr(TroutSlot),30+Random(30),30+Random(30));
wait(randomRange(105,230));
SendKeys(IntToStr(SalmonSlot),30+Random(30),30+Random(30));
wait(randomRange(105,230));
until FullTimer.getTime > RandomRange(3000,5000);
end;
mouseOffClient(OFF_CLIENT_RANDOM); //use more dynamic method (get bounds of yellow button or the text inside it)
end else
begin
if debug then writeln('CANT FIND THE INVENTORY FULL DIALOGUE BOX');
end; //this is used to close the 'inventory full' notice if found.
end;
if tabBackpack.count() >= DropAt then
begin
CurStatus := 'Dropping fish';
SalCount := TabBackpack.CountDTM_MOD(SalmonDTM); //stores starting amount of each fish, will compare when the loop is done to see if the count stays the same.
TroCount := TabBackpack.CountDTM_MOD(TroutDTM); //if stays the same, the keys are likely to be stuck and so the actionbar will be unlocked.
DropTimer.start();
repeat
DropTry := DropTry + 1;
if DropTimer.getTime() > RandomRange(3500,4600) then break;
if findColorsTolerance(TroutSlotTPA, TroutSlotCol, actionBar.getSlotBox(TroutSlot), TroutSlotTol, colorSetting(2, TroutSlotHue, TroutSlotSat)) then
begin
SkipFix1 := False;
SendKeys(IntToStr(TroutSlot),10+Random(10),10+Random(10));
wait(randomRange(135,210));
end else SkipFix1 := True;
if findColorsTolerance(SalmonSlotTPA, SalmonSlotCol, actionBar.getSlotBox(SalmonSlot), SalmonSlotTol, colorSetting(2, SalmonSlotHue, SalmonSlotSat)) then
begin
SkipFix2 := False;
SendKeys(IntToStr(SalmonSlot),10+Random(10),10+Random(10));
wait(randomRange(135,210));
end else SkipFix2 := True; //bug may exist where the actionbar becomes stuck. Gotta fix this manually, or add detection for when it becomes stuck.
if DropTry > 4 then
begin
if inRange(TabBackpack.CountDTM_MOD(TroutDTM), TroCount, TroCount + 1) then
begin
if TroCount > 1 then actionbarfix;
goto skipattfix;
end;
if inRange(TabBackpack.CountDTM_MOD(SalmonDTM), SalCount, SalCount + 1) then
begin
if SalCount > 1 then actionbarfix;
goto skipattfix;
end;
SkipAttFix:
DropTry := 0;
end;
until CountFish = 0; //see actionBarFix from sdfLRCHopper
wait(randomRange(2100,2600));
DropAt := RandomRange(DropLower,DropUpper);
end;
end;
end;
procedure blindfindspot;
var
SpotTPA: TPointArray;
begin
if not findColorsTolerance(SpotTPA, FishSpotCol, msBounds, FishSpotTol, colorSetting(2, FishSpotHue, FishSpotSat)) then
begin
mainscreen.setAngle(MS_ANGLE_HIGH);
randomCompass(0, 360, false); //rotates camera screen if no spots are found
Rotated := True;
end;
end;
procedure findspot;
var
SpotTPA, RodTPA, StoredTPA: TPointArray;
ClosestPoint: TPoint;
WaitTimeout: TTimeMarker;
SplitSpot: T2DPointArray;
i: Integer;
label BeginWait;
begin
DropAt := RandomRange(DropLower,DropUpper);
claimSpinTicket();
dropfish;
if findColorsTolerance(RodTPA, RodCol, PlayerBox, RodTol, colorSetting(2, RodHue, RodSat)) then exit;
CurStatus := 'Finding spot';
progress;
for i:=0 to 100 do //repeats 100 times granting >500ms time to account for fishing spot animations
begin
findColorsTolerance(SpotTPA, FishSpotCol, msBounds, FishSpotTol, colorSetting(2, FishSpotHue, FishSpotSat));
StoredTPA.combine(SpotTPA);
wait(5);
end;
StoredTPA.clearEquals;
SplitSpot := StoredTPA.cluster(25,25);
SplitSpot.sortFromFirstPoint(MSCenter);
if CloseControlsWindow then exit;
for i := 0 to high(SplitSpot) do
begin
if debugspots then SmartImage.DrawBox(GetTPABounds(SplitSpot[I]));
MouseBox(GetTPABounds(SplitSpot[I]),mouse_move,Mouse_human);
if BarbFishing then
begin
if isMouseOverText(['spot'], 250) then
begin
fastClick(MOUSE_LEFT);
DebugMouseClicks();
goto BeginWait;
end;
end else
begin
if isMouseOverText(['Lure'], 250) then
begin
fastClick(MOUSE_LEFT);
DebugMouseClicks();
goto BeginWait;
end;
end;
end;
if length(SplitSpot) < 1 then blindfindspot; //if less than 1 spots (i.e. none) are found, then it rotates camera.
//if length is 0, then the for loop is negated anyway (high = 0)
BeginWait:
mouseOffClient(OFF_CLIENT_RANDOM);
CurStatus := 'Moving to spot';
progress;
WaitTimeout.start();
repeat
wait(250);
if debug then writeln('Wait find rod: ' +IntToStr(WaitTimeout.getTime) +'ms');
if WaitTimeout.getTime() > 5500 then exit;
until findColorsTolerance(RodTPA, RodCol, PlayerBox, RodTol, colorSetting(2, RodHue, RodSat)); //waits up to 5.5 seconds for rod to be found //WaitFunc causes error for some reason.
if Rotated then
begin //resets camera to north and highest angle if blind rotated to find spot.
minimap.clickCompass();
DebugMouseClicks();
mouseOffClient(OFF_CLIENT_RANDOM);
mainscreen.setAngle(MS_ANGLE_HIGH);
Rotated := False;
end;
CurStatus := 'Now Fishing!';
progress;
end;
procedure waitwhilefishing;
var
RodTPA: TPointArray;
begin
repeat
dropfish;
CurStatus := 'Waiting for fishies';
progress;
claimSpinTicket();
urnfullcheck;
DetectChat();
wait(1000);
until not findColorsTolerance(RodTPA, RodCol, PlayerBox, RodTol, colorSetting(2, RodHue, RodSat));
if not findColorsTolerance(RodTPA, RodCol, PlayerBox, RodTol, colorSetting(2, RodHue, RodSat)) then wait(RandomRange(200,500)); //slightly redundant.
end;
procedure mainloop();
var
RanFor: Extended;
baseSpeed: integer;
begin
findspot;
AntiBan();
waitwhilefishing;
AntiBan();
RanFor := GetTimeRunning/1000;
if (RanFor>RunFor) then
begin
WriteLn('Run limit reached! Terminating script');
Players[CurrentPlayer].Logout;
Terminatescript;
end;
begin //Vary the mouse speed every loop
baseSpeed := 35; //See VaryMS in fletcher script
mouseSpeed := baseSpeed + randomRange(8, 15);
end;
end;
begin
smartEnableDrawing := true;
clearDebug();
disableSRLLog := false; //true;
smartPlugins := ['d3d9.dll'];
setupSRL();
declarePlayers();
players[currentPlayer].login();
initscript;
repeat
mainloop;
until not players[currentPlayer].isActive;
end.