Simba Code:
program WaterfallFisher; // Idea and some script by Clarity <3
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
const
initialExp= 1;
HAND_COLOR = 6710900;
HAND_TOLERANCE = 5;
HAND_HUE = 0.7;
HAND_SAT = 2.0;
HAND_SEARCHBOX: tBox = [266, 184, 279, 193];
FISHING_POINT: tPoint = [265, 220];
var
progressTimer: TTimeMarker;
B, A: integer;
procedure declarePlayers();
begin
setLength(players, 1);
with players[0] do
begin
loginName := ''; //Enter your login
password := ''; //Enter your pass
world := -1; //Select world
isActive := true;
isMember := true;
end
currentPlayer := 0;
end;
var
idleTime: tCountDown;
function isFishing(): boolean;
var
tpa: tPointArray;
begin
if findColorsTolerance(tpa, HAND_COLOR, HAND_SEARCHBOX, HAND_TOLERANCE, colorSetting(2, HAND_HUE, HAND_SAT)) then
result := true;
writeln('Currently fishing: ' + toStr(result));
end;
var
AB: TTimeMarker;
NextAB: Integer;
procedure antiban;
Var
I, ABMin, ETA, h, m, s: Integer;
Begin
if ((AB.time = -1) or (AB.getTime > NextAB)) then
begin
I := Random(3000); // edit this value to change frequency of the antiban
Case I Of // LESS number= more frequent
1..30:
Begin
inc(A);
hoverSkill(SKILL_FISHING);
Wait(Random(7000, 12000));
TabBackpack.Open;
End;
31..37: //edit this ex. 31..45:
begin //to make breaks more frequent
inc(B);
writeLn('Random break activated');
wait(random(320000, 500000)); //Break duration
end;
101..200:
Begin
inc(A);
MouseOffClient(Random(4));
Wait(GaussRangeInt(100, 2000));
End;
201..220:
begin
inc(A); //checking voices
mouse(44, 53, 11, 10, MOUSE_MOVE);
Wait(random(4000, 5500));
mouse(121, 52, 10, 10, MOUSE_MOVE);
Wait(random(3000, 8000));
mouseOffClient(OFF_CLIENT_RANDOM);
end;
221..230:
begin
inc(A);
mouse(158, 473, 7, 7, MOUSE_LEFT); //switching chats
Wait(random(2000, 4505));
mouse(243, 542, 45, 45, MOUSE_MOVE);
Wait(random(3002, 6000));
mouse(25, 471, 7, 7, MOUSE_LEFT);
Wait(random(1700, 4900));
mouseOffClient(OFF_CLIENT_RANDOM);
end;
261..320:
begin
inc(A);
mouseMovingObject;
end;
391..451:
begin
inc(A);
SleepAndMoveMouse(GaussRangeInt(100,1500));
end;
End;
AB.reset; AB.start;
NextAB := AB.getTime + 6000 + gaussRangeInt(2000, 6000);
end;
minimap.setAngle(MM_DIRECTION_NORTH);
ETA := NextAB - AB.getTime;
End;
procedure ClickSpot();
begin
mouse(point(FISHING_POINT.X + random(-4, 4), FISHING_POINT.Y + random(-4, 4)), MOUSE_RIGHT, MOUSE_HUMAN);
mouseSpeed := random(15, 35);
chooseOption.select(['Lure']);
writeLn('Succesfully clicked fishing spot');
wait(random(1000, 2000));
MouseOffClient(Random(4));
idleTime.setTime(random(170000, 220000));
end;
procedure CheckIfFishing();
begin
if (not isFishing()) or idleTime.isFinished() then
begin
ClickSpot();
end;
end;
procedure Report;
var
XP, XPHR, h, m, s, W: Integer;
L0, L1, L2, L3, L4, L5: string;
begin
w := smartImage.getWidth;
smartImage.clearArea(IntToBox(583,490, w-1,565));
XP := chatbox.getXPBar - Players[0].integers[initialExp];
ConvertTime(progressTimer.getTime, h, m, s);
XPHR := Round(XP * 1000.0 * (3600.0 / (progressTimer.getTime+1)));
L0 := 'Waterfall Fisher by Scob';
L1 := 'Working for: ' + ToString(h) + ' H, ' + ToString(m) + ' M, ' + ToString(s) + ' S';
L2 := 'XP: ' + ToString(XP);
L3 := 'XP/HR: ' + ToString(XPHR);
L4 := 'Breaks: ' + toString(B);
L5 := 'Antiban: ' +toString(A);
smartImage.drawTextLines([L0, L1, L2, L3, L4, L5], Point(583, 490), statChars, False, clWhite);
end;
begin
smartEnableDrawing := True;
disableSRLDebug := False;
setupSRL;
declarePlayers();
idleTime.setTime(random(170000, 220000));
progressTimer.start;
minimap.clickCompass();
mainScreen.setAngle(MS_ANGLE_HIGH);
exitTreasure();
players[0].integers[initialExp] := chatbox.getXPBar;
repeat
if not isLoggedIn() then
begin
players[currentPlayer].login();
exitTreasure();
minimap.clickCompass();
mainScreen.setAngle(MS_ANGLE_HIGH);
ClickSpot();
end;
CheckIfFishing();
Report;
wait(random(2000, 4000));
antiban();
until false;
end.