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

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

тут можно задать вопрос по скриптингу
VeL
Novice
Novice
Posts: 54
Joined: 03.12.2010 18:15

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

Post 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 }
Но на новом стелсе больше не работает.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

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

Post by Vizit0r »

та оно и на старом работало бы через раз))
надежность стремится к нулю.

а на новом да, работать не будет вообще. потому что последняя добавленная шмотка совсем не будет первой в списке.
вперед по форуму искать процедуры поиска трупов.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

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

Post 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 }
Но на новом стелсе больше не работает.
чем так плохо?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

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

Post by Vizit0r »

это сильно просто, костыли - наше всё.

на самом деле там и в игнор лист добавлять надо, и всякое такое делать.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

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

Post by drabadan »

Vizit0r wrote:это сильно просто, костыли - наше всё.

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

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

Post by VeL »

Vizit0r wrote:та оно и на старом работало бы через раз))
надежность стремится к нулю.
Работало как часы, мобы облучивались тысячами. Эх, придется извращаться чтобы получить ИД несчастного трупа...
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

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

Post by Vizit0r »

как часы оно не могло работать, ибо нет никакой гарантии, что последний полученный айди это труп, а не пробегающий игрок, нпц, или еще что-то такое.
я бы еще понял, если б была проверка хотя бы на тип, а так...
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
VeL
Novice
Novice
Posts: 54
Joined: 03.12.2010 18:15

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

Post by VeL »

Vizit0r wrote:как часы оно не могло работать, ибо нет никакой гарантии, что последний полученный айди это труп, а не пробегающий игрок, нпц, или еще что-то такое.
я бы еще понял, если б была проверка хотя бы на тип, а так...
Как это нет? А это что Result := FindType(Corpse, Ground);, где Corpse = $2006 тип трупа...
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

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

Post 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 }
Но на новом стелсе больше не работает.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
MaskedPerson
Neophyte
Neophyte
Posts: 31
Joined: 14.03.2015 12:39

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

Post by MaskedPerson »

Решение кто-нибудь нашел? Не поделитесь?
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

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

Post by Macks »

MaskedPerson wrote:Решение кто-нибудь нашел? Не поделитесь?
Что там искать, у более нового тела айдишник больше.
Отсортируй и вперед.
MaskedPerson
Neophyte
Neophyte
Posts: 31
Joined: 14.03.2015 12:39

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

Post by MaskedPerson »

Macks wrote:
Что там искать, у более нового тела айдишник больше.
Отсортируй и вперед.
А можно пример реализации? :roll:
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

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

Post by Macks »

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

Code: Select all

FindedList.Sort();
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

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

Post by Vizit0r »

LastObject
не?

на худой конец - использовать классику - выпотрошил труп, в игнор-лист его, и вперед искать опять тушку, пока не найдется - и так по кругу.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
VeL
Novice
Novice
Posts: 54
Joined: 03.12.2010 18:15

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

Post by VeL »

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

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