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

GetDistance ?

тут можно задать вопрос по скриптингу
Post Reply
Xrymz
Posts: 1
Joined: 16.07.2009 23:01

GetDistance ?

Post 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');
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

а что есть null?

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

Code: Select all

{Если обьекта с таким ID несуществует - Выходим}
if LowestID = $00000000 then
    begin
    Result := -1;
    TCharacter(Char).Objects.UnLockObjects;
    Exit;
    end;
должен возвращать -1
Last edited by Vizit0r on 29.07.2009 12:28, edited 2 times in total.
alpi
Novice
Novice
Posts: 51
Joined: 02.07.2009 17:37
Contact:

Post 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 экрана вроде...
just student
Post Reply