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 означает не пропускать старые строки; это другая форма команды.
- Поиск без ограничения и без учёта регистра. Никакой текст этой формой не заменяется.