Page 1 of 1

Получение списка NPC в пределах экрана

Posted: 2005-02-08 23:41:17
by RENE
Как можно получить список всех NPC находящихся в пределах экрана персонажа и желательно их имена.

Posted: 2005-02-09 00:08:19
by Edred
Поиском по типам мужчин и женщин. У найденных брать сериалы и выводить в текстовое окно.

Posted: 2005-02-09 00:26:21
by RENE
sub getnames()
uo.textclear()
uo.textopen()
uo.findtype('0x0190')
...
Эм, а сюда что? :)
...
end sub

Типа uo.findtype('0x0190')
uo.getname(finditem)

не канает

Posted: 2005-02-09 00:47:00
by Edred
во-первых, uo.findtype('0x0190', '-1', '1') - тебе же не в паке искать чаров надо, а на земле.

Во-вторых, после нужна проверка найдено ли что:

If UO.FindCount() > 0 Then
; вот здесь возьмем серийник этого чара
; и выведем его в текстовое окно
UO.TextPrint( UO.GetSerial('finditem')
; теперь надо этого чара отправить в игнор и повторить поиск
UO.Ignore('finditem')
Endif

повторение поиска сделай циклом. Чаров может быть и несколько десятков. В конце не забудь поставить
UO.IgnoreReset()

Пости что получилось, обсудим ;)

Posted: 2005-02-09 08:28:52
by RENE
Как из ID получить имя, если на него небыло клика и небыло allnames?
Как можно интепретировать команду allnames в inj?
Для обращения к NPC обязательно использование имя? Например <vendor_name> buy.

Posted: 2005-02-09 14:02:09
by Askaneli
RENE wrote:Как из ID получить имя, если на него небыло клика и небыло allnames?
Как можно интепретировать команду allnames в inj?
Для обращения к NPC обязательно использование имя? Например <vendor_name> buy.

uo.getname(ID)

Posted: 2005-02-09 14:03:22
by Edred
RENE wrote:Как из ID получить имя, если на него небыло клика и небыло allnames?


никак

Как можно интепретировать команду allnames в inj?


Никак

Для обращения к NPC обязательно использование имя? Например <vendor_name> buy.


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

Posted: 2005-02-09 17:30:14
by RENE
После рекола вокруг чара на ростоянии до 5 тейлов стоит 7 вендоров, к ним необходимо обратиться с командой buy ,предварительно получив имена каждого из них, как можно реализовать последнее?

Posted: 2005-02-09 17:39:51
by 666Man666
RENE wrote:После рекола вокруг чара на ростоянии до 5 тейлов стоит 7 вендоров, к ним необходимо обратиться с командой buy ,предварительно получив имена каждого из них, как можно реализовать последнее?
Всё что тибе нужно :)
  • uo.ignore()
  • uo.findtype()
  • uo.click()
  • uo.getname()

Posted: 2005-02-09 18:29:14
by Yoko
чтобы превратить что-то на ссылку в хелпе, например uo.click, нужно написать uo.[уhlp_click], результат такой: uo.[yhlp_click]

Posted: 2005-02-09 18:31:36
by Yoko
Edred wrote:
Как можно интепретировать команду allnames в inj?


Никак

макрос делающий клик на всех обьектас с положительным [yhlp_IsNPC] и всех трупах в пределах экрана

Posted: 2005-02-09 19:26:23
by RENE
Вобщем, дело обстоит так, никого он не видит, пока не будет сделано uo.info()

в окне 'text' печатается сделующее:

ID=0x00000000 Type=0x0000 YC Name=
Quantity: 0 Colour: 0x0000 Layer: 0 Has: 0
X=65535 Y=65535 Z=0 C=0xFFFFFFFF F=0x00

ID=0x0001D5F2 Type=0x0191 EXVG Name=
Quantity: 0 Colour: 0x0000 Layer: 0 Has: 0
X=65535 Y=65535 Z=0 C=0xFFFFFFFF F=0x00

ID=0x0001D5F2 Type=0x0191 EXVG Name=Idola
Quantity: 0 Colour: 0x0000 Layer: 0 Has: 0
X=65535 Y=65535 Z=0 C=0xFFFFFFFF F=0x00

т.е нормальный ID и имя NPC появились только после третьего запуска uo.info() и кликав на вендора вручную.
после того как я это сделал, команда uo.textprint(uo.getname('0x0001D5F2')) стала выдавать имя: Idola, все как и должно быть.

В чем косяк? И как поправить?

Posted: 2005-02-09 20:21:33
by RENE
sub cast()
uo.textopen()
uo.textclear()
uo.ignore('self')
uo.set('finddistance','50')
uo.findtype('0x0191','-1','1')
while uo.findcount() > 0
uo.info('finditem')
uo.ignore('finditem')
uo.findtype('0x0191','-1','1')
wend
uo.ignorereset()
end sub



Если заменить в findtype('0x0191'... на findtype ('-1'..., то найдутся все объекты, но без имени, при повторном uo.info() появятся и имена, но опять же кроме вендоров, они находятся только после тройного использования команды uo.info() и только после клика вручную

Posted: 2005-02-09 21:37:46
by Edred

Code: Select all

sub cast() 
   uo.textopen()
   uo.textclear()
   uo.ignore('self')
   uo.set('finddistance','14')
   ; больше тебе все равно шард не даст
   uo.findtype('0x0191','-1','1')
   while uo.findcount() > 0
      UO.Click( 'finditem' )
      wait(500)
      UO.TextPrint( 'Найден вендор ' + UO.GetName('finditem') + '. Serial = ' + UO.GetSerial('finditem') )
      uo.ignore('finditem')
      uo.findtype('0x0191','-1','1')
   wend
   uo.ignorereset()
end sub

Posted: 2005-02-17 21:36:32
by Striker
Edred wrote:

Code: Select all

sub cast() 
   uo.textopen()
   uo.textclear()
   uo.ignore('self')
   uo.set('finddistance','14')
   ; больше тебе все равно шард не даст
   uo.findtype('0x0191','-1','1')
   while uo.findcount() > 0
      UO.Click( 'finditem' )
      wait(500)
      UO.TextPrint( 'Найден вендор ' + UO.GetName('finditem') + '. Serial = ' + UO.GetSerial('finditem') )
      uo.ignore('finditem')
      uo.findtype('0x0191','-1','1')
   wend
   uo.ignorereset()
end sub


ктонить знает как из текста ID в переменную занести ?

Posted: 2005-02-18 10:24:20
by Sfagnum
666Man666 wrote:Всё что тибе нужно :)
  • uo.ignore()
  • uo.findtype()
  • uo.click()
  • uo.getname()

  • uo.ignorereset()
  • uo.findtype()
  • uo.getname()
  • uo.ignore()
проблему с получением имени не понимаю... при появлении на экране НПЦ автоматом показывается его имя, эта ф-я вроде как настраивается в клиенте.

И не стоит забывать про девушек ;)

ЗЫ не голословен, т.к. успешно пользую подобную ф-ю на ДРВ.