Получение списка NPC в пределах экрана
Moderators: Murderator+, Murderator
Получение списка NPC в пределах экрана
Как можно получить список всех NPC находящихся в пределах экрана персонажа и желательно их имена.
во-первых, uo.findtype('0x0190', '-1', '1') - тебе же не в паке искать чаров надо, а на земле.
Во-вторых, после нужна проверка найдено ли что:
If UO.FindCount() > 0 Then
; вот здесь возьмем серийник этого чара
; и выведем его в текстовое окно
UO.TextPrint( UO.GetSerial('finditem')
; теперь надо этого чара отправить в игнор и повторить поиск
UO.Ignore('finditem')
Endif
повторение поиска сделай циклом. Чаров может быть и несколько десятков. В конце не забудь поставить
UO.IgnoreReset()
Пости что получилось, обсудим
Во-вторых, после нужна проверка найдено ли что:
If UO.FindCount() > 0 Then
; вот здесь возьмем серийник этого чара
; и выведем его в текстовое окно
UO.TextPrint( UO.GetSerial('finditem')
; теперь надо этого чара отправить в игнор и повторить поиск
UO.Ignore('finditem')
Endif
повторение поиска сделай циклом. Чаров может быть и несколько десятков. В конце не забудь поставить
UO.IgnoreReset()
Пости что получилось, обсудим

RENE wrote:Как из ID получить имя, если на него небыло клика и небыло allnames?
никак
Как можно интепретировать команду allnames в inj?
Никак
Для обращения к NPC обязательно использование имя? Например <vendor_name> buy.
Да, если ты хочешь обратиться к конкретному НПС в магазине, где их несколько. Если вендор один - имя можешь опустить.
Вобщем, дело обстоит так, никого он не видит, пока не будет сделано 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, все как и должно быть.
В чем косяк? И как поправить?
в окне '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, все как и должно быть.
В чем косяк? И как поправить?
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() и только после клика вручную
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() и только после клика вручную
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
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 в переменную занести ?
666Man666 wrote:Всё что тибе нужно
- uo.ignore()
- uo.findtype()
- uo.click()
- uo.getname()
- uo.ignorereset()
- uo.findtype()
- uo.getname()
- uo.ignore()
И не стоит забывать про девушек

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