Page 1 of 2

ID последнего трупа

Posted: 03.02.2014 17:11
by VeL
Как на новом стелсе получить ID последнего трупа?

Раньше делал так:

Code: Select all

function LastCorpse: Cardinal;
var
  FindedList    : TStringList;
begin
  Result := FindType(Corpse, Ground);
  if Result > 0 then
    begin
      FindedList := TStringList.Create;
      if GetFindedList(FindedList) then
        Result := StrToInt('$' + FindedList.Strings[0]);
      FindedList.Free;
    end;
end; { LastCorpse }
Но на новом стелсе больше не работает.

Re: ID последнего трупа

Posted: 03.02.2014 19:30
by Vizit0r
та оно и на старом работало бы через раз))
надежность стремится к нулю.

а на новом да, работать не будет вообще. потому что последняя добавленная шмотка совсем не будет первой в списке.
вперед по форуму искать процедуры поиска трупов.

Re: ID последнего трупа

Posted: 03.02.2014 20:59
by drabadan
VeL wrote:Как на новом стелсе получить ID последнего трупа?

Раньше делал так:

Code: Select all

function LastCorpse: Cardinal;
//var
  //FindedList    : TStringList;
begin
  Result := FindType(Corpse, Ground);
  //if Result > 0 then
    //begin
      //FindedList := TStringList.Create;
      //if GetFindedList(FindedList) then
        //Result := StrToInt('$' + FindedList.Strings[0]);
      //FindedList.Free;
    //end;
end; { LastCorpse }
Но на новом стелсе больше не работает.
чем так плохо?

Re: ID последнего трупа

Posted: 03.02.2014 21:12
by Vizit0r
это сильно просто, костыли - наше всё.

на самом деле там и в игнор лист добавлять надо, и всякое такое делать.

Re: ID последнего трупа

Posted: 03.02.2014 21:39
by drabadan
Vizit0r wrote:это сильно просто, костыли - наше всё.

на самом деле там и в игнор лист добавлять надо, и всякое такое делать.
автор процедуры не показал, для чего оно ему надо. Что за скрипт вообще, для убийства 1 моба раз в 5 минут, типа майнинг или ламбер гварда, извращаться - смысла нет. Если у него фарм скрипт, где надо едрить колотить чего делать - то конечно, да, да да. Но извините в 1 процедуре это все не выпишишь, игнор надо формировать к нему вызов строить проверки и т.п.

Re: ID последнего трупа

Posted: 04.02.2014 10:10
by VeL
Vizit0r wrote:та оно и на старом работало бы через раз))
надежность стремится к нулю.
Работало как часы, мобы облучивались тысячами. Эх, придется извращаться чтобы получить ИД несчастного трупа...

Re: ID последнего трупа

Posted: 04.02.2014 10:30
by Vizit0r
как часы оно не могло работать, ибо нет никакой гарантии, что последний полученный айди это труп, а не пробегающий игрок, нпц, или еще что-то такое.
я бы еще понял, если б была проверка хотя бы на тип, а так...

Re: ID последнего трупа

Posted: 04.02.2014 10:38
by VeL
Vizit0r wrote:как часы оно не могло работать, ибо нет никакой гарантии, что последний полученный айди это труп, а не пробегающий игрок, нпц, или еще что-то такое.
я бы еще понял, если б была проверка хотя бы на тип, а так...
Как это нет? А это что Result := FindType(Corpse, Ground);, где Corpse = $2006 тип трупа...

Re: ID последнего трупа

Posted: 04.02.2014 10:44
by Vizit0r
VeL wrote:
Vizit0r wrote:как часы оно не могло работать, ибо нет никакой гарантии, что последний полученный айди это труп, а не пробегающий игрок, нпц, или еще что-то такое.
я бы еще понял, если б была проверка хотя бы на тип, а так...
Как это нет? А это что Result := FindType(Corpse, Ground);, где Corpse = $2006 тип трупа...
где это?
VeL wrote:Как на новом стелсе получить ID последнего трупа?

Раньше делал так:

Code: Select all

function LastCorpse: Cardinal;
var
  FindedList    : TStringList;
begin
  Result := FindType(Corpse, Ground);
  if Result > 0 then
    begin
      FindedList := TStringList.Create;
      if GetFindedList(FindedList) then
        Result := StrToInt('$' + FindedList.Strings[0]);
      FindedList.Free;
    end;
end; { LastCorpse }
Но на новом стелсе больше не работает.

Re: ID последнего трупа

Posted: 14.03.2015 14:48
by MaskedPerson
Решение кто-нибудь нашел? Не поделитесь?

Re: ID последнего трупа

Posted: 14.03.2015 16:31
by Macks
MaskedPerson wrote:Решение кто-нибудь нашел? Не поделитесь?
Что там искать, у более нового тела айдишник больше.
Отсортируй и вперед.

Re: ID последнего трупа

Posted: 14.03.2015 16:44
by MaskedPerson
Macks wrote:
Что там искать, у более нового тела айдишник больше.
Отсортируй и вперед.
А можно пример реализации? :roll:

Re: ID последнего трупа

Posted: 14.03.2015 20:37
by Macks
MaskedPerson wrote:
Macks wrote:
Что там искать, у более нового тела айдишник больше.
Отсортируй и вперед.
А можно пример реализации? :roll:

Code: Select all

FindedList.Sort();

Re: ID последнего трупа

Posted: 15.03.2015 18:09
by Vizit0r
LastObject
не?

на худой конец - использовать классику - выпотрошил труп, в игнор-лист его, и вперед искать опять тушку, пока не найдется - и так по кругу.

Re: ID последнего трупа

Posted: 15.03.2015 22:46
by VeL
Vizit0r wrote:на худой конец - использовать классику - выпотрошил труп, в игнор-лист его, и вперед искать опять тушку, пока не найдется - и так по кругу.
Для того чтобы выпотрошить труп, его нужно для начала найти, причем найти труп "нужного" моба, а не перебирать кучи трупов после других игроков. Можно конечно перед атакой игнорить трупы всех мобов вокруг, но и тут не факт, что пока бот убивает моба, не появятся новые трупы.

Как вариант, можно повесить на эвент появление строки "Body" в журнале, таким образом получать ID трупа, но это очередной костыль. Лично я не понимаю, почему до сих пор LastCorpse не реализован со стороны стелса, как это было сделано в инжекте миллион лет тому назад))