Page 1 of 1

Поиск вещей по именам

Posted: 2008-10-30 08:52:03
by YogurtYo
Очень нужен скрипт на поиск вещей по именан, а не по типам. Есь ли такая возможность в инже? (если да, можете дать пример плз? -дальше сам додумаю)

Если нет, есть ли такая возможность в других прогах типа ассиста или изи?

Posted: 2008-10-30 10:11:29
by Destruction
Реализовать можно всё, вопрос в целесообразности.

Как работают имена вещей в УО? - Вы клацаете на предмет и видите его имя..

Т.е. чтобы найти вещь по имени - нужно по всем подозреваемым вещам клацнуть, после чего узнать имя и сверить..

Соответственно, черновой вариант подобного скрипта выглядит так:

Code: Select all

uo.findtype( '-1', '-1', 'ground' ); ищем все вещи на земле
while uo.findcount()
    if uo.getName( 'finditem' ) == '' then
        uo.click( 'finditem' )
        checklag()
    endif
    if uo.getName( 'finditem' ) == 'искомый предмет' then
        uo.moveitem( 'finditem' ) ; забрать найденное, ну или ещё чо-нить
        wait( 500 )
    endif
    uo.ignore( 'finditem' )
    uo.findtype( '-1', '-1', 'ground' )
wend

Posted: 2008-10-30 10:37:35
by YogurtYo
Destruction wrote:Реализовать можно всё, вопрос в целесообразности.

Как работают имена вещей в УО? - Вы клацаете на предмет и видите его имя..

Т.е. чтобы найти вещь по имени - нужно по всем подозреваемым вещам клацнуть, после чего узнать имя и сверить..

Соответственно, черновой вариант подобного скрипта выглядит так:

Code: Select all

uo.findtype( '-1', '-1', 'ground' ); ищем все вещи на земле
while uo.findcount()
    if uo.getName( 'finditem' ) == '' then
        uo.click( 'finditem' )
        checklag()
    endif
    if uo.getName( 'finditem' ) == 'искомый предмет' then
        uo.moveitem( 'finditem' ) ; забрать найденное, ну или ещё чо-нить
        wait( 500 )
    endif
    uo.ignore( 'finditem' )
    uo.findtype( '-1', '-1', 'ground' )
wend

Просто постоял на скрипте с одним нпсом с которого падают ванды - соответственно у меня их теперь два мешка. Распознал их вот этой переделкой чеьго-то скрипта

Code: Select all

sub Item()
VAR Sunduk="0x404CA392"   
dim wand[4]
   var i
   wand[1]=0x0DF4
   wand[2]=0x0DF2
   wand[3]=0x0DF5
   wand[4]=0x0DF3
   for i = 1 to 4
   
      
      While UO.Count(wand[i])
         UO.FindType(wand[i],-1,'backpack')
         wait(300)
         If UO.FindCount() Then
            Repeat
               UO.DeleteJournal()
               UO.WaitTargetObject('finditem')
               UO.Useskill('Item Identification')
               wait(5000)
            Until UO.InJournal('You estimate')
            UO.MoveItem('finditem',1,Sunduk)
         
      Endif
      
   Wend
   next
end sub

Насчет целесообразности:
Теперь хочу их рассортировать на "нужные", "лажу" и "трэш"...
Нужные в сундук, трэш в трэш...а лажой буду магери качать :)


Спасибо за скрипт

Posted: 2008-10-30 10:41:16
by Destruction
Ну, так вы банально неправильно подходите к вопросу - вам не нужно искать вещи по имени -)

Вам нужно найти все палки и в зависимости от названия сделать что-либо ;-)

Posted: 2008-10-30 10:49:36
by YogurtYo
Destruction wrote:Ну, так вы банально неправильно подходите к вопросу - вам не нужно искать вещи по имени -)

Познакомился с инжой совсем недавно - то есть составить что-нибудь работающее из кусков чужого кода - ок. Переделать, иногда улучшить чужой скрипт, сделать замут из двух скриптов -ок. Но моск еще не настроился на автономную работу и создание алгоритмов до того как кодить. Просто если начинаю писать отсебятину с самого начала - потом все хочеться изменить и в итоге хрень получаеться.

Вам нужно найти все палки и в зависимости от названия сделать что-либо ;-)

А как это выглядит на практике? :roll:

Posted: 2008-10-30 12:11:30
by Grin
принципиально - ничем, разница будет только тут

Code: Select all

uo.findtype( '-1', '-1', 'ground' )


соответственно лутше указать тип палки в место -1, и контейнер в место "земли", где палки лежат. Как нашли, кидаем куда нужно.