SCAR Code:
program Powerminer;
{.include SRL\SRL.scar}
{.include SRL\SRL\Skill\Mining.scar}
{.include SRL\SRL\Misc\Trade.scar}
Const
StartPlayer = 0; // The Number of the player that has to start.
NumberOfUsers = 6; // How many players you are using.
YourSRLStatsID = ''; // Must be a string!
YourSRLStatsPass = ''; // Must be a string!
TheMinCount = 4; // MinCount 4 for normal (old rocks), 1 for Rimmington (new) rocks
OreTol = 9; // Anything between 4 - 19. (4 to 9) with normal rocks
// 9 - 14 on new rocks.
SecondsToWait = 5; // Number Of Seconds You want to wait.
Loads = 4; // Number Of Loads.
RunDir = 'S'; // RunDirection, choose it wisely.
MinutesPerLoad = 5; // Max amount of minutes to take before dropping.
AutoColor = True; // True for autocolor, recommend for better preformance.
WizzyDebug = False; // WizzyDebug.
Const
VersionNumber = '3.09';
{--------------------------------------------------------
Procedure DeclarePlayers;
--------------------------------------------------------}
Procedure DeclarePlayers;
Begin
HowManyPlayers := NumberOfUsers;
NumberOfPlayers( HowManyPlayers );
CurrentPlayer := StartPlayer;
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Active:=True;
Players[0].String1 := 'Iron'; // Primairy Ore Color
Players[0].String2 := 'Iron'; // Secondairy Ore Color wont be mined as much as 1.
Players[0].String3 := 'Iron'; // Third Ore Color, won't be mined as much as 1 and 2.
Players[0].Boolean1 := True; // Is The Pick Equipped?
Players[0].Boolean2 := True; // False for brightness Check Once.
Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='';
Players[1].Active:=True;
Players[1].String1 := 'Iron'; // Primairy Ore Color
Players[1].String2 := 'Iron'; // Secondairy Ore Color wont be mined as much as 1.
Players[1].String3 := 'Iron'; // Third Ore Color, won't be mined as much as 1 and 2.
Players[1].Boolean1 := True; // Is The Pick Equipped?
Players[1].Boolean2 := True; // False for brightness Check Once.
Players[2].Name :='';
Players[2].Pass :='';
Players[2].Nick :='';
Players[2].Active:=True;
Players[2].String1 := 'Iron'; // Primairy Ore Color
Players[2].String2 := 'Iron'; // Secondairy Ore Color wont be mined as much as 1.
Players[2].String3 := 'Iron'; // Third Ore Color, won't be mined as much as 1 and 2.
Players[2].Boolean1 := True; // Is The Pick Equipped?
Players[2].Boolean2 := True; // False for brightness Check Once.
Players[3].Name :='';
Players[3].Pass :='';
Players[3].Nick :='';
Players[3].Active:=True;
Players[3].String1 := 'Iron'; // Primairy Ore Color
Players[3].String2 := 'Iron'; // Secondairy Ore Color wont be mined as much as 1.
Players[3].String3 := 'Iron'; // Third Ore Color, won't be mined as much as 1 and 2.
Players[3].Boolean1 := True; // Is The Pick Equipped?
Players[3].Boolean2 := True; // False for brightness Check Once.
Players[4].Name :='';
Players[4].Pass :='';
Players[4].Nick :='';
Players[4].Active:=True;
Players[4].String1 := 'Iron'; // Primairy Ore Color
Players[4].String2 := 'Iron'; // Secondairy Ore Color wont be mined as much as 1.
Players[4].String3 := 'Iron'; // Third Ore Color, won't be mined as much as 1 and 2.
Players[4].Boolean1 := True; // Is The Pick Equipped?
Players[4].Boolean2 := True; // False for brightness Check Once.
Players[5].Name :='';
Players[5].Pass :='';
Players[5].Nick :='';
Players[5].Active:=True;
Players[5].String1 := 'Iron'; // Primairy Ore Color
Players[5].String2 := 'Iron'; // Secondairy Ore Color wont be mined as much as 1.
Players[5].String3 := 'Iron'; // Third Ore Color, won't be mined as much as 1 and 2.
Players[5].Boolean1 := True; // Is The Pick Equipped?
Players[5].Boolean2 := True; // False for brightness Check Once.
Writeln( IntToStr ( HowManyPlayers ) + ' Players' );
End;
// ----------------------------------------------------------------- //
Const
CopperColor = 4286610;
TinColor = 9277080;
ClayColor = 4553880;
IronColor = 2370383;
SilverColor = 12434885;
CoalColor = 2834753;
GoldColor = 1881051;
MithrilColor = 7359564;
AdamantColor = 6322272;
RuniteColor = 8681306;
{ Don't change below if you consider yourself a beginner.}
Var
MinCount : Byte;
Clay, Ores, OreMask, MyMark, OreCounter, Gasses, DroppedOreColor: Integer;
ScriptStartTime1, ScriptStartTime2,
FindNorMalRandomsTime, FindFastRandomsTime: LongInt;
NormalRandomsTime, FastRandomsTime, FindTalkTime: LongInt;
//----------------------------------------------------------------------------//
//-- Checks and sets Auto Retaliate. True = On, False = Off --//
//----------------------------------------------------------------------------//
procedure Retaliate(AutoRet:Boolean); // WT-Fakawi.
begin
GameTab(1);
if AutoRet then
begin
If not FindColor(x,y,1777020,624, 385, 719,396) then
begin
Mouse(666,381,8,8, True);
end;
end;
if not AutoRet then
begin
If FindColor(x,y,1777020,624, 385, 719,396) then
begin
Mouse(666,381,8,8, True);
end;
end;
end;
{--------------------------------------------------------
Function Explode(S: String): Array Of String;
--------------------------------------------------------}
Function Explode(S: String): Array Of String;
Var
Counter, Start, ResultCounter, B: LongInt;
EndOfWord : Boolean;
Begin
S := Trim(S);
Insert(Chr(13), S, 0);
Repeat
Counter := Counter +1;
If EndOfWord Then Counter := Counter -1;
EndOfWord := False;
If StrGet(S, Counter) = Chr(13) Then
Begin
Start := Counter;
Repeat
Counter := Counter + 1;
If Counter > Length(S) Then
Begin
Break;
End;
Until StrGet(S, Counter) = Chr(13);
ResultCounter := ResultCounter +1;
SetArrayLength(Result, ResultCounter + 1);
Result[ResultCounter] := Trim(Copy(S, Start, Counter - Start));
B := Pos(Chr(13), Result[ResultCounter])
If B > 0 Then
Delete(Result[ResultCounter], B, 1);
B := Pos(Chr(10), Result[ResultCounter])
If B > 0 Then
Delete(Result[ResultCounter], B, 1);
WriteLn(Result[ResultCounter]);
EndOfWord := True;
End;
Until Counter > Length(S)-1;
End;
{--------------------------------------------------------
Function GetLatestNews: String;
--------------------------------------------------------}
Function GetLatestNews: Array Of String;
Var
S : String;
Begin
// S := GetPage('http://www.villavu.com/wizzups%20scripts/powerminer/news.txt');
S := GetPage('http://82.92.130.193/wizzups%20scripts/powerminer/news.txt');
Result := Explode(S);
WriteLn('');
End;
{--------------------------------------------------------
Function GetLatestVersionNumber: Extended;
Checks if you have the latest version.
--------------------------------------------------------}
Function GetLatestVersionNumber: String;
Begin
// Result := GetPage('http://www.villavu.com/wizzups%20scripts/powerminer/version.txt');
Result := GetPage('http://82.92.130.193/wizzups%20scripts/powerminer/version.txt');
If Result <> VersionNumber Then
Begin
WriteLn('You currently do not have the latest version.');
WriteLn('http://www.villu-reborn.com/showthread.php?t=1517');
WriteLn('For the latest version');
End
Else
Begin
WriteLn('You have the latest version.');
WriteLn('Please post all your progress reports here : ');
WriteLn('http://www.villu-reborn.com/showthread.php?t=1517');
End;
End;
{--------------------------------------------------------
Function HighestBrightNess: Boolean;
--------------------------------------------------------}
Function HighestBrightNess: Boolean;
Begin
GameTab(11);
Wait(400);
If GetColor(712, 226) <> 16777215 Then
Begin
Mouse(712, 226, 2, 2, True);
Result := True;
Wait(200);
End;
End;
{--------------------------------------------------------
Procedure SetOreColor;
--------------------------------------------------------}
Procedure SetOreColor;
Begin
Case LowerCase(Players[CurrentPlayer].String1) Of
'copper' : OreColor1:=CopperColor;
'tin' : OreColor1:=TinColor;
'clay' : OreColor1:=ClayColor;
'iron' : OreColor1:=IronColor;
'silver' : OreColor1:=SilverColor;
'coal' : OreColor1:=CoalColor;
'gold' : OreColor1:=GoldColor;
'mithril' : OreColor1:=MithrilColor;
'adamant' : OreColor1:=AdamantColor;
'runite' : OreColor1:=RuniteColor;
End;
Case Lowercase(Players[CurrentPlayer].String2) Of
'copper' : OreColor2:=CopperColor;
'tin' : OreColor2:=TinColor;
'clay' : OreColor2:=ClayColor;
'iron' : OreColor2:=IronColor;
'silver' : OreColor2:=SilverColor;
'coal' : OreColor2:=CoalColor;
'gold' : OreColor2:=GoldColor;
'mithril' : OreColor2:=MithrilColor;
'adamant' : OreColor2:=AdamantColor;
'runite' : OreColor2:=RuniteColor;
End;
Case LowerCase(Players[CurrentPlayer].String3) Of
'copper' : OreColor3:=CopperColor;
'tin' : OreColor3:=TinColor;
'clay' : OreColor3:=ClayColor;
'iron' : OreColor3:=IronColor;
'silver' : OreColor3:=SilverColor;
'coal' : OreColor3:=CoalColor;
'gold' : OreColor3:=GoldColor;
'mithril' : OreColor3:=MithrilColor;
'adamant' : OreColor3:=AdamantColor;
'runite' : OreColor3:=RuniteColor;
End;
End;
Function GetDroppedOreColor: Integer;
Var
DroppedOreColorBMP: Integer;
iX, iY: Integer;
Begin
If CountItemBmpMaskTol(OreMask, 20, 25) = 0 Then Exit;
DroppedOreColorBMP := BitmapFromString(3, 4, '866C4C866C4C8' +
'06849866C4C896E4D866C4C896E4D8B70508B7050896E4D8B7050' +
'8D7251');
If FindBitmapToleranceIn(DroppedOreColorBMP, iX, iY, 560, 205, 725, 460, 9) Then
Begin
Result := GetColor(iX, iY + 2);
If WizzyDebug Then WriteLn('DroppedOreColor = ' + IntToStr(Result));
End
Else
Begin
WriteLn('DroppedOreColor not found');
WriteLn('Logout and try again.');
LogOut;
TerminateScript;
End;
FreeBitmap(DroppedOreColorBMP);
End;
{--------------------------------------------------------
Function GetUpTextBlue:String;
--------------------------------------------------------}
Function GetUpTextBlue:String;
Begin
Result := Trim(GetTextAtEx(7, 7, 140, upchars, true,
true, 0, 2, 14277634, 50, True, tr_AllChars));
End;
{--------------------------------------------------------
Function IsUpTextBlue(Text: String): Boolean;
--------------------------------------------------------}
Function IsUpTextBlue(Text: String): Boolean;
Begin
Result := (Pos(Text, GetUpTextBlue) <> 0)
End;
{--------------------------------------------------------
Function DroppedOre(iX, iY: Integer): Boolean;
--------------------------------------------------------}
Function DroppedOre(iX, iY: Integer): Boolean;
Begin
Result := FindColor(iX, iY, DroppedOreColor, iX - 10, iY - 10, iX + 10, iY + 10)
If Result And WizzyDebug Then WriteLn('DroppedOre')
Else If WizzyDebug Then WriteLn('No Dropped ore');
End;
{--------------------------------------------------------
Procedure AutoGetRockColors;
--------------------------------------------------------}
Procedure AutoGetRockColors;
Var
ATPoint : TPoint;
Begin
WriteLn('AutoColor:');
If FindObjOre(ATPoint.X, ATPoint.Y, 'ocks', OreColor1, 14, MinCount) Then
OreColor1 := GetColor(ATPoint.X, ATPoint.Y);
If FindObjOre(ATPoint.X, ATPoint.Y, 'ocks', OreColor2, 14, MinCount) Then
OreColor2 := GetColor(ATPoint.X, ATPoint.Y);
If FindObjOre(ATPoint.X, ATPoint.Y, 'ocks', OreColor3, 14, MinCount) Then
OreColor3 := GetColor(ATPoint.X, ATPoint.Y);
WriteLn(Players[CurrentPlayer].String1+' Color = '+IntToStr(OreColor1));
WriteLn(Players[CurrentPlayer].String2+' Color = '+IntToStr(OreColor2));
WriteLn(Players[CurrentPlayer].String3+' Color = '+IntToStr(OreColor3));
End;
{--------------------------------------------------------
Function ItemSelected: Boolean;
Checks if an item is selected.
--------------------------------------------------------}
Function ItemSelected: Boolean;
Var
ItemSPoint: TPoint;
Begin
If FindColor(ItemSPoint.X, ItemSPoint.Y, 16777215, MIX1, MIY1, MIX2, MIY2) Then
Begin
Result := True;
GameTab(2);
GameTab(4);
End;
End;
{--------------------------------------------------------
Function FindFastRandoms: Boolean; // By WT-Fakawi.
FindFastRandoms is a quicker version of FindNormalRandoms.
It does not include ALL the Anti-Randoms though.
--------------------------------------------------------}
Function FindFastRandoms: Boolean; // By WT-Fakawi.
Var
i: Integer;
Begin
For I := 1 To 11 Do
Begin
Case I Of
1: If FindDead Then
Result := True;
2: If FindMod Then
Result := True;
3: If FindMime Then
Result := True;
4: If FindMaze Then
Result := True;
5: If FindQuiz Then
Result := True;
6: If FindDemon Then
Result := True;
7: Begin
If NoGameTab Then
Begin
Result := True;
Players[CurrentPlayer].loc := 'No GameTab';
Logout;
Exit;
End;
End;
8 : If RC Then
Result := True;
9 : If FindFight Then
Begin
Result := True;
RunTo(RunDir, True);
End;
10: If FindTalk Then
Result := True;
11: If HandleTrade Then
Result := True;
End;
Wait(1);
End;
End;
{--------------------------------------------------------
Procedure FTWaitAll(Time:Integer); // By WT-Fakawi.
Anti-Random and Wait Procedure.
--------------------------------------------------------}
Procedure FTWaitAll(Time:Integer); // By WT-Fakawi.
var t: integer;
begin
For T:=1 to Time do
begin
Wait(5); // Adepted.
FindTalk;
RC;
HandleTrade;
end;
FindFastRandoms;
MarkTime(FindNormalRandomsTime);
if FindNormalRandomsTime-ScriptStartTime1 >(10000+Random(5000)) Then
begin
FindNormalRandoms;
MarkTime(ScriptStartTime1);
end;
MarkTime(FindFastRandomsTime);
if FindFastRandomsTime-ScriptStartTime2 >(1500+Random(1500)) Then
begin
FindFastRandoms;
MarkTime(ScriptStartTime2);
end;
end;
Function FindNormalRandomsTimeEx: Boolean;
Var
TempTime, Time1, Time2: LongInt;
Begin
TempTime := GetSystemTime;
If TempTime - NormalRandomsTime > 6000 Then
Begin
NormalRandomsTime := GetSystemTime;
Time1 := GetSystemTime;
Result := FindNormalRandoms;
Time2 := GetSystemTime;
Status('Calling FNRandoms; Took '+IntToStr(Time2-Time1)+'.');
Exit;
End;
If TempTime - FastRandomsTime > 2000 Then
Begin
FastRandomsTime := GetSystemTime;
Time1 := GetSystemTime;
Result := FindFastRandoms;
Time2 := GetSystemTime;
Status('Calling FFRandoms; Took '+IntToStr(Time2-Time1)+'.');
Exit;
End;
If TempTime - FindTalkTime > 500 Then
Begin
FindTalkTime := GetSystemTime;
Time1 := GetSystemTime;
Result := FindTalk;
Time2 := GetSystemTime;
Status('Calling FT; Took '+IntToStr(Time2-Time1)+'.');
Exit;
End;
End;
{--------------------------------------------------------
Procedure BitMaps;
--------------------------------------------------------}
Procedure BitMaps;
Begin
Clay := BitmapFromString(4, 4, '86714C89734D8B7650907A52978' +
'1569781569A8357957E55A1895CA38B5D9F875B9C8559AC9262A8' +
'8F60A58D5FA1895C');
OreMask := BitmapFromString(11, 11, 'z78DA73730301033070436' +
'2238B60024C35B84CC0A5923C13F0BB937813F0EB22DE04CC5022' +
'CF04CADD404CC890EA0BFCE2F85D4E4C6A212FF470998FCC0600F' +
'B599CC1');
End;
{--------------------------------------------------------
Function FindOre(MaxTol:Integer):Boolean;
One of my core mining procedures,
this is needed for Mining
different ores and following gas.
--------------------------------------------------------}
Procedure ChangeOreColor;
Begin
If Random(4) = 3 Then OreCounter := 1;
If OreCounter > 3 Then OreCounter := 1;
Case OreCounter Of
1: OreColor:= OreColor1;
2: OreColor:= OreColor2;
3: OreColor:= OreColor3;
End;
If WizzyDebug Then WriteLn('OreCounter = '+IntToStr(OreCounter));
End;
{--------------------------------------------------------
Function GetChatMessage: String;
--------------------------------------------------------}
Function GetChatMessage: String;
Begin
Result := Trim(GetTextAtEx(20, 415, 0, SmallChars, False,
False, 0, 1, 0, 80, False, tr_AllChars));
End;
{--------------------------------------------------------
Function YouSwing: Boolean;
--------------------------------------------------------}
Function YouSwing: Boolean;
Begin
Result := (Pos('swing', GetChatMessage) <> 0)
End;
{--------------------------------------------------------
Function Youmanage: Boolean;
--------------------------------------------------------}
Function Youmanage: Boolean;
Begin
Result := (Pos('anage', GetChatMessage) <> 0)
End;
{--------------------------------------------------------
Function YouManage: Boolean;
--------------------------------------------------------}
Function PowerMine: Boolean;
Var
MMark, Dx, Dy, YMMark: Integer;
Begin
ChangeOreColor;
If (Not FindObjOre2(Dx, Dy, 'ocks', OreColor, OreTol, MinCount)) Then
Begin
OreCounter := OreCounter + 1;
FTWaitAll(1);
Exit;
End;
Status('MyMine;');
Result := True;
GetMousePos(Dx, Dy);
If FindGas(Dx, Dy - 20) Then
Begin
FTWait(40);
Gasses := Gasses + +1;
ReportVars[5] := ReportVars[5] + 1;
WriteLn('Gas Found.');
Exit;
End;
Mouse(Dx, Dy, 0, 0, True);
MarkTime(MMark);
MarkTime(YMMark);
Repeat
If Not FindColorSpiralTolerance(Dx, Dy, OreColor, Dx - 30, Dy - 30, Dx + 30, Dy + 30, 9) Then
Begin
Status('No More FindColor.');
Exit;
End;
FindNormalRandomsTimeEx;
Wait(50);
If TimeFromMark(YMMark) > 3500 Then
Begin
If YouManage Then Exit;
If FindGas(Dx, Dy - 20) Then
Begin
Mouse(646, 82, 3, 3, True);
ReportVars[5] := ReportVars[5] + 1;
Gasses := Gasses + +1;
FTWait(40);
FindPick;
End;
If FindFight Then
Begin
MakeCompass('N');
RunTo(RunDir, True);
MakeCompass('N');
End;
Wait(50);
End;
Until TimeFromMark(MMark) > (3500 + (SecondsToWait * 1000));
End;
{--------------------------------------------------------
Procedure DropAllOres;
--------------------------------------------------------}
Procedure DropAllOres;
Begin
Players[CurrentPlayer].Integer2 := Players[CurrentPlayer].Integer2+
CountItemBmpMaskTol(OreMask, 20, 25);
Players[CurrentPlayer].Integer2 := Players[CurrentPlayer].Integer2+
CountItemBmpTol(Clay, 10);
ReportVars[0] := ReportVars[0] + 1;
Banks := Banks + 1;
Players[CurrentPlayer].Banked := Players[CurrentPlayer].Banked + 1;
ReportVars[1] := ReportVars[1] + CountItemBmpMaskTol(OreMask, 20, 25);
ReportVars[1] := ReportVars[1] + CountItemBmpTol(Clay, 10);;
Ores := Ores + CountItemBmpMaskTol(OreMask, 20, 25);
Ores := Ores + CountItemBmpTol(Clay, 10);
ClickAllItemsBmpMaskTolWait('rop', OreMask, 20, 25, 30+Random(30));
ClickAllItemsBmpTolWait('rop', Clay, 10, 30+Random(30));
DwarfItem;
ClickAllItemsBmpMaskTolWait('rop', OreMask, 20, 25, 30+Random(30));
ClickAllItemsBmpTolWait('rop', Clay, 10, 30+Random(30));
End;
{--------------------------------------------------------
Procedure PlayerReport;
--------------------------------------------------------}
Procedure PlayerReport;
Var
Active: String;
I:Integer;
Begin
For I := 0 to HowManyPlayers - 1 Do
Begin
If Players[i].Active=True Then Active := 'T' Else Active := 'F';
WriteLn( (IntToStr(I))+' : '+Players[I].nick+ ' = '+
Active+'; Mined: '+IntToStr(Players[I].Integer2)+' Ores; M lvl:'+IntToStr(Players[i].Level[15]));
End;
End;
{--------------------------------------------------------
Procedure PowerMinerReport;
--------------------------------------------------------}
Procedure PowerMinerReport;
Begin
ClearDebug;
WriteLn('----------------------------------------------')
WriteLn('')
WriteLn('Powerminer created by Wizzup?.')
WriteLn('Version: '+VersionNumber+'.')
WriteLn('')
WriteLn('Ores Mined and Dropped : '+IntToStr(Ores));
If Gasses > 0 Then WriteLn('Number of avoided gasses: '+IntToStr(Gasses))
Writeln('Worked for '+ TimeRunning);
WriteLn('')
WriteLn('----------------------------------------------')
WriteLn('')
PlayerReport;
SRLRandomsReport;
WriteLn('')
WriteLn('----------------------------------------------')
End;
{--------------------------------------------------------
Procedure DoChats;
--------------------------------------------------------}
Procedure DoChats;
Begin
SetChat('On', 1);
SetChat('On', 1);
SetChat('Friends', 2);
SetChat('Friends', 2);
SetChat('On', 3);
SetChat('On', 3);
End;
{--------------------------------------------------------
Procedure DoChats;
--------------------------------------------------------}
Procedure ClearVars;
Var
I : Integer;
Begin
For I := 1 To 19 Do
ReportVars[I] := 0;
End;
{--------------------------------------------------------
MainLoop
--------------------------------------------------------}
Procedure SetupScript;
Begin
SetupSRL;
ScriptID := '45';
SetupSRLMining;
SetUpSRLReport;
ClearVars;
// GetLatestNews;
// GetLatestVersionNumber;
SRLID := YourSRLSTATSID;
SRLPassword:= YOURSRLSTATSPASS;
ReportVars[2] := 1;
BitMaps;
TradeSameTrader := True;
MinCount := TheMinCount;
DeclarePlayers;
CurrentPlayer := StartPlayer;
LoginPlayer;
BenMouse := True;
MouseSpeed := 10;
If Not Players[CurrentPlayer].Boolean2 Then
Begin
HighestBrightness;
Players[CurrentPlayer].Boolean2 := True;
SetRun(True);
End;
SetOreColor;
If AutoColor Then AutoGetRockColors;
EquipPick := Players[CurrentPlayer].Boolean1;
FindPickHeadColor;
Players[CurrentPlayer].Level[15] := GetSkillLevel('mining');
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
End;
{--------------------------------------------------------
MainLoop
--------------------------------------------------------}
begin
ClearDebug;
ActivateClient;
SetupScript;
MakeCompass('N');
DoChats;
SetRun(True);
NormalRandomsTime := GetSystemTime;
FastRandomsTime := GetSystemTime;
FindTalkTime := GetSystemTime;
Repeat
if Players[CurrentPlayer].Boolean3 = False then
begin
Retaliate(False);
Players[CurrentPlayer].Boolean3:=True;
end;
MarkTime(MyMark);
Repeat
PowerMine;
If DroppedOreColor = 0 Then
DroppedOreColor := GetDroppedOreColor;
FindNormalRandomsTimeEx;
Wait(1);
If NoPick Then Break;
Until (( InventoryCount = 28 )
Or (TimeFromMark( MyMark ) > 1000 * 60 * MinutesPerLoad))
If LoggedIn Then
Begin
DropAllOres;
ItemSelected;
End;
PowerMinerReport;
If NoPick Then
Begin
LogOut;
Wait(5000);
End;
If ( LoggedIn And (Players[CurrentPlayer].Banked mod Loads = 0 )) Then
Begin
Begin
SetChat('Off', 1);
Repeat
FTWaitAll(1);
If(TimeFromMark(MyMark) > 240000) Then
Begin
Logout;
Break;
End;
Until(Not(LoggedIn));
End;
NextPlayer(True);
If Not Players[CurrentPlayer].Boolean2 Then
Begin
HighestBrightness;
Players[CurrentPlayer].Boolean2 := True;
End;
MakeCompass('N');
SetOreColor;
Players[CurrentPlayer].Level[15] :=GetSkillLevel('mining');
EquipPick := Players[CurrentPlayer].Boolean1;
FindPickHeadColor;
DoChats;
SetRun(True);
If AutoColor Then AutoGetRockColors;
PowerMinerReport;
End;
If Not LoggedIn Then
Begin
NextPlayer(False);
If Not Players[CurrentPlayer].Boolean2 Then
Begin
HighestBrightness;
Players[CurrentPlayer].Boolean2 := True;
End;
MakeCompass('N');
NoPick:=False;
SetOreColor;
Players[CurrentPlayer].Level[15] :=GetSkillLevel('mining');
EquipPick := Players[CurrentPlayer].Boolean1;
FindPickHeadColor;
DoChats;
If AutoColor Then AutoGetRockColors;
SetRun(True);
PowerMinerReport;
End;
Until(False);
end.