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

UO.SetJournalLine

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

ClassicUO • Runtime API

Изменяет текст строки; отдельная одноаргументная форма задаёт нижнюю границу поиска.

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

UO.SetJournalLine(index:Integer) -> Unit
UO.SetJournalLine(index:Integer, text:String) -> Unit
UO.SetJournalLine(StringIndex:Any, Text:Any) -> Unit

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

Параметры

  • index — Для формы (index,text): текущий индекс от 0, где 0 — новая строка. Для формы (index): количество пропускаемых старых строк от начала внутреннего буфера, не индекс Journal; 0 снимает ограничение. Отрицательная одноаргументная граница ограничивается 0.
  • StringIndex — Имя index в совместимой двухаргументной регистрации: текущий индекс Journal от 0.
  • text — Новый текст существующей строки, включая пустую строку. Обязателен в форме замены текста.
  • Text — То же значение text в совместимой регистрации.

Возвращает

Unit — нет возвращаемого значения. При неверном индексе двухаргументная форма ничего не меняет. Одноаргументная форма не изменяет текст.

Поведение

  • Замена локальная, серверу ничего не отправляется. Поля автора/времени сохраняются. Уже выбранный снимок текста остаётся прежним до повторного Journal или поиска.
  • Одноаргументная граница — устаревшее расширение: число старых строк в текущем буфере; при вытеснении/удалении записей его смысл сдвигается. Для надёжной границы между действиями используйте InJournalBetweenTimes с Now().
  • Первичный справочник двухаргументной формы: https://stealth.od.ua/api/SetJournalLine/ .

Примеры

Пример 1. Пометить последнюю строку

# Пометить последнюю строку
#
# Изменяет текст строки; отдельная одноаргументная форма задаёт нижнюю границу поиска.
#
# Unit — нет возвращаемого значения. При неверном индексе двухаргументная форма ничего не
# меняет. Одноаргументная форма не изменяет текст.

SUB Main()
    # 0 — новая строка; второй аргумент — её новый полный текст.
    # Это меняет локальный буфер. Между чтением и записью могут приходить новые сообщения; индекс не
    # является постоянным ID.

    IF UO.HighJournal() >= 0 THEN
        VAR text = UO.Journal(0)
        UO.SetJournalLine(0, '[read] ' + text)
    END IF
END SUB

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

  • 0 — новая строка; второй аргумент — её новый полный текст.
  • Это меняет локальный буфер. Между чтением и записью могут приходить новые сообщения; индекс не является постоянным ID.

Пример 2. Заменить текст пустой строкой

# Заменить текст пустой строкой
#
# Изменяет текст строки; отдельная одноаргументная форма задаёт нижнюю границу поиска.
#
# Unit — нет возвращаемого значения. При неверном индексе двухаргументная форма ничего не
# меняет. Одноаргументная форма не изменяет текст.

SUB Main()
    # Пустая строка заменяет текст, но не удаляет запись и её автора.
    # Неверный индекс пропускается. exists может быть TRUE даже при text="".

    UO.SetJournalLine(0, '')
    VAR text = UO.Journal(0)
    VAR exists = UO.LineIndex() >= 0
    UO.Print(STR(exists))
END SUB

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

  • Пустая строка заменяет текст, но не удаляет запись и её автора.
  • Неверный индекс пропускается. exists может быть TRUE даже при text="".

Пример 3. Снять ограничение поиска

# Снять ограничение поиска
#
# Изменяет текст строки; отдельная одноаргументная форма задаёт нижнюю границу поиска.
#
# Unit — нет возвращаемого значения. При неверном индексе двухаргументная форма ничего не
# меняет. Одноаргументная форма не изменяет текст.

SUB Main()
    # Один аргумент 0 означает не пропускать старые строки; это другая форма команды.
    # Поиск без ограничения и без учёта регистра. Никакой текст этой формой не заменяется.

    UO.SetJournalLine(0)
    VAR found = UO.InJournal('notice', -1)
    UO.Print(STR(found))
END SUB

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

  • Один аргумент 0 означает не пропускать старые строки; это другая форма команды.
  • Поиск без ограничения и без учёта регистра. Никакой текст этой формой не заменяется.