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.