SRL Archive - Senior News and General

Ideas for building the community?


pwnaz0r

2007-12-13 23:44:48

Well, after the recent collapse of the idea of making money with auto-ing, I think we should discuss some ways to bring back the remaining part of the community that wants skills together. Fakawi talked of a radical change of strategy. I say that we should think of some radical changes. Here is one of my ideas:
- when I heard Fakawi's words in the announcement about his theiving "conquest" or whatever you would like to call it, I got excited, even though I knew that he was doing this. I did not know his character was 88 theiving. If we want to keep a population here, I think we are going to have to use some "tricks" I guess is the best way to put it. We have to convince the people some of the members and people that we want here to be here, as some think its "over". One ways of doing this is to show the reward, how great the prize is, then act on it. I say that somehow, we should have a semi-organized way of focusing on one skill as a community. I think this would bring the community together as well as spark some new activity and interest and give some of those people hope that they can still have fun as they used to. Bottom line is, we have to spark some interest fast, or we are no better than Runescape (they are letting all their people leave without doing anything, no matter how many complaints they get. I heard a rumor that they were bringing back pking, but if I still played Runescape, I wouldn't stick around because of that).

P.S. - Activity is on the decline, because of school and other things irl.

Markus

2007-12-14 08:37:39

If they really do that c0de, I gonna love them <3
All of my accounts are 7 months old, my main is 2 years, and my main army guys 15 months. They have been on my mains friendslist for more then 8 months now (the main army guys, other ones aren't :( ), and they have my main on it for like 8 months too :D

mastaraymond

2007-12-14 13:34:15

If they do that! I'll love runescape.. It will execute most of the cheating community's.

Town

2007-12-14 14:44:22

They havn't announced what they are going to do to Runescape yet and I'm pretty sure they are still taking suggestions. We probably won't hear until the update is put into place, the rumors going around aren't helping anything.

YoHoJo

2007-12-14 23:24:40

I think all SSRl should share an acc (or a few accounts like 5) and auto the hell out of them.
Well have set times, and only use good scripts, and hope an asshole doesn't take them.
Well auto a lot on them, but not enough to get banned.
Except for having a pwange 'main' acc from autoing, i dont know any other reasons to atuo anymore =/.

Special Ed

2007-12-15 10:44:45

Well really lately I've been focusing on making scripts that literally think / work / and execute like a human does. You may be thinking, well we always do that here… Really even from scripts made by Dev's I haven't seen that much, if at all.

Basically If we're going to work on 1 skill to dominate I say I'll post my (Was going to be Private) Fisher… There is no use is keeping it private anymore seeing as how 1) Noone would buy it 2) I don't really care anymore 3) I feel that I need to help SRL out.

I literally took time to analyze what I was thinking when fishing and wrote my thoughts down. It takes quite a bit of time, mostly when trying to convert my thoughts into script, but also figuring out "how" I know what I know, when I know it causes some problems as well.

I last updated this 3-4 days ago and it worked fine… but when I tried it yesterday I got an "out of range" error in line 106. The weird part is is that it stops looking for your fishing equipment after it looked for the cage.

It may have something to do w/ me using SCAR 3.12d but it may have been some random error I added on my part.

program SpecialPowerFisher;
{.include SRL/SRL.scar}
type
Area = record
UpText: string;
x, y, x1, y1, x2, y2: Integer;
end;
type
Equip = record
Slots, Color: array of TIntegerArray;
Name: array of string;
Temp: array [0..6] of TIntegerArray;
end;

const
FP_Color = 14398100;
FP_Tolerance = 28;
FP_ColorToleranceSpeed = 0;
zMSCX = 260;
zMSCY = 179;

var
Timed, Num: Integer;
dtmOptionMenu, dtmNet, dtmFishingRod, dtmFlyFishingRod, dtmHarpoon, dtmCage, dtmBait, dtmFeather: Integer;
NoFight: Integer;

Equip: Equip;
Area: array of Area;

FalseBox: TBoxArray;
FishType: array of string;
PActive: Boolean;
FTN: ShortInt;

procedure DeclarePlayers;
var
i: Byte;
begin
HowManyPlayers:= 4;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer:= 3;

Players[0].Name:= '';
Players[0].Pass:= '';
Players[0].Nick:= '';
Players[0].Strings[0]:= 'Auto'; {Net, Bait, Fly, Harpoon, Cage, Auto}
Players[0].Active:= True;

Players[1].Name:= '';
Players[1].Pass:= '';
Players[1].Nick:= '';
Players[1].Strings[0]:= 'Auto'; {Net, Bait, Fly, Harpoon, Cage, Auto}
Players[1].Active:= True;

Players[2].Name:= '';
Players[2].Pass:= '';
Players[2].Nick:= '';
Players[2].Strings[0]:= 'Auto'; {Net, Bait, Fly, Harpoon, Cage, Auto}
Players[2].Active:= True;

Players[3].Name:= '';
Players[3].Pass:= '';
Players[3].Nick:= '';
Players[3].Strings[0]:= 'Auto'; {Net, Bait, Fly, Harpoon, Cage, Auto}
Players[3].Active:= True;

SetArrayLength(Equip.Color, HowManyPlayers);
SetArrayLength(Equip.Slots, HowManyPlayers);
SetArrayLength(Equip.Name, HowManyPlayers);
SetArrayLength(FishType, HowManyPlayers);
for i:= 0 to HowManyPlayers - 1 do
begin
SetArrayLength(Equip.Color[i], 3);
SetArrayLength(Equip.Slots[i], 7);
end;
FTN:= -1;
NoFight:= 10000;
end;

{Thanks to Bulleye95}
function GetInvSlotsDTM(DTM: Integer): TIntegerArray;
var
Tx, Ty: Integer;
tCoords: TPoint;
i: Byte;
begin
for i:= 1 to 28 do
begin
tCoords:= ItemCoords(i);
if(FindDTM(DTM, Tx, Ty, tCoords.x - 24, tCoords.y - 20, tCoords.x + 24, tCoords.y + 20))then
begin
SetLength(Result, Length(Result) + 1);
Result[Length(Result) - 1]:= i;
end;
end;
end;

{Thanks to Town}
procedure ShrinkArray(var Arrays: TIntegerArray);
var
Arrayz: TIntegerArray;
p, i: Byte;
begin
for i:= 0 to GetArrayLength(Arrays) - 1 do
for p:= 0 to GetArrayLength(Arrays) - 1 do
if(not(Arrays[p] = 0))and(not(p = i))and(Arrays[p] = Arrays[i])then Arrays[p]:= 0;
p:= 0;
for i:= 0 to GetArrayLength(Arrays) - 1 do
begin
if(not(Arrays[i] = 0))then
begin
SetArrayLength(Arrayz, GetArrayLength(Arrayz) + 1);
Arrayz[p]:= Arrays[i];
p:= p + 1;
end;
end;
SetArrayLength(Arrays, GetArrayLength(Arrayz));
for i:= 0 to GetArrayLength(Arrays) - 1 do Arrays[i]:= Arrayz[i];
end;

{Thank to Boreas}
function RemoveDupsFromTPA(var StartTPA: TPointArray): TPointArray;
var
ArrayLength, pFindDups, pBubbleUp: Integer;
tpSwap: TPoint;
begin
ArrayLength:= GetArrayLength(StartTPA);
Result:= RearrangeTPA(StartTPA, 0, ArrayLength - 1, True, True);
for pFindDups:= 0 to ArrayLength - 2 do
begin
if(Result[pFindDups].x = Result[pFindDups + 1].x) then
begin
if(Result[pFindDups].y = Result[pFindDups + 1].y)then
begin
for pBubbleUp:= pFindDups to ArrayLength - 2 do
begin
tpSwap:= Result[pBubbleUp];
Result[pBubbleUp]:= Result[pBubbleUp + 1];
Result[pBubbleUp + 1]:= tpSwap;
end;
ArrayLength:= ArrayLength - 1;
SetArrayLength(Result, ArrayLength);
end;
end;
end;
end;

{Thanks to Sky Scripter}
procedure MakeCompassDegrees(Degree: Extended);
var
Done: Boolean;
tmark: Integer;
E: extended;
DirKey: Byte;
begin
if(not(LoggedIn))or(Abs(rs_GetCompassAngleDegrees - Degree) < 5)then Exit;
if((rs_GetCompassAngleDegrees - Degree) < 0)then DirKey:= vk_Right else DirKey:= vk_Left;
KeyDown(DirKey);
tmark:= GetSystemTime;
while(not(Done))and(LoggedIn)and((GetSystemTime - tmark) < 10000)do
begin
E:= rs_GetCompassAngleDegrees;
Done:= (Abs(E - Degree) < 5);
Wait(10);
end;
KeyUp(DirKey);
end;

function MSArcTan(y, x: Extended): Extended;
begin
if(y = zMSCY) and (x < zMSCX) then Result := Radians(180.0);
if(y = zMSCY) and (x > zMSCX) then Result := Radians(0.0);
if(x = zMSCX) and (y < zMSCY) then Result := Radians(270.0);
if(x = zMSCX) and (y > zMSCY) then Result := Radians(90.0);
if(Result = 0.0) and (x <> 255) then
if(x = 0) then
begin
x:= 1;
end;
if(Abs(y) / Abs(x) = 1.0) then
begin
if(y > zMSCY) and (x > zMSCX) then Result := Radians(45.0);
if(y > zMSCY) and (x < zMSCX) then Result := Radians(135.0);
if(y < zMSCY) and (x < zMSCX) then Result := Radians(225.0);
if(y < zMSCY) and (x > zMSCX) then Result := Radians(315.0);
end;
if Result = 0 then
begin
Result := ArcTan(Abs(-y) div Abs(x));
if(y > zMSCY) and (x < zMSCX) then Result := Result + Radians(90.0);
if(y < zMSCY) and (x < zMSCX) then Result := Result + Radians(180.0);
if(y < zMSCY) and (x > zMSCX) then Result := Result + Radians(270.0);
end;
end;

function MSAngle(x, y: Integer): Integer;
var
Quad, Angle, Object_Angle, RadX, RadY:integer;
begin
if(zMSCX < x)and(x < 515)and(4 < y) and(y < zMSCY)then Quad:= 1; // 1 - 89 Degrees
if(4 < x) and(x < zMSCX)and(4 < y) and(y < zMSCY)then Quad:= 2; // 271 - 360 Degrees
if(4 < x) and(x < zMSCX)and(zMSCY < y)and(y < 337)then Quad:= 3; // 181 - 269 Degrees
if(zMSCX < x)and(x < 515)and(zMSCY < y)and(y < 337)then Quad:= 4; // 91 - 180 Degrees
if(x = zMSCX)and(4 < y) and(y < zMSCY) then Quad:= 5; // 0 & 360 Degrees
if(y = zMSCY)and(4 < x) and(x < zMSCX) then Quad:= 6; // 270 Degrees
if(y = zMSCY)and(zMSCX < x)and(x < 515) then Quad:= 7; // 90 Degrees
if(x = zMSCX)and(zMSCY < y)and(y < 337) then Quad:= 8; // 180 Degrees

RadX:= (zMSCX - x);
RadY:= (zMSCY - y);

Object_Angle:= Trunc(Abs(((MSArcTan(4, zMSCX) - MSArcTan(RadY, RadX)) * 180) / Pi));

case Quad of
1 : Angle:= Object_Angle;
2 : Angle:= 360 - Object_Angle;
3 : Angle:= 180 + Object_Angle;
4 : Angle:= 180 - Object_Angle;
5 : Angle:= 0;
6 : Angle:= 270;
7 : Angle:= 90;
8 : Angle:= 180;
end;

AddToReport(' **[MSAngle].Quadrant:= ' + inttostr(Quad));
AddToReport(' **[MSAngle].Angle:= ' + inttostr(Angle));
Result:= Angle;
end;

procedure GTNet;
var
Ex, Ey: Integer;
begin
Wait(16);
GameTab(4);
if(FindDTM(dtmNet, Ex, Ey, MIX1, MIY1, MIX2, MIY2))then
begin
Equip.Temp[0]:= GetInvSlotsDTM(dtmNet);
Equip.Color[CurrentPlayer]:= [2306367, 15, 1];
Equip.Name[CurrentPlayer]:= 'Net';
FishType[CurrentPlayer]:= 'Net';
end else
begin
Writeln('***[' + Players[CurrentPlayer].Name + ' Doesn''t Have Proper Fishing Equipment]***');
PActive:= False;
LogOut;
end;
end;

procedure GTBait;
var
Ex, Ey, Bx, By: Integer;
begin
Wait(16);
if(Players[CurrentPlayer].Level[17] >= 5)then
begin
GameTab(4);
if(FindDTM(dtmFishingRod, Ex, Ey, MIX1, MIY1, MIX2, MIY2))then
begin
Equip.Temp[1]:= GetInvSlotsDTM(dtmFishingRod);
if(FindDTM(dtmBait, Bx, By, MIX1, MIY1, MIX2, MIY2))then
begin
Equip.Temp[5]:= GetInvSlotsDTM(dtmBait);
Equip.Color[CurrentPlayer]:= [7725, 4, 2];
Equip.Name[CurrentPlayer]:= 'ngr';
FishType[CurrentPlayer]:= 'Bait';
end else GTNet;
end else GTNet;
end else GTNet;
end;

procedure GTLure;
var
Ex, Ey, Bx, By: Integer;
begin
Wait(16);
if(Players[CurrentPlayer].Level[17] >= 20)then
begin
GameTab(4);
if(FindDTM(dtmFlyFishingRod, Ex, Ey, MIX1, MIY1, MIX2, MIY2))then
begin
Equip.Temp[2]:= GetInvSlotsDTM(dtmFlyFishingRod);
if(FindDTM(dtmFeather, Bx, By, MIX1, MIY1, MIX2, MIY2))then
begin
Equip.Temp[6]:= GetInvSlotsDTM(dtmFeather);
Equip.Color[CurrentPlayer]:= [7725, 4, 2];
Equip.Name[CurrentPlayer]:= 'lyf';
FishType[CurrentPlayer]:= 'Lure';
end else GTBait;
end else GTBait;
end else GTBait;
end;

procedure GTHarpoon;
var
Ex, Ey: Integer;
begin
Wait(16);
if(Players[CurrentPlayer].Level[17] >= 35)then
begin
GameTab(4);
if(FindDTM(dtmHarpoon, Ex, Ey, MIX1, MIY1, MIX2, MIY2))then
begin
Equip.Temp[3]:= GetInvSlotsDTM(dtmHarpoon);
Equip.Color[CurrentPlayer]:= [11066, 3, 2];
Equip.Name[CurrentPlayer]:= 'arp';
FishType[CurrentPlayer]:= 'Harpoon';
end else GTLure;
end else GTLure;
end;

procedure GTCage;
var
Ex, Ey: Integer;
begin
Wait(16);
if(Players[CurrentPlayer].Level[17] >= 40)then
begin
GameTab(4);
if(FindDTM(dtmCage, Ex, Ey, MIX1, MIY1, MIX2, MIY2))then
begin
Equip.Temp[4]:= GetInvSlotsDTM(dtmCage);
Equip.Color[CurrentPlayer]:= [607849, 15, 1];
Equip.Name[CurrentPlayer]:= 'age';
FishType[CurrentPlayer]:= 'Cage';
end else GTHarpoon;
end else GTHarpoon;
end;

procedure GTAuto;
var
Ex, Ey: Integer;
begin
Wait(16);
if(Players[CurrentPlayer].Level[17] >= 50)then
begin
GameTab(4);
if(FindDTM(dtmHarpoon, Ex, Ey, MIX1, MIY1, MIX2, MIY2))then
begin
Equip.Temp[3]:= GetInvSlotsDTM(dtmHarpoon);
Equip.Color[CurrentPlayer]:= [11066, 3, 2];
Equip.Name[CurrentPlayer]:= 'arp';
FishType[CurrentPlayer]:= 'Harpoon';
end else GTCage;
end else GTCage;
end;

procedure SetSafeSlots;
var
i, a, e, LengthOfArray, WorkTime: Integer;
begin
MarkTime(WorkTime);
for i:= 0 to 6 do
LengthOfArray:= LengthOfArray + GetArrayLength(Equip.Temp[i]);
SetArrayLength(Equip.Slots[CurrentPlayer], LengthOfArray);
for a:= 0 to GetArrayLength(Equip.Slots[CurrentPlayer]) - 1 do
for e:= 0 to 6 do
for i:= 0 to GetArrayLength(Equip.Temp[e]) - 1 do
begin
Equip.Slots[CurrentPlayer][a]:= Equip.Temp[e][i];
a:= a + 1;
end;
ShrinkArray(Equip.Slots[CurrentPlayer]);
BubbleSort(Equip.Slots[CurrentPlayer]);
for i:= 0 to GetArrayLength(Equip.Slots[CurrentPlayer]) - 1 do
AddToReport(' **[SetSafeSlots].Slots:= ' + inttostr(Equip.Slots[CurrentPlayer][i]));
AddToReport(' **[SetSafeSlots].Worktime:= ' + inttostr(TimeFromMark(WorkTime)));
end;

procedure SetupScript;
begin
if(not(LoggedIn))then Exit;
if(Players[CurrentPlayer].Level[17] = 0)then
begin
HighestAngle;
//MakeCompass('n');
Players[CurrentPlayer].Level[17]:= GetSkillLevel('fishing');
AddToReport(' **[SetupScript].FishingLevel:= ' + inttostr(Players[CurrentPlayer].Level[17]));
Wait(500 + Random(1000));
case LowerCase(Players[CurrentPlayer].Strings[0]) of
'net' : GTNet;
'bait' : GTBait;
'lure' : GTLure;
'harpoon' : GTHarpoon;
'cage' : GTCage;
'auto' : GTAuto;
end;
SetSafeSlots;
AddToReport(' **[SetupScript].FishType:= ' + FishType[CurrentPlayer]);
AddToReport(' **[SetupScript].Equip.Color:= [' + inttostr(Equip.Color[CurrentPlayer][0]) + ', ' + inttostr(Equip.Color[CurrentPlayer][1]) + ', ' + inttostr(Equip.Color[CurrentPlayer][2]) + ']');
AddToReport(' **[SetupScript].Equip.Name:= ' + Equip.Name[CurrentPlayer]);
end;
end;

procedure DrawBoxOnCanvas(Canvas: TCanvas; x1, y1, x2, y2, penColor: Integer);
begin
Canvas.Pen.Color:= penColor;
Canvas.MoveTo(x1, y1);
Canvas.LineTo(x2, y1);
Canvas.LineTo(x2, y2);
Canvas.LineTo(x1, y2);
Canvas.LineTo(x1, y1);
end;

procedure MarkFishingArea;
var
W, H, FishingSpot: Integer;
FPCanvas: TCanvas;
begin
GetClientDimensions(W, H);
FishingSpot:= BitmapFromString(W, H, '');
FPCanvas:= GetBitmapCanvas(FishingSpot);
SafeCopyCanvas(GetClientCanvas, FPCanvas, 0, 0, W, H, 0, 0, W, H);
DrawBoxOnCanvas(FPCanvas, Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, 255);
SaveBitmap(FishingSpot, 'C:\Documents and Settings\Trevor Kirchner\Desktop\Fishing Area ' + inttostr(Num) + '.bmp');
Num:= Num + 1;
end;

procedure FindBoxTPA(FS: TPointArray; var x1, y1, x2, y2: Integer);
var
FSx, FSy: TIntegerArray;
a: Byte;
begin
SetArrayLength(FSx, Length(FS));
SetArrayLength(FSy, Length(FS));
for a:= 0 to Length(FS) - 1 do
begin
FSx[a]:= FS[a].x;
FSy[a]:= FS[a].y;
end;
BubbleSort(FSx);
BubbleSort(FSy);
x1:= FSx[0];
x2:= FSx[GetArrayLength(FS) - 1];
y1:= FSy[0];
y2:= FSy[GetArrayLength(FS) - 1];
end;

function FindFish(SkipBox: Boolean): Boolean;
var
FPx, FPy, WorkTime, WaterCol, x1, y1, x2, y2: Integer;
i, CCN, FPCount, tCTS: Byte;
ClosestSpot, NewColor: Boolean;
Sear: TBox;
FS, FS2: TPointArray;
label Start;
begin
if(not(LoggedIn))then Exit;
MarkTime(WorkTime);
tCTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(FP_ColorToleranceSpeed);
WaterCol:= FindWaterColor;
Start:
for i:= 1 to 5 do
begin
Sear.x1:= MSCX - Ceil(i * 51.6);
Sear.y1:= MSCY - Ceil(i * 33.8);
Sear.x2:= MSCX + Ceil(i * 51.4);
Sear.y2:= MSCY + Ceil(i * 33.6);
FPx:= MSCX;
FPy:= MSCY;
if(SkipBox)then Result:= FindColorSkipBoxArrayTolerance(FPx, FPy, FP_Color, Sear.x1, Sear.y1, Sear.x2, Sear.y2, FP_Tolerance, FalseBox)else
Result:= FindColorSpiralTolerance(FPx, FPy, FP_Color, Sear.x1, Sear.y1, Sear.x2, Sear.y2, FP_Tolerance);
if(Result)then
begin
FTN:= FTN + 1;
SetArrayLength(Area, GetArrayLength(Area) + 1);
x1:= FPx - 10;
y1:= FPy - 10;
x2:= FPx + 10;
y2:= FPy + 10;
if(FindColorTolerance(FPx, FPy, WaterCol, x1, y1, x2, y2, 30))then
if(CountColorTolerance(13025468, Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, 10) < 10)then
begin
FindColorsTolerance(FS, FP_Color, x1, y1, x2, y2, FP_Tolerance);
FindBoxTPA(FS, x1, y1, x2, y2);
Wait(16);
FindColorsTolerance(FS2, FP_Color, x1 - 10, y1 - 10, x2 + 10, y2 + 10, FP_Tolerance);
FS:= CombineTPA(FS, FS2);
Wait(16);
FindBoxTPA(FS, x1, y1, x2, y2);
FindColorsTolerance(FS2, FP_Color, x1 - 10, y1 - 10, x2 + 10, y2 + 10, FP_Tolerance);
FS:= CombineTPA(FS, FS2);
RemoveDupsFromTPA(FS);
FPCount:= GetArrayLength(FS);
if(FPCount < 2)then
begin
Wait(200 + Random(50));
ClosestSpot:= False;
NewColor:= True;
Break;
end;
if(FPCount > 120)then
begin
if(CCN > 9)then
begin
Result:= False;
Exit;
end;
NewColor:= True;
Wait(200 + Random(50));
CCN:= CCN + 1;
Break;
end;
CCN:= 0;
if(FPCount > 3)and(FPCount < 121)then
begin
ClosestSpot:= True;
NewColor:= False;
Break;
end;
end else Result:= False;
end else
if(i = 5)then
if(not(ClosestSpot))then
begin
Result:= False;
Exit;
end;
end;
if(NewColor)then goto Start;
if(ClosestSpot)then
begin
FindBoxTPA(FS, x1, y1, x2, y2);
Area[FTN].x:= (x1 + x2) div 2;
Area[FTN].y:= (y1 + y2) div 2;
Area[FTN].x1:= x1 - 5;
Area[FTN].y1:= y1 - 5;
Area[FTN].x2:= x2 + 5;
Area[FTN].y2:= y2 + 5;
//MarkFishingArea;
Result:= True;
end else Result:= False;
ColorToleranceSpeed(tCTS);
AddToReport(' **Area[' + inttostr(FTN) + '].x:= ' + inttostr(Area[FTN].x));
AddToReport(' **Area[' + inttostr(FTN) + '].y:= ' + inttostr(Area[FTN].y));
AddToReport(' **Area[' + inttostr(FTN) + '].x1:= ' + inttostr(Area[FTN].x1));
AddToReport(' **Area[' + inttostr(FTN) + '].y1:= ' + inttostr(Area[FTN].y1));
AddToReport(' **Area[' + inttostr(FTN) + '].x2:= ' + inttostr(Area[FTN].x2));
AddToReport(' **Area[' + inttostr(FTN) + '].y2:= ' + inttostr(Area[FTN].y2));
AddToReport(' **Area[' + inttostr(FTN) + '].FPCount:= ' + inttostr(FPCount));
AddToReport(' **Area[' + inttostr(FTN) + '].WorkTime:= ' + inttostr(TimeFromMark(WorkTime) - 32));
end;

function Confirm: Boolean;
var
Text: string;
begin
case FishType[CurrentPlayer] of
'Cage' : Result:= IsUpTextMulti('age', 'Cag', 'ge '); //Cage Fishing spot
'Harpoon' : Result:= IsUpTextMulti('age', 'Cag', 'ge '); //Cage Fishing spot
'Lure' : Result:= IsUpTextMulti('ure', 'Lur', 're '); //Lure Fishing spot
'Bait' : Result:= IsUpTextMulti('ure', 'et ', 't F'); //Net Fishing spot, Lure Fishing spot
'Net' : Result:= IsUpTextMulti('et ', 'Net', 't F'); //Net Fishing spot
end;
Text:= rs_GetUpText;
Area[FTN].UpText:= Trim(Copy(Text, 0, Pos('Fi', Text) - 1));
if(Result)then AddToReport(' **Area[' + inttostr(FTN) + '].UpText:= ' + Area[FTN].UpText) else
AddToReport(' **Area[' + inttostr(FTN) + '].UpText:= *False UpText*');
end;

procedure FishClick(Fx, Fy: Integer);
begin
case FishType[CurrentPlayer] of
'Cage' : Mouse(Fx, Fy, 0, 0, True);
'Harpoon' :
begin
Mouse(Fx, Fy, 0, 0, False);
Wait(200 + Random(50));
ChooseOption('arp');
end;
'Lure' : Mouse(Fx, Fy, 0, 0, True);
'Bait' :
begin
Mouse(Fx, Fy, 0, 0, False);
Wait(200 + Random(50));
ChooseOption('ait');
end;
'Net' : Mouse(Fx, Fy, 0, 0, True);
end;
Wait(250);
FFlag(0);
Wait(250 + Random(250));
end;

procedure FindRandoms;
var
i: Byte;
begin
if(not(LoggedIn))then Exit;
for i:= 1 to 4 do
begin
case i of
1 : FindNormalRandoms;
2 : FindDemon;
3 : DwarfItem;
4 : if(InBlack)then LogOut;
end;
end;
if(not(LoggedIn))then PActive:= False;
end;

procedure Fish(SkipBox: Boolean);
var
Fx, Fy, Safe: Integer;
TempAngle, TargetAngle: Extended;
SpotText: string;
i: ShortInt;
a: Byte;
FishArea, NewArea: Boolean;
label Start;
begin
if(not(LoggedIn))then Exit;
if(FindFish(SkipBox))then
begin
i:= -1;
Start:
MMouse(Area[FTN].x, Area[FTN].y, 0, 0);
Wait(350 + Random(250) - Random(250));
if(Confirm)then
begin
FishClick(Area[FTN].x, Area[FTN].y);
Wait(500 + Random(150));
FindRandoms;
if(not(FlagPresent))then
begin
Area[FTN].x1:= Area[FTN].x - 12;
Area[FTN].y1:= Area[FTN].y - 12;
Area[FTN].x2:= Area[FTN].x + 12;
Area[FTN].y2:= Area[FTN].y + 12;
FishArea:= True;
end;
end else
begin
i:= i + 1;
SetArrayLength(FalseBox, GetArrayLength(FalseBox) + 1);
FalseBox[i].x1:= Area[FTN].x1;
FalseBox[i].y1:= Area[FTN].y1;
FalseBox[i].x2:= Area[FTN].x2;
FalseBox[i].y2:= Area[FTN].y2;
if(not(NewArea))then
if(FindFish(True))then goto Start else
begin
for a:= 0 to FTN do
case Area[a].UpText of
'Cage' : begin GTCage; SpotText:= 'Cage'; Break; end;
'Lure' : begin GTLure; SpotText:= 'Lure'; Break; end;
'Net' : begin GTBait; SpotText:= 'Net'; Break; end;
end;
SetSafeSlots;
for a:= 0 to FTN do
begin
ColorToleranceSpeed(FP_ColorToleranceSpeed);
if(CountColorTolerance(FP_Color, Area[a].x1, Area[a].y1, Area[a].x2, Area[a].y2, FP_Tolerance) > 3)then
if(Area[a].UpText = SpotText)then
begin
MMouse(Area[a].x, Area[a].y, 0, 0);
Wait(250 + Random(50));
if(Confirm)then
begin
FishClick(Area[a].x, Area[a].y);
Wait(250 + Random(150));
FindRandoms;
if(not(FlagPresent))then
begin
Area[FTN].x1:= Fx - 12;
Area[FTN].y1:= Fy - 12;
Area[FTN].x2:= Fx + 12;
Area[FTN].y2:= Fy + 12;
FishArea:= True;
end;
NewArea:= True;
Break;
end else
begin
NewArea:= False;
if(a = FTN)then
if(CountColorTolerance(13025468, Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, 15) > 20)then
while(FindColorTolerance(Fx, Fy, 13025468, Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, 10))do
Wait(250);
Break;
end;
end;
Wait(16);
end;
if(not(NewArea))then goto Start;
end;
end;
MarkTime(Safe);
while FlagPresent do
begin
Wait(115);
if(TimeFromMark(Safe) > 20000)then Break;
end;
Wait(400 + Random(100));
FindFish(False);
Wait(400 + Random(100));

TempAngle:= MSAngle(Area[FTN].x, Area[FTN].y);

if(TempAngle > 345)and(TempAngle <= 45) then TargetAngle:= 180;
if(TempAngle > 45) and(TempAngle <= 135)then TargetAngle:= 90;
if(TempAngle > 135)and(TempAngle <= 225)then TargetAngle:= 0;
if(TempAngle > 225)and(TempAngle <= 345)then TargetAngle:= -90;

MakeCompassDegrees(rs_GetCompassAngleDegrees + TargetAngle);

FindFish(False);
AddToReport(' **Area[' + inttostr(FTN) + '].UpText:= *Positioning*');
ColorToleranceSpeed(1);
end;
end;

function QuickClickToContinue: Boolean;
begin
if(GetColor(495, 345) <> 65536)and
(GetColor(503, 360) <> 65536)then
begin
Wait(500 + Random(250));
if(GetColor(385, 385) = 8388608)and
(GetColor(464, 388) = 8388608)then
begin
Players[CurrentPlayer].Level[17]:= Players[CurrentPlayer].Level[17] + 1;
Writeln('****[Fishing Level Increased]****');
end;
Mouse(201, 446, 20, 4, True);
Wait(250 + Random(100));
Result:= True;
end;
end;

procedure HandleWhirlPool;
begin
if(CountColorTolerance(13025468, Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, 15) > 20)then
if(FindFish(True))then Fish(True) else
begin
Mouse(MMCX + 4, MMCY + 4, 8, 8, True);
FFlag(0);
while(not(FindFish(False)))do Wait(250);
Fish(False);
end;
end;

procedure HandleFight;
var
x, y: Integer;
begin
if(TimeFromMark(NoFight) < 10000)then Exit;
if(FindColor(x, y, 65280, 230, 130, 280, 180))then
if(FindColor(x, y, 255, 230, 130, 280, 180))then
if(HPPercent < 80)then
if(GetHP < Players[CurrentPlayer].Integers[12])then
if((GetSkillLevel('hitpoints') - GetSkillAmount('hitpoints')) > 0)then
begin
SetRun(True);
RunAwayDirection('s');
Wait(500 + Random(20));
Players[CurrentPlayer].Integers[12]:= GetHP;
RunAwayDirection('n');
SetRun(False);
Wait(250 + Random(50));
Fish(False);
NoFight:= 10000;
end else
begin
MarkTime(NoFight);
Exit;
end;
end;

procedure RandomTalk;
begin
case Random(9) of
0 : SendKeys('*sigh*' + Chr(13));
1 : begin
case Random(3) of
0 : SendKeys('sigh..' + Chr(13));
1 : SendKeys('sigh...' + Chr(13));
2 : SendKeys('sigh....' + Chr(13));
end;
end;
2 : begin
case Random(4) of
0 : SendKeys('Hmmm..' + Chr(13));
1 : SendKeys('Hmmm...' + Chr(13));
2 : SendKeys('Hmmmm..' + Chr(13));
3 : SendKeys('Hmmmm...' + Chr(13));
end;
end;
3 : SendKeys('*yawn*' + Chr(13));
4 : SendKeys('-.-' + Chr(13));
5 : SendKeys(';-.-' + Chr(13));
6 : begin
case Random(4) of
0 : SendKeys('Zzzz...' + Chr(13));
1 : SendKeys('Zzzzz...' + Chr(13));
2 : SendKeys('Zzzzzz...' + Chr(13));
3 : SendKeys('Zzzzz....' + Chr(13));
end;
end;
7 : begin
case Random(3) of
0 : SendKeys('...' + Chr(13));
1 : SendKeys('....' + Chr(13));
2 : SendKeys('.....' + Chr(13));
end;
end;
8 : begin
case Random(5) of
0 : SendKeys(inttostr(XpTilNextLevel('fishing', True) / 1000) + 'k more exp to go!' + Chr(13));
1 : SendKeys(inttostr(XpTilNextLevel('fishing', True) / 1000) + 'k exp until I lvl' + Chr(13));
2 : SendKeys(inttostr(XpTilNextLevel('fishing', True) / 1000) + 'k exp and I''ll level' + Chr(13));
3 : SendKeys(inttostr(XpTilNextLevel('fishing', True) / 1000) + 'k more exp and I level' + Chr(13));
4 : SendKeys(inttostr(XpTilNextLevel('fishing', True) / 1000) + 'k exp and I''ll lvl' + Chr(13));
end;
end;
end;
end;

procedure Antiban;
begin
case Random(14) of
0 : if(Random(7) = 0)then HoverSkill('fishing', False);
1 : if(Random(10) = 0)then AlmostLogout;
2, 3: PickUpMouse;
5 : if(Random(12) = 0)then RandomTalk;
end;
end;

procedure HandleBigFish;
var
Bx, By, Fx, Fy, a: Integer;
i, ArrLength: Byte;
tSpot: TBoxArray;
begin
if(not(LoggedIn))then Exit;
ColorToleranceSpeed(2);
if(FindColorTolerance(Bx, By, 4675930, Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, 7))then
begin
while(FindColorTolerance(Bx, By, 4675930, Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, 7))do
Wait(36);
Wait(250 + Random(100));
ColorToleranceSpeed(0);
Fx:= MSCX;
Fy:= MSCY;
SetArrayLength(tSpot, 1);
tSpot[0].x1:= MSX1;
tSpot[0].y1:= MSY1;
tSpot[0].x2:= MSX2;
tSpot[0].y2:= MSY2;
for i:= 0 to GetArrayLength(Equip.Slots[CurrentPlayer]) - 1 do
if(not(ExistsItem(Equip.Slots[CurrentPlayer][i])))then
begin
if(FindColorSpiralTolerance(Fx, Fy, 16363446, MSX1, MSY1, MSX2, MSY2, 26))then
begin
while(FindColorSpiralTolerance(Fx, Fy, 16363446, tSpot[a].x1, tSpot[a].y1, tSpot[a].x2, tSpot[a].y2, 26))do
begin
a:= a + 1;
SetArrayLength(tSpot, a + 1);
tSpot[a].x1:= Fx - 60;
tSpot[a].y1:= Fy - 60;
tSpot[a].x2:= Fx + 60;
tSpot[a].y2:= Fy + 60;
Wait(150);
end;
Wait(100 + Random(50));
FFlag(0);
Wait(500 + Random(150));
ArrLength:= High(tSpot);
ColorToleranceSpeed(Equip.Color[CurrentPlayer][2]);
if(FindColorSpiralTolerance(Bx, By, Equip.Color[CurrentPlayer][0], tSpot[ArrLength].x1, tSpot[ArrLength].y1, tSpot[ArrLength].x2, tSpot[ArrLength].y2, Equip.Color[CurrentPlayer][1]))then
begin
if(CountColorTolerance(Equip.Color[CurrentPlayer][0], Bx - 20, By - 20, Bx + 20, By + 20, Equip.Color[CurrentPlayer][1]) > 9)then
begin
MMouse(Bx, By, 0, 0);
Wait(250 + Random(100));
if(IsUpText(Equip.Name[CurrentPlayer]))then
begin
Mouse(Bx, By, 0, 0, True);
FFlag(0);
Wait(250 + Random(100));
end;
end;
end else
begin
Mouse(Fx, Fy, 0, 0, False);
if(ChooseOption(Equip.Name[CurrentPlayer]))then
begin
FFlag(0);
Wait(250 + Random(100));
end;
end;
end else Exit;
end else Exit;
end else Exit;
ColorToleranceSpeed(1);
end;

function IsPlayerFishing: Boolean;
var
Ix, Iy, Safe: Integer;
NFish: Byte;
begin
if(InvFull)then
begin
Result:= True;
Exit;
end;
HandleFight;
ColorToleranceSpeed(Equip.Color[CurrentPlayer][2]);
MarkTime(Safe);
repeat
if(FindColorTolerance(Ix, Iy, Equip.Color[CurrentPlayer][0], Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, Equip.Color[CurrentPlayer][1]))then
begin
Result:= True;
NFish:= 0;
Exit;
end else NFish:= NFish + 1;
if(FindColorTolerance(Ix, Iy, 4675930, Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, 7))then HandleBigFish;
Wait(100);
until(NFish = 20);
NFish:= 0;
ColorToleranceSpeed(1);
end;

function CheckEquipment: Boolean;
var
Cx, Cy: Integer;
i: Byte;
begin
if(not(LoggedIn))then Exit;
Cx:= MSCX;
Cy:= MSCY;
ColorToleranceSpeed(Equip.Color[CurrentPlayer][2]);
for i:= 0 to GetArrayLength(Equip.Slots[CurrentPlayer]) - 1 do
if(not(ExistsItem(Equip.Slots[CurrentPlayer][i])))then
begin
if(FindColorSpiralTolerance(Cx, Cy, Equip.Color[CurrentPlayer][0], MSX1, MSY1, MSX2, MSY2, Equip.Color[CurrentPlayer][1]))then
begin
if(CountColor(Equip.Color[CurrentPlayer][0], Cx - 10, Cy - 10, Cx + 10, Cy + 10) > 5)then
begin
MMouse(Cx, Cy, 0, 0);
Wait(250 + Random(100));
if(IsUpText(Equip.Name[CurrentPlayer]))then
begin
Mouse(Cx, Cy, 0, 0, True);
FFlag(0);
Wait(250 + Random(100));
Result:= True;
end;
end;
end else
begin
if(Players[CurrentPlayer].Level[17] < 5)then GTNet;
if(Players[CurrentPlayer].Level[17] < 20)then GTBait;
if(Players[CurrentPlayer].Level[17] < 35)then GTLure;
if(Players[CurrentPlayer].Level[17] < 40)then GTHarpoon;
if(Players[CurrentPlayer].Level[17] >= 40)then GTCage;
end;
end else Result:= True;
ColorToleranceSpeed(1);
end;

procedure WaitWhilstFishing;
var
WWF, WWF2, NFTimer, Safe, x, y, z: Integer;
FFalse: Byte;
begin
if(not(LoggedIn))then Exit else
begin
Wait(1500 + Random(250));
MarkTime(Safe);
MarkTime(WWF);
MarkTime(WWF2);
MarkTime(NFTimer);
repeat
Wait(32);
if(not(LoggedIn))then LoginPlayer;
QuickClickToContinue;
HandleWhirlPool;
HandleBigFish; //Testing
HandleFight;
if(TimeFromMark(WWF) >= 500)then
begin
ColorToleranceSpeed(FP_ColorToleranceSpeed);
Writeln('****[Checking Fishing Spot]****');
z:= z + 1;
if(not(FindColorTolerance(x, y, FP_Color, Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, FP_Tolerance)))then
begin
Writeln('****[Temporarily Lost Spot]****');
Wait(700 + Random(200) - Random(200));
if(not(FindColorTolerance(x, y, FP_Color, Area[FTN].x1, Area[FTN].y1, Area[FTN].x2, Area[FTN].y2, FP_Tolerance)))then
Fish(False);
end;
ColorToleranceSpeed(1);
MarkTime(WWF);
end;
if(TimeFromMark(WWF2) >= 2500)then
begin
CheckEquipment;
//FindRandoms;
AntiBan;
GetMousePos(x, y);
MMouse(x, y, 10, 10);
MarkTime(WWF2);
end;
if(not(IsPlayerFishing))then
begin
if(InvFull)then Exit;
Fish(False);
FFalse:= 0;
end else FFalse:= FFalse + 1;
if(InvFull)then Exit;
Wait(115);
until(TimeFromMark(Safe) >= 300000 + Random(1000) - Random(1000));
end;
end;

procedure DropAllFish;
var
Ix, Iy, x, y, SafeTime: Integer;
FishDTM: array [0..9] of Integer;
InvSlot: TPoint;
i, a, WT: Byte;
begin
if(not(LoggedIn))then Exit;
FishDTM[0]:= DTMFromString('78DA635CC5C8C010CA800266B55631B00269A00CC37' +
'F2060DC0C648533A00146241248AF03B22208A899036445E2570300E6A809AE');//0 Shrimp
FishDTM[1]:= DTMFromString('78DA63CC6562602861644006C5A74B1958813448F43' +
'F1030A600D554A1AA81C8C248205D065453885B0D18E700D514E1570300C52C0952');//1 Sardine
FishDTM[2]:= DTMFromString('78DA63EC64606000612470FFF66D065620CD08C4FF8' +
'180B101C8E86140038C482490EE07120D04D4CC04124DF8D500006E8B0AEA');//2 Herring
FishDTM[3]:= DTMFromString('78DA6374616260E0646440064929350CAC401A24FA1' +
'F08183D806A7850D54064612490F605AAE126A0C60CA88617BF1A00CBEA0697');//3 Anchovie
FishDTM[4]:= DTMFromString('78DA637CC5C0C0D0C68002B6AC5CC1C00AA41981F83' +
'F1030DE0332FA18D000231209A4DF00896A026ADE02891EFC6A00AB370BCE');//4 Trout
FishDTM[5]:= DTMFromString('78DA639466646068654001C5138A195881345086E13' +
'F1030F202597D0C6880118904D22073AA8950D38B5F0D0045B20800');//5 Pike
FishDTM[6]:= DTMFromString('78DA63F460646068674001BBCA33195881345086E13' +
'F1030DA00597D0C6880118904D25E4056350135DE40560F7E350098A708E0');//6 Salmon
FishDTM[7]:= DTMFromString('78DA632C63646068674001DBD7AC666005D2401986F' +
'F40C0980D64F532A001462412485702595504D4D40359F5F8D500000F6C0A05');//7 Tuna
FishDTM[8]:= DTMFromString('78DA635CC9C8C0D0C28002CA9D65195881345086E13' +
'F1030CE06B2BA18D000231209A4D700591309A8D9026495E3570300C26609A2');//8 Lobster
FishDTM[9]:= DTMFromString('78DA6374616260D8C1C8800CCE2CBDCCC00AA441A2F' +
'F8180D118A8E624AA1A882C8C04D22073761350130854B307BF1A002ECD0A61');//9 Swordfish
Wait(500 + Random(500));
for i:= 1 to 28 do
begin
HandleFight;
begin
if(ExistsItem(i))then
begin
InvSlot:= ItemCoords(i);
for a:= 0 to 9 do
begin
if(FindDTM(FishDTM[a], Ix, Iy, InvSlot.x - 24, InvSlot.y - 19, InvSlot.x + 24, InvSlot.y + 19))then
begin
MMouse(Ix, Iy, 10, 10);
Wait(200 + Random(100));
if(IsUpTextMultiCustom([' Ra','Raw','aw ']))then
begin
GetMousePos(Ix, Iy);
Mouse(Ix, Iy, 0, 0, false);
MarkTime(SafeTime);
while(not(FindDTM(dtmOptionMenu, x, y, Ix - 100, Iy - 100, Ix + 100, Iy + 100)))do
begin
Wait(20);
if(TimeFromMark(SafeTime) >= 5000)then Break;
end;
Wait(100 + Random(20));
ChooseOption('Drop');
MarkTime(SafeTime);
while(FindDTM(dtmOptionMenu, x, y, Ix - 100, Iy - 100, Ix + 100, Iy + 100))do
begin
Wait(20);
if(TimeFromMark(SafeTime) >= 5000)then Break;
end;
Wait(200 + Random(20));
Players[CurrentPlayer].Integers[a]:= (Players[CurrentPlayer].Integers[a] + 1);
if(FindColor(Ix, Iy, 16777215, InvSlot.x - 24, InvSlot.y - 19, InvSlot.x + 24, InvSlot.y + 19))then
begin
GetMousePos(Ix, Iy);
Mouse(Ix, Iy, 0, 0, true);
end;
repeat
Wait(50);
WT:= WT + 1;
until(not(FindDTM(FishDTM[a], Ix, Iy, InvSlot.x - 24, InvSlot.y - 19, InvSlot.x + 24, InvSlot.y + 19)))or(WT = 5);
WT:= 0;
Wait(100 + Random(50));
end;
end;
end;
end;
end;
end;
for a:= 0 to 9 do FreeDTM(FishDTM[a]);
end;

procedure ProgressReport;
var
i, TotalFish, TotalExp: Integer;
FishText: string;
begin
Players[CurrentPlayer].Integers[10]:= 0;
Players[CurrentPlayer].Integers[11]:= 0;
Writeln(' ^ -----------------[Progress Report]---------------- ^ ');
for i:= 0 to 9 do
Players[CurrentPlayer].Integers[10]:= Players[CurrentPlayer].Integers[10] + Players[CurrentPlayer].Integers[i];
TotalFish:= TotalFish + Players[CurrentPlayer].Integers[10];
for i:= 0 to 9 do
Players[CurrentPlayer].Integers[11]:= Players[CurrentPlayer].Integers[11] + ((10 + (10 * i)) * Players[CurrentPlayer].Integers[i]);
TotalExp:= TotalExp + Players[CurrentPlayer].Integers[11];
Writeln(' Total Time Running : ' + inttostr(ScriptTime(1)) + ':' + inttostr(ScriptTime(2)) + ':' + inttostr(ScriptTime(3)));
Writeln(' Total Fish Caught : ' + inttostr(TotalFish));
Writeln(' Total Exp Gained : ' + inttostr(TotalExp));
Writeln(' ^ -------------------[Fish Caught]------------------ ^ ');
for i:= 0 to 9 do
begin
if(Players[CurrentPlayer].Integers[i] > 0)then
begin
case i of
0 : FishText:= ' - [Shrimp]';
1 : FishText:= ' - [Sardine]';
2 : FishText:= ' - [Herring]';
3 : FishText:= ' - [Anchovie]';
4 : FishText:= ' - [Trout]';
5 : FishText:= ' - [Pike]';
6 : FishText:= ' - [Salmon]';
7 : FishText:= ' - [Tuna]';
8 : FishText:= ' - [Lobster]';
9 : FishText:= ' - [Swordfish[';
end;
Writeln(' ' + inttostr(Players[CurrentPlayer].Integers[i]) + FishText);
end;
end;
Writeln(' ^ ------------------[Player Stats]------------------ ^ ');
for i:= 0 to HowManyPlayers - 1 do
begin
Writeln(' Name: ' + Players[i].Name);
Writeln(' Active: ' + booltostr(Players[i].Active));
Writeln(' Fish Caught: ' + inttostr(Players[i].Integers[10]));
Writeln(' Exp Gained: ' + inttostr(Players[i].Integers[11]));
Writeln(' ^ -------------------------------------------------- ^ ');
end;
end;

procedure LoadDTMs;
begin
dtmOptionMenu:= DTMFromString('78DA639CCAC4C0C002C4482036C41D4C3342F98C2035' +
'5C04D44C06CAF3A0AA8101B89AB940790E02E6CCC25483614E1F509E9580391309AB0100D2' +
'EB094A');
dtmNet:= DTMFromString('78DA63F463626078C68006189148206D0C54F39C801A47A09A9' +
'B04D4B801D5BCC3AF060092BB04B1');
dtmFishingRod:= DTMFromString('78DA63AC606260B8C18006189148209D0C54F39E809A' +
'6CA09A7B04D41411B60B00CA2E054A');
dtmFlyFishingRod:= DTMFromString('78DA63F466626050636440058C4824907604AA312' +
'5A0C602A8C682801A27A01A15FC6A00A2A701D6');
dtmHarpoon:= DTMFromString('78DA63B460626078C7800618914820ED02547397801A77A' +
'09A7BB8D580B13550CD67DC6A9840B41F90BC49400DC83DD7F1DB050056150701');
dtmCage:= DTMFromString('78DA63EC60626008606440058C4824909E0954134740CD12A0' +
'9A20026A6603D5B8E156039465000045F103C1');
dtmBait:= DTMFromString('78DA637465626078C68006189148206D0A54F386801A73A09A' +
'C704D4F803D53CC5AF0600908904AF');
dtmFeather:= DTMFromString('78DA633CC4C4C0708B010D302291407A2750CD07DC6A984' +
'0F46920798D08739E12507302A8E6096E35CC400C0062C3084F');
end;

function AllInactive: Boolean;
var
i, PlIn: Byte;
begin
for i:= 0 to HowManyPlayers - 1 do
if(Players[i].Active)then Exit else PlIn:= PlIn + 1;
if(PlIn = HowManyPlayers)then Result:= True;
end;

begin
SetupSRL;
MouseSpeed:= 14;
DeclarePlayers;
PActive:= True;
MarkTime(Timed);
LoadDTMs;
LoginPlayer;
repeat
if(TimeFromMark(Timed) >= (2400000 + Random(600000) - Random(600000)))then
begin
MarkTime(Timed);
NextPlayer(PActive);
end;
if(not(LoggedIn))then NextPlayer(PActive);
PActive:= True;
SetupScript;
Fish(False);
WaitWhilstFishing;
DropAllFish;
ProgressReport;
until(AllInactive);
end.

All actions in this script (I'm pretty sure) are based on what a person thinks / does when fishing.

As for charing accounts, I could share some 51, 44, and a 38. They've been partially legit and partially auto'ed. No black marks or anything so their probably not being watched.

I'm sure RAM has some characters we could use… :p

Smartzkid

2007-12-15 12:46:01

I've got 32 'pure' mages who all have 50+ mage; I'm sure they'd look pretty legit if they had higher combat stats…

No skills though, so you'd have to start from the beginning if you want to gather with 'em.