Skip to content
Codex edited this page Sep 21, 2026 · 4 revisions

my

Constants & Special Values · Правила типов и результатов

my — строковый селектор собственного инвентаря. Он не возвращает serial рюкзака и не является синонимом self во всех командах.

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

my -> String (чтение без скобок)

Значение читается без круглых скобок. Способы передачи в команды и отличие от числового ID описаны ниже.

Параметры

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

Возвращает

String "my" без скобок. Значение интерпретирует принимающая команда; это не Integer ID и не логический результат.

Поведение

  • В компактном FindType(type, my) и FindType(type, color, my[, range]) выбирает инвентарь и включает рекурсивный поиск. В форме с явным пятым recursive действует этот аргумент.
  • UO.GetContent(my) выбирает backpack и возвращает только непосредственное загруженное содержимое, без рекурсии. Одно и то же слово не делает все команды рекурсивными.
  • В поддерживающих my командах переноса это назначение в рюкзак. Для обычного serial-параметра передавайте backpack, а не предполагаемый числовой ID слова my.
  • Результат FindType — hex-строка ID либо пустая строка. Результат GetContent — массив serial; проверяйте его длину. Перед чтением содержимого убедитесь, что backpack <> 0.

Внутренние функции: последовательность выполнения

Ниже описана реализация этого движка. Имена внутренних методов не являются дополнительными командами BASIC.

1. AddFilterValue

Регистрирует my как строку.

Сам ничего не ищет.

Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция AddFilterValue.

2. ConvertContainer

В компактном поиске строка my преобразуется в внутренний селектор -1.

Перегрузки FindType отдельно включают рекурсивный поиск для my.

Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция ConvertContainer.

3. ExecuteClientApiCompatibility

В ветке GetContent выбирает bridge.Backpack для my.

Получает непосредственное содержимое через bridge, без обхода вложенных сумок.

Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция ExecuteClientApiCompatibility.

Разница поиска и получения содержимого показана в первых двух скриптах.

Примеры

Пример 1. Найти золото во вложенных сумках

SUB Main()
    # 0x0EEDgraphic золота, -1любой цвет, myрекурсивный инвентарь.
    VAR found = UO.FindType(0x0EED, -1, my)
    IF found = "" THEN
        UO.Print("No gold found in loaded inventory")
        RETURN
    END IF
    UO.Print("Found ID: " + found)
END SUB

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

  • В этой форме my включает рекурсивный поиск. FindType возвращает строку; отсутствие проверяется сравнением с пустой строкой.

Пример 2. Прочитать только верхний уровень рюкзака

SUB Main()
    IF backpack = 0 THEN
        UO.Print("Backpack is not available")
        RETURN
    END IF
    # GetContent(my) не наследует рекурсию FindType.
    VAR items = UO.GetContent(my)
    VAR i = 0
    WHILE i < GetArrayLength(items)
        UO.Print("Direct item: " + CStr(items[i]))
        i = i + 1
    WEND
END SUB

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

  • GetContent получает serial рюкзака из my. В массиве только непосредственные загруженные предметы; вложенные сумки не раскрываются.

Пример 3. Явно отключить рекурсию поиска

SUB Main()
    # Пятый аргумент recursive=FALSE имеет приоритет над сокращением my.
    VAR found = UO.FindType(0x0EED, -1, my, -1, FALSE)
    IF found <> "" THEN
        UO.Print("Top-level gold ID: " + found)
    ELSE
        UO.Print("No top-level gold")
    END IF
END SUB

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

  • Параметры: type=0x0EED, color=-1, container=my, range=-1 (настройка по умолчанию), recursive=FALSE. Вложенные контейнеры не обходятся.

Проверка примеров: скрипты загружены и выполнены в тестовом окружении движка с известными объектами и без выбранной цели/слоя. Отдельно проверены границы расстояния и высоты. Это не тест торговли на игровом сервере.

Clone this wiki locally