Page 1 of 1

Mining again

Posted: 14.08.2006 9:20
by PM
Собсно, взял за пример мининг, уже тут выложеный. Бьюсь с ним неделю, и уже перестал что бы то нибыло понимать. Язык для меня новый, и буду очень благодарен если мне укажут в чем я не прав.

Code: Select all

program Mine;
var x,y,t,h,z,i:integer;
var Time : TDateTime;


procedure Make;
Begin
wait(1000);
i:=200;
clearjournal;
end;


begin
Time:= Now - (0.5 / 1440);
while weight <= 40000 do
begin
for x := getx(self)
for y := gety(self)
for z := getz(self)
for t := x-2 to x+2
for h := y-2 to y+2 do
end;
   begin
   useobject($403F23B2);
   waitfortarget(5000);
   TargetToTile(1,t,h,z);
   i:=0
   while i<100 do
   begin



if InJournalBetweenTimes('but fail',Time,Now) or InJournalBetweenTimes('You put',Time,Now) or InJournalBetweenTimes('You must wait to perform another action',Time,Now)>= 0 then make;



if InJournalBetweenTimes('nothing here',Time,Now) or InJournalBetweenTimes('Try mining',Time,Now) or InJournalBetweenTimes('bort',Time,Now) or InJournalBetweenTimes('inish',Time,Now) >= 0 then make2;


   i:=i+1
   end;
   end;
end;
end.

Posted: 16.08.2006 14:40
by Acronym
моя вызываемя процедура для копки, в общих чертах:

Code: Select all

procedure Mine; 
var 
    sTime : TDateTime; 

begin
CheckDead;
   for x:=-2 to 2 do 
   begin 
      for y:=-2 to 2 do 
      begin
 
*тут я проверяю есть ли кирка в руке и одеваю если нет*

            WaitTargetTile( 400,( GetX( Self ) + x ),( GetY( Self ) + y ),GetZ( Self )); {Проставлено из расчета что всегда Tile=400}
				sTime := Now; 
				wait(500);
            	WaitJournalLine( sTime, 'cannot see|cannot mine|no clay|no more|equip|too far|broke|dead|perform|Oops|attacking',30000); 
			wait(1500);

*тут я выбрасываю руду которая мне не нужна*
*тут я пытаюсьвзять с пола ту руду что нужна*

      end;
   end;
end;
копает вокруг себя где только может

Posted: 16.08.2006 14:55
by Acronym
{Проставлено из расчета что всегда Tile=400}
у нас на шарде во всех пещерах Tile=400
если нет универсального или часто встречающегося Tile, то это плохо потому как узнавать Tile и тут же его использовать мы пока не можем в рамках StealthA
узнавал Tile инжектовской ,infotile

Posted: 23.08.2006 10:20
by Lokkie
Acronym wrote:если нет универсального или часто встречающегося Tile, то это плохо потому как узнавать Tile и тут же его использовать мы пока не можем в рамках StealthA
у меня на шарде именно такая ситуация - тайлов видов 5 будет. можно ли задать тип тайл как -1 т.е. любая?
:roll:

Posted: 23.08.2006 10:49
by Miralex
Stealth не читает карту и не знает какой тайл находится под тобой. Поэтому надо явно указывать тайлы.

Posted: 23.08.2006 13:56
by Lokkie
А возможно ли задать несколько тайлов из которых существует только 1?
т.е. я знаю координаты x,y,z но не тип тайла. Типов передположим 5 и 1 из них всегда присутствует (и только 1) можно ли чтоб Стелс отбрасывал варианты прицелов которые ведут никуда если такого тайла нет?

Posted: 23.08.2006 14:11
by Miralex
А причем тут прицел? ... Прицел не знает на какой тайл тебе надо кликать. :wink:
Если тайлы разные, то выход только один - создавать массив координат с тайлами. Смотри пример с фишингом. :wink:

Posted: 23.08.2006 14:38
by Lokkie
Miralex wrote:Если тайлы разные, то выход только один - создавать массив координат с тайлами. Смотри пример с фишингом. :wink:
Похоже что так и сделаю. Сенькс за идею. Просто хотел делать независящего от пещеры шахтера с реколом. :wink:
:roll:

Posted: 23.08.2006 17:28
by PM
Черт, а у меня жалуетья на неожиданный конец скрипта, причем кол во бегинов и эндов равное

Code: Select all

procedure Mine; 
var x, y:integer;
    sTime : TDateTime; 
begin 
   for x:=-2 to 2 do 
   begin 
      for y:=-2 to 2 do 
      begin 
findtype($0E85, backpack); 
UnEquip(RHandLayer); 
wait(500);   
Equip(RhandLayer,finditem); 
UseObject(finditem); 
wait(1000); 
            WaitTargetTile( 1309,( GetX( Self ) + x ),( GetY( Self ) + y ),GetZ( Self )); {Проставлено из расчета что всегда Tile=400} 
            sTime := Now; 
            wait(500); 
               WaitJournalLine( sTime, 'cannot see|cannot mine|no clay|no more|equip|too far|broke|abort|perform|finished|attacking',30000); 
         wait(1500); 
      end; 
   end; 
end; 



Posted: 28.08.2006 7:18
by Miralex
В конце должен быть End.

Posted: 03.09.2006 10:29
by Diego
Люди, в часности Acronym можеш выложить свой скрипт на мининг, что б опкапывал и под себя складывал... )
а то с этими, что на форуме ничего не получаеться....
если у кого то есть, то выложите тут или в асю стукните 334353710
Зарание спасибо !

Posted: 05.09.2006 5:38
by PM
Miralex wrote:В конце должен быть End.

жалуеться на отсутствующий ";"

Posted: 05.09.2006 7:39
by Miralex
С процедурой все в порядке.
Выкладывай остальное - будем смотреть. :wink:

Posted: 12.09.2006 3:12
by PM
А это собсно все что есть(

Posted: 12.09.2006 7:59
by Miralex
Программа не может быть из одной процедуры. Посмотри другие скрипты. Обрати внимание с каких "слов" они начинаются. Как заканчиваются.