В общем у меня сундук с вещами (например, мешки пустые и не очень).
Мне нужно из этих мешков найти пустые.
Я ищу первый мешок, если он оказывается непустым, мне надо его исключить из поиска и искать заного.
Я что-то всё не могу сообразить, как это сделать, пытался добавлять найденный непустой мешок в игнор, но не работает.
Вроде бы несложное действие, прошу помощи, заранее благодарен. :)
Как реализовать такой поиск..?
Moderators: Murderator+, Murderator
Re: Как реализовать такой поиск..?
Вот пример с игнором
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
Re: Как реализовать такой поиск..?
хм, разве можно искать что то в сумке если до этого её не открыл?...на моём сервере нельзя..
а при открытии в журнале появляются сообщения
Contains: 8 items
Contains: 0 items
собственно их и можно отслеживать, не используя финтип, только весь экран в открытых сумках будет...
но, как я понимаю...при использовании финдтип всёравно открывать нужно...
сложно что то посоветовать, не зная как всё это работает на конкретном шарде..
логика такая...
по какому условию отсеивать нужно смотреть по месту)
а при открытии в журнале появляются сообщения
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
по какому условию отсеивать нужно смотреть по месту)
Re: Как реализовать такой поиск..?
Открывать нужно если сумки не были открыты предварительно.
Контейнеры не обязательно открывать в случае если скрипт будет кликать по ним 1 раз. Тогда нужно будет ловить сообщение в журнале и переводить его в число.
Но работать с журналом по моему мнению хуже чем с количеством найденных предметов. Хотя на вкус и цвет...
Контейнеры не обязательно открывать в случае если скрипт будет кликать по ним 1 раз. Тогда нужно будет ловить сообщение в журнале и переводить его в число.
Но работать с журналом по моему мнению хуже чем с количеством найденных предметов. Хотя на вкус и цвет...
Re: Как реализовать такой поиск..?
Ой да ладно
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.
Re: Как реализовать такой поиск..?
Ну вот люблю я когда экран завален открытыми контейнерами со всякими ништяками
PS есть галочка в угре чтобы контейнеры все открывались только в правом верхнем углу экрана - не раздражает как обычные гирлянды.
На нескольких шардах bag называется Bag. Так что лучше
var msg = 'ag ('
использовать.

PS есть галочка в угре чтобы контейнеры все открывались только в правом верхнем углу экрана - не раздражает как обычные гирлянды.
На нескольких шардах bag называется Bag. Так что лучше
var msg = 'ag ('
использовать.
Re: Как реализовать такой поиск..?
Поправлено