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

General Injection issues

Moderators: Murderator+, Murderator

Post Reply
RENE
Posts: 7
Joined: 2005-02-07 23:49:03

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

Post by RENE »

Как можно получить список всех NPC находящихся в пределах экрана персонажа и желательно их имена.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Поиском по типам мужчин и женщин. У найденных брать сериалы и выводить в текстовое окно.
RENE
Posts: 7
Joined: 2005-02-07 23:49:03

Post by RENE »

sub getnames()
uo.textclear()
uo.textopen()
uo.findtype('0x0190')
...
Эм, а сюда что? :)
...
end sub

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

не канает
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

во-первых, uo.findtype('0x0190', '-1', '1') - тебе же не в паке искать чаров надо, а на земле.

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

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

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

Пости что получилось, обсудим ;)
RENE
Posts: 7
Joined: 2005-02-07 23:49:03

Post by RENE »

Как из ID получить имя, если на него небыло клика и небыло allnames?
Как можно интепретировать команду allnames в inj?
Для обращения к NPC обязательно использование имя? Например <vendor_name> buy.
Askaneli
Sphere expert
Posts: 1143
Joined: 2004-10-01 08:27:38
Location: Уфа

Post by Askaneli »

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

uo.getname(ID)
Сделал дело - флуди смело !!!
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

RENE wrote:Как из ID получить имя, если на него небыло клика и небыло allnames?


никак

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


Никак

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


Да, если ты хочешь обратиться к конкретному НПС в магазине, где их несколько. Если вендор один - имя можешь опустить.
RENE
Posts: 7
Joined: 2005-02-07 23:49:03

Post by RENE »

После рекола вокруг чара на ростоянии до 5 тейлов стоит 7 вендоров, к ним необходимо обратиться с командой buy ,предварительно получив имена каждого из них, как можно реализовать последнее?
666Man666
Junior Expert
Posts: 474
Joined: 2004-11-13 00:43:55
Location: Киберзадроцк
Contact:

Post by 666Man666 »

RENE wrote:После рекола вокруг чара на ростоянии до 5 тейлов стоит 7 вендоров, к ним необходимо обратиться с командой buy ,предварительно получив имена каждого из них, как можно реализовать последнее?
Всё что тибе нужно :)
  • uo.ignore()
  • uo.findtype()
  • uo.click()
  • uo.getname()
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

чтобы превратить что-то на ссылку в хелпе, например uo.click, нужно написать uo.[уhlp_click], результат такой: uo.[yhlp_click]
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

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


Никак

макрос делающий клик на всех обьектас с положительным [yhlp_IsNPC] и всех трупах в пределах экрана
RENE
Posts: 7
Joined: 2005-02-07 23:49:03

Post 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, все как и должно быть.

В чем косяк? И как поправить?
RENE
Posts: 7
Joined: 2005-02-07 23:49:03

Post 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() и только после клика вручную
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post 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
Striker
Posts: 8
Joined: 2005-02-16 23:43:57

Post 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 в переменную занести ?
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

666Man666 wrote:Всё что тибе нужно :)
  • uo.ignore()
  • uo.findtype()
  • uo.click()
  • uo.getname()

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

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

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