 при любой скорости хоть 700 хоть 50
 при любой скорости хоть 700 хоть 50 
Без скрипта такой проблемы нету.
 при любой скорости хоть 700 хоть 50
 при любой скорости хоть 700 хоть 50 
Смотрел с другого окна чар ходит. Мне кажется что первый шаг быстрый делает( ну типа бежитFenix wrote:А пример скрипта?
Хотя я подозреваю, что ты когда двигаешься - бегаешь. В этом случае чар всегда из хайда выходит, в том числе и на голом клиенте.
 )
 ) 
Code: Select all
Program Lumber_all;
{$Include 'all.inc'}
const
 hatcher=$0F47 ; 				// тип топора 
 StartHomeX =1542;//координата Х перед сундуком куда логи складывать
 StartHomeY =1102;//координата У перед сундуком куда логи складывать
 StartForestX = 1574;//координата Х полянки в лесу
 StartForestY = 1081;//координата У полянки в лесу
  casebox=$411E68D5;				//ID сундука возле дома.Под забором дома.
 tp=0;                                    //использовать рунбуку 0-нет 1-да
 speed=700;   					//скорость перемещения
 logs=$1BDD; 					// тип логов
 magaz_sell='73';             	//Номер кнопки в рунбуке куда ТП для продажи дров
 bank='58';             	//Номер кнопки в рунбуке для банка
 Les='33';                  	//Номер кнопки в рунбуке куда тП для рубки леса
 RuneAxe='46';					//Номер кнопки магазина где купить топор.
 homecase='88';					//Номер кнопки в рунбуке к сундуку возле дома.
 runebook_les=$4020FFDA  ;       //ID рунбуки 
 kol_log = 21; 					//Кол-во типов логов в игре. для ДРВ 21
 money=$40078907;          		//ID сумки в банке куда складывать золото
 resi=$4027AA34 ;         		//ID сумки в банке куда складывать дорогие логи
 goldcoin=$0EED;         		//ГП
 clean_bandages = $0E21;		//бинты 
 Vendor_Log=$002A80D6;     		//ID  вендора которому впариваем логи
 resurect=$4001C28F;			//ИД креста воскрешениЯ
 infini=1;
 //ЕДА 
 kusaem=0;						//Чар будет кушать? 1-да / 0-нет
 Sbor=1;						//собирать ли еду? 1-да / 0-нет.можно не ставить если kusaem=0
 hleb=$103B  ;					//ИД еды которую покупаем в магазине, если на поле еды не оказалось. можно не ставить если kusaem=0
 vendor_eat=$00166295 ;			//ИД продовца еды в магазине.можно не ставить если kusaem=0
 RuneToMagazEat='73';			//Номер кнопки в рунбуке куда ТП для покупки еды.можно не ставить если kusaem=0
 Eat=$0C77   ;               	//ID еды которая растет на поле
 rostoc=$0C76 ;					//ID растения на поле
 EatPole='64';					//Номер кнопки в рунбуке куда ТП в поле за едой
 //
 Tonaz=600;						//при каком весе персонаж идет скидывать дрова
 VendorAxe=$0005869E;			//Id вендора продающего топоры; 
 //
 medix=1; 						//Покупать ли бинты у продовца рядом с крестом воскрешения.
 vendor_medik=$001F6650; 		//ид продавца бинтами в том же здании где и крест. если medix=0 то можно не указывать.
 //
 vala=2;						//0-логи никуда не деваем//1-продаем в магазин.Дорогие логи кладем в банк//2-складываем в сундук возле дома.
 baala=0;						//работает если vala=2, 1-класть дорогие логи в сундук банка. 0-класть дорогие логи в сундук возле дома.
 
 
 
 
 l_fizzles='but fail to produce any useable wood.';
 l_nothing1='Нечего рубить.';
 l_nothing2='You can''t reach this.';
 l_needwait ='You must wait to perform another action';
 l_success = 'in your pack.';
 l_bad ='Unexpected target info';
 l_heavy ='at your feet';
 l_far='That is too far away.';
 l_elemental ='Ent';
 l_see='You have no line of sight to that location';
 
type
 region= record
  minX:word;
  minY:word;
  maxX:word;
  maxY:word;
 end;
 mas_cvet = array[1..kol_log] of Integer; //Создаем массив цветов дров
  
var
 tfta,temp,res_arr:TFoundTilesArray;
 RegArr: array [0..10] of region;
 TreeTile:array [0..39] of word;
 lll,hhh,rs,i,j,k,sum,arr_sum:word;
 start_p: TFoundTile;
 Cvet : mas_cvet;
 dot:array [0..10] of TFoundTile;
ert,ghjk,gfrt,TpEda,beg,ded:word;					
//TpEda - проверка на место нахождение полсе покупки еды
//gfrt - проверка на появление нежелательных персов,НПС.
kol_der:integer; //кол-во деревьев при поиске 
procedure init;
begin
 start_p.X:=GetX(Self); //Стартовая координата игрока
 start_p.Y:=GetY(Self); //Стартовая координата игрока
 //Tile Tree
 TreeTile[0]:=3274; 
TreeTile[1]:=3275; 
TreeTile[2]:=3277; 
TreeTile[3]:=3280;
TreeTile[4]:=3283; 
TreeTile[5]:=3286; 
TreeTile[6]:=3288; 
TreeTile[7]:=3290;
TreeTile[8]:=3293; 
TreeTile[9]:=3296; 
TreeTile[10]:=3299; 
TreeTile[11]:=3302; 
TreeTile[12]:=3320; 
TreeTile[13]:=3323; 
TreeTile[14]:=3326; 
TreeTile[15]:=3329;
TreeTile[16]:=3393;
TreeTile[17]:=3394;
TreeTile[18]:=3395;
TreeTile[19]:=3396;
TreeTile[20]:=3415;
TreeTile[21]:=3416;
TreeTile[22]:=3417;
TreeTile[23]:=3418;
TreeTile[24]:=3419;
TreeTile[25]:=3438;
TreeTile[26]:=3439;
TreeTile[27]:=3440;
TreeTile[28]:=3441;
TreeTile[29]:=3442;
TreeTile[30]:=3460;
TreeTile[31]:=3461;
TreeTile[32]:=3462;
TreeTile[33]:=3476;
TreeTile[34]:=3478;
TreeTile[35]:=3480;
TreeTile[36]:=3482;
TreeTile[37]:=3484;
TreeTile[38]:=3492;
TreeTile[39]:=3496;
 RegArr[0].minX:=start_p.X-30;
 RegArr[0].minY:=start_p.Y-30;
 RegArr[0].maxX:=start_p.X+30;
 RegArr[0].maxY:=start_p.Y+30;
end;
procedure runebook(bookaa:Cardinal;kuda:string);
begin
waitgump(kuda);
wait(1000)  ;
UseObject(bookaa);
wait(7000);
CloseSimpleGump(0);
end;
procedure smena;
begin
dot[0].X:=605;
dot[0].Y:=1383;
dot[1].X:=653;
dot[1].Y:=1421;
dot[2].X:=591;
dot[2].Y:=1447;
dot[3].X:=517;
dot[3].Y:=1430;
dot[4].X:=455;
dot[4].Y:=1378;
dot[5].X:=375;
dot[5].Y:=1369;
dot[6].X:=547;     //Resurect
dot[6].Y:=1235;
dot[7].X:=549;     //Resurect
dot[7].Y:=1159;
dot[8].X:=551;     //Resurect
dot[8].Y:=1059;
dot[9].X:=548;     //Resurect
dot[9].Y:=969;
dot[10].X:=530;     //Resurect
dot[10].Y:=963;
end;
procedure cancel;
begin
CloseMenu;
CancelMenu; 
If TargetPresent Then CancelTarget; 
end;
procedure check_war;
begin
if IsWarMode(self) then
 begin
  setWarMode(false);
 end;
end;    
Procedure speedee(swm:word;srm:word;swu:word;sru:word);
begin
  SetWalkMountTimer   (swm);  //Ходить на лошади
  SetRunMountTimer  (srm);    //Бегать на лошади
  SetWalkUnmountTimer   (swu);   //Ходить пешком
  SetRunUnmountTimer    (sru);   //Бегать пешком
end;
procedure podhod(Vendor:Cardinal);
begin
AddToSystemJournal('273 Продацец: '+GetName(Vendor)+'. координата Х: '+inttostr(GetX(Vendor))+'. координата Y: '+inttostr(GetY(Vendor))+'. дистанция: ' +inttostr(GetDistance(Vendor)));
repeat
NewMoveXY(GetX(Vendor),GetY(Vendor),true,1,false); 
wait(4000);
checksave;
until (GetDistance(Vendor)< 2) or dead;
end;
procedure Wait_Target(time_ms:Cardinal);
var
 TempTime,SumTime:Cardinal;
begin		
 SumTime:=0;
 repeat
  checksave;
  wait(500);
  TempTime:=Timer;
  SumTime:=SumTime+(Timer-TempTime);
 until ((targetpresent) or (dead) or (not connected) or (SumTime>time_ms)or(gfrt<>1));
end;
procedure heal;
var 
ghj:word;
begin
ghj:=0;
while (gethp(self) < getmaxhp(self)) and (CountEx(clean_bandages,$0000,backpack) > 0)and
(ghj<15) and not dead AND (gfrt<>1) do
begin
if not Hidden then exit;		
AddToSystemJournal('338 Хилимся');
UseObject(FindType(clean_bandages,Backpack));
wait_target(2000);
WaitTargetObject(Self); 
wait (5000);
ghj:=ghj+1;
check_war;		
end;	
end;
procedure check_hide;
begin
cancel;
wait(1000)  ;
if Hidden then exit;
if WarMode = true then SetWarMode(false);
      repeat
         UseSkill('Hiding');
         wait(4000);        
         checksave;
         check_war;
      until Hidden or (not Connected) or dead or (gfrt=1);
heal; 
end; 
procedure equip_tool(type_of_tool:word;layer:Byte);
begin
hhh:=0;
   if (GetType(ObjAtLayer(layer))<>type_of_tool) then
    begin
     if layer=RhandLayer then unequip(RhandLayer)else unequip(LhandLayer);
     wait(500);
     if layer=RhandLayer then equipt(RhandLayer,type_of_tool) else equipt(LhandLayer,type_of_tool);
    end;
  repeat
    wait(500);
    checksave;
    hhh:=hhh+1;
   until (GetType(ObjAtLayer(layer))=type_of_tool) or dead or (hhh>6);
end;
procedure CheckAxe;
begin
checksave;
while (GetType(ObjAtLayer(RhandLayer))<>hatcher) and (GetType(ObjAtLayer(LhandLayer))<>hatcher) and (CountEx(hatcher,$0000,backpack) = 0) and not dead do
begin
AddToSystemJournal('288 Телепортируюсь в бриту за топором в магаз');
runebook(runebook_les,RuneAxe);
checksave;
wait(5000);
//podhod(VendorAxe);
SetAutoBuyDelay(8);		//Установить задержку на продажу. Время задается в секундах. По умолчанию - 3 (минимальное значение).
Autobuy(hatcher,$0000,1);
//UOSay((GetName(VendorAxe))+' buy guards');	
UOSay('buy guards');		
wait(12000);
end;
equip_tool(hatcher,LhandLayer);
end;
procedure eda;
var
dsa:word;
TimeSayHungry : TDateTime;
begin
dsa:=0;
TimeSayHungry := Now;
checksave;
if (CountEx(Eat,$0000,backpack) <3) and (CountEx(hleb,$0000,backpack)<3) and (Not Dead)and(Sbor=1) then
  begin
  AddToSystemJournal('361 телепортируюсь в поле за едой');
  runebook(runebook_les,EatPole);
  wait (5000);
  TpEda:=1;
  repeat
      checksave;
      uosay('guards');
      FindDistance:=15;
      FindTypeEx(rostoc, $0000,  Ground ,  false);
      NewMoveXY(GetX(FindItem),GetY(FindItem),true,3,false); 
      checksave;
      UseObject(FindItem);
      wait(3000);
      AddToSystemJournal('374 Найдено ресурсов '+inttostr(FindCount));
      if FindCount < 10 then
		begin
		AddToSystemJournal('364 Мало ресурсов '+inttostr(FindCount));
		AddToSystemJournal('365 Телепортируюсь в бриту за едой');
		runebook(runebook_les,RuneToMagazEat);
		wait(4000);
		AddToSystemJournal('367 Подхожу к вендору за едой');
		podhod(vendor_eat);
		SetAutoBuyDelay(8);
		Autobuy(hleb,$0000,16);
		UOSay(GetName(vendor_eat)+' buy guards');				//произнести в игре фразу 'Sell'
		wait(12000);
		end;
  until (CountEx(Eat,$0000,backpack)>30) or (dead) or (CountEx(hleb,$0000,backpack)>15);	
  end;
repeat
if  CountEx(Eat,$0000,backpack) > 0 then 
UseType(eat,$0000)
else
UseType(hleb,$0000);
  wait(400);
  dsa:=dsa+1;
until (InJournalBetweenTimes('You are simply too full to eat any more!',TimeSayHungry,Now) >= 0)or (dsa>10)or dead;
end;
procedure CharDead;
begin
if Dead then
begin
AddToSystemJournal('336 Чар умер');
if WarMode = true then SetWarMode(false);
checksave;
NewMoveXY(dot[2].X,dot[2].Y,false,1,true);  // x , y , Аккуратность до 200 квадратов , точность подходк к квадрату, Бег - True
checksave;
AddToSystemJournal('341 Гост прошел первую точку');
NewMoveXY(dot[1].X,dot[1].Y,false,1,true);
checksave;
AddToSystemJournal('344 Гост прошел вторую точку');
NewMoveXY(dot[6].X,dot[6].Y,false,1,true);
checksave;
AddToSystemJournal('347 Гост прошел вторую точку');
NewMoveXY(dot[7].X,dot[7].Y,false,1,true);
checksave;
AddToSystemJournal('350 Гост прошел третью точку');
NewMoveXY(dot[8].X,dot[8].Y,false,1,true);
checksave;
AddToSystemJournal('353 Гост прошел четвертую точку');
NewMoveXY(dot[9].X,dot[9].Y,false,1,true);
checksave;    
AddToSystemJournal('356 Гост прошел пятую точку');
NewMoveXY(dot[10].X,dot[10].Y,false,1,true);
checksave;    
AddToSystemJournal('359 Гост прошел шестую точку');
UseObject(resurect);
wait(6000);
if medix=1 then
	begin
	podhod(vendor_medik);
	SetAutoBuyDelay(8);		//Установить задержку на продажу. Время задается в секундах. По умолчанию - 3 (минимальное значение).
	Autobuy(clean_bandages,$0000,30);
	UOSay((GetName(vendor_medik))+' buy guards');				//произнести в игре фразу 'buy'
	wait(10000);
	check_hide;
	end;
ded:=1;
CheckAxe;
lll:=0;
if kusaem=1 then eda;
end;
end;
function sqr(a:LongInt):LongInt;
begin
 result:=a*a;
end;
function vector_length(c_1,c_2:TFoundTile):LongInt;
begin
 result:=Round(sqrt(sqr(c_1.X-c_2.X)+sqr(c_1.Y-c_2.Y)));
end;
{ сортировка минимальным маршрутом }
procedure QuickSort(var item:TFoundTilesArray; count:integer; point:TFoundTile);
var
 temp_index,temp_value, tempo,i,j:LongInt;
 t_c:TFoundTile;
begin
 AddToSystemJournal('397 сортируем '+IntToStr(count)+' деревьев');
 kol_der:=count;
 t_c:=point;
 temp_index:=0;
 temp_value:=vector_length(t_c,item[temp_index]);
 for i:=0 to count-2 do
 begin
  for j:=i to count-1 do
   begin
    tempo:=vector_length(t_c,item[j]);
    if tempo<temp_value then
     begin
      temp_index:=j;
      temp_value:=tempo;
     end;
   end;
   t_c:=item[temp_index];
   item[temp_index]:=item[i];
   item[i]:=t_c;
   temp_value:=vector_length(item[i],item[i+1]);
 end;
 i:=0;
 AddToSystemJournal('419 i = 0 ');
 AddToSystemJournal('Готово...');
end; { конец  сортировки }
procedure poisk_tree;
begin
  SetArStatus(true);
  init;
  sum:=0;  
  // поиск деревьев и составление массива
  arr_sum:=0;
  rs:=0;
  j:=0 ;
   for i:=0 to 39 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; 
   AddToSystemJournal('253 поиск деревьев завершон');
end;
procedure ubegalka;
begin
check_war;
speedee(400,300,600,500);
	if lll<6 then
		begin
		AddToSystemJournal('385 Запускаю точку убегания  '+(inttostr(lll))+'.');
		NewMoveXY(dot[lll].X,dot[lll].Y,true,1,true);
		lll:=lll+1;
		CharDead;
		AddToSystemJournal('389 Запускаю поиск деревьев');
	end
else
	begin
	lll:=0;
	AddToSystemJournal('392 Запускаю точку убегания  '+(inttostr(lll))+'.');
	NewMoveXY(dot[lll].X,dot[lll].Y,true,1,true);
	AddToSystemJournal('373 точка повтора  '+(inttostr(lll))+' пройдена.');
	lll:=lll+1;
	CharDead;
	AddToSystemJournal('397 Запускаю поиск деревьев');
	end;
speedee(speed,speed,speed,speed);
ert:=1;
gfrt:=0;
if gfrt=0 then poisk_tree;
check_war;
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+'| There is nothing here to chop|It appears immune to your blow|Try chopping elsewhere';
 lumb_result:=wait_lumb+'|'+next_lumb+'|'+l_success+'|'+l_elemental+'|'+l_bad+'|'+l_heavy;
 fizzles:=0;
 if gfrt=1 then ubegalka;
 repeat
  equip_tool(hatcher,LhandLayer);
  cancel;
  iter_max:=0;
  check_hide;
  if gfrt=1 then ubegalka;
  if ert=1 then 
		begin
			Break;
			AddToSystemJournal('532 ОО нееет меня атакуют Применяю брейк');
			check_war;
		end;
  if gfrt<>1 then UseObject(ObjAtLayer(LhandLayer));
  check_hide;
  if gfrt<>1 then Wait_Target(5000);
  if gfrt=1 then ubegalka;
  if ert=1 then 
		begin
			Break;
			AddToSystemJournal('542 ОО нееет меня атакуют Применяю брейк');
		        check_war;
                end;
  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('an Ent|is attacking you|Ent', ctime, Now)>= 0) or (gfrt=1)then
   begin
   Break;
   AddToSystemJournal('556 ОО нееет меня атакуют Применяю брейк');
   end;
  until  (InJournalBetweenTimes(lumb_result+'|Вы переместили', ctime, Now)>= 0) or (iter_max>10) or dead or (gfrt=1) or (FindCount>0);
  if (InJournalBetweenTimes(l_fizzles, ctime, Now)<>-1) then fizzles:=fizzles+1;
  if (InJournalBetweenTimes('an Ent|is attacking you|Vas Corp Por|notice|Ent|Reaper', ctime, Now)>= 0) or (gfrt=1) then
   begin
AddToSystemJournal('526 ОО нееет меня атакуют');	
ubegalka;						
CharDead;
Break;
   end;
 until (InJournalBetweenTimes(next_lumb, ctime, Now)>= 0) or (fizzles>15) or dead or (iter_max>10);
end;
 
procedure Cvet_log;
begin
Cvet[1] := $0498; //Asterxylon Logs 
Cvet[2] := $0000; //Logs 
Cvet[3] := $037F ;  //grave logs
Cvet[4] := $0039; //
Cvet[5] := $0026; // 
Cvet[6] := $047C; //Oak Logs 	
Cvet[7] := $0279; //Red Tree Logs 	
Cvet[8] := $096B ; //Dark Tree Logs	
Cvet[9] := $0237; //Swamp Logs 
Cvet[10] := $0482; //Silver Leaf Logs
Cvet[11] := $010F; //Keranit Logs 
Cvet[12] := $0014; //Perit Logs 
Cvet[13] := $03C1; //Petrified Logs
Cvet[14] := $0085; //Dragon Tree Logs
Cvet[15] := $04C2; //Vampire Tree Logs
Cvet[16] := $0033; //Eridan Logs 
Cvet[17] := $002B; //Hellios Logs 
Cvet[18] := $0071; //Illusions Tree Logs
Cvet[19] := $09A4; //Crystal Logs 
Cvet[20] := $0B82; //Dead Tree Logs 
Cvet[21] := $00BE ; //Paradise Logs
end;
 
procedure vendor_sell;
var
i:word;
begin
i:=0;
SetAutoSellDelay(8);		//Установить задержку на продажу. Время задается в секундах. По умолчанию - 3 (минимальное значение).
AutoSell(logs,Cvet[1],999);  
AutoSell(logs,Cvet[2],999);
AutoSell(logs,Cvet[3],999);
AutoSell(logs,Cvet[4],999);
AutoSell(logs,Cvet[8],999);
AutoSell(logs,Cvet[5],999);
AutoSell(logs,Cvet[6],999);
AutoSell(logs,Cvet[7],999);
AutoSell(logs,Cvet[8],999);
AutoSell(logs,Cvet[9],999);
AutoSell(logs,Cvet[10],999);
AutoSell(logs,Cvet[11],999);
AutoSell(logs,Cvet[12],999);
AutoSell(logs,Cvet[13],999);
AutoSell(logs,Cvet[14],999);
AutoSell(logs,Cvet[15],999);
AutoSell(logs,Cvet[16],999);
AutoSell(logs,Cvet[21],999);
AddToSystemJournal('490 Продажа деревьев');
while (CountEx(GoldCoin,$0000,backpack) = 0) and not dead do
begin
checksave;
UOSay(GetName(Vendor_Log)+'sell guards');				//произнести в игре фразу 'Sell'
wait(12000);
podhod(Vendor_Log);
end;
end;
Procedure PutMoneyBank;
begin
  checksave;
  AddToSystemJournal('606 Заработал ГП : '+ inttostr(CountEx(GoldCoin,$0000,backpack)));
  begin
     while (CountEx(GoldCoin,$0000,backpack) > 0) and not dead do
     begin
	 checksave;
       FindTypeEx (GoldCoin,$0000,Backpack,True) ;
        MoveItem(FindItem,0,money,0,0,0);
      checksave;
      wait(2000);
     end;
  end;
end; 
Procedure PutLogBank;
var
i:word;
begin
  checksave;
  begin
  AddToSystemJournal('626 Складываем логи в банк');
  For i:=17 to 20 do
	checksave;
     if CountEx(logs,Cvet[i],backpack) > 0 then
     begin
		checksave;
       FindTypeEx (logs,Cvet[i],Backpack,True) ;
        MoveItem(FindItem,0,resi,0,0,0);
        wait(2000);
      checksave;
     end;
  end;
end; 
Procedure PutLogCase;
var
i:word;
begin
  checksave;
  begin
  AddToSystemJournal('523 Складываем логи в СУНДУК ВОЗЛЕ  ДОМА');
  For i:=1 to 21 do
     if CountEx(logs,Cvet[i],backpack) > 0 then
     begin
       FindTypeEx (logs,Cvet[i],Backpack,True) ;
        MoveItem(FindItem,0,casebox,0,0,0);
        wait(2000);
      checksave;
     end;
  end;
end; 
procedure UpdateChar(ContainerID2 : Cardinal); 
begin 
if (GetName(ContainerID2) = 'Asterxylon Ent') or 
(GetName(ContainerID2) = 'Elven Ent') or
(GetName(ContainerID2) = 'Avalon Ent') or
(GetName(ContainerID2) = 'Titan Tree Ent') or
(GetName(ContainerID2) = 'Paradise Ent') or
(GetName(ContainerID2) = 'Dead Tree Ent') or
(GetName(ContainerID2) = 'Crystal Ent') or
(GetName(ContainerID2) = 'Illusions Ent') or
(GetName(ContainerID2) = 'Hellios Ent') or
(GetName(ContainerID2) = 'Eridan Ent') or
(GetName(ContainerID2) = 'Vampire Tree Ent') or
(GetName(ContainerID2) = 'Dragon Tree Ent') or
(GetName(ContainerID2) = 'Petrified Ent') or
(GetName(ContainerID2) = 'Perit Ent') or
(GetName(ContainerID2) = 'Keranit Ent') or
(GetName(ContainerID2) = 'Silver Leaf Ent') or
(GetName(ContainerID2) = 'Swamp Ent') or
(GetName(ContainerID2) = 'Dark Tree Ent') or
(GetName(ContainerID2) = 'Red Tree Ent') or
(GetName(ContainerID2) = 'Oak Ent') or
(GetName(ContainerID2) = 'Ent')
then
begin
AddToSystemJournal('684 НПС найден');
gfrt:=1;
wait(200);
end;
end;
Begin
SetARStatus(True);
ert:=0;
Cvet_log;
gfrt:=0;
//SetEventProc(evUpdateChar,'UpdateChar');
TpEda:=0;
smena;
beg:=0;
CharDead;
ded:=0;
CheckAxe;
if kusaem=1 then eda;
if TpEda = 1 then
TpEda:=0;
lll:=0;
if tp=1 then
runebook(runebook_les,Les);
NewMoveXY(StartForestX,StartForestY,false,1,false);
if gfrt=1 then ubegalka;
wait(4000);
check_hide;
speedee(speed,speed,speed,speed);
if gfrt=0 then poisk_tree;
AddToSystemJournal('698 поиск деревьев прошол успешно');
while infini = 1 do
	begin
		AddToSystemJournal('717');
		CharDead;
		i:=0;
		if gfrt=1 then ubegalka;
		if ded<>0 then
			begin 
				
				if tp=1 then
				runebook(runebook_les,Les);
				wait(3000);
				if gfrt=1 then ubegalka;
				ded:=0;
				if gfrt=0 then poisk_tree;
				TpEda:=0;
			end;
		AddToSystemJournal('715 указываю j:=sum-1');
		j:=sum-1;
		if kusaem=1 then eda;
		if TpEda=1 then
		ded:=1;
		ert:=0;
		while (i<j)and(ded=0)and(Not Dead) or (ert<>1) do
			begin
				AddToSystemJournal('722 прошли цикл  while i<j');
				CharDead;
				ClearBadLocationList;
				if kusaem=1 then eda;
				CharDead;
				AddToSystemJournal('743 Gogogo');
				if gfrt=1 then ubegalka;
				if ert=1 then 
					begin
						Break;
						AddToSystemJournal('748 ОО нееет меня атакуют Применяю брейк');
					end;
					
					
				if i< kol_der then 
				begin
                                  CharDead;
				  check_hide;
			          if gfrt=1 then ubegalka;
			          if ert=1 then 
				      begin
				        Break;
					AddToSystemJournal('803 ОО нееет меня атакуют Применяю брейк');
				      end;
                                 checksave;
				NewMoveXY(res_arr[i].X,res_arr[i].Y,false,1,false);
				 CharDead;
				  check_hide;
			          if gfrt=1 then ubegalka;
			          if ert=1 then 
				      begin
				        Break;
					AddToSystemJournal('813 ОО нееет меня атакуют Применяю брейк');
				      end;
                                chop(res_arr[i]);
			        i:=i+1;
			        end;
			        if i>=kol_der then 
			        begin
                                  i:=0;
                                  i:=i+1;
                                  CharDead;
				  check_hide;
			          if gfrt=1 then ubegalka;
			          if ert=1 then 
				      begin
				        Break;
					AddToSystemJournal('816 ОО нееет меня атакуют Применяю брейк');
				      end;
                                  checksave;
			          NewMoveXY(res_arr[i].X,res_arr[i].Y,false,1,false);
				  CharDead;
				  check_hide;
			          if gfrt=1 then ubegalka;
			          if ert=1 then 
				      begin
				        Break;
					AddToSystemJournal('831 ОО нееет меня атакуют Применяю брейк');
				      end;
			          chop(res_arr[i]);
			          i:=i+1;
		                end;
			//AddToSystemJournal('828 и тут i = ' + inttostr(i)+' Ded = '+ inttostr(ded) );
			if (Weight>=(MaxWeight-10)) and (vala<>0) then
				begin
					if vala=1 then
					begin
						AddToSystemJournal('766 Перевес начинаю тп на продажу');
						check_hide;
						checksave;
						if tp=1 then
						runebook(runebook_les,magaz_sell);
						AddToSystemJournal('770 я в магазине  продаю дрова');
						checksave;
						AddToSystemJournal('773 я подхожу к продавцу');
						podhod(Vendor_Log);
						checksave;
						vendor_sell;
						wait(3000);
						checksave;
						AddToSystemJournal('779 телепортируюсь в банк');
						if tp=1 then
						runebook(runebook_les,bank);
						checksave;
						wait(5000);
						checksave;
						uosay('bank guards');
						wait(3000);
						AddToSystemJournal('626 Кладу деньги в банк');
						PutMoneyBank;
						wait(3000);
						checksave;
						wait(3000);
						PutLogBank;
						wait(3000);
					end;
				checksave;
				if vala=2 then
					begin
						if baala = 1 then 
							begin
								checksave;
								AddToSystemJournal('619 телепортируюсь в банк');
								if tp=1 then
								runebook(runebook_les,bank);
								wait(4000);
								checksave;
								uosay('bank guards');
								wait(3000);
								PutLogBank;
								wait(3000);
							end;
						AddToSystemJournal('732 телепортируюсь К СУНДУКУ ВОЗЛЕ ДОМА');
						if tp=1 then
						runebook(runebook_les,homecase); 
					        NewMoveXY(StartHomeX,StartHomeY,false,1,false); 
                                                wait(4000);
                                                 checksave;					
						UseObject(casebox);
						checksave;
						check_hide;
						PutLogCase;
						wait(1000);
						checksave;
					end;
				AddToSystemJournal('633 телепортируюсь в лес');
				if tp=1 then
				runebook(runebook_les,Les);
				NewMoveXY(StartForestX,StartForestY,false,1,false);
                                checksave;
                                wait(4000)
                                checksave;
                                if gfrt=1 then ubegalka;
				if gfrt=0 then poisk_tree;
				end;
		end;
		if gfrt=1 then ubegalka;
		if gfrt=0 then poisk_tree;
	end;
end.