Работа с журналом Injection, Как взять значение из журнала Injection
Сержант (523056)13 лет
Druid
Сообщений: 82
Рег. 7.09.2011
23 октября 2017 23:18
Сообщение #21
Ggthxbye, Спасибо отличный совет! (=
Сержант (523056)13 лет
Druid
Сообщений: 82
Рег. 7.09.2011
23 октября 2017 23:23
Сообщение #22
Подскажите как придать значению полученному от команды УО.ТАЙМЕР() формат времени 00:00:00(Часы:Минуты:Секунды) ?
Маршал (60157892)14 летИнквизитор
Inquisitor
Сообщений: 6208
Рег. 27.11.2009
24 октября 2017 16:41
Сообщение #23
Xottab,

Из таймера никак. Он в 1/10 секунды время считает.

Есть функция Time:
Консоль: Только из скрипта.
Из скрипта: Function Time()
Введено с версии: <=1501.17
Возвращает число вида HHMMSS, где SS - секунда, MM - минута, YY - час
Старший Лейтенант (6669019)10 лет
Necromancer
Сообщений: 208
Рег. 22.12.2013
25 октября 2017 16:04
Сообщение #24
Жмешь quest, потом ,infogump.

uo.print(UO.LastGump('text',32)) - покажеть строку №32 в подразделе гампа text (Button,Command и т.д.)

Можно написать определение завершенности квеста по наличию картинки замка.


п.с. Если найдешь способ жать квест из скрипта напиши :)
Старший Лейтенант (6669019)10 лет
Necromancer
Сообщений: 208
Рег. 22.12.2013
25 октября 2017 16:07
Сообщение #25
UO.GetGumpCount() - получить количество гампов в памяти инжекта
UO.SelectGump(InjID) - выбрать гамп, с которым будем работать
UO.GumpExists(InjID) / UO.GumpExists(Serial, GumpID) - проверить, есть ли указанный гамп в памяти
UO.GetGump(ident [n]) - работа с гампом, аналогично работе с LastGump, но, если первым параметром является InjID то:
UO.GetGump(ident, GumpIndex) / UO.GetGump(ident, Serial, GumpID) - будут возвращать InjID гампа в строке, либо пустую строку. GumpIndex - порядковый номер гампа от 0 до GumpCount() - 1
UO.SetGump(ident, id, state) - работа с гампом, который выбрали в UO.SelectGump(), если гамп исчез - ничего не произойдет.
ident может быть: checkbox, radio, state для этого случая число 0 или 1. Переключает значения чекбоксов и радио-кнопок. Для радио кнопок срабатывает только на 1.
textentry - для этого случая, state - строка, на которую нужно заменить текст
И уже давно существующая функция UO.SendGumpSelect(index, ...) - index это номер кнопки, которую нужно нажать.
Параметры:
UO.SendGumpSelect(index) - нажать в последнем гампе
UO.SendGumpSelect(index, gump_index) - нажать в гампе с порядковым номером
UO.SendGumpSelect(index, serial, gump_id) - нажать в гампе по серийнику и ид
UO.SendGumpSelect(index, serial = 0, gump_id = 0, InjID) - нажать в гампе по InjID гампа, серийник и ИД гампа могут быть любыми значениями и не используются в этом варианте.
Маршал (60157892)14 летИнквизитор
Inquisitor
Сообщений: 6208
Рег. 27.11.2009
25 октября 2017 18:28
Сообщение #26
Цитата: Glaz
п.с. Если найдешь способ жать квест из скрипта напиши :)


Юзаем квест, берем инфогамп.

_____infogump_______
injection id    0x425bf398
serial    0x00b1e581
gumpid    0x00000467


Перезаходим в игру, юзаем квест, берем инфогамп.

_____infogump_______
injection id    0x4268c848
serial    0x00b1e581
gumpid    0x00000467


Итого у нас для каждого чара есть две постоянные:
serial 0x00b1e581 = айди чара
gumpid 0x00000467 = тип гампа

Нужна функция, которая позволит по двум параметрам serial и gumpid получить InjID, для дальнейшей работы с гампом через UO.SelectGump(InjID).
Старший Лейтенант (6669019)10 лет
Necromancer
Сообщений: 208
Рег. 22.12.2013
25 октября 2017 23:12
Сообщение #27
Эх это только в идеальном мире, а у нас ГампИД не постоянен.
Маршал (60157892)14 летИнквизитор
Inquisitor
Сообщений: 6208
Рег. 27.11.2009
26 октября 2017 00:39
Сообщение #28
Glaz,
МММ, поясни?
У меня на любом чаре закладка "Квестс" имеет один и тот гампайди, привязанный к айди чара.
Старший Лейтенант (6669019)10 лет
Necromancer
Сообщений: 208
Рег. 22.12.2013
26 октября 2017 04:49
Сообщение #29
Он не держится постоянно, проходит несколько дней и он меняется, я не засекал сколько.
Лейтенант (4548828)11 лет
Dragonstalker
Сообщений: 3319
Рег. 19.11.2013
26 октября 2017 13:11
Сообщение #30
:crazy: Она не постоянно меняется. Это серверная константа. Просто Хосан решает чето подправить в окошечке и оно меняет номер. Ну либо он спецом вредничает. Стелс кстати вроде умеет тыкать в кукловые кнопки. Можно через него считать и епредать в инжект данные. Или сразу пилить скрипт на стелсе.
Маршал (60157892)14 летИнквизитор
Inquisitor
Сообщений: 6208
Рег. 27.11.2009
26 октября 2017 14:39
Сообщение #31
Mirage,
Ну либо на стелсе пилить, либо инжект + изиуо.
Сержант (523056)13 лет
Druid
Сообщений: 82
Рег. 7.09.2011
26 октября 2017 23:28
Сообщение #32
Спасибо всем за дискуссию, полезны советы для себя нашёл...

Ggthxbye, можешь дать простой пример как использовать фунцию Time



Glaz, способ есть...
Сержант (523056)13 лет
Druid
Сообщений: 82
Рег. 7.09.2011
5 ноября 2017 02:28
Сообщение #33
Подскажите пожалуйста, есть ли аналогичная команда, но на ману ?
UO.Life < UO.GetMaxHP()

Пробовал:

UO.Mana < UO.GetMaxMP()

Не работает...
Лейтенант (4548828)11 лет
Dragonstalker
Сообщений: 3319
Рег. 19.11.2013
5 ноября 2017 14:17
Сообщение #34
максимального значения у маны нет. Как вариант использовать плавающую константу
mana=uo.mana
какое то событие
if mana <> uo.mana then

либо через uo.int получать. Максимальная мана вроде редко когда больше интелекта.

PS раньше на старых версиях жизни меряли по силе.
Сержант (523056)13 лет
Druid
Сообщений: 82
Рег. 7.09.2011
5 ноября 2017 16:51
Сообщение #35
Mirage, Спасибо, не однократно видел в скриптах сопоставление маны с интелектом, но думал есть более правильный способ как в примере с жизними, теперь всё понятно, почему делают так...
Сержант (523056)13 лет
Druid
Сообщений: 82
Рег. 7.09.2011
6 ноября 2017 04:47
Сообщение #36
Простите пожалуйста, ну не получается...

Совсем глупый затык поучился не могу написать проверку наличия в паке игрок определённой сумки с определённым ID, выручите...

sub Proverca()
VAR Bag = '0x40043C10'
UO.FindType( Bag )
UO.Print( str( UO.FindCount() ) )
endsub

ИЛИ

sub Proverca()
VAR Bag = '0x40043C10'
UO.FindType( Bag )
UO.Print( str( UO.Count( 'finditem' ) ) )
endsub

ИЛИ

sub Proverca()
VAR Bag = '0x40043C10'
UO.Print( str( Bag ) )
endsub

Не возвращает значение 1 или 0, точнее постоянно возвращает '0', без разницы есть сумка в паке или её нет...
Сержант (523056)13 лет
Druid
Сообщений: 82
Рег. 7.09.2011
6 ноября 2017 18:08
Сообщение #37
В общем сделал на подобие ЧекЛаг..., но всё равно хотелось бы для само развития, понять, как искать в сумке объекты по ID, а не по Типу...
Если кто знает, дайте пример или хотя бы направление, куда капать...
Лейтенант (4548828)11 лет
Dragonstalker
Сообщений: 3319
Рег. 19.11.2013
6 ноября 2017 18:38
Сообщение #38
если предмет/сумка находится внутри открытого контейнера (например бэкпака) то инжект сразу знает его ID. Если и ты сразу знаешь его ид то можно сразу к нему обращаться через uo.userobject(id).
С другой стороны можно найти по типу, затем сравнить с нужным ID, если не равно то игнорируем тип и продолжаем искать до удачи или до пока не кончатся предметы. Цикл на 5-6 строк.

Если задача чисто "есть ли предмет именно в паке" то можно
   uo.FindType(LootType,LootColour,'backpack')    
   If uo.FindCount()> 0 then
      LootID = uo.getSerial('finditem')
      uo.setGlobal('LootBag',LootID)
   else
      uo.setGlobal('LootBag','backpack')
   endif

Можно еще короче через
      if UO.Count (LootType, LootColour)<1 Then

но это не точно ©brb
Сержант (523056)13 лет
Druid
Сообщений: 82
Рег. 7.09.2011
6 ноября 2017 19:28
Сообщение #39
Mirage, не получается...
Дело в том, что ту сумку, что я пытаюсь отследить (её присутствие или отсутствие) в паке игрока по типу и по цвету идентична паку игрока, единственное отличие между ними это ИД номер, в связи с чем искать её по типу и по цвету бесполезно, он всегда находит пак игрока...
Неужели нет проверки по ИД, прям ну не вериться... :nea:
Сержант (523056)13 лет
Druid
Сообщений: 82
Рег. 7.09.2011
6 ноября 2017 20:05
Сообщение #40
Вот как я сделал:
Последние посетители (0):

 
Сейчас: 23 ноября 2024 06:03