Goobs
2009-06-10 02:11:03
How Long have You Played Runescape?
8 Year(s)
Are you affilated in anyway with Jagex LTD?
hell no
Were you Referred to SRL?
What is your general programming knowledge?
I have done CSS in the past. And, of course, Pascal from SCAR =D
Are you a member of any other communities?
Sythe, ScuneRape.
Tell us about yourself…
Please show us one (or multiple) of your scripts.
*updated a few things as I was running it.
8 Year(s)
Are you affilated in anyway with Jagex LTD?
hell no
Were you Referred to SRL?
What is your general programming knowledge?
I have done CSS in the past. And, of course, Pascal from SCAR =D
Are you a member of any other communities?
Sythe, ScuneRape.
Tell us about yourself…
From: ProphesyOfWolf
I am ProphesyOfWolf. I enjoy reading, playing Mario, and confusing Jagex with mah autoing. Uhm. I'm 16, and I just got fired not too long ago; which is why I had time to do this. I've applied before, a long time ago. I just got back into scripting recently, so yesh! I'm still pretty good =3
Please show us one (or multiple) of your scripts.
program VEClaySoftener;
{.include SRL/SRL/MISC/SMART.scar}
{.include SRL/SRL.scar}
{.include SRL/SRL/MISC/Users.scar}
{$DEFINE DEBUG}
var
x, y, IX, IY, ChatTimer, HowManyResponses: Integer;
LoadsDone, LoadsDone2: Integer;
LessThan14, NP: Boolean;
SA: Extended;
Question, Response: Array of TStringArray;
function DeclareDTM(Which: Integer): Integer;
begin
case Which of
0: Result := DTMFromString('78DA63CC616060E86040014BDBBC18F881342' + //Empty Bucket
'394CF980C241A50D564471AA2AAC90212F5A86A927D2550D5E461AA8' +
'9F24453530C245A50D54CA97442550372732FAA9A39B5686E4E05123' +
'DA86A8A1351DD0C0078C30EAA');
1: Result := DTMFromString('78DA631467606090664001739ABC18F881342' + //Water-Filled Bucket
'394CF08E288A0AAC98E3444552306248451D554D7CE41552345841A7' +
'94CF7F4943AA1AA9100128AA86AD676A1B9590048C8A2AA498E8D425' +
'1030071CD0B26');
2: Result := DTMFromString('78DA639CCCC0C0D0C2800296764531F003694' + //Dry Clay
'6289F710A90A84155D3531984AA6606A61A270B455435F38144039A3' +
'9A55E9876B5A3AAD93A2B19554D2F9068C2EF1E0073C30EBA');
3: Result := DTMFromString('78DA631463606058C28002B2033918F881342' + //Wet clay
'394CF280824E6A0AA71324053A3022416A1AA31D4604055230B24D6A' +
'1AA897244334700534D71249A1A6E20B112CDCDBE686AF830DD13E5C' +
'A81E99EB9A86A2C7550DD0C00991D0B37');
end;
end;
Function SetWalkDTM(Number, HowMany, Tolerance, TheColor:Integer): Integer; //Taken from Blumblebee's DDTM Tutorial. Much more efficient than what I had.. >.<
var MainPoint: TDTMPointDef; dtmSubPoints: Array of TDTMPointDef; TempTDTM: TDTM; i: Integer;
begin
SetLength(dtmSubPoints, HowMany);
case Number of
0: //To Fountain
begin
with MainPoint do
begin
x := 715;
y := 150;
AreaSize := 1;
AreaShape := 0;
Color := TheColor;
Tolerance := Tolerance;
end;
dtmSubPoints[0].x := 711;
dtmSubPoints[0].y := 148;
dtmSubPoints[1].x := 719;
dtmSubPoints[1].y := 142;
dtmSubPoints[2].x := 721;
dtmSubPoints[2].y := 153;
dtmSubPoints[3].x := 705;
dtmSubPoints[3].y := 154;
dtmSubPoints[4].x := 726;
dtmSubPoints[4].y := 156;
end;
1: //To Bank
begin
with MainPoint do
begin
x := 802;
y := 229;
AreaSize := 1;
AreaShape := 0;
Color := TheColor;
Tolerance := Tolerance;
end;
dtmSubPoints[0].x := 801;
dtmSubPoints[0].y := 226;
dtmSubPoints[1].x := 792;
dtmSubPoints[1].y := 225;
dtmSubPoints[2].x := 790;
dtmSubPoints[2].y := 233;
dtmSubPoints[3].x := 804;
dtmSubPoints[3].y := 235;
dtmSubPoints[4].x := 812;
dtmSubPoints[4].y := 227;
end;
end;
for I := 0 to High(dtmSubPoints) do
begin
dtmSubPoints[i].AreaSize := 1;
dtmSubPoints[i].AreaShape := 0;
dtmSubPoints[i].Color := TheColor;
dtmSubPoints[i].Tolerance := Tolerance;
end;
TempTDTM.MainPoint := MainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;
procedure MainLoop; Forward;
procedure ProgressReport; Forward;
function Responder: Boolean; Forward;
function MFDTMInstance(Identifier: Integer; Left: Boolean): Boolean; //"Mouse First DTM instance. Just for inventory.
var
MX, MY, I: Integer;
IB: TBox;
begin
If(FindDTM(Identifier, MX, MY, MIX1, MIY1, MIX2, MIY2)) then
begin
for I := 1 to 28 do
begin
IB := InvBox(I);
If(FindDTM(Identifier, MX, MY, IB.x1, IB.y1, IB.x2, IB.y2)) then
begin
Mouse(MX, MY, 3, 3, Left);
Result := True;
Exit;
end;
end;
end;
end;
procedure AntiBan;
begin
case random(Players[CurrentPlayer].Integers[2]) of
3, 4: PickupMouse;
0, 7: RandomMovement;
1, 2: BoredHuman;
end;
end;
procedure AntiRandoms;
begin
FindNormalRandoms;
Responder;
end;
procedure SetResponderArr; //--taken from Blumblebee's script =3
begin
HowManyResponses := 5;
SetLength(Question, HowManyResponses);
SetLength(Response, HowManyResponses);
Question[0] := ['Hi', 'Hello', 'Hey', 'Sup', 'Howdy', 'Hiya'];
Response[0] := ['Hi', 'Hello', 'Hey', 'Sup', 'Howdy', 'Hiya','Hi there'];
Question[1] := ['Lol', 'Rofl', 'Lawl', 'Haha', 'funny', 'Lmao', 'Lmfao'];
Response[1] := ['Lol', 'Rofl', 'Lawl', 'Haha', 'funny', 'Lmao', 'Lmfao'];
Question[2] := ['noob', 'Nub', 'N00b', 'Nooblet'];
Response[2] := ['sigh...', 'lol', 'LOL', 'lawl'];
Question[3] := ['macro', 'autoer', 'cheater', 'bot', 'autoing'];
Response[3] := ['lol who?','who me?','haha how?'];
Question[4] := ['clay', 'soft'];
Response[4] := ['yup, doin clay', 'yepperz', 'makin money', 'yup. hbu?'];
end;
Function InChatAr(Text: array of string): Boolean; //Credits to EvilChicken & Nava2 --taken from Blumblebee's script =3
var I, H: integer; s: string;
begin
H := High(Text);
if (not (GetLastChatText(s))) then
LastChatter(s);
for I := 0 to H do
begin
if (Pos(Lowercase(Text[i]), (Lowercase(s))) > 0) then
begin
Result := true;
Exit;
end;
end;
end;
Function Responder: Boolean; //--taken from Blumblebee's script =3
var i, ii, OldMsg, NewMsg: Byte; TexttoType: String;
begin
if not Players[CurrentPlayer].Booleans[1] then Exit;
if (GetSystemTime-ChatTimer < 120000 +RandomRange(-25000, 25000)) then Exit;
for i := 0 to High(Question) do
begin
for ii := 0 to High(Question[i]) do
begin
if InChatAr([Question[i][ii]]) then
begin
NewMsg := i;
if (NewMsg = OldMsg) then Exit;
TextToType := Response[i][Random(High(Response)+1)];
if (TextToType <> '') and (TextToType <> Question[i][ii]) then
TypeSend(TextToType) else Exit;
NewMsg := OldMsg;
ChatTimer := GetSystemTime;
Result := True;
end;
end;
end;
if Result then Inc(Players[CurrentPlayer].Integers[15]);
end;
function PoWTPA(var x, y: Integer; TheColor, Tol, MX, MY, X1, Y1, X2, Y2: Integer; HueMod, SatMod: Extended; RCFUptext: Boolean; TheUptext: String): Boolean;
var
CTS, I: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(HueMod, SatMod);
FindColorsSpiralTolerance(MX, MY, TPA, TheColor, X1, Y1, X2, Y2, Tol);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 15, 15);
SetColorSpeed2Modifiers(0.2, 0.2);
for I := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 2, 2);
If(not(RCFUptext)) then
begin
If(IsUpText(TheUptext)) then
begin
Result := True;
GetMousePos(x, y);
Break;
end;
end;
If(RCFUptext) then
begin
Mouse(x, y, 3, 3, False);
If(ChooseOption(TheUptext)) then
begin
Result := True;
GetMousePos(x, y);
Break;
end;
end;
end;
end;
function IsAtFountain: Boolean;
var
I, DDTM, Tolerance: Integer;
dtmMainPoint: TDTMPointDef;
dtmSubPoints: Array [0..1] of TDTMPointDef;
TempTDTM: TDTM;
begin
with dtmMainPoint do
begin
x := 17;
y := 32;
AreaSize := 1;
AreaShape := 0;
Color := 1060930;
Tolerance := Tolerance;
end;
dtmSubPoints[0].x := 33;
dtmSubPoints[0].y := 23;
dtmSubPoints[1].x := 21;
dtmSubPoints[1].y := 20;
for I := 0 to 1 do
begin
dtmSubPoints[I].AreaSize := 1;
dtmSubPoints[I].AreaShape := 0;
dtmSubPoints[I].Color := 1060930;
dtmSubPoints[I].Tolerance := Tolerance;
end;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
DDTM := AddDTM(TempTDTM);
for Tolerance := 0 to 25 do
begin
If(DTMRotated(DDTM, x, y, MMX1, MMY1, MMX2, MMY2)) then
begin
Result := True;
Exit;
end else
begin
Result := False;
end;
end;
FreeDTM(DDTM);
end;
procedure WalkToFountain;
var WDDTM, A: Integer;
begin
MakeCompass('N');
AntiRandoms;
AntiBan;
A := 5;
WDDTM := SetWalkDTM(0, 5, A, FindVarrockRoadColor);
repeat
WDDTM := SetWalkDTM(0, 5, A, FindVarrockRoadColor);
A := A + 5;
until((DTMRotated(WDDTM, x, y, MMX1, MMY1, MMCX, MMCY)) or (A >= 25))
If(A >= 15) then
begin
If(RadialRoadWalk(FindVarrockRoadColor, 309, 328, 60, 3, 3)) then
begin
FFlag(3);
Wait(randomrange(200, 300));
repeat
Wait(50);
SymbolAccuracy := SymbolAccuracy - 0.05;
until(FindSymbol(x, y, 'water')) or (SymbolAccuracy <=0.25);
If(FindSymbol(x, y, 'water')) then
begin
SymbolAccuracy := SA;
Mouse(x, y, 2, 2, True);
Flag;
AntiRandoms;
{$IFDEF DEBUG}WriteLN('Made it to the fountain using RRW.');{$ENDIF}
FreeDTM(WDDTM);
Exit;
end;
If(SymbolAccuracy <= 0.25) then
begin
ProgressReport;
WriteLN('Could not find water symbol! Switching players');
LogOut;
NextPlayer(True);
NP := True;
Exit;
end;
end;
end;
If(DTMRotated(WDDTM, x, y, MMX1, MMY1, (MMCX - 3), MMCY)) then
begin
Mouse(x, y, 2, 2, True);
FFlag(2);
repeat
Wait(50);
AntiRandoms;
SymbolAccuracy := SymbolAccuracy - 0.05;
until(FindSymbol(x, y, 'water')) or (SymbolAccuracy <= 0.25);
If(FindSymbol(x, y, 'water')) then
begin
SymbolAccuracy := SA;
Mouse(x, y, 2, 2, True);
Flag;
AntiRandoms;
Exit;
FreeDTM(WDDTM);
end;
If(SymbolAccuracy <= 0.25) then
begin
ProgressReport;
WriteLN('Could not find water symbol! Switching players');
FreeDTM(WDDTM);
LogOut;
NextPlayer(True);
NP := True;
Exit;
end;
{$IFDEF DEBUG}WriteLN('Made it to the fountain using DDTM.');{$ENDIF}
end;
FreeDTM(WDDTM);
end;
Function FindBankers(Var Bank: TPoint; Var Angle: Extended): Boolean; //From SRL Essence Miner. Creds to Wizzup?
Var
I: Integer;
B, gB: TPointArray;
aTPA: T2DPointArray;
Begin
Result := False;
FindColorsSpiralTolerance(MMCX, MMY2, B, 60909, MMX1, MMY1, MMX2, MMY2, 0);
aTPA := SplitTPA(B, 10);
SortATPASize(aTPA, True);
If Length(aTPA) = 0 Then
Exit;
B := aTPA[0];
For I := 0 To High(B) - 1 Do
Begin
If (Abs(B[I].Y - B[I + 1].Y) < 15) And (Abs(B[I].X - B[I + 1].X) < 60) Then
Begin
SetLength(gB, Length(gB) + 1);
gB[High(gB)] := B[I];
If High(gB) > 3 Then // 4 bankers.
Begin
Bank := MiddleTPA(gB);
Bank.Y := Bank.Y - 5;
Angle := Degrees(ArcTan2(gB[0].y - gB[High(gB)].y, gB[0].x - gB[High(gB)].x)) + 90;
If Angle < 0 Then
Angle := 90 - (Angle * -1) + 270;
Result := True;
Exit;
End;
End
Else
SetLength(gB, 0);
End;
End;
procedure WalkToBank;
var
WDDTM, A: Integer;
AA: Extended;
P: TPoint;
begin
MakeCompass('N');
AntiRandoms;
AntiBan;
A := 5;
WDDTM := SetWalkDTM(1, 5, A, FindVarrockRoadColor);
repeat
WDDTM := SetWalkDTM(1, 5, A, FindVarrockRoadColor);
A := A + 5;
until((DTMRotated(WDDTM, x, y, 636, MMY1, MMX2, MMY2)) or (A >= 15))
A := 0;
If(A >= 15) then
begin
If(RadialRoadWalk(FindVarrockRoadColor, 100, 120, 73, 3, 3)) then
begin
FFlag(2);
Wait(randomrange(200, 300));
If(FindBankers(P, AA)) then
begin
Mouse(P.x, (P.y - 5), 2, 2, True);
Flag;
{$IFDEF DEBUG}WriteLN('Made it to the bank using RRW.');{$ENDIF}
FreeDTM(WDDTM);
Exit;
end;
If(not(FindBankers(P, AA))) then
begin
ProgressReport;
WriteLN('Could not make it to bank! Switching players');
FreeDTM(WDDTM);
LogOut;
NextPlayer(True);
NP := True;
Exit;
end;
end;
end;
If(DTMRotated(WDDTM, x, y, 636, MMY1, MMX2, MMY2)) then
begin
Mouse(x, y, 3, 3, True);
FFlag(2);
Wait(randomrange(600, 900));
If(FindBankers(P, AA)) then
begin
Mouse(P.x, (P.y - 5), 2, 2, True);
Flag;
{$IFDEF DEBUG}WriteLN('Made it to the bank using DDTM.');{$ENDIF}
FreeDTM(WDDTM);
Exit;
end;
If(not(FindBankers(P, AA))) then
begin
ProgressReport;
WriteLN('Could not find bankers! Switching players');
FreeDTM(WDDTM);
LogOut;
NextPlayer(True);
NP := True;
Exit;
end;
end;
end;
procedure Banking(Depositing, Withdrawing, FB: Boolean);
begin
AntiRandoms;
If(not(BankScreen)) then
begin
AntiBan;
AntiRandoms;
If(PoWTPA(x, y, 2183002, 7, MSCX, MSCY, MSX1, MSY1, MSX2, MSY2, 0.22, 2.6, True, 'uick')) then
begin
repeat
Wait(randomrange(50, 100));
AntiRandoms;
until(PinScreen or BankScreen)
If(PinScreen) then
begin
repeat
InPin(Players[CurrentPlayer].Pin);
Wait(random(500));
until(BankScreen)
end;
end;
end;
If(BankScreen) then
begin
If(Depositing) then
begin
Wait(randomrange(250, 450));
MFDTMInstance(DeclareDTM(3), False);
Wait(randomrange(50, 95));
ChooseOption('ll');
Wait(randomrange(100, 300));
repeat
Wait(50);
until(not(FindDTM(DeclareDTM(3), x, y, MIX1, MIY1, MIX2, MIY2)))
end;
If(Withdrawing) then
begin
Wait(randomrange(250, 450));
If(FB) then
begin
If(FindDTM(DeclareDTM(0), x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y, 2, 2, False);
ChooseOption('X');
repeat
Wait(random(50));
until(FindText(x, y, 'mount', UpChars, MCX1, MCY1, MCX2, MCY2))
Wait(randomrange(100, 300));
TypeSend('14');
repeat
Wait(random(50));
until(FindDTM(DeclareDTM(0), x, y, MIX1, MIY1, MIX2, MIY2))
Wait(randomrange(120, 350));
end;
end;
If(FindDTM(DeclareDTM(2), x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y, 2, 2, False);
ChooseOption('ll');
Wait(randomrange(75, 150));
repeat
Wait(random(50))
until(FindDTM(DeclareDTM(2), x, y, MIX1, MIY1, MIX2, MIY2))
Wait(50);
if(CountItems(DeclareDTM(2), 'dtm', [0]) < 14) then LessThan14 := True;
end else
begin
WriteLN('No more clay. Switching/Terminating.');
CloseBank;
ProgressReport;
LogOut;
If(not(AllPlayersInactive)) then
begin
NP := True;
NextPlayer(False);
end;
If(AllPlayersInactive) then TerminateScript;
end;
end;
end;
end;
procedure HandleMissingBuckets;
begin
If(not(FindDTM(DeclareDTM(1), x, y, MIX1, MIY1, MIX2, MIY2))) then
begin
If(CountItems(DeclareDTM(0), 'dtm', [0]) < 14) then
begin
Banking(False, False, False);
MFDTMInstance(DeclareDTM(0), False);
Wait(randomrange(50, 100));
ChooseOption('ll');
Banking(False, True, True);
end;
end;
end;
procedure MixAtBank;
begin
MFDTMInstance(DeclareDTM(1), True);
Wait(randomrange(500, 600));
MFDTMInstance(DeclareDTM(2), True);
repeat
Wait(randomrange(50, 100));
until(FindNPCChatText('oft', Nothing))
Mouse(MCCX, MCCY, 4, 4, False);
ChooseOption('ll');
repeat
AntiBan;
Wait(randomrange(350, 500));
AntiRandoms;
until(not(FindDTM(DeclareDTM(1), x, y, MIX1, MIY1, MIX2, MIY2)))
Banking(True, True, False);
CloseBank;
Wait(randomrange(500, 1000));
end;
procedure SetupSmart;
begin
SmartSetupEx(23, False, True, False);
Wait(3000);
SetTargetDC(SmartGetDC);
repeat
Wait(100);
until(SmartGetColor(253, 233)<>1118604);
ClearDebug;
end;
function HasClay: Boolean;
begin
Result := FindDTM(DeclareDTM(2), x, y, MIX1, MIY1, MIX2, MIY2);
end;
procedure HandleFountain;
var
EB, WB, DC, BC: Integer;
begin
EB := DeclareDTM(0);
WB := DeclareDTM(1);
DC := DeclareDTM(2);
BC := DeclareDTM(4);
AntiRandoms;
If(HasClay) then
begin
If(PoWTPA(x, y, 12814441, 11, MSCX, MSCY, MSX1, MSY1, MSX2, MSY2, 0.12, 2.11, False, 'alk')) then
begin
If(FindDTM(EB, IX, IY, MIX1, MIY1, MIX2, MIY2)) then
begin
MFDTMInstance(EB, True);
Wait(randomrange(300, 600));
MMouse(x, y, 3, 3);
Wait(randomrange(150, 300));
AntiRandoms;
If(IsUpText('ount')) then
begin
Mouse(x, y, 0, 0, False);
ChooseOption('ount');
end else
begin
MFDTMInstance(EB, True);
Wait(randomrange(300, 600));
MFDTMInstance(EB, True);
AntiRandoms;
PoWTPA(x, y, 12814441, 11, MSCX, MSCY, MSX1, MSY1, MSX2, MSY2, 0.12, 2.11, True, 'ount');
end;
end;
repeat
AntiBan;
Wait(randomrange(450, 500));
AntiRandoms;
until(CountItems(WB, 'dtm', [0]) = 14)
If(FindDTM(DC, IX, IY, MIX1, MIY1, MIX2, MIY2)) then
begin
MFDTMInstance(WB, True);
Wait(randomrange(100, 150));
MFDTMInstance(DC, True);
repeat
Wait(randomrange(50, 100));
until(FindNPCChatText('oft', Nothing))
Mouse(MCCX, MCCY, 4, 4, False);
ChooseOption('ll');
repeat
AntiBan;
AntiRandoms;
Wait(randomrange(350, 500));
AntiRandoms;
until(not(FindDTM(DC, IX, IY, MIX1, MIY1, MIX2, MIY2)))
If(FindDTM(EB, IX, IY, MIX1, MIY1, MIX2, MIY2)) then
begin
MFDTMInstance(EB, True);
Wait(randomrange(100, 250));
PoWTPA(x, y, 12814441, 11, MSCX, MSCY, MSX1, MSY1, MSX2, MSY2, 0.12, 2.11, True, 'ount');
repeat
AntiBan;
Wait(randomrange(450, 500));
AntiRandoms;
until(not(FindDTM(EB, x, y, MIX1, MIY1, MIX2, MIY2)))
end;
end;
end;
end;
FreeDTM(EB);
FreeDTM(WB);
FreeDTM(DC);
FreeDTM(BC);
end;
function LoadItemCountArray: TIntegerArray;
var
I: Integer;
IA: TIntegerArray;
begin
SetLength(IA, 4);
SetLength(Result, 4);
for I := 0 to 3 do
begin
IA[i] := DeclareDTM(I);
Result[i] := CountItems(IA[i], 'dtm', [0]);
end;
end;
procedure DebugItemCounts;
var
I: Integer;
ItemArray: TIntegerArray;
begin
SetLength(ItemArray, 4);
ItemArray := LoadItemCountArray;
for I := 0 to 3 do
begin
WriteLN(IntToStr(I)+' : '+IntToStr(ItemArray[i]));
end;
end;
procedure InitialSetup;
begin
SetupSRL;
SRLPlayerForm(True, [], ['How many loads till player rest/switch?', 'Max loads?', 'Anti-Ban Chance? (Higher number means less chance)'], [], []);
SetupSmart;
end;
procedure ProgressReport;
begin
ClearDebug;
WriteLN('~~~~~~~~~~~~~~ProphesyOfWolf Presents~~~~~~~~~~~~~~~');
WriteLN('~~~~~~~~~~~~~Varrock East Clay Softener~~~~~~~~~~~~~');
WriteLN('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLN('~~');
WriteLN('~~ Loads Done: '+IntToStr(LoadsDone));
WriteLN('~~ Clays Softened: '+IntToStr((LoadsDone * 14)));
WriteLN('~~ Time Running: '+TimeRunning);
WriteLN('~~ Responds Done: '+IntToStr(Players[CurrentPlayer].Integers[15]));
WriteLN('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLN('~~ Please Post Feedback and Proggies on my Thread!');
WriteLN('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
end;
procedure MainLoop;
var
I: Integer;
begin
InitialSetup;
Wait(500);
LessThan14 := False;
SA := SymbolAccuracy;
repeat
repeat
repeat
NP := False;
If(not(LoggedIn)) then LoginPlayer;
Wait(RandomRange(500, 1000));
HandleMissingBuckets;
If(CountItems(DeclareDTM(1), 'dtm', [0]) > 0) then
begin
If(CountItems(DeclareDTM(2), 'dtm', [0]) < CountItems(DeclareDTM(1), 'dtm', [0])) then
begin
Banking(False, True, False);
CloseBank;
Wait(500);
end;
If(CountItems(DeclareDTM(2), 'dtm', [0]) >= CountItems(DeclareDTM(1), 'dtm', [0])) or (LessThan14) then
begin
MixAtBank;
Inc(LoadsDone2);
Inc(I);
CloseBank;
end;
end;
RunEnergy(50);
WalkToFountain;
If(NP) then Continue;
Wait(randomrange(1500, 2500));
HandleFountain;
Wait(randomrange(1500, 2500));
WalkToBank;
If(NP) then Continue;
Wait(randomrange(1500, 2500));
Banking(True, True, False);
CloseBank;
Inc(LoadsDone2);
Inc(I);
IncEx(LoadsDone, I);
ProgressReport;
I := 0;
If(NP) then Continue;
until(Players[CurrentPlayer].Integers[0] <= LoadsDone2)
LogOut;
LoadsDone2 := 0;
If(PlayersActive > 1) then NextPlayer(True) else
begin
Wait(randomrange(10000, 45000));
LoginPlayer;
end;
until(Players[CurrentPlayer].Integers[1] <= LoadsDone)
LogOut;
ProgressReport;
TerminateScript;
until(false)
end;
begin
MainLoop;
end.*updated a few things as I was running it.