Как реализовать такой поиск..?

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Spirit
Posts: 101
Joined: 2006-03-23 19:25:23

Как реализовать такой поиск..?

Post by Spirit »

В общем у меня сундук с вещами (например, мешки пустые и не очень).
Мне нужно из этих мешков найти пустые.
Я ищу первый мешок, если он оказывается непустым, мне надо его исключить из поиска и искать заного.
Я что-то всё не могу сообразить, как это сделать, пытался добавлять найденный непустой мешок в игнор, но не работает.
Вроде бы несложное действие, прошу помощи, заранее благодарен. :)
:O
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Как реализовать такой поиск..?

Post by ZeroDX »

Вот пример с игнором

Code: Select all

sub Search()
  var t_Bag = '0x1234', id_Container = '0x12345678', id_Bag
  While true
    UO.FindType(t_Bag, -1, id_Container)
    If UO.FindCount() then
      id_Bag = UO.GetSerial('finditem')
      UO.FindType(-1, -1, id_Bag)
      If UO.FindCount() then
        UO.Ignore(id_Bag)
       else
        Return id_Bag
      Endif
     else
      UO.IgnoreReset()
      Return 0
    Endif
  Wend
Endsub
volhram
Posts: 95
Joined: 2004-10-19 16:25:45

Re: Как реализовать такой поиск..?

Post by volhram »

хм, разве можно искать что то в сумке если до этого её не открыл?...на моём сервере нельзя..
а при открытии в журнале появляются сообщения
Contains: 8 items
Contains: 0 items
собственно их и можно отслеживать, не используя финтип, только весь экран в открытых сумках будет...
но, как я понимаю...при использовании финдтип всёравно открывать нужно...
сложно что то посоветовать, не зная как всё это работает на конкретном шарде..
логика такая...

Code: Select all

uo.ignorereset()
UO.FindType(t_Bag, -1, id_Container)
While uo.findcount() > 0

   if ......
   ........
   else
   uo.ignore('finditem')
   end if

   UO.FindType(t_Bag, -1, id_Container)
wend

по какому условию отсеивать нужно смотреть по месту)
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Как реализовать такой поиск..?

Post by Mirage »

Открывать нужно если сумки не были открыты предварительно.

Контейнеры не обязательно открывать в случае если скрипт будет кликать по ним 1 раз. Тогда нужно будет ловить сообщение в журнале и переводить его в число.
Но работать с журналом по моему мнению хуже чем с количеством найденных предметов. Хотя на вкус и цвет...
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Как реализовать такой поиск..?

Post by ZeroDX »

Ой да ладно

Code: Select all

sub Search()
  var t_Bag = '0x1234', id_Container = '0x12345678', id_Bag
  While true
    UO.FindType(t_Bag, -1, id_Container)
    If UO.FindCount() then
      id_Bag = UO.GetSerial('finditem')
      If ItemCount(id_Bag) > 0 then
        UO.Ignore(id_Bag)
       else
        Return id_Bag
      Endif
     else
      UO.IgnoreReset()
      Return 0
    Endif
  Wend
Endsub

Sub ItemCount(id)
  var msg = 'ag (', Count = '0', String, i, j
  DelJournal(msg)
  UO.Click(id)
  Repeat
    Wait(100)
  Until UO.InJournal(msg)
  String = UO.Journal(UO.InJournal(msg) - 1)
  For i = 0 to len(String)
    If String[i] == '(' then
      For j = i + 1 to len(String)
        If String[j] <> ' ' then
          Count = Count + String[j]
         else
          Return val(Count)
        Endif
      Next
    Endif
  Next
Endsub

Sub DelJournal(msg)
  While uo.injournal(msg)
    UO.SetJournalLine(UO.InJournal(msg) - 1, '')
  Wend
Endsub
Last edited by ZeroDX on 2011-07-05 18:47:59, edited 1 time in total.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Как реализовать такой поиск..?

Post by Mirage »

Ну вот люблю я когда экран завален открытыми контейнерами со всякими ништяками :mrgreen:
PS есть галочка в угре чтобы контейнеры все открывались только в правом верхнем углу экрана - не раздражает как обычные гирлянды.
На нескольких шардах bag называется Bag. Так что лучше

var msg = 'ag ('

использовать.
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Как реализовать такой поиск..?

Post by ZeroDX »

Поправлено
Post Reply