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

Пробема с хайдом !

Only for requests.
Post Reply
Lietman
Novice
Novice
Posts: 74
Joined: 12.12.2010 14:17
Contact:

Пробема с хайдом !

Post by Lietman »

Когда чар стоит в хайде и начинает двигаться выходит из хайда :( при любой скорости хоть 700 хоть 50 :(
Без скрипта такой проблемы нету.
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Re: Пробема с хайдом !

Post by Fenix »

А пример скрипта?
Хотя я подозреваю, что ты когда двигаешься - бегаешь. В этом случае чар всегда из хайда выходит, в том числе и на голом клиенте.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
Lietman
Novice
Novice
Posts: 74
Joined: 12.12.2010 14:17
Contact:

Re: Пробема с хайдом !

Post by Lietman »

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.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Пробема с хайдом !

Post by shinma »

потому что скрипт я писал под другой шард. а где ты его взял там он работает на ура.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
Lietman
Novice
Novice
Posts: 74
Joined: 12.12.2010 14:17
Contact:

Re: Пробема с хайдом !

Post by Lietman »

на других скриптах то же такая история !
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Пробема с хайдом !

Post by shinma »

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

Re: Пробема с хайдом !

Post by Fenix »

Кури в сторону NewMoveXY и его параметров. Один из них отвечает за бег.
А вообще, присоединяюсь к shinma. Тебе стоило бы проверить движение в хайде на более простом скрипте. Алгоритм приблизительно такой:
1. Использовали скилл хайда.
2. Ждем время отката использования скила.
3. Если перс не спрятался, то переходим к пункту 1.
4. Делаем шаг в сторону через newMoveXY.
5. Проверяем чар в хайде или нет. Делаем выводы.
Соответственно для верности показаний необходимо произвести несколько замеров.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
aalexx
Novice
Novice
Posts: 69
Joined: 06.02.2012 20:43
Location: Латвия\Англия
Contact:

Re: Пробема с хайдом !

Post by aalexx »

Кстати, всё ещё актуально. При первом-втором шаге вылетает из хайда.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Пробема с хайдом !

Post by Vizit0r »

рассчитывай путь, получай массив с точками пути, и ходи шагами по нему. После каждого щага - проверка на хайд.

Можно поиграться со скоростями шагов, но это не 100% решение.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Хреник
Novice
Novice
Posts: 70
Joined: 11.06.2008 20:33

Re: Пробема с хайдом !

Post by Хреник »

мож скилл стелс не прокачанн или шмотки крупногабаритные одеты? :)
Post Reply