API UO InJournalBetweenTimes - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.InJournalBetweenTimes
Оглавление · Алфавитный указатель · Journal
ClassicUO • Runtime API
Ищет строку между двумя метками времени выполнения и сохраняет самую новую подходящую запись.
Точный синтаксис
UO.InJournalBetweenTimes(pattern:String, startTime:Integer) -> Integer
UO.InJournalBetweenTimes(text:Any, startTime:Any) -> Any
UO.InJournalBetweenTimes(pattern:String, startTime:Integer, endTime:Integer) -> Integer
UO.InJournalBetweenTimes(text:Any, startTime:Any, endTime:Any) -> Any
UO.InJournalBetweenTimes(pattern:String, startTime:Integer, endTime:Integer, limit:Integer) -> Integer
UO.InJournalBetweenTimes(text:Any, startTime:Any, endTime:Any, maxLinesOrIgnoreCase:Any) -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
pattern— Искомая подстрока или несколько альтернатив через |, например success|failed. Пробелы по краям каждой альтернативы удаляются, пустые альтернативы пропускаются. Это обычный текст, не регулярное выражение. Используйте непустой шаблон.text— Искомая подстрока или несколько альтернатив через |, например success|failed. Пробелы по краям каждой альтернативы удаляются, пустые альтернативы пропускаются. Это обычный текст, не регулярное выражение. Используйте непустой шаблон.startTime— Обязательная метка Now(): Integer миллисекунд от начала runtime. 0 — начало выполнения. Это не возраст записи и не дробная дата LineTime.endTime— Необязательная конечная метка Now(). Если опущена или неположительна, используется текущее время. Положительные границы можно передать в обратном порядке; будущая граница ограничивается текущим временем.limit— Необязательный четвёртый аргумент: -1 — без лимита и без учёта регистра; положительное число — максимум строк в интервале с учётом регистра; 0 и отрицательные значения кроме -1 — не проверять строки.maxLinesOrIgnoreCase— Другое имя четвёртого аргумента limit в совместимой регистрации: -1 отключает лимит и учёт регистра, иначе неотрицательный лимит строк.
Возвращает
Integer — 0, если совпадения нет; иначе текущий индекс самой новой подходящей строки плюс 1 (1 — самая новая запись, 2 — предыдущая). Это не количество совпадений и не serial. Проверяйте result > 0. Для текста используйте GetFoundedText(), для количества — LineCount(). Внешний Stealth использует другой результат; в этом BASIC API сохранена семантика Basic.
Поведение
- Поиск и Journal/GetJournal/LastJournalMessage сохраняют текст и поля одной записи в текущем скрипте. Новые сообщения не подменяют эти поля. Если запись вытеснена из ограниченного журнала, сохранённые поля остаются, но LineIndex/GetFoundedTextIndex возвращают -1. Следующий поиск или чтение выбирает другую запись; неудачный поиск, неверный индекс и очистка через этот скрипт сбрасывают выбор.
- В формах из двух или трёх аргументов регистр учитывается. Границы включаются. Вычисление интервала не приостанавливает скрипт.
- В Pascal Stealth используются TDateTime; здесь передавайте целые метки Now(). LineTime возвращает другую единицу. Первичный справочник: https://stealth.od.ua/api/InJournalBetweenTimes/ .
Примеры
Пример 1. Проверить сообщения после действия
# Проверить сообщения после действия
#
# Ищет строку между двумя метками времени выполнения и сохраняет самую новую подходящую запись.
#
# Integer — 0, если совпадения нет; иначе текущий индекс самой новой подходящей строки плюс 1 (1
# — самая новая запись, 2 — предыдущая). Это не количество совпадений и не serial. Проверяйте
# result > 0. Для текста используйте GetFoundedText(), для количества — LineCount(). Внешний
# Stealth использует другой результат; в этом BASIC API сохранена семантика Basic.
SUB Main()
# started сохраняется до UseSkill. endTime опущено — до текущего времени; hidden — пример
# серверного текста.
# Регистр учитывается. Сообщение не доказывает текущий статус; UO.Hidden() читает состояние
# персонажа.
VAR started = Now()
UO.UseSkill('Hiding')
UO.Wait(500)
IF UO.InJournalBetweenTimes('hidden', started) > 0 THEN
UO.Print(UO.GetFoundedText())
END IF
END SUB
Разбор параметров и выполнения:
- started сохраняется до UseSkill. endTime опущено — до текущего времени; hidden — пример серверного текста.
- Регистр учитывается. Сообщение не доказывает текущий статус; UO.Hidden() читает состояние персонажа.
Пример 2. Зафиксированный интервал от начала
# Зафиксированный интервал от начала
#
# Ищет строку между двумя метками времени выполнения и сохраняет самую новую подходящую запись.
#
# Integer — 0, если совпадения нет; иначе текущий индекс самой новой подходящей строки плюс 1 (1
# — самая новая запись, 2 — предыдущая). Это не количество совпадений и не serial. Проверяйте
# result > 0. Для текста используйте GetFoundedText(), для количества — LineCount(). Внешний
# Stealth использует другой результат; в этом BASIC API сохранена семантика Basic.
SUB Main()
# startTime=0 — начало выполнения; ended — сохранённая конечная метка в миллисекундах.
# Новые сообщения после ended не включаются. Старые записи до запуска runtime также вне
# интервала.
VAR ended = Now()
VAR found = UO.InJournalBetweenTimes('notice', 0, ended)
UO.Print('Search result: ' + STR(found))
END SUB
Разбор параметров и выполнения:
- startTime=0 — начало выполнения; ended — сохранённая конечная метка в миллисекундах.
- Новые сообщения после ended не включаются. Старые записи до запуска runtime также вне интервала.
Пример 3. Интервал и альтернативы без учёта регистра
# Интервал и альтернативы без учёта регистра
#
# Ищет строку между двумя метками времени выполнения и сохраняет самую новую подходящую запись.
#
# Integer — 0, если совпадения нет; иначе текущий индекс самой новой подходящей строки плюс 1 (1
# — самая новая запись, 2 — предыдущая). Это не количество совпадений и не serial. Проверяйте
# result > 0. Для текста используйте GetFoundedText(), для количества — LineCount(). Внешний
# Stealth использует другой результат; в этом BASIC API сохранена семантика Basic.
SUB Main()
# Последний -1 снимает ограничение строк и отключает регистр. Третий аргумент — конечная метка,
# не задержка.
# Результат ID: 0 для success, 1 для failed. Проверка found > 0 обязательна.
VAR started = Now()
UO.Wait(350)
VAR found = UO.InJournalBetweenTimes('success|failed', started, Now(), -1)
IF found > 0 THEN
UO.Print(STR(UO.GetFoundedTextID()))
END IF
END SUB
Разбор параметров и выполнения:
- Последний -1 снимает ограничение строк и отключает регистр. Третий аргумент — конечная метка, не задержка.
- Результат ID: 0 для success, 1 для failed. Проверка found > 0 обязательна.