- Убрано ограничение на кол-во символов в Original Text в диалоге Replaces - Исправлено сохранение Replaces. Для корректной замены кастов необходимо в Original Text ставить пробел после текста каста - Изменено действие Nearest для комманд uo.FindType и uo.FindList. При Nearest равном -1 производится поиск по всему списку предметов, при удачном поиске в finditem и в return_value будет самый ближайший к персонажу предмет (при поиске на земле) - Исправлено изменение разрешения игрового окна УО. Теперь клиент запускается без ошибок и разрешение устанавливается согласно заданным параметрам - Исправлен краш на стадии входа в игру (при закрытии клиента на окне выборе сервера или выбора персонажа) - _msg работает с русским текстом (заглавные и прописные) - Исправлена работа Clear Memory. Теперь мир чистится правильно и без ошибок - Основная часть галок с вкладки Main собрана в отдельный список (пока только список) - Добавлена галка Linked Logs. При включенной галке на стадии входа в игру создает файл в папке %injection%\logs\log_%account%_%data%(%time).txt и пишет лог туда отдельно для каждой сессии. Включение/выключение этой галки уже в игре ни к чему не приведет, актуальна только до начала коннекта к серверу. - Исправлена работа Notoriety в коммандах uo.FindType и uo.FindList. Если кто-то обнаружил проблеммы с ней - забудьте. - Добавлен параметр Nearest в комманду uo.FindMan([Notoriety],[Distance],[Nearest]). Работает аналогично uo.FindType и uo.FindList. Так же исправлена Notoriety - На вкладке Skills кнопка Reset переименована в Refresh, удалена кнопка Req - Добавлена функция uo.InJournalBetweenTimes(Text,StartTime,[EndTime],[MaxLines/IgnoreCase]) осуществляет поиск текста Text (фраза/набор фраз разделенных | ) в журнале за время от StartTime до EndTime Если EndTime не указано - берется текущее время MaxLines - количество строк в журнале, в котором производить поиск. Если указано -1 то поиск ведется без учета регистра Изменено время сообщения в журнале. Раньше оно сохранялось как Now()/100, теперь же просто Now(). Что повлекло изменения в uo.JournalTimer() если кто-то пользовался ею - обратите внимание. В Script.dll добавлена функция Now() - возвращает текущее время в мс. Вызывается без UO.* - Добавлены комманды: - uo.AddIgnoreList(ListName,Graphic,[Color]) - добавить тип,[цвет] в список игнорируемых типов с названием ListName - uo.DeleteIgnoreList(ListName,Graphic,[Color]) - удалить тип,[цвет] их списка игнорируемых типов с названием ListName - uo.ClearIgnoreList(ListName) - очистить игнорируемый список типов с названием ListName - uo.SelectIgnoreList(ListName) - выбрать игнор-лист для использования в коммандах uo.FindType и uo.FindList Если список не выбран - комманды поиска не будут игнорировать указанные в нем типы Для выключения списка игнора достаточно вызвать uo.SelectIgnoreList(-1) - тогда поиск будет производиться без учета игнор-листа uo.SelectIgnoreList можно вызвать 1 раз (в том же автостарте) и он будет учитываться поисковиками пока не выбрать другой список или не отключить список - Добавлена локализация Лаунчера и Инжекта. Файл с русским текстом прилагается
Juicy Fruit wrote:- Добавлена комманда uo.WaitingForJournalText(MaxDelay,Text,[Equals],[IgnoreCase],[SkillName/ObjectID]) Работает по принципу uo.WaitingForMenu() MaxDelay - время в мс за которое должно появиться сообщение Text - текст, или наборы текста, разделенные символом "|" Equals - 0 - поиск фрагмента в пришедшем сообщении, 1 - точное соответствие строк (стандартно 0) IgnoreCase - 0 поиск с учетом регистра, 1 - поиск без учета регистра (стандартно 0) SkillName/ObjectID - название скилла или ИД объекта для использования (если требуется)
А uo.InJournalBetweenTimes тогда на что оО? Проверить наличие в журнале через uo.InJournalBetweenTimes, если нет - то uo.WaitingForJournalText с текущего момента.
Задержки между вызовами функций нет, а пакет от сервера приходит через несколько мс после запроса +время на прием и отправку таргета и если руды там нет то и ответное сообщение. Твой вариант правильный по логике, но по факту можно и просто юзануть эту функцию после юза кирки/лопаты без временной переменной.
Сейчас проверил на объекте, до которого не может достать. 15/15 выдало что фраза получена) В таких случаях можешь пока мою функцию заюзать, потом допилю туда старттайм.
А я как-то забыл про это все, помню что только удобно было, в прошлом году весной еще этот сьелс пытались пд ми потребности настроить с игорем, так как инжа падала со страшной силой, но так и ничего не вышло. получаетсянужно не только время starttime но и время сколько ждать сообщения. и уже забываем про всякие уотаймеры и очистки журнала. Макс делай это оно и есть я так понял.
На ближайшие недели 2-3 остановлю разработку, буду бороться с виндовскими ошибками. Если что-то будет для фиксов за неделю - на выходных поправлю и выложу фиксы.
Incorrect User wrote:Кстати, сытость чара как-то можно узнать?
Только если сервер пришлет тебе это значение, а в пакетах не приходит. Можно анатомию, или анимал лор заюзать на себя, или какой там скилл показывает на сколько сыт персонаж, смотреть на это сообщение и узнавать нужно ли тебе есть или нет, но это извращение)
в результате работы функций WaitJournalLine, InJournal, и им подобных функций при удачном нахождении заполняются поля типа LineID, LineType, LineTime и прочие. к ним добавил FoundedParamID.
например в поиск дается строка типа 'create|make|destroy|already'
обнаружена строка со словом destroy.
тогда в FoundedParamID будет число 2 (счет от нуля).
А, удобно. Например, тот же скрипт на мининг. Ищешь в журнале сообщения о физле, о том что выкопал что–то, о том что нет руды, слишком далеко, не тайл пещеры и тд, в соответствии с мсг делаешь вывод что делать дальше: перейти на другой тайл, повторить, подойти ближе... Это как пример. Мне для тайминга это необходимо было давно, обход мессаг от игроков о фэйле тайминга, выкрик в чат тех же самых мессаг и сам тайминг, который не реагирует на эти сообщения)
Так что там обходить? Нужно просто проверять наличие в сообщении что пришло ":" и все, если : нету значит не человек его написал. А эта функция кака тебе в этом поможет я не понимаю.
Дык, так и помогала, у меня просмотр журнала был в отдельной функции, которая возвращала определенный номер в зависимости от сообщения которое нашла. Приходилось расписывать для каждой группы сообщений свои условия. С этим параметром можно будет сразу же получать это число. И там в тайминге фэйл у перса над головой вроде писался, не помню, появлялось там : или нет, но свои заморочки с этим были. Можно по uo.JournalSerial смотреть систем чат это или игрок сказал что–то.
repeat uo.deletejournal(msg) uo.waittargettile(-1, uo.getx() + x, uo.gety() + y, uo.getz()) uo.usetype("0x0E85") waittime = uo.timer() + 100 wait(100) until uo.dead() or uo.injournal(msg) or uo.timer() > waittime until uo.injournal("too far away|no ore here|have no line|mining in rock")