Sk84lifesam
06-13-2006, 10:30 AM
sorry if this bit isnt part of the SRL include but it now gets stuck after the update thats just happened on the login screen for this script
Program Powerminer;
// [SRL] Powerminer by Wizzup?
// Credits to :
// SRL Devs, and especially Mutant for his help on cases... lol.
// Thanks Mutant! haha.
// Kaitnieks for Scar.
// Stupid3ooo for his still good working Mining procedures.
// WT-Fakawi for everything.....
{.include SRL\SRL.scar}
{.include SRL\SRL\skill\Mining.scar}
// Gas is working now... well... most of the time...
// Otherwhise you COULD go to line 247 in Mining.scar, and Change :
// if(count>150)then //if more than 15% change
// To :
// if(count>80)then //if more than 8% change
{ OVERALL NOTE : WHEN USING MULTIPLE PICKAXES,
SCRIPT WILL NOT PICK UP PICKAXEHEAD}
Const
StartPlayer = 1; // Player you wish to start with.
Loads = 2; // Loads per User.
SetMouseSpeed = 25; // 25 Would be fineUseRandomSpeech, thats when not using BenMouse.
RunDir = 'N'; // Direction to run to in case of a Fight.
OreTol = 1; // 1 When using AutoColor, 9 without AutoColor.
MinutesPerLoad = 5; // Maximum minutes per Load.
LargeReport = True; // Report Per Player ?
AutoColor = True; // Want to try to get more accurate colors?
NewOres = True; // True when using Rimmington ores.
OreSecondsToWait = 8; // Second to wait before mining another rock.
DropOresInDir = False; // False if you do not want to drop ores in certain dir.
DoRunFar = False; // Run Far Away From rocks?
FirstOreDir = 'None'; // If RunToDiffOrePlaces = True; Then this does not really matter.
RunToDiffOrePlaces = True; // Want to randomly change direction we are running to?
DoCallibrate = False; // Walk to Mining symbol every now and then?
UseAntiBan = True; // Use AntiBan Procedures?
UseBenMouse = False; // Use BenLand100's great mouse procedure ?
Var DirectionForOres:String;
Var North,South,West,East,None:Integer;
// ANTIBAN // // ANTIBAN // // ANTIBAN // // ANTIBAN // // ANTIBAN //
Const
UseCamera = True;
UseMovement = True;
UseGameTabs = True;
UseGetSkill = True;
WhatSkill = 'Mining'; // Skill to check, for Antiban.
UseIdleTiming = True;
UseDraggingItem = True;
UseDoBoredHuman = True;
HowOftenAntiBan = 500;
UseRandomSpeech = False; // True for random Speech.
NumberOfLines = 5; // For Random Speech, so you can add some speech.
// ANTIBAN // // ANTIBAN // // ANTIBAN // // ANTIBAN // // ANTIBAN //
// You can set these colors, so the tolerance will have to be less high.
// Or just set AutoColor to True.
Const
CopperColor = 5476070;
TinColor = 9277080;
ClayColor = 4553880;
IronColor = 2898528;
SilverColor = 12434885;
CoalColor = 2834753;
GoldColor = 5161431;
MithrilColor = 7359564;
AdamantColor = 6322272;
RuniteColor = 0;
Var Clay,Ores,SecondsToWait,
G,H,MyMark,PickaxeMask,
OreMask: Integer;
// *************************** //
Procedure BitMaps;
Begin
Clay := BitmapFromString(4, 4, '86714C89734D8B7650907A52978' +
'1569781569A8357957E55A1895CA38B5D9F875B9C8559AC92 62A8' +
'8F60A58D5FA1895C');
PickaxeMask := BitmapFromString(18, 12, 'z78DA3330400037' +
'3030C001F0CB1203DC3000EDEC22D555F4B48B9E3652622FE 5AE2' +
'5DE04EA86097E7B89497B948418252AA99B472889714CBDF4 2C1F' +
'7099498BBC836C26005E85072C');
OreMask := BitmapFromString(11, 11, 'z78DA73730301033070436' +
'2238B60024C35B84CC0A5923C13F0BB937813F0EB22DE04CC 5022' +
'CF04CADD404CC890EA0BFCE2F85D4E4C6A212FF470998FCC0 600F' +
'B599CC1');
End;
// *************************** //
Procedure DeclarePlayers;
Begin
HowManyPlayers := 6;
NumberOfPlayers( HowManyPlayers );
CurrentPlayer := StartPlayer;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active:=True;
Players[0].String1 := ''; // Primairy Ore Color
Players[0].String2 := ''; // Secondairy Ore Color wont be mined as much as 1.
Players[0].String3 := ''; // Third Ore Color, won't be mined as much as 1 and 2.
Players[0].Boolean1 := True; // Is The Pick Equipped?
Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := '';
Players[1].Active:=True;
Players[1].String1 := ''; // Primairy Ore Color
Players[1].String2 := ''; // Secondairy Ore Color wont be mined as much as 1.
Players[1].String3 := ''; // Third Ore Color, won't be mined as much as 1 and 2.
Players[1].Boolean1 := True; // Is The Pick Equipped?
Players[2].Name := '';
Players[2].Pass := '';
Players[2].Nick := '';
Players[2].Active:=True;
Players[2].String1 := ''; // Primairy Ore Color
Players[2].String2 := ''; // Secondairy Ore Color wont be mined as much as 1.
Players[2].String3 := ''; // Third Ore Color, won't be mined as much as 1 and 2.
Players[2].Boolean1 := True; // Is The Pick Equipped?
Players[3].Name := '';
Players[3].Pass := '';
Players[3].Nick := '';
Players[3].Active:=True;
Players[3].String1 := ''; // Primairy Ore Color
Players[3].String2 := ''; // Secondairy Ore Color wont be mined as much as 1.
Players[3].String3 := ''; // Third Ore Color, won't be mined as much as 1 and 2.
Players[3].Boolean1 := True; // Is The Pick Equipped?
Players[4].Name := '';
Players[4].Pass := '';
Players[4].Nick := '';
Players[4].Active:=True;
Players[4].String1 := 'Copper'; // Primairy Ore Color
Players[4].String2 := 'Copper'; // Secondairy Ore Color wont be mined as much as 1.
Players[4].String3 := 'Copper'; // Third Ore Color, won't be mined as much as 1 and 2.
Players[4].Boolean1 := True; // Is The Pick Equipped?
Players[5].Name := '';
Players[5].Pass := '';
Players[5].Nick := '';
Players[5].Active:=True;
Players[5].String1 := 'Copper'; // Primairy Ore Color
Players[5].String2 := 'Copper'; // Secondairy Ore Color wont be mined as much as 1.
Players[5].String3 := 'Copper'; // Third Ore Color, won't be mined as much as 1 and 2.
Players[5].Boolean1 := True; // Is The Pick Equipped?
Writeln( IntToStr ( HowManyPlayers ) + ' Players' );
End;
// *************************** //
Procedure SetOreColor;
Begin
Case 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 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 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;
WriteLn('Old OreColor1 = '+IntToStr(OreColor1)+'; and Old OreColor2 = '+
IntToStr(OreColor2)+'; and Old OreColor3 = '+IntToStr(OreColor3)+';');
End;
// *************************** //
Procedure AutoSetColor(NewOres:Boolean);
Var Ax,Ay:Integer;
Begin
Wait(4000);
WriteLn('AutoColor is now gathering the colors..');
If NewOres Then
Begin
If FindObj(Ax,Ay,'ine',OreColor1,9) Then
Begin
OreColor1 := GetColor(Ax,Ay);
WriteLn('AutoColor OreColor1 = '+IntToStr(OreColor1));
End;
If Players[0].String1 <> Players[0].String2 Then
Begin
If FindObj(Ax,Ay,'ine',OreColor2,9) Then
Begin
OreColor2 := GetColor(Ax,Ay);
WriteLn('AutoColor OreColor2 = '+IntToStr(OreColor2));
End;
End;
If (Players[0].String1 <> Players[0].String3) Or
(Players[0].String2 <> Players[0].String3) Then
Begin
If FindObj(Ax,Ay,'ine',OreColor3,9) Then
Begin
OreColor3 := GetColor(Ax,Ay);
WriteLn('AutoColor OreColor3 = '+IntToStr(OreColor3));
End;
End;
End
Else
Begin
If FindObj(Ax,Ay,'ine',OreColor1,9) Then
Begin
Repeat
Ax := Ax + 1;
MMouse(Ax,Ay,0,0);
WriteLn(' Ax = '+IntToStr(Ax));
Until Not ReadUpText('ine');
OreColor1 := GetColor(Ax-5,Ay);
WriteLn('AutoColor OreColor1 = '+IntToStr(OreColor1));
End;
If Players[0].String1 <> Players[0].String2 Then
Begin
If FindObj(Ax,Ay,'ine',OreColor2,9) Then
Begin
Repeat
Ax := Ax + 1;
MMouse(Ax,Ay,0,0);
WriteLn(' Ax = '+IntToStr(Ax));
Until Not ReadUpText('ine');
OreColor2 := GetColor(Ax-5,Ay);
WriteLn('AutoColor OreColor2 = '+IntToStr(OreColor2));
End;
End
Else OreColor2 := OreColor1;
If (Players[0].String1 <> Players[0].String3) Or
(Players[0].String2 <> Players[0].String3) Then
Begin
If FindObj(Ax,Ay,'ine',OreColor3,9) Then
Begin
Repeat
Ax := Ax + 1;
MMouse(Ax,Ay,0,0);
WriteLn(' Ax = '+IntToStr(Ax));
Until Not ReadUpText('ine');
OreColor3 := GetColor(Ax-5,Ay);
WriteLn('AutoColor OreColor3 = '+IntToStr(OreColor3));
End;
End
Else OreColor3 := OreColor2;
End;
End;
// *************************** //
Procedure RandomDirection;
Var Direction:Integer;
Begin
Direction := Direction+1+Random(5);
Case Direction Of
1: Begin DirectionForOres := 'N'; North := North+1; End;
2: Begin DirectionForOres := 'E'; East := East+1; End;
3: Begin DirectionForOres := 'S'; South := South+1; End;
4: Begin DirectionForOres := 'W'; West := West+1; End;
5: Begin DirectionForOres := 'None'; None := None+1; End;
End;
Direction := 0;
End;
// *************************** //
Function CountItemBmpMaskTol(bmp, tol, ctol: Integer) : Integer;
var
used, i, e : Integer;
begin
e := 0;
i := 0;
used := 0;
while (i < 6) do
begin
if (i = 5) and (e < 8) then
begin
i := 0;
e := e + 1;
end;
if (FindBitMapMaskTolerance(bmp, x, y, (570 + 39 * i), (214 + 35 * e), (609 + 39 * i), (249 + 35 * e), tol, ctol)) then
used := used + 1;
if (i = 4) and (e = 7) then
break;
i := i + 1;
end;
Result := used;
end;
// *************************** //
procedure ClickAllItemsBmpMaskTolWait(optionx: String; bmp, tol, ctol, waitnum: Integer);//based off PPLSUQBAWLZ's InventoryCount
var
i, e : Integer;
begin
e := 0;
i := 0;
GameTab(4);
while (i < 6) do
begin
if (i = 5) and (e < 8) then
begin
i := 0;
e := e + 1;
end;
if (FindBitmapMaskTolerance(bmp, x, y, (570 + 39 * i), (214 + 35 * e), (609 + 39 * i), (249 + 35 * e), tol,ctol)) then
begin
MMouse(x, y, 0, 0)
if (not (optionx = '')) then
begin
Mouse(x, y, 0, 0, False);
ChooseOption(x,y,optionx);
end
else
Mouse(x, y, 0, 0, True);
Wait(waitnum);
end;
if (i = 4) and (e = 7) then
break;
i := i + 1;
end;
end;
// *************************** //
Function IsMultiPick(Equipped:Boolean):Boolean;
Begin
If Equipped Then
Begin
GameTab(4);
If CountItemBmpMaskTol(PickaxeMask,20,25) = 0 Then
Begin
GameTab(5);
If Not FindBitMapMaskTolerance(PickaxeMask,x,y,MIX1,MIY1, MIX2,MIY2,20,25) Then Result := False
Else Result := True;
End
Else Result := True;
End
Else
Begin
If CountItemBmpMaskTol(PickaxeMask,20,25) = 0 Then Result := True
Else Result := False;
End;
End;
// *************************** //
Procedure RandomSpeech;
Var Speech:Integer;
Begin
Speech := Speech + 1 + ( Random ( NumberOfLines ) * 5 )
Case Speech Of
1: SendText2('Ghehe');
2: SendText2('Very funny.... Grr');
3: Begin SendText2('hi sweetie. xx'); SendText2('Oops! Was ment in priv chat.') End;
4: SendText2('Mining level? I am '+IntToStr(Players[CurrentPlayer].Level[15])+' hehe =]');
5: SendText2('I like mining and dropping Iron Ore more than banking it');
End;
End;
// *************************** //
Procedure RandomMovement;
Var I:Integer;
Begin
I:=I+1+Random(4);
Case I Of
1: Mouse(MSCX-Random(51), MSCY-Random(51), 5, 5, True);
2: Mouse(MSCX+Random(51), MSCY-Random(51), 5, 5, True);
3: Mouse(MSCX-Random(51), MSCY+Random(51), 5, 5, True);
4: Mouse(MSCX+Random(51), MSCY+Random(51), 5, 5, True);
End;
I:=0;
End;
// *************************** //
Function FindOre(MaxTol:Integer):Boolean;
Var Tol,Ex,Ey:Integer;
Begin
H:=H+1;
For G := 1 to H do
Begin
Case G Of
1: OreColor:= OreColor1;
2: OreColor:= OreColor2;
3: OreColor:= OreColor3;
End;
End;
While (Not (FindColorTolerance(Ex, Ey, OreColor, MSX1, MSY1, MSX2, MSY2, Tol))
And Not (Tol > MaxTol)) Do
Begin
Tol:=Tol+1;
End;
If ((FindColorTolerance(Ex, Ey, OreColor, MSX1,MSY1 ,MSX2, MSY2, Tol))
And Not (Tol > MaxTol)) Then Result:=True;
Tol:=1;
Wait(10);
End;
// *************************** //
Procedure FindOreByCamera(MaxTol:Integer);
Var D,Tol:Integer;
Begin
Tol:=1;
While (Not (FindColorTolerance(X, Y, OreColor, MSX1, MSY1, MSX2, MSY2, Tol))
And Not (D>50) And Not (Tol>MaxTol)) Do
Begin
SendArrowSilentWait((Random(2) * 2) +1, 10);
D:=D+1;
Tol:=Tol+1;
End;
D:=0;
Tol:=1;
Wait(400+Random(200));
End;
// *************************** //
Procedure RandomCameraMovement;
Var D:Integer;
Begin
Repeat
SendArrowSilentWait(1+Random(4), 900+Random(600));
Wait(101+Random(1401));
D:= (D+1+Random(5));
Until(D>5)
D:=0;
SendArrowSilentWait(0,300+Random(200));
End;
// *************************** //
Function Callibrate:Boolean;
Begin
If LoggedIn Then
Begin
If Not FindOre(OreTol) Then
Begin
If FindSymbol(x,y,'mining spot') Then Begin Mouse(X, Y, 2, 2, True) Result:=True; End
Else Begin Wait(1); Result:=False; End;
End;
End;
End;
// *************************** //
Procedure MyAntiBan(Camera, Movement, GameTabs, GetLevel, IdleTiming, DraggingItem,
DoBoredHuman:Boolean; LevelToCheck:String; HowRandom:Integer; DoSpeech:Boolean);
Var D:Integer;
Begin
D:=D+1+Random(HowRandom);
Case D Of
1: If Camera Then RandomCameraMovement;
2: If Movement Then RandomMovement;
3: If GameTabs Then GameTab(1+Random(13));
4: If GetLevel Then Players[CurrentPlayer].Level[15] :=GetSkillLevel(LevelToCheck);
5: If IdleTiming Then IdleTime(1000+Random(500), 5, 0.5)
6: If DraggingItem Then DragItem(1+Random(27), 1+Random(28));
7: If DoBoredHuman Then BoredHuman;
8: Players[CurrentPlayer].Level[15] :=GetSkillLevel('mining');
9: If DoSpeech Then RandomSpeech;
End;
D:=0;
End;
// *************************** //
Procedure PowerMine;
Var Dx,Dy,Ex,Ey:Integer;
Begin
If FindOre(OreTol) Then
Begin
If FindObj(Dx, Dy, 'Mine', OreColor, 10) Then
Begin
H:=0;
If Not GasCheck(Dx, Dy) Then
Begin
If Random (9) < 7 Then Mouse(Dx, Dy, 0, 0, True)
Else
Begin
Mouse(Dx, Dy, 0, 0, False);
ChooseOption(Ex, Ey, 'ine');
End;
If (FlagPresent) Then
Begin
Flag;
Wait(500+Random(500));
End;
MarkTime(Mark);
Repeat
Wait(100);
FindNormalRandoms;
FindPick;
If GasCheck(Dx, Dy ) Then Mouse(265, 173, 2, 2, True);
If NoPick Then Break;
If FindFight Then Begin Face('N'); RunTo(RunDir, DoRunFar); End;
Until ((TimeFromMark(Mark) > (1000 * SecondsToWait))
Or (FindColor(X, Y, 0,51, 421, 51, 421))
Or (FindColor(X, Y, 7981, 71,392 ,71, 392)))
If FindColor(X, Y, 7981, 71, 392, 71, 392) Then
Begin
ClicktoContinue;
ClicktoContinue;
End;
End;
End;
End
Else Begin If H>3 Then H:=0; End;
End;
// *************************** //
procedure RunToDropOres(dir: String; runfar: Boolean);
begin
if(runfar)then
case UpperCase(dir) of
'N': MouseFlag(648, 83-63, 5, 5)
'S': MouseFlag(648, 83+63, 5, 5)
'E': MouseFlag(648+63, 83, 5, 5)
'W': MouseFlag(648-63, 83, 5, 5)
end;
if(not runfar)then
case UpperCase(dir) of
'N': MouseFlag(648, 83-30, 5, 5)
'S': MouseFlag(648, 83+30, 5, 5)
'E': MouseFlag(648+30, 83, 5, 5)
'W': MouseFlag(648-30, 83, 5, 5)
end;
end;
// *************************** //
procedure RunBackToOres(dir: String; runfar: Boolean);
begin
if(runfar)then
case UpperCase(dir) of
'N': MouseFlag(648, 83+63, 5, 5)
'S': MouseFlag(648, 83-63, 5, 5)
'E': MouseFlag(648-63, 83, 5, 5)
'W': MouseFlag(648+63, 83, 5, 5)
end;
if(not runfar)then
case UpperCase(dir) of
'N': MouseFlag(648, 83+30, 5, 5)
'S': MouseFlag(648, 83-30, 5, 5)
'E': MouseFlag(648-30, 83, 5, 5)
'W': MouseFlag(648+30, 83, 5, 5)
end;
GameTab(4);
end;
// *************************** //
Procedure DropAllOres;
Begin
If (RunToDiffOrePlaces And DropOresInDir) Then RandomDirection;
If DirectionForOres <> 'None' Then
Begin
If DropOresInDir Then Face('N');
If DropOresInDir Then RunToDropOres(DirectionForOres,DoRunFar);
End;
Players[CurrentPlayer].Integer2:= Players[CurrentPlayer].Integer2+
CountItemBmpMaskTol(OreMask, 20, 25);
Players[CurrentPlayer].Integer2:= Players[CurrentPlayer].Integer2+
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;
If UseAntiBan Then MyAntiBan(UseCamera,UseMovement,
UseGameTabs,UseGetSkill,UseIdleTiming,UseDraggingI tem,
UseDoBoredHuman,WhatSkill,HowOftenAntiBan,UseRando mSpeech);
Players[CurrentPlayer].Integer1:=Players[CurrentPlayer].Integer1+1;
If DirectionForOres <> 'None' Then
Begin
If DropOresInDir Then Face('N');
If DropOresInDir Then RunBackToOres(DirectionForOres,DoRunFar);
End;
End;
// *************************** //
Procedure PlayerReport;
Var Active: String;
Var I:Integer;
Begin
For I := 0 to HowManyPlayers - 1 Do
Begin
If Players[i].Active=True Then Active := 'True' Else Active := 'False';
WriteLn( (IntToStr(I))+' : '+Players[I].name+ ' = '+
Active+'; Mined and dropped : '+IntToStr(Players[I].Integer2)+' Ores;')
WriteLn(' Mining Level : '+IntToStr(Players[i].Level[15]));
WriteLn('');
End;
End;
// *************************** //
Procedure PowerMinerReport;
Begin
WriteLn('***************************************** ******')
WriteLn('')
WriteLn('Ores Mined and Dropped : '+IntToStr(Ores));
Writeln('Worked for '+ TimeRunning);
If RunToDiffOrePlaces Then WriteLn('Ran to the North '+IntToStr(North)+' times.');
If RunToDiffOrePlaces Then WriteLn('Ran to the East '+IntToStr(East)+ ' times.');
If RunToDiffOrePlaces Then WriteLn('Ran to the South '+IntToStr(South)+' times.');
If RunToDiffOrePlaces Then WriteLn('Ran to the West '+IntToStr(West)+ ' times.');
If RunToDiffOrePlaces Then WriteLn('Stayed at place '+IntToStr(None)+ ' times.');
WriteLn('')
WriteLn('***************************************** ******')
WriteLn('')
If LargeReport Then PlayerReport;
WriteLn('')
WriteLn('***************************************** ******')
End;
// *************************** //
Procedure SetupScript;
Begin
SetupSRL;
SetupSRLMining;
BitMaps;
BenMouse := UseBenMouse;
MouseSpeed := SetMouseSpeed;
DeclarePlayers;
CurrentPlayer := StartPlayer;
LoginPlayer;
SetOreColor;
If AutoColor Then AutoSetColor(NewOres);
FindPickHeadColor;
SecondsToWait:=OreSecondsToWait;
Players[CurrentPlayer].Level[15] :=GetSkillLevel('mining');
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
DirectionForOres:=FirstOreDir;
End;
Procedure DoChats;
Begin
SetChat('On', 1);
SetChat('On', 1);
SetChat('Off', 2);
SetChat('Off', 2);
SetChat('On', 3);
SetChat('On', 3);
End;
// *************************** //
Begin
ClearDebug;
SetupScript;
SetMouseMode(False);
DoChats;
SetRun(True);
FindOreByCamera(OreTol);
Repeat
MarkTime(MyMark)
Repeat
PowerMine;
FindNormalRandoms;
If UseAntiBan Then MyAntiBan(UseCamera,UseMovement,
UseGameTabs,UseGetSkill,UseIdleTiming,UseDraggingI tem,
UseDoBoredHuman,WhatSkill,HowOftenAntiBan,UseRando mSpeech);
If NoPick Then
Begin
If Not IsMultiPick(Players[CurrentPlayer].Boolean1) Then
Begin
Logout;
Break;
End
Else NoPick:=False;
End;
Until (( InventoryCount = 28 )
Or (TimeFromMark( MyMark ) > 1000 * 60 * MinutesPerLoad))
If (Random (5) > 3) Then SetRun(True);
If LoggedIn Then DropAllOres;
If DoCallibrate Then Callibrate;
PowerMinerReport;
If ( LoggedIn And (Players[CurrentPlayer].Integer1 mod Loads = 0 )) Then
Begin
LogOut;
NextPlayer(True);
SetOreColor;
If AutoColor Then AutoSetColor(NewOres);
Players[CurrentPlayer].Level[15] :=GetSkillLevel('mining');
EquipPick := Players[CurrentPlayer].Boolean1;
FindPickHeadColor;
FindOreByCamera(OreTol);
DoChats;
End;
If Not LoggedIn Then
Begin
NextPlayer(False);
NoPick:=False;
SetOreColor;
If AutoColor Then AutoSetColor(NewOres);
Players[CurrentPlayer].Level[15] :=GetSkillLevel('mining');
EquipPick := Players[CurrentPlayer].Boolean1;
FindPickHeadColor;
FindOreByCamera(OreTol);
DoChats;
End;
Until(False);
End.
Program Powerminer;
// [SRL] Powerminer by Wizzup?
// Credits to :
// SRL Devs, and especially Mutant for his help on cases... lol.
// Thanks Mutant! haha.
// Kaitnieks for Scar.
// Stupid3ooo for his still good working Mining procedures.
// WT-Fakawi for everything.....
{.include SRL\SRL.scar}
{.include SRL\SRL\skill\Mining.scar}
// Gas is working now... well... most of the time...
// Otherwhise you COULD go to line 247 in Mining.scar, and Change :
// if(count>150)then //if more than 15% change
// To :
// if(count>80)then //if more than 8% change
{ OVERALL NOTE : WHEN USING MULTIPLE PICKAXES,
SCRIPT WILL NOT PICK UP PICKAXEHEAD}
Const
StartPlayer = 1; // Player you wish to start with.
Loads = 2; // Loads per User.
SetMouseSpeed = 25; // 25 Would be fineUseRandomSpeech, thats when not using BenMouse.
RunDir = 'N'; // Direction to run to in case of a Fight.
OreTol = 1; // 1 When using AutoColor, 9 without AutoColor.
MinutesPerLoad = 5; // Maximum minutes per Load.
LargeReport = True; // Report Per Player ?
AutoColor = True; // Want to try to get more accurate colors?
NewOres = True; // True when using Rimmington ores.
OreSecondsToWait = 8; // Second to wait before mining another rock.
DropOresInDir = False; // False if you do not want to drop ores in certain dir.
DoRunFar = False; // Run Far Away From rocks?
FirstOreDir = 'None'; // If RunToDiffOrePlaces = True; Then this does not really matter.
RunToDiffOrePlaces = True; // Want to randomly change direction we are running to?
DoCallibrate = False; // Walk to Mining symbol every now and then?
UseAntiBan = True; // Use AntiBan Procedures?
UseBenMouse = False; // Use BenLand100's great mouse procedure ?
Var DirectionForOres:String;
Var North,South,West,East,None:Integer;
// ANTIBAN // // ANTIBAN // // ANTIBAN // // ANTIBAN // // ANTIBAN //
Const
UseCamera = True;
UseMovement = True;
UseGameTabs = True;
UseGetSkill = True;
WhatSkill = 'Mining'; // Skill to check, for Antiban.
UseIdleTiming = True;
UseDraggingItem = True;
UseDoBoredHuman = True;
HowOftenAntiBan = 500;
UseRandomSpeech = False; // True for random Speech.
NumberOfLines = 5; // For Random Speech, so you can add some speech.
// ANTIBAN // // ANTIBAN // // ANTIBAN // // ANTIBAN // // ANTIBAN //
// You can set these colors, so the tolerance will have to be less high.
// Or just set AutoColor to True.
Const
CopperColor = 5476070;
TinColor = 9277080;
ClayColor = 4553880;
IronColor = 2898528;
SilverColor = 12434885;
CoalColor = 2834753;
GoldColor = 5161431;
MithrilColor = 7359564;
AdamantColor = 6322272;
RuniteColor = 0;
Var Clay,Ores,SecondsToWait,
G,H,MyMark,PickaxeMask,
OreMask: Integer;
// *************************** //
Procedure BitMaps;
Begin
Clay := BitmapFromString(4, 4, '86714C89734D8B7650907A52978' +
'1569781569A8357957E55A1895CA38B5D9F875B9C8559AC92 62A8' +
'8F60A58D5FA1895C');
PickaxeMask := BitmapFromString(18, 12, 'z78DA3330400037' +
'3030C001F0CB1203DC3000EDEC22D555F4B48B9E3652622FE 5AE2' +
'5DE04EA86097E7B89497B948418252AA99B472889714CBDF4 2C1F' +
'7099498BBC836C26005E85072C');
OreMask := BitmapFromString(11, 11, 'z78DA73730301033070436' +
'2238B60024C35B84CC0A5923C13F0BB937813F0EB22DE04CC 5022' +
'CF04CADD404CC890EA0BFCE2F85D4E4C6A212FF470998FCC0 600F' +
'B599CC1');
End;
// *************************** //
Procedure DeclarePlayers;
Begin
HowManyPlayers := 6;
NumberOfPlayers( HowManyPlayers );
CurrentPlayer := StartPlayer;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active:=True;
Players[0].String1 := ''; // Primairy Ore Color
Players[0].String2 := ''; // Secondairy Ore Color wont be mined as much as 1.
Players[0].String3 := ''; // Third Ore Color, won't be mined as much as 1 and 2.
Players[0].Boolean1 := True; // Is The Pick Equipped?
Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := '';
Players[1].Active:=True;
Players[1].String1 := ''; // Primairy Ore Color
Players[1].String2 := ''; // Secondairy Ore Color wont be mined as much as 1.
Players[1].String3 := ''; // Third Ore Color, won't be mined as much as 1 and 2.
Players[1].Boolean1 := True; // Is The Pick Equipped?
Players[2].Name := '';
Players[2].Pass := '';
Players[2].Nick := '';
Players[2].Active:=True;
Players[2].String1 := ''; // Primairy Ore Color
Players[2].String2 := ''; // Secondairy Ore Color wont be mined as much as 1.
Players[2].String3 := ''; // Third Ore Color, won't be mined as much as 1 and 2.
Players[2].Boolean1 := True; // Is The Pick Equipped?
Players[3].Name := '';
Players[3].Pass := '';
Players[3].Nick := '';
Players[3].Active:=True;
Players[3].String1 := ''; // Primairy Ore Color
Players[3].String2 := ''; // Secondairy Ore Color wont be mined as much as 1.
Players[3].String3 := ''; // Third Ore Color, won't be mined as much as 1 and 2.
Players[3].Boolean1 := True; // Is The Pick Equipped?
Players[4].Name := '';
Players[4].Pass := '';
Players[4].Nick := '';
Players[4].Active:=True;
Players[4].String1 := 'Copper'; // Primairy Ore Color
Players[4].String2 := 'Copper'; // Secondairy Ore Color wont be mined as much as 1.
Players[4].String3 := 'Copper'; // Third Ore Color, won't be mined as much as 1 and 2.
Players[4].Boolean1 := True; // Is The Pick Equipped?
Players[5].Name := '';
Players[5].Pass := '';
Players[5].Nick := '';
Players[5].Active:=True;
Players[5].String1 := 'Copper'; // Primairy Ore Color
Players[5].String2 := 'Copper'; // Secondairy Ore Color wont be mined as much as 1.
Players[5].String3 := 'Copper'; // Third Ore Color, won't be mined as much as 1 and 2.
Players[5].Boolean1 := True; // Is The Pick Equipped?
Writeln( IntToStr ( HowManyPlayers ) + ' Players' );
End;
// *************************** //
Procedure SetOreColor;
Begin
Case 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 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 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;
WriteLn('Old OreColor1 = '+IntToStr(OreColor1)+'; and Old OreColor2 = '+
IntToStr(OreColor2)+'; and Old OreColor3 = '+IntToStr(OreColor3)+';');
End;
// *************************** //
Procedure AutoSetColor(NewOres:Boolean);
Var Ax,Ay:Integer;
Begin
Wait(4000);
WriteLn('AutoColor is now gathering the colors..');
If NewOres Then
Begin
If FindObj(Ax,Ay,'ine',OreColor1,9) Then
Begin
OreColor1 := GetColor(Ax,Ay);
WriteLn('AutoColor OreColor1 = '+IntToStr(OreColor1));
End;
If Players[0].String1 <> Players[0].String2 Then
Begin
If FindObj(Ax,Ay,'ine',OreColor2,9) Then
Begin
OreColor2 := GetColor(Ax,Ay);
WriteLn('AutoColor OreColor2 = '+IntToStr(OreColor2));
End;
End;
If (Players[0].String1 <> Players[0].String3) Or
(Players[0].String2 <> Players[0].String3) Then
Begin
If FindObj(Ax,Ay,'ine',OreColor3,9) Then
Begin
OreColor3 := GetColor(Ax,Ay);
WriteLn('AutoColor OreColor3 = '+IntToStr(OreColor3));
End;
End;
End
Else
Begin
If FindObj(Ax,Ay,'ine',OreColor1,9) Then
Begin
Repeat
Ax := Ax + 1;
MMouse(Ax,Ay,0,0);
WriteLn(' Ax = '+IntToStr(Ax));
Until Not ReadUpText('ine');
OreColor1 := GetColor(Ax-5,Ay);
WriteLn('AutoColor OreColor1 = '+IntToStr(OreColor1));
End;
If Players[0].String1 <> Players[0].String2 Then
Begin
If FindObj(Ax,Ay,'ine',OreColor2,9) Then
Begin
Repeat
Ax := Ax + 1;
MMouse(Ax,Ay,0,0);
WriteLn(' Ax = '+IntToStr(Ax));
Until Not ReadUpText('ine');
OreColor2 := GetColor(Ax-5,Ay);
WriteLn('AutoColor OreColor2 = '+IntToStr(OreColor2));
End;
End
Else OreColor2 := OreColor1;
If (Players[0].String1 <> Players[0].String3) Or
(Players[0].String2 <> Players[0].String3) Then
Begin
If FindObj(Ax,Ay,'ine',OreColor3,9) Then
Begin
Repeat
Ax := Ax + 1;
MMouse(Ax,Ay,0,0);
WriteLn(' Ax = '+IntToStr(Ax));
Until Not ReadUpText('ine');
OreColor3 := GetColor(Ax-5,Ay);
WriteLn('AutoColor OreColor3 = '+IntToStr(OreColor3));
End;
End
Else OreColor3 := OreColor2;
End;
End;
// *************************** //
Procedure RandomDirection;
Var Direction:Integer;
Begin
Direction := Direction+1+Random(5);
Case Direction Of
1: Begin DirectionForOres := 'N'; North := North+1; End;
2: Begin DirectionForOres := 'E'; East := East+1; End;
3: Begin DirectionForOres := 'S'; South := South+1; End;
4: Begin DirectionForOres := 'W'; West := West+1; End;
5: Begin DirectionForOres := 'None'; None := None+1; End;
End;
Direction := 0;
End;
// *************************** //
Function CountItemBmpMaskTol(bmp, tol, ctol: Integer) : Integer;
var
used, i, e : Integer;
begin
e := 0;
i := 0;
used := 0;
while (i < 6) do
begin
if (i = 5) and (e < 8) then
begin
i := 0;
e := e + 1;
end;
if (FindBitMapMaskTolerance(bmp, x, y, (570 + 39 * i), (214 + 35 * e), (609 + 39 * i), (249 + 35 * e), tol, ctol)) then
used := used + 1;
if (i = 4) and (e = 7) then
break;
i := i + 1;
end;
Result := used;
end;
// *************************** //
procedure ClickAllItemsBmpMaskTolWait(optionx: String; bmp, tol, ctol, waitnum: Integer);//based off PPLSUQBAWLZ's InventoryCount
var
i, e : Integer;
begin
e := 0;
i := 0;
GameTab(4);
while (i < 6) do
begin
if (i = 5) and (e < 8) then
begin
i := 0;
e := e + 1;
end;
if (FindBitmapMaskTolerance(bmp, x, y, (570 + 39 * i), (214 + 35 * e), (609 + 39 * i), (249 + 35 * e), tol,ctol)) then
begin
MMouse(x, y, 0, 0)
if (not (optionx = '')) then
begin
Mouse(x, y, 0, 0, False);
ChooseOption(x,y,optionx);
end
else
Mouse(x, y, 0, 0, True);
Wait(waitnum);
end;
if (i = 4) and (e = 7) then
break;
i := i + 1;
end;
end;
// *************************** //
Function IsMultiPick(Equipped:Boolean):Boolean;
Begin
If Equipped Then
Begin
GameTab(4);
If CountItemBmpMaskTol(PickaxeMask,20,25) = 0 Then
Begin
GameTab(5);
If Not FindBitMapMaskTolerance(PickaxeMask,x,y,MIX1,MIY1, MIX2,MIY2,20,25) Then Result := False
Else Result := True;
End
Else Result := True;
End
Else
Begin
If CountItemBmpMaskTol(PickaxeMask,20,25) = 0 Then Result := True
Else Result := False;
End;
End;
// *************************** //
Procedure RandomSpeech;
Var Speech:Integer;
Begin
Speech := Speech + 1 + ( Random ( NumberOfLines ) * 5 )
Case Speech Of
1: SendText2('Ghehe');
2: SendText2('Very funny.... Grr');
3: Begin SendText2('hi sweetie. xx'); SendText2('Oops! Was ment in priv chat.') End;
4: SendText2('Mining level? I am '+IntToStr(Players[CurrentPlayer].Level[15])+' hehe =]');
5: SendText2('I like mining and dropping Iron Ore more than banking it');
End;
End;
// *************************** //
Procedure RandomMovement;
Var I:Integer;
Begin
I:=I+1+Random(4);
Case I Of
1: Mouse(MSCX-Random(51), MSCY-Random(51), 5, 5, True);
2: Mouse(MSCX+Random(51), MSCY-Random(51), 5, 5, True);
3: Mouse(MSCX-Random(51), MSCY+Random(51), 5, 5, True);
4: Mouse(MSCX+Random(51), MSCY+Random(51), 5, 5, True);
End;
I:=0;
End;
// *************************** //
Function FindOre(MaxTol:Integer):Boolean;
Var Tol,Ex,Ey:Integer;
Begin
H:=H+1;
For G := 1 to H do
Begin
Case G Of
1: OreColor:= OreColor1;
2: OreColor:= OreColor2;
3: OreColor:= OreColor3;
End;
End;
While (Not (FindColorTolerance(Ex, Ey, OreColor, MSX1, MSY1, MSX2, MSY2, Tol))
And Not (Tol > MaxTol)) Do
Begin
Tol:=Tol+1;
End;
If ((FindColorTolerance(Ex, Ey, OreColor, MSX1,MSY1 ,MSX2, MSY2, Tol))
And Not (Tol > MaxTol)) Then Result:=True;
Tol:=1;
Wait(10);
End;
// *************************** //
Procedure FindOreByCamera(MaxTol:Integer);
Var D,Tol:Integer;
Begin
Tol:=1;
While (Not (FindColorTolerance(X, Y, OreColor, MSX1, MSY1, MSX2, MSY2, Tol))
And Not (D>50) And Not (Tol>MaxTol)) Do
Begin
SendArrowSilentWait((Random(2) * 2) +1, 10);
D:=D+1;
Tol:=Tol+1;
End;
D:=0;
Tol:=1;
Wait(400+Random(200));
End;
// *************************** //
Procedure RandomCameraMovement;
Var D:Integer;
Begin
Repeat
SendArrowSilentWait(1+Random(4), 900+Random(600));
Wait(101+Random(1401));
D:= (D+1+Random(5));
Until(D>5)
D:=0;
SendArrowSilentWait(0,300+Random(200));
End;
// *************************** //
Function Callibrate:Boolean;
Begin
If LoggedIn Then
Begin
If Not FindOre(OreTol) Then
Begin
If FindSymbol(x,y,'mining spot') Then Begin Mouse(X, Y, 2, 2, True) Result:=True; End
Else Begin Wait(1); Result:=False; End;
End;
End;
End;
// *************************** //
Procedure MyAntiBan(Camera, Movement, GameTabs, GetLevel, IdleTiming, DraggingItem,
DoBoredHuman:Boolean; LevelToCheck:String; HowRandom:Integer; DoSpeech:Boolean);
Var D:Integer;
Begin
D:=D+1+Random(HowRandom);
Case D Of
1: If Camera Then RandomCameraMovement;
2: If Movement Then RandomMovement;
3: If GameTabs Then GameTab(1+Random(13));
4: If GetLevel Then Players[CurrentPlayer].Level[15] :=GetSkillLevel(LevelToCheck);
5: If IdleTiming Then IdleTime(1000+Random(500), 5, 0.5)
6: If DraggingItem Then DragItem(1+Random(27), 1+Random(28));
7: If DoBoredHuman Then BoredHuman;
8: Players[CurrentPlayer].Level[15] :=GetSkillLevel('mining');
9: If DoSpeech Then RandomSpeech;
End;
D:=0;
End;
// *************************** //
Procedure PowerMine;
Var Dx,Dy,Ex,Ey:Integer;
Begin
If FindOre(OreTol) Then
Begin
If FindObj(Dx, Dy, 'Mine', OreColor, 10) Then
Begin
H:=0;
If Not GasCheck(Dx, Dy) Then
Begin
If Random (9) < 7 Then Mouse(Dx, Dy, 0, 0, True)
Else
Begin
Mouse(Dx, Dy, 0, 0, False);
ChooseOption(Ex, Ey, 'ine');
End;
If (FlagPresent) Then
Begin
Flag;
Wait(500+Random(500));
End;
MarkTime(Mark);
Repeat
Wait(100);
FindNormalRandoms;
FindPick;
If GasCheck(Dx, Dy ) Then Mouse(265, 173, 2, 2, True);
If NoPick Then Break;
If FindFight Then Begin Face('N'); RunTo(RunDir, DoRunFar); End;
Until ((TimeFromMark(Mark) > (1000 * SecondsToWait))
Or (FindColor(X, Y, 0,51, 421, 51, 421))
Or (FindColor(X, Y, 7981, 71,392 ,71, 392)))
If FindColor(X, Y, 7981, 71, 392, 71, 392) Then
Begin
ClicktoContinue;
ClicktoContinue;
End;
End;
End;
End
Else Begin If H>3 Then H:=0; End;
End;
// *************************** //
procedure RunToDropOres(dir: String; runfar: Boolean);
begin
if(runfar)then
case UpperCase(dir) of
'N': MouseFlag(648, 83-63, 5, 5)
'S': MouseFlag(648, 83+63, 5, 5)
'E': MouseFlag(648+63, 83, 5, 5)
'W': MouseFlag(648-63, 83, 5, 5)
end;
if(not runfar)then
case UpperCase(dir) of
'N': MouseFlag(648, 83-30, 5, 5)
'S': MouseFlag(648, 83+30, 5, 5)
'E': MouseFlag(648+30, 83, 5, 5)
'W': MouseFlag(648-30, 83, 5, 5)
end;
end;
// *************************** //
procedure RunBackToOres(dir: String; runfar: Boolean);
begin
if(runfar)then
case UpperCase(dir) of
'N': MouseFlag(648, 83+63, 5, 5)
'S': MouseFlag(648, 83-63, 5, 5)
'E': MouseFlag(648-63, 83, 5, 5)
'W': MouseFlag(648+63, 83, 5, 5)
end;
if(not runfar)then
case UpperCase(dir) of
'N': MouseFlag(648, 83+30, 5, 5)
'S': MouseFlag(648, 83-30, 5, 5)
'E': MouseFlag(648-30, 83, 5, 5)
'W': MouseFlag(648+30, 83, 5, 5)
end;
GameTab(4);
end;
// *************************** //
Procedure DropAllOres;
Begin
If (RunToDiffOrePlaces And DropOresInDir) Then RandomDirection;
If DirectionForOres <> 'None' Then
Begin
If DropOresInDir Then Face('N');
If DropOresInDir Then RunToDropOres(DirectionForOres,DoRunFar);
End;
Players[CurrentPlayer].Integer2:= Players[CurrentPlayer].Integer2+
CountItemBmpMaskTol(OreMask, 20, 25);
Players[CurrentPlayer].Integer2:= Players[CurrentPlayer].Integer2+
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;
If UseAntiBan Then MyAntiBan(UseCamera,UseMovement,
UseGameTabs,UseGetSkill,UseIdleTiming,UseDraggingI tem,
UseDoBoredHuman,WhatSkill,HowOftenAntiBan,UseRando mSpeech);
Players[CurrentPlayer].Integer1:=Players[CurrentPlayer].Integer1+1;
If DirectionForOres <> 'None' Then
Begin
If DropOresInDir Then Face('N');
If DropOresInDir Then RunBackToOres(DirectionForOres,DoRunFar);
End;
End;
// *************************** //
Procedure PlayerReport;
Var Active: String;
Var I:Integer;
Begin
For I := 0 to HowManyPlayers - 1 Do
Begin
If Players[i].Active=True Then Active := 'True' Else Active := 'False';
WriteLn( (IntToStr(I))+' : '+Players[I].name+ ' = '+
Active+'; Mined and dropped : '+IntToStr(Players[I].Integer2)+' Ores;')
WriteLn(' Mining Level : '+IntToStr(Players[i].Level[15]));
WriteLn('');
End;
End;
// *************************** //
Procedure PowerMinerReport;
Begin
WriteLn('***************************************** ******')
WriteLn('')
WriteLn('Ores Mined and Dropped : '+IntToStr(Ores));
Writeln('Worked for '+ TimeRunning);
If RunToDiffOrePlaces Then WriteLn('Ran to the North '+IntToStr(North)+' times.');
If RunToDiffOrePlaces Then WriteLn('Ran to the East '+IntToStr(East)+ ' times.');
If RunToDiffOrePlaces Then WriteLn('Ran to the South '+IntToStr(South)+' times.');
If RunToDiffOrePlaces Then WriteLn('Ran to the West '+IntToStr(West)+ ' times.');
If RunToDiffOrePlaces Then WriteLn('Stayed at place '+IntToStr(None)+ ' times.');
WriteLn('')
WriteLn('***************************************** ******')
WriteLn('')
If LargeReport Then PlayerReport;
WriteLn('')
WriteLn('***************************************** ******')
End;
// *************************** //
Procedure SetupScript;
Begin
SetupSRL;
SetupSRLMining;
BitMaps;
BenMouse := UseBenMouse;
MouseSpeed := SetMouseSpeed;
DeclarePlayers;
CurrentPlayer := StartPlayer;
LoginPlayer;
SetOreColor;
If AutoColor Then AutoSetColor(NewOres);
FindPickHeadColor;
SecondsToWait:=OreSecondsToWait;
Players[CurrentPlayer].Level[15] :=GetSkillLevel('mining');
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
DirectionForOres:=FirstOreDir;
End;
Procedure DoChats;
Begin
SetChat('On', 1);
SetChat('On', 1);
SetChat('Off', 2);
SetChat('Off', 2);
SetChat('On', 3);
SetChat('On', 3);
End;
// *************************** //
Begin
ClearDebug;
SetupScript;
SetMouseMode(False);
DoChats;
SetRun(True);
FindOreByCamera(OreTol);
Repeat
MarkTime(MyMark)
Repeat
PowerMine;
FindNormalRandoms;
If UseAntiBan Then MyAntiBan(UseCamera,UseMovement,
UseGameTabs,UseGetSkill,UseIdleTiming,UseDraggingI tem,
UseDoBoredHuman,WhatSkill,HowOftenAntiBan,UseRando mSpeech);
If NoPick Then
Begin
If Not IsMultiPick(Players[CurrentPlayer].Boolean1) Then
Begin
Logout;
Break;
End
Else NoPick:=False;
End;
Until (( InventoryCount = 28 )
Or (TimeFromMark( MyMark ) > 1000 * 60 * MinutesPerLoad))
If (Random (5) > 3) Then SetRun(True);
If LoggedIn Then DropAllOres;
If DoCallibrate Then Callibrate;
PowerMinerReport;
If ( LoggedIn And (Players[CurrentPlayer].Integer1 mod Loads = 0 )) Then
Begin
LogOut;
NextPlayer(True);
SetOreColor;
If AutoColor Then AutoSetColor(NewOres);
Players[CurrentPlayer].Level[15] :=GetSkillLevel('mining');
EquipPick := Players[CurrentPlayer].Boolean1;
FindPickHeadColor;
FindOreByCamera(OreTol);
DoChats;
End;
If Not LoggedIn Then
Begin
NextPlayer(False);
NoPick:=False;
SetOreColor;
If AutoColor Then AutoSetColor(NewOres);
Players[CurrentPlayer].Level[15] :=GetSkillLevel('mining');
EquipPick := Players[CurrentPlayer].Boolean1;
FindPickHeadColor;
FindOreByCamera(OreTol);
DoChats;
End;
Until(False);
End.