uo.getname?

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
korzh
Posts: 220
Joined: 2007-04-26 23:35:15

uo.getname?

Post by korzh »

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

Вот почему

Code: Select all

uo.getname('self')

или

Code: Select all

uo.getname('0x000000')

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

А

Code: Select all

id=uo.getserial(uo.TradeOpponent())
name=uo.getname(id)


или

Code: Select all

uo.GetName('laststatus')

через жопу?

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

Как другими способами узнать имя объекта например для uo.TradeOpponent() ? :roll:
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

uo.TradeName()

PS: Никогда не испытывал проблем с uo.getName(), просто вы пользуете видимо неправильно.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Destruction wrote:uo.TradeName()

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


Есть такой косяк. Почему то когда делаешь:

Code: Select all

VAR name, ser
ser = UO.GetSerial('finditem')
name = UO.GetName(ser)

UO.PrintText(name)

ни чего не выдает. странно правда?
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Kynep wrote:

Code: Select all

VAR name, ser
ser = UO.GetSerial('finditem')
name = UO.GetName(ser)

UO.PrintText(name)


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

Во-вторых. Инжекту просто негде взять имя чего-либо если клиент это имя не получал от шарда. Поэтому чтобы получить имя - нужно перед этим кликнуть по объекту / чару / НПС. Об этом, вообще-то, я еще во втором или третьем уроке скриптинга писал. Странно, что-то на этом форуме приписками "эксперт" разбрасываются направо-налево... Вон у Грина до сих пор "junior expert", а тут эксперт, который не знает элементарных вещей.
Last edited by Edred on 2008-02-11 23:21:46, edited 1 time in total.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Edred wrote:
Kynep wrote:

Code: Select all

VAR name, ser
ser = UO.GetSerial('finditem')
name = UO.GetName(ser)

UO.PrintText(name)


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

Блин я утрирую, до этого поиск и все как надо )))
Просто если сделать:

Code: Select all

UO.PrintText(UO.GetName(ser))

То все работает )))
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Я уже дописал свой пост, читай выше.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

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


Уже прочитал. Я в курсе.
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

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


Просто даже если без клика сделать:

Code: Select all

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

и

Code: Select all

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


то в первом случае мы получим 0 а во втором имя. Вам не кажеться это странным?
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Code: Select all

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

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


А теперь сделай в обратном порядке;)) на предмете чье имя ты еще 100% не знаешь;)
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Grin wrote:

Code: Select all

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

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


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


Интерестная концепция ))) Я пробовал свои техники, указанные выше на элемах, при их появлении имя попадает в журнал в любом случае, даже без клика. Но вот в представленных мной прмерах получается косяк )))
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

как же все сложно
всем спокойной...
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

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


В смысле? На что Вы намекаете?
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Kynep wrote:Просто даже если без клика сделать:

Code: Select all

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

и

Code: Select all

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


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


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

Code: Select all

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


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

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

Code: Select all

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


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

И, наконец, по поводу элема. Не ты ли буквально пару дней назад интересовался, по какому сообщению лучше ловить момент появления элема? Мне кажется, да. Если это так - то все понятно. Как я уже писал, у вас на шарде элемы выкапываются сначала в пак, а потом выпадают под ноги. Так как клиент УО "знает" по именам все объекты, которые находятся у чара в паке (было бы странно, если бы не знал), то абсолютно естественно, что чар (и инжект) знает имя элема без всякого клика на него.
Last edited by Edred on 2008-02-12 01:12:34, edited 1 time in total.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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

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

Code: Select all

Sub my.getName( object )
    If uo.getName( object ) == "" Then
        uo.click( object )
        checklag()
    EndIf
    return uo.getName( object )
endsub
Last edited by Destruction on 2008-02-12 01:15:32, edited 2 times in total.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

По фиг. Это всего лишь пример того, что функция GetName работает абсолютно корректно, просто надо знать правила, по которым она работает... 8)
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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

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

Вообще - судя по тому, что у него не определяется имя игрока - не стоит галочка "Show names of approaching players" или как её там, а инжект увидев трейд-окошко - не записывает для айдишника имя (блин, хз как правильно сказать, но суть какая-то такая), что не есть гут.. Если вдруг Yoko вернётся - надо будет ему сказать :)
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
korzh
Posts: 220
Joined: 2007-04-26 23:35:15

Post by korzh »

Всем спасибо, у меня все получалиось, причем 3-меняспособами 8)
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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

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

Верно?)
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
korzh
Posts: 220
Joined: 2007-04-26 23:35:15

Post by korzh »

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

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

Верно?)


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