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 само по себе этого не означает.
  • Сохраняйте результат проверки до диагностического вывода, который пополняет журнал.