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.
I was going to release this when I hit 99 (a while back) but didn't want to clean it up.
So here's a
very unclean version of a script I wrote earlier this year so there's probably a lot of useless lines in there (much has improved since then
I swear!; this was started before my granite miner). I added barbarian fishing support once I hit 85, averaging 90k-110k (with urns, of course). Regular fly fishing was neglected after 85, but should still work (logic is basically the same).
You will most definitely need to update colours everywhere since this was before colour updates + font changes.
Fly Fishing works best at the spot west of the fishing guild (~75k/hour with urns). It may or may not work at Barbarian village due to the spots being fairly far apart (it rotates the screen to find spots, rather than map walking).