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 обязательна.