Yoko
http://forum.yoko.com.ua/

uo.getname?
http://forum.yoko.com.ua/viewtopic.php?f=20&t=13229
Page 1 of 1

Author:  korzh [ 2008-02-11 21:46:31 ]
Post subject:  uo.getname?

На мой взгляд одна из самых кривых функций в инжекте, но бывает очень необходимой.

Вот почему
Code:
uo.getname('self')

или
Code:
uo.getname('0x000000')

работает нормально.

А
Code:
id=uo.getserial(uo.TradeOpponent())
name=uo.getname(id)


или
Code:
uo.GetName('laststatus')

через жопу?

Была конечно идея получать имя путем клика + дергать последнюю строку журнала, но это работает через то же место.

Как другими способами узнать имя объекта например для uo.TradeOpponent() ? :roll:

Author:  Destruction [ 2008-02-11 22:58:11 ]
Post subject: 

uo.TradeName()

PS: Никогда не испытывал проблем с uo.getName(), просто вы пользуете видимо неправильно.

Author:  Kynep [ 2008-02-11 23:16:41 ]
Post subject: 

Destruction wrote:
uo.TradeName()

PS: Никогда не испытывал проблем с uo.getName(), просто вы пользуете видимо неправильно.


Есть такой косяк. Почему то когда делаешь:
Code:
VAR name, ser
ser = UO.GetSerial('finditem')
name = UO.GetName(ser)

UO.PrintText(name)

ни чего не выдает. странно правда?

Author:  Edred [ 2008-02-11 23:18:33 ]
Post subject: 

Kynep wrote:
Code:
VAR name, ser
ser = UO.GetSerial('finditem')
name = UO.GetName(ser)

UO.PrintText(name)


Чего же тут странного? Раз поиск не делался, значит и finditem пустое. Раз пустое - имени нету. Все естественно. Это во-первых.

Во-вторых. Инжекту просто негде взять имя чего-либо если клиент это имя не получал от шарда. Поэтому чтобы получить имя - нужно перед этим кликнуть по объекту / чару / НПС. Об этом, вообще-то, я еще во втором или третьем уроке скриптинга писал. Странно, что-то на этом форуме приписками "эксперт" разбрасываются направо-налево... Вон у Грина до сих пор "junior expert", а тут эксперт, который не знает элементарных вещей.

Author:  Kynep [ 2008-02-11 23:21:40 ]
Post subject: 

Edred wrote:
Kynep wrote:
Code:
VAR name, ser
ser = UO.GetSerial('finditem')
name = UO.GetName(ser)

UO.PrintText(name)


Чего же тут странного? Раз поиск не делался, значит и finditem пустое. Раз пустое - имени нету. Все естественно.

Блин я утрирую, до этого поиск и все как надо )))
Просто если сделать:
Code:
UO.PrintText(UO.GetName(ser))

То все работает )))

Author:  Edred [ 2008-02-11 23:22:27 ]
Post subject: 

Я уже дописал свой пост, читай выше.

Author:  Kynep [ 2008-02-11 23:25:06 ]
Post subject: 

Edred wrote:
Я уже дописал свой пост, читай выше.


Уже прочитал. Я в курсе.

Author:  Kynep [ 2008-02-11 23:39:13 ]
Post subject: 

Edred wrote:
Я уже дописал свой пост, читай выше.


Просто даже если без клика сделать:
Code:
name = UO.GetName('finditem')
UO.PrintText(name)

и
Code:
UO.PrintText(UO.GetName('finditem'))


то в первом случае мы получим 0 а во втором имя. Вам не кажеться это странным?

Author:  Grin [ 2008-02-11 23:41:16 ]
Post subject: 

Code:
UO.PrintText(UO.GetName('finditem'))

name = UO.GetName('finditem')
UO.PrintText(name)


А теперь сделай в обратном порядке;)) на предмете чье имя ты еще 100% не знаешь;)

Author:  Kynep [ 2008-02-12 00:04:37 ]
Post subject: 

Grin wrote:
Code:
UO.PrintText(UO.GetName('finditem'))

name = UO.GetName('finditem')
UO.PrintText(name)


А теперь сделай в обратном порядке;)) на предмете чье имя ты еще 100% не знаешь;)


Интерестная концепция ))) Я пробовал свои техники, указанные выше на элемах, при их появлении имя попадает в журнал в любом случае, даже без клика. Но вот в представленных мной прмерах получается косяк )))

Author:  Grin [ 2008-02-12 00:07:02 ]
Post subject: 

как же все сложно
всем спокойной...

Author:  Kynep [ 2008-02-12 00:10:27 ]
Post subject: 

Grin wrote:
как же все сложно


В смысле? На что Вы намекаете?

Author:  Edred [ 2008-02-12 00:48:09 ]
Post subject: 

Kynep wrote:
Просто даже если без клика сделать:
Code:
name = UO.GetName('finditem')
UO.PrintText(name)

и
Code:
UO.PrintText(UO.GetName('finditem'))


то в первом случае мы получим 0 а во втором имя. Вам не кажеться это странным?


В первом случае поиск нашел объект, чье имя неизвестно, вот и 0. Во втором случае - объект, чье имя известно, вот и есть имя. Делаешь так: дисконнектишься, закрываешь клиент, запускаешь по-новой, заходишь в игру. Ни по чему не кликаешь, запускаешь скрипт, где у тебя:

Code:
name = UO.GetName('finditem')
UO.PrintText(name)
UO.PrintText(UO.GetName('finditem'))


Любуешься абсолютно одинаковым результатом. А именно - 0.

После чего запускаешь скрипт, где у тебя:

Code:
Click('finditem')
wait(1000)
Checklag()
name = UO.GetName('finditem')
UO.PrintText(name)
UO.PrintText(UO.GetName('finditem'))


И опять любуешься одинаковым результатом. А именно - именем объекта. Что и требовалось доказать.

И, наконец, по поводу элема. Не ты ли буквально пару дней назад интересовался, по какому сообщению лучше ловить момент появления элема? Мне кажется, да. Если это так - то все понятно. Как я уже писал, у вас на шарде элемы выкапываются сначала в пак, а потом выпадают под ноги. Так как клиент УО "знает" по именам все объекты, которые находятся у чара в паке (было бы странно, если бы не знал), то абсолютно естественно, что чар (и инжект) знает имя элема без всякого клика на него.

Author:  Destruction [ 2008-02-12 01:11:41 ]
Post subject: 

Вейт не нужен.

Насколько я помню из спецификации TCP-протокола, пакетики ходят строго по-порядку.. Ну может быть плохо помню.

Code:
Sub my.getName( object )
    If uo.getName( object ) == "" Then
        uo.click( object )
        checklag()
    EndIf
    return uo.getName( object )
endsub

Author:  Edred [ 2008-02-12 01:13:45 ]
Post subject: 

По фиг. Это всего лишь пример того, что функция GetName работает абсолютно корректно, просто надо знать правила, по которым она работает... 8)

Author:  Destruction [ 2008-02-12 01:17:05 ]
Post subject: 

Edred wrote:
По фиг. Это всего лишь пример того, что функция GetName работает абсолютно корректно, просто надо знать правила, по которым она работает... 8)

Я ещё в самом начале топика не видел смысла объяснять - увидев объёмы тексту понял - был прав на 100%. В любом случае - есть логика в использовании uo.TradeName().

Вообще - судя по тому, что у него не определяется имя игрока - не стоит галочка "Show names of approaching players" или как её там, а инжект увидев трейд-окошко - не записывает для айдишника имя (блин, хз как правильно сказать, но суть какая-то такая), что не есть гут.. Если вдруг Yoko вернётся - надо будет ему сказать :)

Author:  korzh [ 2008-02-12 02:03:35 ]
Post subject: 

Всем спасибо, у меня все получалиось, причем 3-меняспособами 8)

Author:  Destruction [ 2008-02-12 02:47:54 ]
Post subject: 

korzh wrote:
Всем спасибо, у меня все получалиось, причем 3-меняспособами 8)

Тремя?... Дай угадаю:
1. Поставить галочку в настройка UO - "Show names of approaching players".
2. Делать клац перед использованием uo.getName()
3. Использовать uo.TradeName()

Верно?)

Author:  korzh [ 2008-02-12 04:03:58 ]
Post subject: 

Destruction wrote:
korzh wrote:
Всем спасибо, у меня все получалиось, причем 3-меняспособами 8)

Тремя?... Дай угадаю:
1. Поставить галочку в настройка UO - "Show names of approaching players".
2. Делать клац перед использованием uo.getName()
3. Использовать uo.TradeName()

Верно?)


Да, кроме первого.
1. uo.getserial(uo.TradeOpponent())...

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/