Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7 
	DRW Lumber Без гвард зоны (outside guard zone) V 1.0
ответь пожалуйста
function GetStaticTilesArray(Xmin,Ymin,Xmax,Ymax: Word; WorldNum: Byte; TileType: Word; var FoundTilesArray: TFoundTilesArray): Word; // Получение массива статик тайлов по типу
TFoundTile = record
X : SmallInt;
Y : SmallInt;
Z : ShortInt;
Tile : Word;
end;
type TFoundTilesArray = array[0..999] of TFoundTile;
SetLength(tfta,0);
эта команда обнулила массив tfta?
rs:=GetStaticTilesArray(RegArr[j].minX,RegArr[j].minY,RegArr[j].maxX,RegArr[j].maxY,1,TreeTile,tfta);
			
			
									
									
						function GetStaticTilesArray(Xmin,Ymin,Xmax,Ymax: Word; WorldNum: Byte; TileType: Word; var FoundTilesArray: TFoundTilesArray): Word; // Получение массива статик тайлов по типу
TFoundTile = record
X : SmallInt;
Y : SmallInt;
Z : ShortInt;
Tile : Word;
end;
type TFoundTilesArray = array[0..999] of TFoundTile;
SetLength(tfta,0);
эта команда обнулила массив tfta?
rs:=GetStaticTilesArray(RegArr[j].minX,RegArr[j].minY,RegArr[j].maxX,RegArr[j].maxY,1,TreeTile,tfta);
тяжело найти проблему по твоим отрывкам чернобелого скрипта 
скопируй сюда функцию в которой проблема и поставь комментарий на той же строке где вылетает скрипт
по такому примеру
			
			
									
									
						скопируй сюда функцию в которой проблема и поставь комментарий на той же строке где вылетает скрипт
по такому примеру
Code: Select all
procedure poisk_tree; 
begin 
  SetArStatus(true);
  init; //ВЫЛЕТАЕТ ТУТ
  sum:=0;  
end;Code: Select all
procedure poisk_tree;
begin
  SetArStatus(true);
  init;
  sum:=0;  
  // поиск деревьев и составление массива
  arr_sum:=0;
   for i:=0 to 9 do
    begin
rs:=GetStaticTilesArray(RegArr[j].minX,RegArr[j].minY,RegArr[j].maxX,RegArr[j].maxY,1,TreeTile[i],tfta);
//вылетает тут
     if rs>0 then
      for k:=0 to rs-1 do temp[arr_sum+k]:=tfta[k];
     arr_sum:=arr_sum+rs;
    end;
   QuickSort(temp,arr_sum,start_p);
   for k:=0 to arr_sum-1 do res_arr[sum+k]:=temp[k];
   sum:=sum+arr_sum; 
end;судя по всему в массиве RegArr меньше элементов чем в цикле итераций 
и кстати обрати внимание у тебя цикл обновляет переменную i а в той строке используется j
			
			
													и кстати обрати внимание у тебя цикл обновляет переменную i а в той строке используется j
					Last edited by Alex on 02.05.2011 21:52, edited 1 time in total.
									
			
									
						Code: Select all
procedure init; 
begin 
 start_p.X:=GetX(Self); //Стартовая координата игрока 
 start_p.Y:=GetY(Self); //Стартовая координата игрока 
 //Tile Tree 
 TreeTile[0]:=3283; 
 TreeTile[1]:=3277; 
 TreeTile[2]:=3293; 
 TreeTile[3]:=3296; 
 TreeTile[4]:=3302; 
 TreeTile[5]:=3299; 
 TreeTile[6]:=3290; 
 TreeTile[7]:=3288; 
 TreeTile[8]:=3286; 
 TreeTile[9]:=3280; 
 //Рубить в области +/- 30 клеток от Стартовой координаты игрока 
 RegArr[0].minX:=start_p.X-10; 
 RegArr[0].minY:=start_p.Y-10; 
 RegArr[0].maxX:=start_p.X+10; 
 RegArr[0].maxY:=start_p.Y+10; 
end; помогите плиз  у меня чар не хочет реагировать на появление стража Энта когда рублю лес. как только он видит Ent или is attacking you он должен  прерывать всю работу и включать процедуру убегания ubegalka; . Но ему пофиг на  энта.  Я тут много лишнего убрал. сама по себе процедура ubegalka; работает нормально.
i:=0;
			
			
									
									
						i:=0;
Code: Select all
procedure ubegalka;
begin
	if i<6 then
		begin
		NewMoveXY(dot[i].X,dot[i].Y,true,1,false);
		AddToSystemJournal('точка  '+(inttostr(i))+' пройдена.');
		i:=i+1;
		CharDead;
	end
else
	begin
	i:=0;
	NewMoveXY(dot[i].X,dot[i].Y,true,1,false);
	AddToSystemJournal('точка повтора  '+(inttostr(i))+' пройдена.');
	i:=i+1;
	CharDead;
	end;
end;
procedure Chop(f_tile:TFoundTile);
var
 ctime : TDateTime;
 iter_max:integer;
 next_lumb,lumb_result,wait_lumb: string;
 fizzles:word;
begin
 wait_lumb:=l_fizzles+'|'+l_needwait;
 next_lumb:=l_nothing1+'|'+l_nothing2+'|'+l_far+'|'+l_see;;
 lumb_result:=wait_lumb+'|'+next_lumb+'|'+l_success+'|'+l_elemental+'|'+l_bad+'|'+l_heavy;
 fizzles:=0;
 repeat
  equip_tool(hatcher,LhandLayer);
  cancel;
  iter_max:=0;
  check_hide;
  UseObject(ObjAtLayer(LhandLayer));
  check_hide;
  Wait_Target(5000);
  ctime := Now;
  TargetToTile(f_tile.Tile,f_tile.X,f_tile.Y,f_tile.Z);
  repeat
   iter_max:=iter_max+1;
   wait(2000);
   checksave;
   check_war;
   check_hide;
   if (InJournalBetweenTimes('OOPS !!! It isn''t a tree, it''s an Ent!!!|is attacking you|Ent', ctime, Now)>= 0) then
   begin
   Break;
   end;
  until  (InJournalBetweenTimes(lumb_result, ctime, Now)>= 0) or (iter_max>10) or dead;
  if (InJournalBetweenTimes(l_fizzles, ctime, Now)<>-1) then fizzles:=fizzles+1;
  if (InJournalBetweenTimes('OOPS !!! It isn''t a tree, it''s an Ent!!!|is attacking you|Vas Corp Por|notice|Ent', ctime, Now)>= 0) or dead then
   begin
	
ubegalka;		//ВОТ ТУТ ОН ДОЛЖЕН УБЕЖАТЬ если  условия выше  увидят энта.		
Break;
   end;
 until (InJournalBetweenTimes(next_lumb, ctime, Now)>= 0) or (fizzles>15) or dead;
CharDead;
end;Re: DRW Lumber Без гвард зоны (outside guard zone) V 1.0
Спасибо! Кое что использовал из твоего скрипта!
			
			
									
									
						

