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.