1 Attachment(s)
First Script ( Lumby Crayfisher)
Power fishes crayfish
Start anywhere. teles to lumby and walks to fishing spot.
It works decently but there is some inefficient and redundancy in the code that I'm going to work on.
v1.1 (finds whirlpools more efficiently)
v1.2 (added proggy report + some Antiban)
///////////////////////////////////////
//Lobsters Fished: 392
//Xp Gained: 3920
//XpPerHr: 8749.51174599632
//LobsPerHr: 874.951174599632
//Minutes Running: 26.8815
///////////////////////////////////////
Code:
program fishing;
{$DEFINE SMART}
{$I SRL-6/SRL.Simba}
{$I SPS/LIB/SPS-RS3.simba}
{$i SRL-6/LIB/MISC/SRLPLAYERFORM.Simba}
//global variables
var
fishTpa:TPointArray;
fishAtpa:T2DPointArray;
lobstersFished:= 0;
xp:= 0;
procedure declarePlayers();
begin
begin
setLength(players, 1);
with players[0] do
begin
loginName := '*';
password := '*';
isActive := true;
isMember := false;
world := 11;
end;
currentPlayer := 0;
end;
end;
///////////////////////////////////
///////////////////////////////////
///// Antipattern /////// //taken from keepBotting
///////////////////////////////////
///////////////////////////////////
function moveMouseCircle(mainscreen:TBox):boolean;
begin
case random(3) of
0: mouseBox(mainscreen);
1: mouseOval(randomRange(randomRange(100, 200), randomRange(100, 150)), randomRange(randomRange(100, 200), randomRange(100, 150)), randomRange(10, 50), randomRange(50, 60));
2: mouseCircle(randomRange(50, 100), randomRange(50, 100), randomRange(25, 50));
end;
end;
function randomAngle(turnNorth:boolean):boolean;
begin
case random(4) of
0: minimap.setAngle(MM_DIRECTION_NORTH);
1: minimap.setAngle(MM_DIRECTION_SOUTH);
2: minimap.setAngle(MM_DIRECTION_EAST);
3: minimap.setAngle(MM_DIRECTION_WEST);
end;
if turnNorth then
minimap.clickCompass();
mainscreen.setAngle(MS_ANGLE_HIGH);
end;
procedure antiPattern();
var
t:TTimeMarker;
begin
if (not isLoggedIn()) then
exit;
t.start;
case random(100) of
2: moveMouseCircle(mainscreen.getBounds);
3: smallRandomMouse();
4: randomRClickItem();
5: pickUpMouse();
6: begin
boredHuman();
minimap.setAngle(MM_DIRECTION_EAST);
end;
7: mouseOffClient(OFF_CLIENT_RANDOM);
end;
end;
///////////////////////////////////
///////////////////////////////////
///// My code ///////
///////////////////////////////////
///////////////////////////////////
procedure proggy();
var
fishCaught:integer;
secondsRunning, xpPerHr, lobsPerHr:extended;
begin
secondsRunning := (getTimeRunning() / 1000);
xpPerHr := ((xp * 60 * 60) / secondsRunning);
lobsPerHr := ((lobstersFished * 60 * 60) / secondsRunning);
Writeln('///////////////////////////////////////');
Writeln('//Lobsters Fished: ' + intToStr(lobstersFished));
Writeln('//Xp Gained: ' + intToStr(xp));
Writeln('//XpPerHr: ' + floatToStr(xpPerHr));
Writeln('//LobsPerHr: ' + floatToStr(lobsPerHr)) ;
Writeln('//Minutes Running: ' + floatToStr(secondsRunning/60));
Writeln('///////////////////////////////////////');
end;
procedure getFishSpot();
var
x, y: integer;
timer: TTimeMarker;
fishBox: Tbox:= [230,260,570,380];
begin
smartImage.clear;
timer.start();
repeat
findColorsSpiralTolerance(x, y, fishTpa, 13548462, fishBox, 13, colorSetting(2, 0.48, 2.92));
until (timer.getTime() > 5000) or (length(fishTpa) >= 1);
fishAtpa := fishTpa.toATPA(30, 30);
fishAtpa.sortFromMidPoint(mainscreen.playerPoint);
smartImage.debugATPA(fishAtpa);
end;
procedure dropFish();
begin
if tabBackpack.isOpen() then
tabBackpack.dropItems();
end;
function bagFull(): boolean;
begin
if tabBackpack.isItemInSlot(28) then
begin
clearDebug();
lobstersFished := lobstersFished + 28;
xp := xp + 280;
proggy();
dropFish();
exit(true);
end else;
begin
exit(false);
end;
end;
procedure fish();
var
i: integer;
begin
getFishSpot();
repeat
for i := 0 to high(fishAtpa) do
begin
mouse(middleTPA(fishAtpa[i]), MOUSE_MOVE);
if isMouseOverText(['ishing']) then
begin
fastClick(MOUSE_LEFT);
break;
end;
end;
repeat
antiPattern();
until not tabBackpack.waitForShift(5000 + randomRange(2000,3000)) or bagFull();
until not isMouseOverText(['ishing']);
end;
procedure walkToSpot();
begin
sps.setup('Lumby',RUNESCAPE_OTHER);
lodestoneScreen.teleportTo(LOCATION_LUMBRIDGE);
wait(18000 + randomRange(2000,5000));
mainscreen.setAngle(MS_ANGLE_HIGH);
if SPS.walkPath([Point(183, 145), Point(183, 145), Point(192, 154), Point(192, 154), Point(205, 169), Point(254, 171), Point(270, 193), Point(288, 211)]) then
begin
Writeln('Walking');
end
else
begin
Writeln('Failed to walk to fishing spot');
end;
minimap.setAngle(MM_DIRECTION_EAST);
end;
begin
clearDebug();
smartEnableDrawing := true;
disableSRLDebug := true;
setupSRL();
declarePlayers();
if not isLoggedIn() then
begin
players[currentPlayer].login();
end;
exitTreasure();
exitTreasure();
walkToSpot();
repeat
fish();
until 1 = 2;
end.
Attachment 26037