настройка скрипта: взять в руку кирку, указать ID сундука и указать X минимальную и максимальную точку и Y минимальную и максимальную точку.
Code: Select all
program mining;
var
TyleType : Array [0..24] of Word;
a : TFoundTilesArray;
c,b,s,oreCol : Integer;
ctime : TDateTime;
MyX,MyY,h,j : Integer;
const
sunduk = $400097D4;
//X,Y min and X,Y max координаты составляет по осям квадрат в котором минер копает
Xmin = 0000;
Xmax = 0000;
Ymin = 0000;
Ymax = 0000;
//Координаты входа в шахту
MineX = 3722;
MineY = 2108;
//возле сундука X,Y
VozleX = 3722;
VozleY = 2129;
sulfur = $0F8C;
Jewel = $0F29;
OreType1 = $0386;
OreType2 = $19BA;
OreType3 = $19B8;
OreType4 = $19B9;
OreType5 = $19B7;
PickType = $0E85;
WLimit = 200;
{$Include 'all.inc'}
procedure CheckHide; 
begin 
if Hidden then exit; 
if WarMode = true then SetWarMode(false); 
repeat 
UseSkill('Hiding'); 
wait(4500); 
checksave; 
until Hidden or (not Connected); 
end; 
   
procedure checkcoord;
begin
while ((GetX(self) and GetY(self)) <> (MineX and MineY)) do
    begin
    Addtosystemjournal('GoTo');    
    MoveXY(MineX,MineY, false, 0, True);
    wait (500); 
end;
end;
procedure GotoOnHome;
begin
while ((GetX(self) and GetY(self)) <> (vozleX and vozleY)) do
    begin
    Addtosystemjournal('GoToHome');    
    MoveXY(vozleX,vozleY, false, 0, True);
    wait (500); 
end;
end;
procedure DropOre;
var g : integer;
OreType : Array [0..6] of Word;
Begin
finddistance := 2;
CheckSave;
AddToSystemJournal('Типа руду скидываем');
OreType[0] := sulfur; 
OreType[1] := Jewel; 
OreType[2] := OreType1; 
OreType[3] := OreType2; 
OreType[4] := OreType3; 
OreType[5] := OreType4; 
OreType[6] := OreType5; 
for g := 0 to 6 do
begin
CheckSave;
FindType(OreType[g],backpack);
if FindCount > 0 then
begin
if (Count(OreType[g]) > 0) then
   begin 
   repeat
   MoveItem(FindType(OreType[g],Backpack),200,sunduk,0,0,0);
wait (500);
until (Count(OreType[g]) = 0);
end;
end;
end;
End;
procedure Mining; 
 begin
 MyX := GetX(self);
 MyY := GetY(self);
 for h := MyX-1 to MyX+1 do
  begin
  for j := MyY-1 to MyY+1 do
    begin  
    repeat
    CheckHide;    
    If TargetPresent Then CancelTarget;
    ClearJournal;
    if (GetType(ObjAtLayer(RhandLayer)) = PickType) then UseObject(ObjAtLayer(RhandLayer)); 
    WaitJournalLine(Now, 'Where do you want to use the pickaxe?', 2000);
    WaitTargetXYZ(h,j,GetZ(Self));
    WaitJournalLine(Now, 'Вы выкопали|Вы не смогли выкопать ничего стоющего.', 8000);
    Wait(500);
    until (InJournalBetweenTimes('There is nothing here|Try mining elsewhere.| You decide not to mine for now|Try mining elswhere.', ctime, Now) <> -1) or (InJournalBetweenTimes('You have no line of sight to that location|That is too far away| You cannot mine so close to yourself.', ctime, Now) <> -1) or (Weight > WLimit);
  end;
 end;
  end;
procedure checkweight;
begin
if (Weight > WLimit) then  
   begin
   GotoOnHome;
   DropOre;
   end;
end;
BEGIN
Addtosystemjournal('Скрипт успешно стартовал. Made by M.');
SetARStatus(True);
TyleType[0] := 1386;
TyleType[1] := 1363;
TyleType[2] := 1362;
TyleType[3] := 1361;
TyleType[4] := 1359;
TyleType[5] := 1358;
TyleType[6] := 1357;
TyleType[7] := 1356;
TyleType[8] := 1355;
TyleType[9] := 1354;
TyleType[10] := 1353;
TyleType[11] := 1352;
TyleType[12] := 1351;
TyleType[13] := 1350;
TyleType[14] := 1349;
TyleType[15] := 1348;
TyleType[16] := 1347;
TyleType[17] := 1346;
TyleType[18] := 1345;
TyleType[19] := 1344;
TyleType[20] := 1343;
TyleType[21] := 1342;
TyleType[22] := 1341;
TyleType[23] := 1340;
TyleType[24] := 1339;
while not Dead do
   begin
   for s := 0 to 24 do
      begin
	  checkcoord; 
      b:= GetStaticTilesArray(Xmin,Ymin,Xmax,Ymax, 0, TyleType[s], a); 
      AddToSystemJournal('Tile Count : ' + IntToStr(b));
      for c :=0 to b-1 do
         begin        
            CheckWeight;                
            AddToSystemJournal('Идём на тайл '+IntToStr(C)+'!');
            MoveXY(a[c].X,a[c].Y, False, 0, True);
            mining;        
            end
         end
      end
END.
