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

findtype не ищет животных(drw)

тут можно задать вопрос по скриптингу
Post Reply
svgg
Posts: 3
Joined: 04.07.2011 0:39

findtype не ищет животных(drw)

Post 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) - их ищет нормально. а животных ни вкакую((
Last edited by svgg on 04.07.2011 0:48, edited 1 time in total.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: findtype не ищет животных(drw)

Post by Vizit0r »

это не скрипт, это полный и абсолютный пипец.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
svgg
Posts: 3
Joined: 04.07.2011 0:39

Re: findtype не ищет животных(drw)

Post by svgg »

но он отлично реагирует на людей, на другие предметы, почему он не хочет реагировать на животных то? разве есть какаято разница ?
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Re: findtype не ищет животных(drw)

Post 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;
Проще научить человека ловить рыбу, чем постоянно ею его кормить. (с) Destruction
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: findtype не ищет животных(drw)

Post 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;
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
svgg
Posts: 3
Joined: 04.07.2011 0:39

Re: findtype не ищет животных(drw)

Post by svgg »

я просто в шоке, но оказываеться, типы живки меняються при изменении состояния персонажа с живого на мертвого и наоборот... а я снимал тип живым персонажем и вставлял его в скрипт, запущенный на мертвом персонаже. теперь всё работает.
Хотя я и не понимаю зачем вы тут столько всего понаписали и так всё усложнили(и как данные усложнения меняют процесс поиска), тем не менее спасибо вам за деятельное участие.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: findtype не ищет животных(drw)

Post 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.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply