настройка скрипта: взять в руку кирку, указать 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.