Untitled diff

Created Diff never expires
7 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
603 lines
13 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
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.