API UO WaitJournalLineSystem - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.WaitJournalLineSystem
Оглавление · Алфавитный указатель · Journal
ClassicUO • Runtime API
Ожидает подходящее сообщение с именем автора System.
Точный синтаксис
UO.WaitJournalLineSystem(StartTime:Any, Str:Any, MaxWaitTimeMS:Any) -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
StartTime— Обязательная начальная метка: Integer Now() в миллисекундах, 0 — начало выполнения. Также принимается Decimal OLE date из LineTime (современные даты 20000…100000 дней). Целые 20000…100000 всегда миллисекунды, не дата. Не передавайте возраст записи.Str— Искомая подстрока или несколько альтернатив через |, например success|failed. Пробелы по краям каждой альтернативы удаляются, пустые альтернативы пропускаются. Это обычный текст, не регулярное выражение. Используйте непустой шаблон. Поиск без учёта регистра.MaxWaitTimeMS— Обязательный Integer тайм-аут в миллисекундах; положительное значение ограничивает ожидание, 0 означает ждать без ограничения. Отрицательные значения ограничиваются 0. Остановка скрипта прерывает ожидание.
Возвращает
Boolean — TRUE при найденном тексте, FALSE при положительном тайм-ауте без совпадения. Это не индекс и не количество. В скрипте логические значения также могут отображаться как 1/0.
Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся состояние.
Поведение
- Поиск и Journal/GetJournal/LastJournalMessage сохраняют текст и поля одной записи в текущем скрипте. Новые сообщения не подменяют эти поля. Если запись вытеснена из ограниченного журнала, сохранённые поля остаются, но LineIndex/GetFoundedTextIndex возвращают -1. Следующий поиск или чтение выбирает другую запись; неудачный поиск, неверный индекс и очистка через этот скрипт сбрасывают выбор.
- Начальная граница фиксируется при вызове, опрос идёт примерно каждые 25 мс. Само ожидание не вызывает навык или предмет. LineCount после ожидания относится к последнему поиску.
- В этой адаптации System определяется именем автора без учёта регистра; отдельного окна журнала Stealth в клиенте нет.
- Первичный справочник: https://stealth.od.ua/api/WaitJournalLineSystem/ .
Примеры
Пример 1. Ожидание после сохранённой метки
# Ожидание после сохранённой метки
#
# Ожидает подходящее сообщение с именем автора System.
#
# Boolean — TRUE при найденном тексте, FALSE при положительном тайм-ауте без совпадения. Это не
# индекс и не количество. В скрипте логические значения также могут отображаться как 1/0.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.
SUB Main()
# started — граница до ожидания. 3000 — максимум ожидания в миллисекундах. Шаблон содержит два
# исхода.
# FALSE — текст не найден за этот срок; сервер мог использовать другую формулировку.
VAR started = Now()
VAR found = UO.WaitJournalLineSystem(started, 'success|failed', 3000)
IF found THEN
UO.Print(UO.GetFoundedText())
ELSE
UO.Print('Timeout')
END IF
END SUB
Разбор параметров и выполнения:
- started — граница до ожидания. 3000 — максимум ожидания в миллисекундах. Шаблон содержит два исхода.
- FALSE — текст не найден за этот срок; сервер мог использовать другую формулировку.
Пример 2. Короткая проверка с начала выполнения
# Короткая проверка с начала выполнения
#
# Ожидает подходящее сообщение с именем автора System.
#
# Boolean — TRUE при найденном тексте, FALSE при положительном тайм-ауте без совпадения. Это не
# индекс и не количество. В скрипте логические значения также могут отображаться как 1/0.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.
SUB Main()
# 0 — начало runtime, а не отключение тайм-аута. 100 — тайм-аут.
# Найденная строка может уже находиться в журнале до вызова.
IF UO.WaitJournalLineSystem(0, 'notice', 100) THEN
VAR author = UO.LineName()
UO.Print(author)
END IF
END SUB
Разбор параметров и выполнения:
- 0 — начало runtime, а не отключение тайм-аута. 100 — тайм-аут.
- Найденная строка может уже находиться в журнале до вызова.
Пример 3. Календарная граница выбранной строки
# Календарная граница выбранной строки
#
# Ожидает подходящее сообщение с именем автора System.
#
# Boolean — TRUE при найденном тексте, FALSE при положительном тайм-ауте без совпадения. Это не
# индекс и не количество. В скрипте логические значения также могут отображаться как 1/0.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.
SUB Main()
# stamp сохраняет Decimal LineTime без CInt/STR: это календарная дата, не Now(). 1500 —
# миллисекунды ожидания.
# Граница включается. Выбранная строка сама может подойти, если содержит response.
VAR text = UO.Journal(0)
IF UO.LineIndex() >= 0 THEN
VAR stamp = UO.LineTime()
VAR found = UO.WaitJournalLineSystem(stamp, 'response', 1500)
UO.Print(STR(found))
END IF
END SUB
Разбор параметров и выполнения:
- stamp сохраняет Decimal LineTime без CInt/STR: это календарная дата, не Now(). 1500 — миллисекунды ожидания.
- Граница включается. Выбранная строка сама может подойти, если содержит response.