Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Mining auto tile

Only working scripts
Post Reply
rr3joktm
Posts: 6
Joined: 25.05.2011 22:47

Mining auto tile

Post by rr3joktm »

Скрипт работает на stealth_v1.0_release_1 и выше, написан для сервера Forest Wars (http://www.uoa.pp.ua/).
настройка скрипта: взять в руку кирку, указать ID сундука и указать X минимальную и максимальную точку и Y минимальную и максимальную точку.
Image

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.
ошибки и вопросы пишем ниже
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Mining auto tile

Post by shinma »

ураа первый нах на форуме стали появляться автоматизированные скрипты:) Теперь сюда приделать сортировку точек, для похода по наименьшему пути. и обкопку вдоль горы) к стати и квадрат тоже ненужен. ты что сам не можешь от чара пробить координаты на +40 клеток вокруг чтобы все тайлы схватить если его уже к шахте привели. зачем мозг нубов нагружать лишними координатами
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Re: Mining auto tile

Post by Fenix »

Можно посоветовать модификацию массива с тайлами:

Code: Select all

var
	TyleType : Array of Word;
...	

begin
...
	TyleType := [1386, 1363, 1362, 1361, 1359, 1358, 1357, 1356, 1355, 1354, 1353, 1352, 1351, 1350, 1349, 1348, 1347, 1346, 1345, 1344, 1343, 1342, 1341, 1340, 1339];
...
	for s := 0 to High(TyleType) do
...
end.
Это позволит не привязываться к размерности массива и добавлять/убирать типы тайлов непосредственно из строки инициализации массива без дополнительных правок в коде.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Re: Mining auto tile

Post by CFA »

не знаю как сейчас, но раньше High с динамическими массивами не работал. Чтоб получить длину такого массива приходилось использовать функцию getArrayLength
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Mining auto tile

Post by shinma »

b:= GetStaticTilesArray(Xmin,Ymin,Xmax,Ymax, 0, TyleType[s], a); <<<<--- у тебя точно шахта тайлами, а не землей считается?
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Mining auto tile

Post by shinma »

CFA wrote:не знаю как сейчас, но раньше High с динамическими массивами не работал. Чтоб получить длину такого массива приходилось использовать функцию getArrayLength
это прям на месте автор и проверит)
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Re: Mining auto tile

Post by Fenix »

Может быть, что и не работает - не проверял.
Раньше использовал Length() - 1.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Mining auto tile

Post by shinma »

мде я то обрадовался, что хоть один минер разобрался со своим макросом, а тут обычный нерабочий скрипт. щас проверил на тесте(((
http://stealth.od.ua/forum/viewtopic.php?f=2&t=1807
http://stealth.od.ua/forum/viewtopic.php?f=2&t=1808
http://stealth.od.ua/forum/viewtopic.php?f=3&t=1810
а там и сам поймешь.
надеюсь разберешься.
Хотя я дико извиняюсь если вдруг у тя обкопка происходит не как у всех а в отдельной шахте где все на статике построено)
Last edited by shinma on 24.06.2011 15:06, edited 1 time in total.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Mining auto tile

Post by shinma »

к стати вы один и тоже чел? А то не охото писать советы не автору а копипастеру который не секёт , даже что скопировал
Maksim/ rr3joktm
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
Post Reply