IDK, but this works:
//FlourPower - Color by Floor66
//ELITE SCRIPT!
//IMPORTANT! COMMENT THIS IF NOT USING SMART!
//{$Define SMART}
Program New;
{$IfDef SMART}
{.include SRL\SRL\Misc\Smart.scar}
{$EndIf}
{.include SRL\SRL.scar}
Var
Running, sA, sAEx, ShopColor,
ShopColor2, PotDTM, FlourGE : Integer;
DTMsSet, FinalLoc : Boolean;
CS : String;
Const
Debug = True; //Use debugging?
SavePRG = True; //Save progress-reports?
UseRun = True; //Use running?
Sleeper = True; //Use sleeping?
SleepAt = 8; //Sleep every (..) mins. Random is added.
mySRLID = ''; //Your SRL-stats id.
mySRLPW = ''; //Your SRL-stats pass.
Procedure DeclarePlayers;
Begin
CurrentPlayer := 0; // Starting player
HowManyPlayers := 1; // How many players in total?
NumberOfPlayers(HowManyPlayers);
Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // Nickname, 3 - 4 letters of username
Players[0].Active := True; // Use this player?
Players[0].Loc := 'BankDone'; // Don't touch!
Players[0].Integers[0] := 50002; // Loads to do
End;
Procedure Calibrate(Bs : String); Forward;
Procedure XStatus(Txt : String);
Begin
If Debug = True Then
Begin
Status(Txt);
AddToReport(Txt);
End Else
Status(Txt);
End;
Function DepScreen: Boolean;
Begin
If Not LoggedIn Then
Exit;
Result := (GetColor(171, 41) = 2070783) Or
FindTextTpa(2070783, 0, MSX1, MSY1, MSX2, MSY2, 'une', UpChars, Nothing);
End;
Function ShopScreenEx: Boolean;
Var
x, y : Integer;
Begin
If Not LoggedIn Then
Exit;
Result := FindDTM(PotDTM, x, y, MSX1, MSY1, MSX2, MSY2);
End;
Function FillIn: Boolean;
Begin
If Not LoggedIn Then
Exit;
Result := (GetColor(260, 428) = 8388608);
End;
Function GetLoc: String;
Begin
Result := Players[CurrentPlayer].Loc;
End;
Procedure SetLoc(Loc : String);
Begin
Players[CurrentPlayer].Loc := Loc;
End;
{*******************************************************************************
Function GetGEPrice(MidMinMax : String; id : Integer): Integer;
By: Floor66
Description: Gets the Mid/Min/Max price out of G.E with the specified item ID
*******************************************************************************}
Function GetGEPrice(MidMinMax : String; id : Integer): Integer;
Var
S, I : String;
Begin
S := GetPage('http://itemdb-rs.runescape.com/viewitem.ws?obj='+ IntToStr(id)); //Get the page
If S = '' Then
Begin
WriteLn('GetGEPrice: Failed to open webpage!');
Exit;
End;
Case MidMinMax Of // Mid, min or max price, take out of the page source
'Mid', 'mid': I := Between('<b>Market price:</b> ', '</span>', S);
'Min', 'min': I := Between('<b>Minimum price:</b> ', '</span>', S);
'Max', 'max': I := Between('<b>Maximum price:</b> ', '</span>', S);
End;
Delete(I, High(I), 1); // Removes the LINE-BREAK that is actually after it:
// <b>Market price:</b> 123 (broken here)
// </span>
I := Replace(I, 'k', '00');
I := Replace(I, 'm', '00000');
I := Replace(I, '.', '');
I := Replace(I, ',', '');
I := Trim(I);
Result := StrToInt(I);
End;
Function Lost: Boolean;
Var
x, y : Integer;
Begin
If Not LoggedIn Then
Exit;
FindNormalRandoms;
{ If Not FindSymbol(x, y, 'store') Then
Begin
XStatus('Player is lost (store)...');
Result := True;
Inc(Players[CurrentPlayer].Integers[4]);
Calibrate('bank');
Inc(ReportVars[3]);
Exit;
End Else
If Not FindSymbol(x, y, 'bank') Then
Begin
XStatus('Player is lost (bank)...');
Result := True;
Inc(Players[CurrentPlayer].Integers[4]);
Calibrate('shop');
Inc(ReportVars[3]);
Exit;
End;}
End;
Function NoCash: Boolean;
Begin
If Not LoggedIn Then
Exit;
Result := FindTextTPA(0, 0, MCX1, MCY1, MCX2, MCY2, 'coins', SmallChars, Nothing);
End;
Function LoadsDone: Boolean;
Begin
If Not LoggedIn Then
Exit;
Result := (Players[CurrentPlayer].Integers[1] >= Players[CurrentPlayer].Integers[0]);
End;
Function PotInInv: Boolean;
Var
x, y : Integer;
Begin
If Not LoggedIn Then
Exit;
Result := FindDTM(PotDTM, x, y, MIX1, MIY1, MIX2, MIY2);
End;
Function PotCount: Integer;
Var
i, x, y : Integer;
Box : TBox;
Begin
If Not LoggedIn Then
Exit;
For i := 1 To 28 Do
Begin
Box := InvBox(i);
If FindDTM(PotDTM, x, y, Box.x1, Box.y1, Box.x2, Box.y2) Then
Inc(Result);
End;
End;
Function AllFalse: Boolean;
Var
i, m : Integer;
Begin
For i := 0 To High(Players) Do
Begin
If Players[i].Active = False Then
Inc(m);
End;
If m = Length(Players) Then
Result := True
Else
Result := False;
End;
(*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\\
|| ShutDownPC - Shuts down your computer (Do'h?) ||
|| By: Jahuro / Edit by Hy71194 ||
\\_________________________________________________________________*)
procedure ShutDownPC;
begin
WriteLn('');
WriteLn('Shutting down your PC.');
WriteLn('To stop it once it starts counting, go to Start, Run, then type ''shutdown -a''');
Wait(2000);
KeyDown(92);
Wait(200);
KeyDown(82);
Wait(200);
KeyUp(82);
Wait(200);
KeyUp(92);
Wait(2000);
SendKeys('shutdown -s -f -t 60 -c "Thank you for using FlourPower. '+TimeRunning+'"');
Wait(2000);
KeyDown(13);
Wait(200);
KeyUp(13);
Wait(160000);
TerminateScript;
end;
{*******************************************************************************
procedure NextPlayer2(Active: Boolean);
By: Dankness and modified by Ron and by Raymond AND BY Floor66
Description: Logs in the next player.
Boolean: True - Current player is ok. False - Current player is false.
*******************************************************************************}
procedure NextPlayer2(Active: Boolean);
begin
if RandomPlayer then
RandomNextPlayer(Active)
else
begin
WriteLn('NextPlayer2(Active: ' + BoolToStr(Active)+ ');');
Players[CurrentPlayer].Active := Active;
Logout;
if (SRL_Procs[srl_OnNextPlayer] <> nil) then
SRL_Procs[srl_OnNextPlayer]();
PlayerCurTime := (GetSystemTime div 1000);
Players[CurrentPlayer].Worked := Players[CurrentPlayer].Worked +
((PlayerCurTime - PlayerStartTime) / 60);
if AllFalse Or AllPlayersInactive then
TerminateScript;
CurrentPlayer := (CurrentPlayer + 1) mod Length(Players);
while Players[CurrentPlayer].Active = False do
begin
CurrentPlayer := (CurrentPlayer + 1) mod Length(Players);
end;
SRL_Logs := SRL_Logs + 1;
LoginPlayer;
end;
end;
Procedure SetDTMs;
Begin
PotDTM := DTMFromString('78DA63DCC0C8C0308901054C4C3266F80FA48' +
'1320CFF81807111903591010D302291407A0590358F809A2D44AA' +
'6923A0662790D54340CD6E206B1A01354B81AC2E026A407E9F4E4' +
'0CD1A206B3E0135BB80AC59F8D500006CF81431');
DTMsSet := True;
End;
Procedure FreeDTMs;
Begin
FreeDTM(PotDTM);
DTMsSet := False;
End;
Procedure AntiBan;
Begin
FindNormalRandoms;
Case Random(25) Of
0..10: SleepAndMoveMouse(337 + Random(500));
11..25: Wait(100 + Random(500));
End;
End;
{*******************************************************************************
Function DifferentMSColours: Boolean;
By: Floor66
Description: This function takes the colours of specific MainScreen points,
waits 100 + Random(50), takes new colours, and checks if the
colours are different from the first ones taken.
*******************************************************************************}
Function DifferentMSColours(MS_Points : Integer): Boolean;
Var
BeginColours, CheckColours : Array Of Integer;
ColorCoords : TPointArray;
i : Integer;
Begin
SetLength(ColorCoords, MS_Points);
SetLength(BeginColours, MS_Points);
SetLength(CheckColours, MS_Points);
For i := 0 To High(BeginColours) Do
Begin
ColorCoords[i].x := MSCX + Random(50);
ColorCoords[i].y := MSCY + Random(50);
BeginColours[i] := GetColor(ColorCoords[i].x, ColorCoords[i].y);
End;
Wait(100 + Random(50));
For i := 0 To High(CheckColours) Do
Begin
CheckColours[i] := GetColor(ColorCoords[i].x, ColorCoords[i].y);
If BeginColours[i] <> CheckColours[i] Then
Result := True;
End;
End;
{*******************************************************************************
Procedure CharacterMoving;
By: Floor66
Description: This procedure incorporates the function DifferentMSColours to do
a check if the character is still moving. A real handy check when
doing something with walking!
*******************************************************************************}
Function CharacterMoving: Boolean;
Var
Checks, t : Integer;
Begin
Wait(1500 + Random(250));
Result := True;
MarkTime(t);
Repeat
If (Not DifferentMSColours(7)) Then
Inc(Checks);
AntiBan;
If (Checks >= 2) Or (Not FlagPresent) Then
Result := False;
If TimeFromMark(t) >= (10 * 1000) Then
Result := False;
Until(Not Result);
End;
Function ExRadialWalk(TheColor, StartRadial, EndRadial, Radius, RndY : Integer): Boolean;
var
tpa: TPointArray;
i: Integer;
begin
Result := False;
If RadialWalkEx(tpa, MMCX, MMCY, TheColor, 0, StartRadial, EndRadial, Radius) Then
For i := 0 To High(tpa) Do
If MFNF(tpa[i].x, tpa[i].y - RndY, 3, 3) Then
Begin
While CharacterMoving Do
Wait(10 + Random(50));
Result := True;
Break;
End;
End;
Function NPCDot: Boolean;
Var
TPA : TPointArray;
Temp : T2DPointArray;
h, x, y, z, j : Integer;
Begin
j := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(x, y, TPA, 195836, 576, 92, 612, 135, 18);
Temp := TPAtoATPAEx(TPA, 10, 10);
SortATPASize(Temp, True);
h := High(Temp);
For z := 0 To h Do
Begin
MiddleTPAEx(Temp[z], x, y);
Result := (GetColor(x, y) <> -1);
If Result Then
Begin
WriteLn('NPCDot Succeeded!');
Mouse(x - 3, y - 3, 5, 5, True);
While CharacterMoving Do
Wait(10 + Random(50));
Result := True;
ColorToleranceSpeed(j);
Exit;
End;
End;
ColorToleranceSpeed(j);
End;
Function TPAFindEx(Color, Tol : Integer): Integer;
Var
TPA : TPointArray;
Temp : T2DPointArray;
h, x, y, z, t, j : Integer;
Begin
t := GetSystemTime;
j := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(x, y, TPA, Color, MMX1, MMY1, MMX2, MMY2, Tol);
Temp := TPAtoATPAEx(TPA, 10, 10);
SortATPASize(Temp, True);
h := High(Temp);
For z := 0 To h Do
Begin
MiddleTPAEx(Temp[z], x, y);
Result := GetColor(x, y);
If Result <> 0 Then
Break;
End;
If Result <> 0 Then
GetColor(x, y);
ColorToleranceSpeed(j);
End;
Function TPAFind(var cx, cy : Integer; UpTxt : TStringArray; Color, Tol : Integer): Boolean;
Var
TPA : TPointArray;
Temp : T2DPointArray;
h, x, y, z, t, j : Integer;
Begin
t := GetSystemTime;
j := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(x, y, TPA, Color, MSX1, MSY1, MSX2, MSY2, Tol);
Temp := TPAtoATPAEx(TPA, 10, 10);
SortATPASize(Temp, True);
h := High(Temp);
For z := 0 To h Do
Begin
MiddleTPAEx(Temp[z], x, y);
MMouse(x, y, 5, 5);
Result := IsUpTextMultiCustom(UpTxt);
If Result Then
Break;
End;
If Result Then
GetMousePos(cx, cy);
ColorToleranceSpeed(j);
End;
Function ClickSymbol(var x, y : Integer; Symbol : String): Boolean;
Begin
If Not LoggedIn Then
Exit;
// SymbolAccuracy := 0.45;
FindNormalRandoms;
If FindSymbol(x, y, Symbol) Then
Begin
Mouse(x, y, 13, 13, True);
While CharacterMoving Do
Wait(10 + Random(50));
Result := True;
Exit;
End Else
Begin
XStatus('ClickSymbol failed.');
Result := False;
Exit;
End;
End;
Procedure OpenDepBox;
Var
x, y, MaxTime, Fails : Integer;
Failed : Boolean;
Begin
XStatus('Opening the deposit box...');
If Not LoggedIn Then
Exit;
If GetLoc <> 'AtBank' Then
Begin
SetLoc('ShopDone');
Exit;
End;
If Fails >= 3 Then
Begin
SetLoc('ShopDone');
Exit;
End;
Repeat
If DepScreen Then
Exit;
If TPAFind(x, y, ['box', 'eposit'], 805217, 8) Then
Begin
Wait(100 + Random(100));
If IsUpTextMultiCustom(['box', 'eposit']) Then
Mouse(x, y, 5, 5, True)
Else
Begin
Failed := True;
Break;
End;
FindNormalRandoms;
MarkTime(MaxTime);
While Not DepScreen Do
Begin
Wait(10 + Random(7));
If TimeFromMark(MaxTime) >= (8 * 1000) Then
Break;
End;
If DepScreen Then
Exit;
End;
Until(Failed);
If Failed Then
Begin
Inc(Fails);
SetLoc('AtBank');
Exit;
End;
End;
Procedure ToShop(TheType : String);
Var
x, y : Integer;
Begin
FindNormalRandoms;
XStatus('Walking to shop with '+ TheType +'...');
If Not LoggedIn Then
Exit;
Case TheType Of
'radial': Begin
ShopColor := TPAFindEx(4281202, 15);
ShopColor2 := TPAFindEx(4746110, 15);
If Not ExRadialWalk(ShopColor, 200, 250, 50, 10) Then
If Not ExRadialWalk(ShopColor2, 200, 250, 50, 10) Then
If Not NPCDot Then
If Not ExRadialWalk(FindLadderColor, 200, 270, 50, 10) Then
ToShop('symbol')
Else
SetLoc('AtShop')
Else
SetLoc('AtShop')
Else
SetLoc('AtShop')
Else
SetLoc('AtShop');
End;
'symbol': Begin
If Not ClickSymbol(x, y, 'store') Then
Begin
SymbolAccuracy := SymbolAccuracy - 0.05;
ToShop('symbol')
End Else
SetLoc('AtShop');
End;
End;
End;
Procedure ToBank(TheType : String);
Var
x, y : Integer;
Begin
FindNormalRandoms;
XStatus('Walking to bank with '+ TheType +'...');
If Not LoggedIn Then
Exit;
Case TheType Of
'symbol': Begin
If Not ClickSymbol(x, y, 'bank') Then
Begin
SymbolAccuracy := SymbolAccuracy - 0.05;
SetLoc('ShopDone');
End Else
SetLoc('AtBank');
End;
End;
// Wait(1000 + Random(200));
End;
Procedure Buy;
Var
x, y, MaxTime, Fails : Integer;
Failed : Boolean;
Begin
XStatus('Looking for the shopkeeper...');
Failed := False;
If Not LoggedIn Then
Exit;
FindNormalRandoms;
If InvFull Then
Begin
SetLoc('ShopDone');
Exit;
End;
If GetLoc <> 'AtShop' Then
Begin
SetLoc('BankDone');
Exit;
End;
If Fails >= 3 Then
Begin
SetLoc('BankDone');
Exit;
End;
Repeat
If ShopScreenEx Then
Break;
If TPAFind(x, y, ['hopkeeper', '-to'], 12042432, 8) Then
Begin
Mouse(x, y, 3, 3, False);
Wait(100 + Random(60));
If Not ChooseOption('rade') Then
Begin
Failed := True;
Break;
End;
MarkTime(MaxTime);
While Not ShopScreenEx Do
Begin
Wait(10 + Random(50));
If TimeFromMark(MaxTime) >= (3 * 1000) Then
Exit;
End;
End Else
Mouse(MSCX, MSCY + 35, 15, 5, True);
Until(ShopScreenEx Or Failed);
If Failed Then
Begin
Inc(Fails);
SetLoc('AtShop');
Exit;
End;
If ShopScreenEx Then
Begin
XStatus('Buying...');
If FindDTM(PotDTM, x, y, MSX1, MSY1, MSX2, MSY2) Then
Begin
Mouse(x, y, 3, 3, False);
Wait(100 + Random(40));
If Not ChooseOption('uy X') Then
Exit;
MarkTime(MaxTime);
While Not FillIn Do
Begin
If TimeFromMark(MaxTime) >= (10 * 1000) Then
Begin
Buy;
Exit;
End;
Wait(10 + Random(8));
End;
TypeSend('27');
Wait(50 + Random(100));
If NoCash Then
Begin
ShutDownPC;
Exit;
End;
IncEx(Players[CurrentPlayer].Integers[2], 27);
IncEx(Players[CurrentPlayer].Integers[5], (27 * 14));
IncEx(Players[CurrentPlayer].Integers[6], (27 * FlourGE));
Inc(Players[CurrentPlayer].Integers[1]);
IncEx(ReportVars[0], PotCount);
Inc(ReportVars[1]);
SetLoc('ShopDone');
End Else
Exit;
End;
End;
Procedure Bank;
Var
x, y, Tries : Integer;
Begin
If Not LoggedIn Then
Exit;
FindNormalRandoms;
If InvEmpty Then
Begin
SetLoc('BankDone');
Exit;
End;
If GetLoc <> 'AtBank' Then
Begin
SetLoc('ShopDone');
Exit;
End;
If Not DepScreen Then
OpenDepBox;
XStatus('Banking...');
Repeat
Inc(Tries);
If FindDTM(PotDTM, x, y, MSX1, MSY1, MSX2, MSY2) Then
Begin
Mouse(x, y, 3, 3, False);
Wait(100 + Random(60));
If ChooseOption('ll') Then
Begin
SetLoc('BankDone');
FinalLoc := True;
Exit;
End;
End;
Until(Tries = 5);
If Tries = 5 Then
Begin
SetLoc('ShopDone');
Exit;
End;
End;
Procedure Calibrate(Bs : String);
Begin
If Not LoggedIn Then
Exit;
FindNormalRandoms;
XStatus('Calibrating...');
Case Bs Of
'bank': Begin
ToBank('symbol');
If PotCount > 0 Then
Begin
SetLoc('AtBank');
Exit;
End;
If PotCount = 0 Then
Begin
SetLoc('BankDone');
Exit;
End;
End;
'shop': Begin
ToShop('symbol');
If PotCount > 0 Then
Begin
SetLoc('ShopDone');
Exit;
End;
If PotCount = 0 Then
Begin
SetLoc('AtShop');
Exit;
End;
End;
End;
End;
Procedure DoSleep;
Begin
If Not Sleeper Then
Exit;
If TimeFromMark(Running) >= (sA + Random((12 * 1000))) Then
Begin
CloseWindow;
IncEx(sA, sAEx);
Inc(Players[CurrentPlayer].Integers[3]);
Inc(ReportVars[2]);
Logout;
XStatus('Sleeping...');
Wait(RandomRange(5000, 30000));
XStatus('Waking up!');
Inc(SRL_Logs);
LoginPlayer;
If GetMMLevels('run', CS) >= 50 Then
SetRun(UseRun);
End;
End;
Function SaveDebug: Boolean; //MADE BY HY71194! MODIFIED BY FLOOR66!
Var
FileNum : Integer;
Begin
If Not SavePRG Then
Begin
Result := True;
Exit;
End;
FileNum := RewriteFile(ScriptPath + 'FlourPowerColour_Proggress.txt', True);
If FileNum < 0 Then
Begin
WriteLn('Error with save: File Error.');
Result := False;
Exit;
End;
If WriteFileString(FileNum, GetDebugText) Then
Result := True;
CloseFile(FileNum);
End;
Procedure Progress;
Var
Str_Length, SaveTime : Integer;
Begin
Str_Length := 29;
SRLRandomsReport;
SendSRLReport;
WriteLn('PROGRESS-REPORT:');
WriteLn('Running for '+ TimeRunning);
WriteLn('//------------------------------\\');
WriteLn('|| @@@@@@! -FlourPower- !@@@@@@ ||');
WriteLn('|| @@@@@! Port Khazard !@@@@@ ||');
WriteLn('||------------------------------||');
WriteLn('|| ' + Padr(Players[CurrentPlayer].Nick + ':', Str_Length) + '||');
WriteLn('|| ' + Padr(IntToStr(Players[CurrentPlayer].Integers[1]) + ' Loads done.', Str_Length) + '||');
WriteLn('|| ' + Padr(IntToStr(Players[CurrentPlayer].Integers[2]) + ' Pots bought.', Str_Length) + '||');
WriteLn('|| ' + Padr('Made '+ IntToStr(Players[CurrentPlayer].Integers[6]) + 'gp profit.', Str_Length) + '||');
WriteLn('|| ' + Padr('Spent '+ IntToStr(Players[CurrentPlayer].Integers[5]) + 'gp.', Str_Length) + '||');
WriteLn('|| ' + Padr('Slept '+ IntToStr(Players[CurrentPlayer].Integers[3]) + ' times.', Str_Length) + '||');
WriteLn('|| ' + Padr('Calibrated '+ IntToStr(Players[CurrentPlayer].Integers[4]) + ' times.', Str_Length) + '||');
WriteLn('\\------------------------------//');
WriteLn('');
Disguise(IntToStr(Players[CurrentPlayer].Integers[1]) +' Loads done.');
MarkTime(SaveTime);
While Not SaveDebug Do
Begin
If TimeFromMark(SaveTime) >= (3 * 1000) Then
Break;
Wait(10 + Random(4));
End;
End;
Procedure DoMain;
Begin
Lost;
GameTab(4);
FindNormalRandoms;
Case GetLoc Of
'AtBank': Bank;
'AtShop': Buy;
'ShopDone': ToBank('symbol');
'BankDone': ToShop('radial');
End;
FindNormalRandoms;
Lost;
GameTab(4);
End;
Procedure SetupScript;
Begin
SetupSRL;
FlourGE := GetGEPrice('Max', 1933);
ScriptID := '1191';
SRLID := mySRLID;
SRLPassword := mySRLPW;
RandomPlayer := False;
DeclarePlayers;
{$IfDef SMART}
SmartSetupEx(99, True, True, False);
SetTargetDC(SmartGetDC);
{$EndIf}
While Not RSReady Do
Wait(10 + Random(6));
ActivateClient;
If Not DTMsSet Then
SetDTMs;
SymbolAccuracy := 0.5;
sA := ((SleepAt + RandomRange(2, 5)) * 1000 * 60);
sAEx := ((SleepAt + RandomRange(2, 5)) * 1000 * 60);
End;
Procedure ScriptTerminate;
Begin
If DTMsSet Then
FreeDTMs;
Progress;
WriteLn('All players done.');
End;
Procedure SetupPlayer;
Begin
If Not LoggedIn Then
LoginPlayer;
ClearDebug;
MarkTime(Running);
SetAngle(True);
MakeCompass('N');
If InvFull Then
Bank;
SetRun(UseRun);
End;
Begin
SetupScript;
Repeat
If AllFalse Then
Break;
SetupPlayer;
Repeat
If GetMMLevels('run', CS) >= 50 Then
SetRun(UseRun);
Repeat
DoMain;
DoSleep;
Until((FinalLoc = True) Or (Not LoggedIn));
If Not LoggedIn Then
LoginPlayer;
FinalLoc := False;
Progress;
Until(LoadsDone Or (Not LoggedIn));
If (Not LoggedIn) And (Not LoadsDone) Then
LoginPlayer
Else
NextPlayer2(True);
If AllFalse Then
Break;
Until(AllFalse);
End.
I've changed a few things (replaced FFlag by CharacterMoving for example).
Please
DO NOT sell pots until they are 50+ MID.
They will go up very soon (I kinda control them lol).