Untitled diff

Created Diff never expires
7 removals
603 lines
13 additions
609 lines
program AlkharidCooker;
program AlkharidCooker;
{$DEFINE SMART}
{$DEFINE SMART}
{$i AeroLib/AeroLib.Simba}
{$i AeroLib/AeroLib.Simba}


Const
Const
//----------------------Being user setup----------------------//
//----------------------Begin user setup----------------------//
WHATTOCOOK = 'Salmon'; // Trout, salmon, tuna, lobster, swordfish, monkfish, shark
WHATTOCOOK = 'shrimps'; // shrimps. trout, salmon, tuna, lobster, swordfish, monkfish, shark
FASTMODE = True; // Cook at the speed of light?
FASTMODE = True; // Cook at the speed of light?


// Player info
// Player info
P_USERNAME = '';
P_USERNAME = '';
P_PASSWORD = '';
P_PASSWORD = '';
P_NICKNAME = '';
P_NICKNAME = '';
P_PIN = '';
P_PIN = '';
P_MEMBER = False;
P_MEMBER = False;


// Break settings
// Break settings
cBREAK_IN = 80; // How long before we take a break? (minutes)
cBREAK_IN = 80; // How long before we take a break? (minutes)
cBREAK_FOR = 10; // How long will we break for? (minutes)
cBREAK_FOR = 10; // How long will we break for? (minutes)
cR_BREAK_IN = 25; // Random minutes to add/subtract from how long until we break
cR_BREAK_IN = 25; // Random minutes to add/subtract from how long until we break
cR_BREAK_FOR = 7; // Random minutes to add/subjtract from break duraction
cR_BREAK_FOR = 7; // Random minutes to add/subjtract from break duraction
//----------------------End user setup----------------------//
//----------------------End user setup----------------------//


// Core constants
// Core constants
VERSION_MAIN = 2.1;
VERSION_MAIN = 2.6;
VERSION_SUB = 1;
VERSION_SUB = 1;


type State = (COOKING, BANKWALK, RANGEWALK, BANKING, LOST);
type State = (COOKING, BANKWALK, RANGEWALK, BANKING, LOST);


Var
Var
// Dynamic
// Dynamic
fish_Cooked,
fish_Cooked,
fish_Raw : TItem;
fish_Raw : TItem;
timer_CS : Timer;
timer_CS : Timer;
lMMP : TPoint;
lMMP : TPoint;
XPMod,cFish,
XPMod,cFish,
cRuns : Integer;
cRuns : Integer;
// Static
// Static
Obj_Stove,
Obj_Stove,
Obj_Bank : TMSObject;
Obj_Bank : TMSObject;
DTM_MMStove,
DTM_MMStove,
DTM_MMBank : TIntegerArray;
DTM_MMBank : TIntegerArray;
Shutdown : Boolean = False;
Shutdown : Boolean = False;
SDReason : String = 'Player inactive';
SDReason : String = 'Player inactive';
nameMod : String;
nameMod : String;


procedure declarePlayer();
procedure declarePlayer();
begin
begin
Me.Name := P_USERNAME;
Me.Name := P_USERNAME;
Me.Pass := P_PASSWORD;
Me.Pass := P_PASSWORD;
Me.Pin := P_PIN;
Me.Pin := P_PIN;
Me.Nick := P_NICKNAME;
Me.Nick := P_NICKNAME;
Me.Member := P_MEMBER;
Me.Member := P_MEMBER;
Me.Active := True;
Me.Active := True;
end;
end;


procedure loadVars();
procedure loadVars();
var
var
A,B : Integer;
A,B : Integer;
begin
begin
Obj_Bank.create('AlKharidBooth', ['ank B','nk bo','booth'], [createCol(5462624, 5, 0.75, 0.90)], [createCol(276299, 3, 0.11, 3.38)]);
Obj_Bank.create('AlKharidBooth', ['ank B','nk bo','booth'], [createCol(5462624, 5, 0.75, 0.90)], [createCol(276299, 3, 0.11, 3.38)]);
Obj_Stove.create('AlKharidRange', ['> Ra','Range','ange'], [createCol(2171173, 6, 0.00, 0.71)], [createCol(1320105, 12, 0.02, 0.22)]);
Obj_Stove.create('AlKharidRange', ['> Ra','Range','ange'], [createCol(2171173, 6, 0.00, 0.71)], [createCol(1320105, 12, 0.02, 0.22)]);


setLength(DTM_MMStove, 1);
setLength(DTM_MMStove, 1);
setLength(DTM_MMBank, 2);
setLength(DTM_MMBank, 2);
DTM_MMStove[0] := DTMFromString('mwQAAAHic42RgYNjCxMAwAYinQXEzENcBcRWUPxmIM4DqkqA4Foi9kbAbEDsCcXNFJMOXb2/h+O1bBoY/f5jANExMA6iOEGYFYiYCGA4AuqQe0w==');
DTM_MMStove[0] := DTMFromString('mwQAAAHic42RgYNjCxMAwAYinQXEzENcBcRWUPxmIM4DqkqA4Foi9kbAbEDsCcXNFJMOXb2/h+O1bBoY/f5jANExMA6iOEGYFYiYCGA4AuqQe0w==');
DTM_MMBank[0] := DTMFromString('mAAEAAHic42FgYAhhYmBIBOIULDgWigOA2AuI3YDYA6jHFYrtgNgEiH2AOAyKQXx7KAbJ/7+VwPD26VP8+C0Dw58/TGD8H6hHgwTMCMRMJGBkAADUwygh');
DTM_MMBank[0] := DTMFromString('mAAEAAHic42FgYAhhYmBIBOIULDgWigOA2AuI3YDYA6jHFYrtgNgEiH2AOAyKQXx7KAbJ/7+VwPD26VP8+C0Dw58/TGD8H6hHgwTMCMRMJGBkAADUwygh');
DTM_MMBank[1] := DTMFromString('mrAAAAHic42BgYAhnYmBIAOIoIPYD4iAgTgTidCj2AqpxBWInILaDYhMgtoCKT52ZxvD06Qsw/vOHCYxhfBD+D1QjhwczAjETHgwDAML1Gdk=');
DTM_MMBank[1] := DTMFromString('mrAAAAHic42BgYAhnYmBIAOIoIPYD4iAgTgTidCj2AqpxBWInILaDYhMgtoCKT52ZxvD06Qsw/vOHCYxhfBD+D1QjhwczAjETHgwDAML1Gdk=');


case lowercase(WhatToCook) of
case lowercase(WhatToCook) of
'trout':
'trout':
begin
begin
XPMod := 70;
XPMod := 70;
A := DTMFromString('mbQAAAHicY2VgYMhhYmDIBOI4Jgi7CogNGBkYNIDYDIrVgfjI7l1A1YwoWA5DBDsGAwCu2gV9');
A := DTMFromString('mbQAAAHicY2VgYMhhYmDIBOI4Jgi7CogNGBkYNIDYDIrVgfjI7l1A1YwoWA5DBDsGAwCu2gV9');
B := DTMFromString('mlwAAAHicY2dgYHBiYmCwA2ITKB0AxO5AbAXEeowMDFpAbAbF6kCsBsSmQNyUnQ7UzYiBl3W2MohglWHAKQ7DUAAAeBwGZw==');
B := DTMFromString('mlwAAAHicY2dgYHBiYmCwA2ITKB0AxO5AbAXEeowMDFpAbAbF6kCsBsSmQNyUnQ7UzYiBl3W2MohglWHAKQ7DUAAAeBwGZw==');
end;
end;
'shrimps':
begin
XPMod := 30;
A := DTMFromString('mwQAAAHic42RgYAgD4gAgTgRiXyCOAWIfII4C4hQgTgbiXCgdB8SxQJwNxBlAHA3VB1I3p72Woa+6iGFZVTzD1LxQhoIge4bVUzsZ2hJ9GJI9LBnay3IZuIDqCGFGIjAcAADsbxNF');
B := DTMFromString('m1gAAAHic42JgYJjHxMAwGYpnAvEcIF4CxAuBeDYQT4GKMzEyMHACsRAQCwCxIBCzAzEDEP9ngMgzA/GKIlGGAhs+hkOtEgxzggUhCrBgLiCJjHEB7LoxMQIAAH5MC/c=');
end;
'salmon':
'salmon':
begin
begin
XPMod := 90;
XPMod := 90;
A := DTMFromString('mggAAAHicY2NgYDjAxMCwA4j3APEmID4CxKeBWJ+RgcEEiLWA2ByIDYBYFYh3lmUy7F84F6iTEQWLAEkRDFHcGAIAi4AJcg==');
A := DTMFromString('mggAAAHicY2NgYDjAxMCwA4j3APEmID4CxKeBWJ+RgcEEiLWA2ByIDYBYFYh3lmUy7F84F6iTEQWLAEkRDFHcGAIAi4AJcg==');
B := DTMFromString('mbQAAAHicY2VgYJjGxMAwCYg7gHgWEC8CYgNGBgZtIDZjhLCVgPhlgCxQNSMKFsEQwY7BAADC7QVb');
B := DTMFromString('mbQAAAHicY2VgYJjGxMAwCYg7gHgWEC8CYgNGBgZtIDZjhLCVgPhlgCxQNSMKFsEQwY7BAADC7QVb');
end;
end;
'tuna':
'tuna':
begin
begin
nameMod := 's';
nameMod := 's';
XPMod := 110;
XPMod := 110;
A := DTMFromString('mrAAAAHic42BgYJjCxMAwAYh7gLgDygaJzQbiBUDMw8jAwAbEfEAsCMSiQMwPxSDxTcuXAU1hZMhMTATTYCzLAGfzQ1msCFkUNiEMAwBXowiU');
A := DTMFromString('mrAAAAHic42BgYJjCxMAwAYh7gLgDygaJzQbiBUDMw8jAwAbEfEAsCMSiQMwPxSDxTcuXAU1hZMhMTATTYCzLAGfzQ1msCFkUNiEMAwBXowiU');
B := DTMFromString('mggAAAHicY2NgYJjKxMAwAYg7gHg6EC8G4rlAzMPIwMAGxMJALALE3EDMDMRt+dlAXYwYWASrKG4MAQAsnQVo');
B := DTMFromString('mggAAAHicY2NgYJjKxMAwAYg7gHg6EC8G4rlAzMPIwMAGxMJALALE3EDMDMRt+dlAXYwYWASrKG4MAQAsnQVo');
end;
end;
'lobster':
'lobster':
begin
begin
nameMod := 's';
nameMod := 's';
XPMod := 120;
XPMod := 120;
A := DTMFromString('mwQAAAHic42RgYNgBxGuAeB8Ub4Tyt0H5+4F4DhDPB+LFQDwDihdDxVYC8SwgzrKVZqhwkWOo91RgmByqChRhxMByQBIZY6ogDsMBAAs/ECk=');
A := DTMFromString('mwQAAAHic42RgYNgBxGuAeB8Ub4Tyt0H5+4F4DhDPB+LFQDwDihdDxVYC8SwgzrKVZqhwkWOo91RgmByqChRhxMByQBIZY6ogDsMBAAs/ECk=');
B := DTMFromString('mrAAAAHic42BgYIgD4iQgDgPiACCOAeIEIE4H4lQgngXES4B4GhDPB+LZQLwciBdAxQ6lSzCcy5UAshixYhEgKYJTljCGAQA1Nwqy');
B := DTMFromString('mrAAAAHic42BgYIgD4iQgDgPiACCOAeIEIE4H4lQgngXES4B4GhDPB+LZQLwciBdAxQ6lSzCcy5UAshixYhEgKYJTljCGAQA1Nwqy');
end;
end;
'swordfish':
'swordfish':
begin
begin
XPMod := 140;
XPMod := 140;
A := DTMFromString('mggAAAHicY2NgYHBhYmCwA2JjILYEYh8g9gZiNkagJBALAzEHEPMAMRMQH599HiKBhkWwiuLGEAAAexIEIg==');
A := DTMFromString('mggAAAHicY2NgYHBhYmCwA2JjILYEYh8g9gZiNkagJBALAzEHEPMAMRMQH599HiKBhkWwiuLGEAAAexIEIg==');
B := DTMFromString('mrAAAAHic42BgYMhjYmDIAOJ0IE4A4lggLgfiEiBOBmIWRgYGTiBmBGI+IBYFYm4gZoDyl5WtZ1ibuRMigIaXpm5gEAGyRLDK4hZHxjAAAC6OCVU=');
B := DTMFromString('mrAAAAHic42BgYMhjYmDIAOJ0IE4A4lggLgfiEiBOBmIWRgYGTiBmBGI+IBYFYm4gZoDyl5WtZ1ibuRMigIaXpm5gEAGyRLDK4hZHxjAAAC6OCVU=');
end;
end;
'monkfish':
'monkfish':
begin
begin
XPMod := 150;
XPMod := 150;
A := DTMFromString('mrAAAAHic42BgYMhkYmBIAOJyIM4C4hQgTgTiCiCuAeJnQDWPgfg1lH4AxG+A+B0Q3wHi5kgvhoYgDzCujXYHijCiYH4giQ8zEsAwAABT2w+m');
A := DTMFromString('mrAAAAHic42BgYMhkYmBIAOJyIM4C4hQgTgTiCiCuAeJnQDWPgfg1lH4AxG+A+B0Q3wHi5kgvhoYgDzCujXYHijCiYH4giQ8zEsAwAABT2w+m');
B := DTMFromString('mrAAAAHic42BgYNjHxMBwAIg3QenzQHwOiA8D8SEgnsHIwDAZiKcB8SIo7gPiOUC8AIizotyBpjBi4HAPawZXGwsGfiBPDgvmh2JMnagYBgAYGQ5w');
B := DTMFromString('mrAAAAHic42BgYNjHxMBwAIg3QenzQHwOiA8D8SEgnsHIwDAZiKcB8SIo7gPiOUC8AIizotyBpjBi4HAPawZXGwsGfiBPDgvmh2JMnagYBgAYGQ5w');
end;
end;
'shark':
'shark':
begin
begin
nameMod := 's';
nameMod := 's';
XPMod := 210;
XPMod := 210;
A := DTMFromString('mlwAAAHicY2dgYMhhYmBIAOISIE6E4gIgrgJiP0YGhgggdgNiHyCOB+IQII4B4hl9vQxLZ84AmsCIgUWApAhWGfwYCgDO4wkS');
A := DTMFromString('mlwAAAHicY2dgYMhhYmBIAOISIE6E4gIgrgJiP0YGhgggdgNiHyCOB+IQII4B4hl9vQxLZ84AmsCIgUWApAhWGfwYCgDO4wkS');
B := DTMFromString('mlwAAAHicY2dgYOgF4kYgboJiEH8iEE8H4q1AvA+INwLxUSDeCcTHgHgTEM9pyGI4tKAFyGLEwCJAUgSrDH4MBQBcwwyO');
B := DTMFromString('mlwAAAHicY2dgYOgF4kYgboJiEH8iEE8H4q1AvA+INwLxUSDeCcTHgHgTEM9pyGI4tKAFyGLEwCJAUgSrDH4MBQBcwwyO');
end;
end;
end;
end;


with fish_Raw do
with fish_Raw do
DTM := A;
DTM := A;
with fish_Cooked do
with fish_Cooked do
DTM := B;
DTM := B;


timer_CS.start();
timer_CS.start();
setupBreak(cBREAK_IN, cBREAK_FOR, cR_BREAK_IN, cR_BREAK_FOR);
setupBreak(cBREAK_IN, cBREAK_FOR, cR_BREAK_IN, cR_BREAK_FOR);
end;
end;


procedure freeGlobals();
procedure freeGlobals();
var
var
i : Integer;
i : Integer;
begin
begin
for i:=0 to high(DTM_MMStove) do
for i:=0 to high(DTM_MMStove) do
freeDTM(DTM_MMStove[i]);
freeDTM(DTM_MMStove[i]);
for i:=0 to high(DTM_MMBank) do
for i:=0 to high(DTM_MMBank) do
freeDTM(DTM_MMBank[i]);
freeDTM(DTM_MMBank[i]);
freeDTM(fish_Raw.DTM);
freeDTM(fish_Raw.DTM);
freeDTM(fish_Cooked.DTM);
freeDTM(fish_Cooked.DTM);
end;
end;


Procedure report();
Procedure report();
var
var
cXP: Integer;
cXP: Integer;
begin
begin
cXP := (cFish*XPMod);
cXP := (cFish*XPMod);


progressReport(RESULT_DEBUGBOX, 'AlKharid Cooker', 'Flight', 'V '+toStr(VERSION_MAIN)+' Rev '+toStr(VERSION_SUB),
progressReport(RESULT_DEBUGBOX, 'AlKharid Cooker', 'Lilkilla', 'V '+toStr(VERSION_MAIN)+' Rev '+toStr(VERSION_SUB),
['Total run time','Cooking XP',capitalize(whatToCook)+nameMod+' cooked','Breaks','Logged in'],
['Total run time','Cooking XP',capitalize(whatToCook)+nameMod+' cooked','Breaks','Logged in'],
[MsToTime(getTimeRunning(),Time_Abbrev),intToStrEx(cXP)+' ('+intToStrEx(getPerHour(cXP))+'/Hr)',
[MsToTime(getTimeRunning(),Time_Abbrev),intToStrEx(cXP)+' ('+intToStrEx(getPerHour(cXP))+'/Hr)',
intToStrEx(cFish)+' ('+intToStrEx(getPerHour(cFish))+'/Hr)',break_Count,count_Login]);
intToStrEx(cFish)+' ('+intToStrEx(getPerHour(cFish))+'/Hr)',break_Count,count_Login]);


randomsReport();
randomsReport();
writeln('Time until break: '+msToTime(getTimeUntilBreak(), Time_Bare));
writeln('Time until break: '+msToTime(getTimeUntilBreak(), Time_Bare));
end;
end;


procedure doAntiBans();
procedure doAntiBans();
begin
begin
if not isLoggedIn() then
if not isLoggedIn() then
Exit;
Exit;


case random(1500) of
case random(1500) of
1..6:
1..6:
begin
begin
keyDown(40);
keyDown(40);
wait(RandomRange(500, 1100));
wait(RandomRange(500, 1100));
keyUp(40);
keyUp(40);
wait(RandomRange(310, 865));
wait(RandomRange(310, 865));
setAngle(ANGLE_HIGH);
setAngle(ANGLE_HIGH);
end;
end;
7:
7:
if (timer_CS.timeElapsed() > 300000) then
if (timer_CS.timeElapsed() > 300000) then
begin
begin
timer_CS.start();
timer_CS.start();
hoverSkill('Cooking', False);
hoverSkill('Cooking', False);
end;
end;
8,9 : checkMovingObjs(true);
8,9 : checkMovingObjs(true);
10,11 : checkMovingObjs(false);
10,11 : checkMovingObjs(false);
12..70: humanRandomMouse();
12..70: humanRandomMouse();
end;
end;
end;
end;


function inHouse(): Boolean;
function inHouse(): Boolean;
var
var
Pnt : TPoint;
Pnt : TPoint;
begin
begin
if not isLoggedIn() then Exit(false);
if not isLoggedIn() then Exit(false);
if not DTM_findBestPointEx(DTM_MMStove, AREA_MM, Pnt) then
if not DTM_findBestPointEx(DTM_MMStove, AREA_MM, Pnt) then
Exit;
Exit;


result := (distance(MMCX,MMCY,Pnt.X,Pnt.Y) <= 8);
result := (distance(MMCX,MMCY,Pnt.X,Pnt.Y) <= 8);
end;
end;


function randomsCheck(): Boolean;
function randomsCheck(): Boolean;
var
var
P : TPoint;
P : TPoint;
begin
begin
if not isLoggedIn() then Exit;
if not isLoggedIn() then Exit;
findMod();
findMod();
result := waitEx(1);
result := waitEx(1);
end;
end;


procedure walkToBank();
procedure walkToBank();
var
var
Pnt : TPoint;
Pnt : TPoint;
begin
begin
if not isLoggedIn() then
if not isLoggedIn() then
Exit;
Exit;
if (getRunEnergy() > randomRange(30,70)) then
if (getRunEnergy() > randomRange(30,70)) then
toggleRunning(true);
toggleRunning(true);
while isPlayerWalking() do
while isPlayerWalking() do
waitEx(50);
waitEx(50);


if not DTM_findBestPointEx(DTM_MMBank, AREA_MM, Pnt) then
if not DTM_findBestPointEx(DTM_MMBank, AREA_MM, Pnt) then
Exit;
Exit;


Pnt := Point(Pnt.X, Pnt.Y+2);
Pnt := Point(Pnt.X, Pnt.Y+2);
case random(10) of
case random(10) of
0..6 : missMouse(Pnt, 2, 2);
0..6 : missMouse(Pnt, 2, 2);
7..10 : humanMMouse(Pnt, 2, 2);
7..10 : humanMMouse(Pnt, 2, 2);
end;
end;


fastClick(MOUSE_LEFT);
fastClick(MOUSE_LEFT);
waitFunc(@isPlayerWalking, 60, 4000);
waitFunc(@isPlayerWalking, 60, 4000);
mouseBox(toBox(MSCX-20,MSCY-40,MSCX+20,MSCY+10), MOUSE_MOVE);
mouseBox(toBox(MSCX-20,MSCY-40,MSCX+20,MSCY+10), MOUSE_MOVE);
while isPlayerWalking() do
while isPlayerWalking() do
waitEx(50);
waitEx(50);
end;
end;


function atRange(): Boolean;
function atRange(): Boolean;
var
var
Pnt : TPoint;
Pnt : TPoint;
begin
begin
if not isLoggedIn() then
if not isLoggedIn() then
Exit(false);
Exit(false);
if not DTM_findBestPointEx(DTM_MMStove, AREA_MM, Pnt) then
if not DTM_findBestPointEx(DTM_MMStove, AREA_MM, Pnt) then
Exit;
Exit;


result := (distance(MMCX,MMCY,Pnt.X,Pnt.Y) <= 13);
result := (distance(MMCX,MMCY,Pnt.X,Pnt.Y) <= 13);
end;
end;


procedure walkToRange();
procedure walkToRange();
var
var
Pnt : TPoint;
Pnt : TPoint;
S : Integer;
S : Integer;
Slots : TIntegerArray;
Slots : TIntegerArray;
begin
begin
if not isLoggedIn() then
if not isLoggedIn() then
Exit;
Exit;


if (getRunEnergy() > randomRange(30,70)) then
if (getRunEnergy() > randomRange(30,70)) then
toggleRunning(true);
toggleRunning(true);
while isPlayerWalking() do
while isPlayerWalking() do
waitEx(60);
waitEx(60);


if not DTM_findBestPointEx(DTM_MMStove, AREA_MM, Pnt) then
if not DTM_findBestPointEx(DTM_MMStove, AREA_MM, Pnt) then
Exit;
Exit;


case random(10) of
case random(10) of
0..6 : missMouse(Pnt, 0, 0);
0..6 : missMouse(Pnt, 0, 0);
7..10 : humanMMouse(Pnt, 0, 0);
7..10 : humanMMouse(Pnt, 0, 0);
end;
end;


fastClick(MOUSE_LEFT);
fastClick(MOUSE_LEFT);
waitFunc(@isPlayerWalking, 50, 4000);
waitFunc(@isPlayerWalking, 50, 4000);
mouseBox(AREA_INV, MOUSE_MOVE);
mouseBox(AREA_INV, MOUSE_MOVE);


Slots := [];
Slots := [];
Slots := fish_Raw.getSlots();
Slots := fish_Raw.getSlots();
if (Length(Slots) < 1) then
if (Length(Slots) < 1) then
Exit;
Exit;
S := Slots[Random(Length(Slots))];
S := Slots[Random(Length(Slots))];
if not itemInSlot(S) then Exit;
if not itemInSlot(S) then Exit;


while isPlayerWalking() do
while isPlayerWalking() do
begin
begin
if (flagDistance() < randomRange(0,8)) then
if (flagDistance() < randomRange(0,8)) then
begin
begin
if not anySlotActivated() then
if not anySlotActivated() then
interactSlot(S, MOUSE_LEFT);
interactSlot(S, MOUSE_LEFT);
if FASTMODE then
if FASTMODE then
Exit;
Exit;
end;
end;
waitEx(60);
waitEx(60);
end;
end;
end;
end;


procedure startCooking();
procedure startCooking();
var
var
T : Timer;
T : Timer;
Pnt : TPoint;
Pnt : TPoint;
Loop : Boolean;
Loop : Boolean;
C,S,
C,S,
X,Y,i : Integer;
X,Y,i : Integer;
Pnts : TPointArray;
Pnts : TPointArray;
Slots : TIntegerArray;
Slots : TIntegerArray;
label
label
Start,InteractScreen;
Start,InteractScreen;
begin
begin
Start:
Start:


Slots := [];
Slots := [];
randomsCheck();
randomsCheck();
Loop := False;
Loop := False;
gameTab(TAB_INV);
gameTab(TAB_INV);


if chatOptionScreen() then
if chatOptionScreen() then
GoTo InteractScreen;
GoTo InteractScreen;


if not anySlotActivated() then
if not anySlotActivated() then
begin
begin
Slots := fish_Raw.getSlots();
Slots := fish_Raw.getSlots();
if (Length(Slots) < 1) then
if (Length(Slots) < 1) then
Exit;
Exit;
S := Slots[Random(Length(Slots))];
S := Slots[Random(Length(Slots))];


if not itemInSlot(S) then Exit;
if not itemInSlot(S) then Exit;
interactSlot(S, MOUSE_MOVE);
interactSlot(S, MOUSE_MOVE);
if not isUpTextMulti(['Members','s obj']) then
if not isUpTextMulti(['Members','s obj']) then
fastClick(MOUSE_LEFT)
fastClick(MOUSE_LEFT)
else
else
begin
begin
warn('Cannot cook '+capitalize(WHATTOCOOK)+' in a F2P world, hopping worlds now...', WT_SCRIPT);
warn('Cannot cook '+capitalize(WHATTOCOOK)+' in a F2P world, hopping worlds now...', WT_SCRIPT);
changeWorld(randomWorld(True), True);
changeWorld(randomWorld(True), True);
Exit;
Exit;
end;
end;


if not waitFunc(@anySlotActivated, 50, 2000) then
if not waitFunc(@anySlotActivated, 50, 2000) then
GoTo Start;
GoTo Start;
end;
end;


while isPlayerWalking() do
while isPlayerWalking() do
waitEx(60);
waitEx(60);


for i:=1 to 3 do
for i:=1 to 3 do
begin
begin
if Obj_Stove.find(Pnt) then
if Obj_Stove.find(Pnt) then
break;
break;
if (i=3) then
if (i=3) then
if not Obj_Stove.find(Pnt) then
if not Obj_Stove.find(Pnt) then
begin
begin
if pointsMatch(Pnt, point(0,0)) then
if pointsMatch(Pnt, point(0,0)) then
begin
begin
setCompass(270);
setCompass(270);
walkToRange();
walkToRange();
GoTo Start;
GoTo Start;
Exit;
Exit;
end else
end else
break;
break;
end;
end;
end;
end;


if waitUpTextMulti(['> Ra','Range','ange'], randomRange(150,300)) then
if waitUpTextMulti(['> Ra','Range','ange'], randomRange(150,300)) then
begin
begin
fastClick(MOUSE_LEFT);
fastClick(MOUSE_LEFT);
if not didRedClick() then
if not didRedClick() then
Exit;
Exit;
end else
end else
begin
begin
fastClick(MOUSE_RIGHT);
fastClick(MOUSE_RIGHT);
if not waitOptionMulti(['> Ra','Range','ange'], randomRange(150,300)) then
if not waitOptionMulti(['> Ra','Range','ange'], randomRange(150,300)) then
Exit;
Exit;
end;
end;
humanMMouse(Point(250,420), 15, 15);
humanMMouse(Point(250,420), 15, 15);


if FASTMODE then
if FASTMODE then
FFlag(randomRange(0,5))
FFlag(randomRange(0,5))
else
else
while isPlayerWalking() do
while isPlayerWalking() do
waitEx(50);
waitEx(50);


T.start();
T.start();
while (T.timeElapsed() < 10000) do
while (T.timeElapsed() < 10000) do
begin
begin
if not isLoggedIn then Exit;
if not isLoggedIn then Exit;
randomsCheck();
randomsCheck();
if chatOptionScreen() then
if chatOptionScreen() then
break;
break;
if findBlackChatMessage('interesting') then
if findBlackChatMessage('interesting') then
break;
break;
end;
end;


InteractScreen:
InteractScreen:
if chatOptionScreen() then
if chatOptionScreen() then
begin
begin
mouseBox(toBox(220,395,300,450), MOUSE_RIGHT);
mouseBox(toBox(220,395,300,450), MOUSE_RIGHT);
waitOption('All', 200);
waitOption('All', 200);
end else
end else
begin
begin
randomsCheck();
randomsCheck();
GoTo Start;
GoTo Start;
end;
end;


C := fish_Raw.getAmount();
C := fish_Raw.getAmount();
T.start();
T.start();
repeat
repeat
if not isLoggedIn() then Exit;
if not isLoggedIn() then Exit;
randomsCheck();
randomsCheck();
if continueChat(False) then
if continueChat(False) then
begin
begin
Loop := True;
Loop := True;
break;
break;
end;
end;
if (fish_Raw.getAmount() < C) then
if (fish_Raw.getAmount() < C) then
begin
begin
C := fish_Raw.getAmount();
C := fish_Raw.getAmount();
T.start();
T.start();
end;
end;
if (C < 2) then
if (C < 2) then
begin
begin
if not pointInBox(getMousePnt(), AREA_MM) then
if not pointInBox(getMousePnt(), AREA_MM) then
missMouse(Point(594,70), 10, 10);
missMouse(Point(594,70), 10, 10);
end;
end;
if (C < 1) then
if (C < 1) then
break;
break;
doAntiBans();
doAntiBans();
wait(randomRange(200,450));
wait(randomRange(200,450));
until(T.timeElapsed() > 9000)
until(T.timeElapsed() > 9000)
if Loop then
if Loop then
GoTo Start;
GoTo Start;
end;
end;


procedure doBanking();
procedure doBanking();
var
var
T : Timer;
T : Timer;
Pnt : TPoint;
Pnt : TPoint;
i,c : Integer;
i,c : Integer;
Slots : TIntegerArray;
Slots : TIntegerArray;
label
label
Banking,Close;
Banking,Close;
begin
begin
if not isLoggedIn() then
if not isLoggedIn() then
Exit;
Exit;


if (Me.Pin <> '') then
if (Me.Pin <> '') then
inPin(Me.Pin);
inPin(Me.Pin);
if isBankOpen() then
if isBankOpen() then
GoTo Banking;
GoTo Banking;


setCompass('W');
setCompass('W');
for i:=1 to 3 do
for i:=1 to 3 do
begin
begin
if Obj_Bank.Find(5, point(MSCX+30,MSCY-15), Pnt) then
if Obj_Bank.Find(5, point(MSCX+30,MSCY-15), Pnt) then
break;
break;
if (i=3) then
if (i=3) then
if not Obj_Bank.Find(5, point(MSCX+30,MSCY-15), Pnt) then
if not Obj_Bank.Find(5, point(MSCX+30,MSCY-15), Pnt) then
Exit;
Exit;
end;
end;


if not openBankPoint(Pnt, True) then
if not openBankPoint(Pnt, True) then
Exit;
Exit;


Banking:
Banking:
incEx(cFish, fish_Cooked.getAmount(True));
incEx(cFish, fish_Cooked.getAmount(True));
Slots := fish_Cooked.getSlots();
Slots := fish_Cooked.getSlots();


if (getInvCount() > 0) then
if (getInvCount() > 0) then
quickDeposit('inv');
quickDeposit('inv');


for i:=1 to 2 do
for i:=1 to 2 do
if scrollToItem(fish_Raw, Pnt) then
if scrollToItem(fish_Raw, Pnt) then
break
break
else
else
begin
begin
searchBank('Raw '+lowercase(WHATTOCOOK));
searchBank('Raw '+lowercase(WHATTOCOOK));
if not withdrawItem(fish_Raw, -1) then
if not withdrawItem(fish_Raw, -1) then
begin
begin
Shutdown := True;
Shutdown := True;
sdReason := 'Failed to find raw fish in the bank';
sdReason := 'Failed to find raw fish in the bank';
GoTo Close;
GoTo Close;
end;
end;
end;
end;


c := fish_Raw.getAmount();
c := fish_Raw.getAmount();
if c < 28 then
if c < 28 then
begin
begin
if c = 1 then
if c = 1 then
begin
begin
Shutdown := True;
Shutdown := True;
sdReason := 'Finished cooking all Raw '+capitalize(whatToCook)+nameMod;
sdReason := 'Finished cooking all Raw '+capitalize(whatToCook)+nameMod;
GoTo Close;
GoTo Close;
end;
end;


if c = 2 then
if c = 2 then
begin
begin
if not withdrawPoint(Pnt, 1) then
if not withdrawPoint(Pnt, 1) then
Exit;
Exit;
end else
end else
if not withdrawPoint(Pnt, -1) then
if not withdrawPoint(Pnt, -1) then
Exit;
Exit;


GoTo Close;
GoTo Close;
end;
end;


if RBoolEx(3) then
if RBoolEx(3) then
begin
begin
if not withdrawPoint(Pnt, 0) then
if not withdrawPoint(Pnt, 0) then
begin
begin
Shutdown := True;
Shutdown := True;
sdReason := 'Failed to withdraw raw fish';
sdReason := 'Failed to withdraw raw fish';
GoTo Close;
GoTo Close;
end;
end;
end else
end else
begin
begin
if not withdrawPoint(Pnt, -1) then
if not withdrawPoint(Pnt, -1) then
begin
begin
Shutdown := True;
Shutdown := True;
sdReason := 'Failed to withdraw raw fish';
sdReason := 'Failed to withdraw raw fish';
GoTo Close;
GoTo Close;
end;
end;
end;
end;


if not FASTMODE then
if not FASTMODE then
waitFunc(@isInvFull, 50, 4000);
waitFunc(@isInvFull, 50, 4000);


Close:
Close:
if not FASTMODE then
if not FASTMODE then
closeInterface();
closeInterface();
inc(cRuns);
inc(cRuns);
report();
report();
breakHandler();
breakHandler();
if FASTMODE then
if FASTMODE then
walkToRange();
walkToRange();
end;
end;


function getState(): State;
function getState(): State;
var
var
pnts : TPointArray;
pnts : TPointArray;
begin
begin
result := LOST;
result := LOST;
if not isLoggedIn() then
if not isLoggedIn() then
Exit;
Exit;


case fish_Raw.inInventory() of
case fish_Raw.inInventory() of
True:
True:
if atRange() then
if atRange() then
exit(COOKING)
exit(COOKING)
else
else
exit(RANGEWALK);
exit(RANGEWALK);
False:
False:
if atRange() then
if atRange() then
exit(BANKWALK)
exit(BANKWALK)
else
else
exit(BANKING);
exit(BANKING);
end;
end;


end;
end;


procedure scriptLoop();
procedure scriptLoop();
var
var
curState : State;
curState : State;
begin
begin
if not isLoggedIn() then Exit;
if not isLoggedIn() then Exit;


curState := getState();
curState := getState();
case curState of
case curState of
COOKING : startCooking();
COOKING : startCooking();
BANKING : doBanking();
BANKING : doBanking();
BANKWALK : walkToBank();
BANKWALK : walkToBank();
RANGEWALK : walkToRange();
RANGEWALK : walkToRange();
LOST :
LOST :
begin
begin
Shutdown := True;
Shutdown := True;
sdReason := 'Player lost';
sdReason := 'Player lost';
end;
end;
end;
end;
end;
end;


begin
begin
declarePlayer();
declarePlayer();
initAL();
initAL();


loadVars();
loadVars();
addOnTerminate('freeGlobals');
addOnTerminate('freeGlobals');


mouseSpeed := 20;
mouseSpeed := 40;
loginPlayer(true);
loginPlayer(true);
setCompass('W');
setCompass('W');
setAngle(ANGLE_HIGH);
setAngle(ANGLE_HIGH);
toggleRunning(True);
toggleRunning(True);
//fixGraphics();
fixGraphics();


Repeat
Repeat
if not Shutdown then
if not Shutdown then
if not isLoggedIn() then
if not isLoggedIn() then
if loginPlayer(true) then
if loginPlayer(true) then
begin
begin
setCompass('W');
setCompass('W');
setAngle(ANGLE_HIGH);
setAngle(ANGLE_HIGH);
toggleRunning(True);
toggleRunning(True);
fixGraphics();
fixGraphics();
end;
end;


while isLoggedIn() do
while isLoggedIn() do
begin
begin
if Shutdown then break;
if Shutdown then break;
randomsCheck();
randomsCheck();
if RBoolEx(3) then
if RBoolEx(3) then
doAntiBans();
doAntiBans();
scriptLoop();
scriptLoop();
end;
end;
Until(Shutdown or (not Me.Active));
Until(Shutdown or (not Me.Active));


warn(SDReason, WT_SCRIPT);
warn(SDReason, WT_SCRIPT);
logoutPlayer();
logoutPlayer();
end.
end.