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

UO.JournalTimer

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

ClassicUO • Runtime API

Читает поле timestamp строки по текущему индексу, не меняя выбранную запись.

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

UO.JournalTimer(index:Integer) -> Integer

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

Параметры

  • index — Обязательный Integer — текущий индекс: 0 означает самую новую строку, 1 — предыдущую. Индексы сдвигаются при приходе сообщений. Это не serial, не ID варианта шаблона и не положительный результат InJournal.

Возвращает

Integer — метка записи в миллисекундах от начала runtime, совместимая с Now(). 0 для записи до запуска runtime; -1 для неверного индекса/времени. Это не возраст записи и не десятые секунды UO.Timer().

Поведение

  • Каждый вызов читает текущую позицию. Для согласованного текста и полей одной записи сначала Journal(index), затем GetFoundedText/Line*. Нулевые значения могут быть настоящими данными.
  • Семейство Basic Journal: https://forum.yoko.com.ua/viewtopic.php?p=27633 . Миллисекундная метка — адаптация к Now() этого runtime.

Примеры

Пример 1. Поле новой записи

# Поле новой записи
#
# Читает поле timestamp строки по текущему индексу, не меняя выбранную запись.
#
# Integer — метка записи в миллисекундах от начала runtime, совместимая с Now(). 0 для записи до
# запуска runtime; -1 для неверного индекса/времени. Это не возраст записи и не десятые секунды
# UO.Timer().

SUB Main()
    # 0 — индекс новой строки. Проверяется наличие буфера.
    # Integer — метка записи в миллисекундах от начала runtime, совместимая с Now(). 0 для записи до
    # запуска runtime; -1 для неверного индекса/времени. Это не возраст записи и не десятые секунды
    # UO.Timer().

    IF UO.HighJournal() >= 0 THEN
        VAR value = UO.JournalTimer(0)
        UO.Print(STR(value))
    END IF
END SUB

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

  • 0 — индекс новой строки. Проверяется наличие буфера.
  • Integer — метка записи в миллисекундах от начала runtime, совместимая с Now(). 0 для записи до запуска runtime; -1 для неверного индекса/времени. Это не возраст записи и не десятые секунды UO.Timer().

Пример 2. Поле предыдущей записи

# Поле предыдущей записи
#
# Читает поле timestamp строки по текущему индексу, не меняя выбранную запись.
#
# Integer — метка записи в миллисекундах от начала runtime, совместимая с Now(). 0 для записи до
# запуска runtime; -1 для неверного индекса/времени. Это не возраст записи и не десятые секунды
# UO.Timer().

SUB Main()
    # 1 — предыдущая строка, не serial=1.
    # Выбранная поиском запись GetFoundedText/Line* не изменяется.

    IF UO.HighJournal() >= 1 THEN
        VAR value = UO.JournalTimer(1)
        UO.Print(STR(value))
    END IF
END SUB

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

  • 1 — предыдущая строка, не serial=1.
  • Выбранная поиском запись GetFoundedText/Line* не изменяется.

Пример 3. Сохранить значение перед следующим действием

# Сохранить значение перед следующим действием
#
# Читает поле timestamp строки по текущему индексу, не меняя выбранную запись.
#
# Integer — метка записи в миллисекундах от начала runtime, совместимая с Now(). 0 для записи до
# запуска runtime; -1 для неверного индекса/времени. Это не возраст записи и не десятые секунды
# UO.Timer().

SUB Main()
    # value копирует поле на момент вызова. Ожидание не обновляет переменную.
    # Чтобы снова читать текущую строку 0, вызовите команду ещё раз; это уже может быть другая
    # запись.

    VAR value = UO.JournalTimer(0)
    UO.Wait(100)
    UO.Print('Saved value: ' + STR(value))
END SUB

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

  • value копирует поле на момент вызова. Ожидание не обновляет переменную.
  • Чтобы снова читать текущую строку 0, вызовите команду ещё раз; это уже может быть другая запись.