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

UO.FoundedParamId

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

ClassicUO • Runtime API

Возвращает номер совпавшей альтернативы поискового шаблона.

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

UO.FoundedParamId() -> Any

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

Параметры

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

Возвращает

Integer — индекс от 0 в списке непустых альтернатив через |: success|failed даёт 0 для success и 1 для failed. При нескольких подходящих альтернативах берётся первая в шаблоне. Без совпадения или после прямого Journal также 0. Это не serial автора, не номер строки и не type сообщения.

Поведение

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

Примеры

Пример 1. Два исхода

# Два исхода
#
# Возвращает номер совпавшей альтернативы поискового шаблона.
#
# Integer — индекс от 0 в списке непустых альтернатив через |: success|failed даёт 0 для success
# и 1 для failed. При нескольких подходящих альтернативах берётся первая в шаблоне. Без
# совпадения или после прямого Journal также 0. Это не serial автора, не номер строки и не type
# сообщения.

SUB Main()
    # success — альтернатива 0, failed — альтернатива 1. Успех поиска проверяется отдельно.
    # Это анализ текста, а не подтверждение игровой операции сервером.

    IF UO.InJournal('success|failed') > 0 THEN
        VAR outcome = UO.FoundedParamId()
        IF outcome = 0 THEN
            UO.Print('Success text')
        ELSE
            UO.Print('Failure text')
        END IF
    END IF
END SUB

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

  • success — альтернатива 0, failed — альтернатива 1. Успех поиска проверяется отдельно.
  • Это анализ текста, а не подтверждение игровой операции сервером.

Пример 2. Три исхода без регистра

# Три исхода без регистра
#
# Возвращает номер совпавшей альтернативы поискового шаблона.
#
# Integer — индекс от 0 в списке непустых альтернатив через |: success|failed даёт 0 для success
# и 1 для failed. При нескольких подходящих альтернативах берётся первая в шаблоне. Без
# совпадения или после прямого Journal также 0. Это не serial автора, не номер строки и не type
# сообщения.

SUB Main()
    # -1 отключает регистр. Результаты 0, 1, 2 соответствуют порядку альтернатив.
    # Если строка содержит несколько вариантов, возвращается первый подходящий по порядку шаблона.

    IF UO.InJournal('mining|ore|empty', -1) > 0 THEN
        VAR kind = UO.FoundedParamId()
        UO.Print('Alternative: ' + STR(kind))
    END IF
END SUB

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

  • -1 отключает регистр. Результаты 0, 1, 2 соответствуют порядку альтернатив.
  • Если строка содержит несколько вариантов, возвращается первый подходящий по порядку шаблона.

Пример 3. Сохранить исход перед чтением другой строки

# Сохранить исход перед чтением другой строки
#
# Возвращает номер совпавшей альтернативы поискового шаблона.
#
# Integer — индекс от 0 в списке непустых альтернатив через |: success|failed даёт 0 для success
# и 1 для failed. При нескольких подходящих альтернативах берётся первая в шаблоне. Без
# совпадения или после прямого Journal также 0. Это не serial автора, не номер строки и не type
# сообщения.

SUB Main()
    # Journal(0) меняет выбор и сбрасывает ID альтернативы, поэтому outcome сохраняется заранее.
    # Новый вызов getter после Journal уже не описывает предыдущий шаблон.

    IF UO.InJournal('success|failed') > 0 THEN
        VAR outcome = UO.FoundedParamId()
        VAR latest = UO.Journal(0)
        UO.Print('Saved outcome: ' + STR(outcome))
    END IF
END SUB

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

  • Journal(0) меняет выбор и сбрасывает ID альтернативы, поэтому outcome сохраняется заранее.
  • Новый вызов getter после Journal уже не описывает предыдущий шаблон.