API UO GetFoundedTextIndex - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.GetFoundedTextIndex

Оглавление · Алфавитный указатель · Journal

ClassicUO • Runtime API

Возвращает текущий индекс выбранной записи, если она ещё хранится в журнале.

Точный синтаксис

UO.GetFoundedTextIndex() -> Integer

Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.

Параметры

Параметров нет.

Возвращает

Integer — текущий индекс от 0 (самая новая строка). -1 означает, что выбора нет либо выбранная запись уже удалена/вытеснена. Это не результат InJournal: из индекса не нужно вычитать 1.

Поведение

  • Поиск и Journal/GetJournal/LastJournalMessage сохраняют текст и поля одной записи в текущем скрипте. Новые сообщения не подменяют эти поля. Если запись вытеснена из ограниченного журнала, сохранённые поля остаются, но LineIndex/GetFoundedTextIndex возвращают -1. Следующий поиск или чтение выбирает другую запись; неудачный поиск, неверный индекс и очистка через этот скрипт сбрасывают выбор.
  • Индекс пересчитывается по идентичности записи. Новые сообщения увеличивают его. Старый сохранённый индекс не является постоянным ID; для текста безопаснее GetFoundedText.
  • Первичный справочник: https://stealth.od.ua/api/LineIndex/ ; порядок индексов адаптирован к Basic: https://forum.yoko.com.ua/viewtopic.php?p=27633 .

Примеры

Пример 1. Индекс найденной записи

# Индекс найденной записи
#
# Возвращает текущий индекс выбранной записи, если она ещё хранится в журнале.
#
# Integer — текущий индекс от 0 (самая новая строка). -1 означает, что выбора нет либо выбранная
# запись уже удалена/вытеснена. Это не результат InJournal: из индекса не нужно вычитать 1.

SUB Main()
    # Getter без аргументов читает выбор текущего скрипта. 0 — новая строка, -1 — нет строки в
    # текущем буфере.
    # Текст берётся из сохранённой записи, чтобы новые сообщения не подменили его.

    IF UO.InJournal('notice') > 0 THEN
        VAR index = UO.GetFoundedTextIndex()
        VAR text = UO.GetFoundedText()
        UO.Print(STR(index) + ': ' + text)
    END IF
END SUB

Разбор параметров и выполнения:

  • Getter без аргументов читает выбор текущего скрипта. 0 — новая строка, -1 — нет строки в текущем буфере.
  • Текст берётся из сохранённой записи, чтобы новые сообщения не подменили его.

Пример 2. Проверить прямое чтение

# Проверить прямое чтение
#
# Возвращает текущий индекс выбранной записи, если она ещё хранится в журнале.
#
# Integer — текущий индекс от 0 (самая новая строка). -1 означает, что выбора нет либо выбранная
# запись уже удалена/вытеснена. Это не результат InJournal: из индекса не нужно вычитать 1.

SUB Main()
    # Journal(0) выбирает последнюю запись; проверка исключает пустой журнал.
    # Пустой text допускается у действующей записи.

    VAR text = UO.Journal(0)
    IF UO.GetFoundedTextIndex() >= 0 THEN
        UO.Print(text)
    END IF
END SUB

Разбор параметров и выполнения:

  • Journal(0) выбирает последнюю запись; проверка исключает пустой журнал.
  • Пустой text допускается у действующей записи.

Пример 3. Обновить индекс после ожидания

# Обновить индекс после ожидания
#
# Возвращает текущий индекс выбранной записи, если она ещё хранится в журнале.
#
# Integer — текущий индекс от 0 (самая новая строка). -1 означает, что выбора нет либо выбранная
# запись уже удалена/вытеснена. Это не результат InJournal: из индекса не нужно вычитать 1.

SUB Main()
    # Ожидание 100 мс позволяет прийти новым сообщениям. after заново находит ту же запись.
    # after может увеличиться или стать -1 при удалении; GetFoundedText всё ещё содержит сохранённый
    # текст.

    IF UO.InJournal('needle') > 0 THEN
        VAR before = UO.GetFoundedTextIndex()
        UO.Wait(100)
        VAR after = UO.GetFoundedTextIndex()
        UO.Print(STR(before) + ' -> ' + STR(after))
    END IF
END SUB

Разбор параметров и выполнения:

  • Ожидание 100 мс позволяет прийти новым сообщениям. after заново находит ту же запись.
  • after может увеличиться или стать -1 при удалении; GetFoundedText всё ещё содержит сохранённый текст.