Page 1 of 1
					
				findtype не ищет животных(drw)
				Posted: 04.07.2011 0:41
				by svgg
				Ниже приведен скрипт на сигнализацию в личку, реагирующий на людей. но если переписать тип человека на тип любого животного, например зостра, реагировать он не будет. он вообще не может найти тип животных, только человека. как такое возможно, в чем может быть проблема?
program alarm;
begin
while dead do
begin
finddistance:=24
ignore(self);
ignore($0029D70B);
findtype($0190, Ground) //тип че искать
if findcount>0 then
begin
uosay('\w Payer ALARM!')
wait(8000)
end;
ignore(self);
ignore($0029D70B);
findtype($0191, Ground) // тип че искать
if findcount>0 then
begin
uosay('\w Player ALARM!')
wait(8000)
end;
end;
end.
ps тип зостра вот такой - $00DA
pps только что проверил на бутылках(тип бутылок $0F0E) - их ищет нормально. а животных ни вкакую((
 
			 
			
					
				Re: findtype не ищет животных(drw)
				Posted: 04.07.2011 0:46
				by Vizit0r
				это не скрипт, это полный и абсолютный пипец.
			 
			
					
				Re: findtype не ищет животных(drw)
				Posted: 04.07.2011 0:51
				by svgg
				но он отлично реагирует на людей, на другие предметы, почему он не хочет реагировать на животных то? разве есть какаято разница ?
			 
			
					
				Re: findtype не ищет животных(drw)
				Posted: 04.07.2011 0:57
				by Scripts Writer
				Не идеал, но отрывок из скрипта на убийство мобов. Может поможет.
Code: Select all
// Ищем овцу
function FindSheep : Boolean;
  begin
    repeat
      begin
        NpcSerial := FindType(tSheep, Ground);
        if NpcSerial <> 0 then
          begin
            repeat
              begin
                if not WarMode then SetWarMode(true);
                Attack(NpcSerial);
                NewMoveXY(GetX(NpcSerial), GetY(NpcSerial), true, 1, true);
                wait(500);
              end;
            until (FindType(tCorpse,Ground) <> 0)
            Loot; 
          end;
        FindType(tSheep, Ground);        
      end;
    until (FindCount = 0)
    result := true;
  end;
Для твоего случая, можно использовать таким образом:
Code: Select all
const
tSheep = $0373; // Тип того, что ищем
 
Code: Select all
function FindSomebody : Boolean;
  begin
    NpcSerial := FindType(tSheep, Ground);
    if NpcSerial <> 0 then
      begin
        result := true; 
      end
    else
      begin
        result := false;
      end;
  end;
 
			 
			
					
				Re: findtype не ищет животных(drw)
				Posted: 04.07.2011 1:07
				by Vizit0r
				Code: Select all
function FindSomebody : Boolean;
  begin
    NpcSerial := FindType(tSheep, Ground);
    if NpcSerial <> 0 then
      begin
        result := true; 
      end
    else
      begin
        result := false;
      end;
  end;
=
Code: Select all
function FindSomebody : Boolean;
  begin
    result := FindType(tSheep, Ground) > 0;
  end;
 
			 
			
					
				Re: findtype не ищет животных(drw)
				Posted: 04.07.2011 1:56
				by svgg
				я просто в шоке, но оказываеться, типы живки меняються при изменении состояния персонажа с живого на мертвого и наоборот... а я снимал тип живым персонажем и вставлял его в скрипт, запущенный на мертвом персонаже. теперь всё работает.
Хотя я и не понимаю зачем вы тут столько всего понаписали и так всё усложнили(и как данные усложнения меняют процесс поиска), тем не менее спасибо вам за деятельное участие.
			 
			
					
				Re: findtype не ищет животных(drw)
				Posted: 04.07.2011 9:39
				by Vizit0r
				svgg вот тебе твой скрипт, только слегка исправленный. если у тебя много типов для поиска - тогда говори, я его вообще полностью перепишу для лучшей работы.
Code: Select all
program alarm;
begin
ignore(self);
ignore($0029D70B);
finddistance:=24;
while dead do
if (findtype($0190, Ground)>0) or (findtype($0191, Ground)) > 0) then //тип че искать
begin
uosay('\w Payer ALARM!')
wait(8000);
end;
end.