API UO GetJournal - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.GetJournal
Оглавление · Алфавитный указатель · Journal
ClassicUO • Runtime API
Читает текст строки по текущему индексу и выбирает эту запись для GetFoundedText/Line*.
Точный синтаксис
UO.GetJournal(index:Integer) -> String
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
index— Обязательный Integer — текущий индекс: 0 означает самую новую строку, 1 — предыдущую. Индексы сдвигаются при приходе сообщений. Это не serial, не ID варианта шаблона и не положительный результат InJournal.StringIndex— Обязательный Integer — текущий индекс: 0 означает самую новую строку, 1 — предыдущую. Индексы сдвигаются при приходе сообщений. Это не serial, не ID варианта шаблона и не положительный результат InJournal.
Возвращает
String — текст строки, либо пустая строка при неверном индексе/пустом журнале. У существующей строки текст тоже может быть пустым: после чтения LineIndex >= 0 подтверждает, что запись была выбрана. Это не количество строк.
Поведение
- Поиск и Journal/GetJournal/LastJournalMessage сохраняют текст и поля одной записи в текущем скрипте. Новые сообщения не подменяют эти поля. Если запись вытеснена из ограниченного журнала, сохранённые поля остаются, но LineIndex/GetFoundedTextIndex возвращают -1. Следующий поиск или чтение выбирает другую запись; неудачный поиск, неверный индекс и очистка через этот скрипт сбрасывают выбор.
- Прямое чтение сбрасывает ID альтернативы; GetFoundedTextID/FoundedParamId после него дают 0. Сам Journal не пересчитывает LineCount.
- Первичные справочники: https://forum.yoko.com.ua/viewtopic.php?p=27633 ; https://stealth.od.ua/api/Journal/ .
Примеры
Пример 1. Последняя строка и её автор
# Последняя строка и её автор
#
# Читает текст строки по текущему индексу и выбирает эту запись для GetFoundedText/Line*.
#
# String — текст строки, либо пустая строка при неверном индексе/пустом журнале. У существующей
# строки текст тоже может быть пустым: после чтения LineIndex >= 0 подтверждает, что запись была
# выбрана. Это не количество строк.
SUB Main()
# 0 — самая новая строка. Сначала читаются текст и автор, затем выводится результат.
# Print может добавить сообщение; сохранённые text/author относятся к прежней выбранной записи.
VAR text = UO.GetJournal(0)
VAR author = UO.LineName()
UO.Print(author + ': ' + text)
END SUB
Разбор параметров и выполнения:
- 0 — самая новая строка. Сначала читаются текст и автор, затем выводится результат.
- Print может добавить сообщение; сохранённые text/author относятся к прежней выбранной записи.
Пример 2. Предыдущая строка, если она существует
# Предыдущая строка, если она существует
#
# Читает текст строки по текущему индексу и выбирает эту запись для GetFoundedText/Line*.
#
# String — текст строки, либо пустая строка при неверном индексе/пустом журнале. У существующей
# строки текст тоже может быть пустым: после чтения LineIndex >= 0 подтверждает, что запись была
# выбрана. Это не количество строк.
SUB Main()
# 1 — предыдущая запись, HighJournal — максимальный доступный индекс.
# Журнал может изменяться между вызовами. Для данных уже найденной строки используйте
# GetFoundedText.
IF UO.HighJournal() >= 1 THEN
VAR text = UO.GetJournal(1)
UO.Print(text)
END IF
END SUB
Разбор параметров и выполнения:
- 1 — предыдущая запись, HighJournal — максимальный доступный индекс.
- Журнал может изменяться между вызовами. Для данных уже найденной строки используйте GetFoundedText.
Пример 3. Отличить пустой текст от отсутствия строки
# Отличить пустой текст от отсутствия строки
#
# Читает текст строки по текущему индексу и выбирает эту запись для GetFoundedText/Line*.
#
# String — текст строки, либо пустая строка при неверном индексе/пустом журнале. У существующей
# строки текст тоже может быть пустым: после чтения LineIndex >= 0 подтверждает, что запись была
# выбрана. Это не количество строк.
SUB Main()
# LineIndex=-1 означает отсутствие/удаление выбранной записи. Len(text)=0 само по себе этого не
# означает.
# Сохраняйте результат проверки до диагностического вывода, который пополняет журнал.
VAR text = UO.GetJournal(0)
VAR index = UO.LineIndex()
IF index < 0 THEN
UO.Print('No record')
ELSE
UO.Print('Text length: ' + STR(Len(text)))
END IF
END SUB
Разбор параметров и выполнения:
- LineIndex=-1 означает отсутствие/удаление выбранной записи. Len(text)=0 само по себе этого не означает.
- Сохраняйте результат проверки до диагностического вывода, который пополняет журнал.