Page 1 of 1

GetDistance ?

Posted: 28.07.2009 18:06
by Xrymz
У меня вопрос по поводу GetDistance
там описано что он должен вернуть -1 если объекта нету
я пишу скрипт чтобы он бегал за другим чаром
я по ИД чара за ним бегаю.. и когда чар убегает за экран у меня скрипт перестает бегать.. это и понятно он не может отпеределить GetX and GetY чара...

я сделал кусок кода для проверки, а он не работает... как это можно реализовать?
GetDistance -1 даже не возвращает, а когда не видит чара просто не работает...

Code: Select all

         long:=GetDistance(id_chara);
         if(long>0) OR (long<>null) then
           UOSay(inttostr(GetDistance(Master)))
         else UOsay('Fuck');

Posted: 28.07.2009 22:20
by Vizit0r
а что есть null?

кусок из кода функции Script_GetDistance

Code: Select all

{Если обьекта с таким ID несуществует - Выходим}
if LowestID = $00000000 then
    begin
    Result := -1;
    TCharacter(Char).Objects.UnLockObjects;
    Exit;
    end;
должен возвращать -1

Posted: 28.07.2009 22:53
by alpi
как это можно реализовать?
у меня работает такой код. пытался заодно сделать чтоб в стелсе ходил за чаром, но в принципе после второго ифа можно все потереть :)

Code: Select all

program bot_move;
const master = $0000C080;
var move_count : byte;
    ax,ay,timec,tmp_timer : integer;

   procedure checkhide;
	begin
	 if hidden then exit
	  else repeat
	   UseSkill('Hiding');
	    wait(3000);
	  until hidden;
	end;
	
begin

 useobject(self);
  UoSay('all come');

  repeat
  
   if GetDistance(master) > 5 then MoveXY(GetX(master),GetY(master),false,2,true);
   if GetDistance(master) <= 5 then 
     begin
	  checkhide;
	   while (GetDistance(master) > 2) and (hidden) do 
	    begin
		 checkhide;
		  move_count := 1;
           repeat
		     if hidden then begin UseSkill('Stealth'); timec := timer; end
		      else begin checkhide; UseSkill('Stealth'); timec := timer; end;
			   ax := GetX(self); 
			    ay := GetY(self);
				 MoveXY(GetX(master),GetY(master),true,2,false);
				  if (GetX(self) <> ax) or (GetY(self) <> ay) then move_count := move_count +1;
			until hidden or (move_count < 8); 
			  tmp_timer := timer - timec;
			   if tmp_timer < 3000 then	 tmp_timer := 3000 - tmp_timer 
			   else tmp_timer := 3000;
			    wait(tmp_timer);
	    end;
	 end;

  until dead;

end.
кстати, у меня он догонял чара и через 1-2 экрана вроде...