Skip to content

API UO Hide

Codex edited this page Sep 21, 2026 · 6 revisions

UO.Hide

UO API · Все команды · Возвращаемые значения

Убирает загруженный предмет или другого персонажа с экрана ClassicUO. Помогает убрать мешающий объект; работает также с предметами внутри сундуков, рюкзака, вложенных сумок и окна торговли.

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

UO.Hide() -> Unit
UO.Hide(serial:Any) -> Unit

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

Параметры

  • serial — Числовой serial или его hex/десятичная строка. Это не type. Для именованного объекта сначала получите числовую строку через GetSerial(name). Без аргумента появляется локальный прицел.

Возвращает

Unit — возвращаемого значения нет. Результат нельзя присвоить как serial, graphic/type, количество или true/false. Информация выводится в интерфейс/журнал, а не возвращается скрипту.

Поведение

  • Hide() открывает локальный прицел и сразу возвращает управление скрипту. Щёлкните по предмету в открытом контейнере или по объекту в мире. Escape отменяет выбор.
  • Hide(serial) действует сразу на известный загруженный объект. Передавайте serial конкретной стопки/предмета, а не graphic/type. Выбранная стопка скрывается целиком независимо от Amount.
  • Предмет остаётся в контейнере: количество, владелец, содержимое и серверное состояние не меняются. FindType/GetContent по-прежнему могут его найти. Скрытие не является фильтром поиска, переносом, удалением, навыком Hiding или серверной невидимостью.
  • Обычный контейнер, торговое окно и сетка добычи не рисуют скрытый предмет и не принимают по нему клики/перетаскивание. Флаг сохраняется при перестройке и повторном открытии окна, пока используется тот же загруженный объект.
  • Собственного персонажа, землю и статику Hide не скрывает. Несуществующий serial даёт сообщение. Если скрыть саму сумку, это не закрывает уже открытое окно её содержимого и не скрывает каждый вложенный предмет автоматически.
  • Отдельной команды Unhide в текущем API нет. Скрытие принадлежит загруженному экземпляру объекта: его удаление из мира клиента и новая загрузка (например, при переподключении) сбрасывают флаг. Простое закрытие/открытие сундука не является гарантированным способом вернуть предмет.

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

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

1. Hide

Без аргумента вызывает RequestInteractiveHideTarget; с serial вызывает ClientHide.

Возвращает Unit. Команда не вызывает навык Hiding.

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

2. ClientHide

На игровом потоке проверяет существование объекта и запрет self.

Устанавливает IsLocallyHiddenByScript; объект остаётся в World.Items/World.Mobiles.

Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция ClientHide.

3. RequestInteractiveHideTarget

Создаёт локальный прицел с обработчиком выбора.

После выбора проверяет объект и устанавливает тот же флаг; сам вызов не блокирует скрипт.

Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция RequestInteractiveHideTarget.

4. Contains

Окно контейнера читает флаг текущего объекта при проверке попадания мыши.

Скрытый предмет не выбирается. Отдельные обработчики также отклоняют поздний double-click и захват.

Исходник проекта: src/ClassicUO.Client/Game/UI/Controls/ItemGump.cs; функция Contains.

5. AddToRenderLists

Перед созданием команд рисования проверяет локальное скрытие.

При скрытии возвращает false; мировое отсечение AllowedToDraw не используется как фильтр контейнера.

Исходник проекта: src/ClassicUO.Client/Game/UI/Controls/ItemGump.cs; функция AddToRenderLists.

6. Contains

Элемент сетки добычи проверяет тот же флаг и существование предмета.

Скрытый или удалённый объект не принимает клики; AddToRenderLists использует ту же проверку для отрисовки.

Исходник проекта: src/ClassicUO.Client/Game/UI/Gumps/GridLootGump.cs; функция Contains.

Окна не сохраняют отдельный устаревающий список скрытых serial. Флаг читается из объекта при каждом обращении.

Примеры

Пример 1. Скрыть предмет в открытом сундуке

# Скрыть предмет в открытом сундуке
#
# Убирает загруженный предмет или другого персонажа с экрана ClassicUO. Помогает убрать мешающий
# объект; работает также с предметами внутри сундуков, рюкзака, вложенных сумок и окна торговли.
#
# Unitвозвращаемого значения нет. Результат нельзя присвоить как serial, graphic/type,
# количество или true/false. Информация выводится в интерфейс/журнал, а не возвращается скрипту.

SUB Main()
    # Параметров нет. После щелчка исчезает только выбранный предмет; содержимое сундука на сервере
    # не меняется.

    # Откройте сундук, затем выберите прицелом одну мешающую стопку.
    # Вызов не ждёт щелчка: следующие строки исполняются сразу.
    UO.Hide()
    UO.Print("Select an item to hide locally")
END SUB

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

  • Параметров нет. После щелчка исчезает только выбранный предмет; содержимое сундука на сервере не меняется.

Пример 2. Скрыть найденную стопку в рюкзаке

# Скрыть найденную стопку в рюкзаке
#
# Убирает загруженный предмет или другого персонажа с экрана ClassicUO. Помогает убрать мешающий
# объект; работает также с предметами внутри сундуков, рюкзака, вложенных сумок и окна торговли.
#
# Unitвозвращаемого значения нет. Результат нельзя присвоить как serial, graphic/type,
# количество или true/false. Информация выводится в интерфейс/журнал, а не возвращается скрипту.

SUB Main()
    # Hide получает ID результата поиска, не 0x0EED. При отсутствии результата вызов не выполняется.
    # Unit от Hide нельзя сравнивать с true/false.

    # 0x0EEDgraphic золота; -1любой цвет; backpackобласть поиска.
    # FindType возвращает serial найденной стопки, который нужен Hide.
    VAR item = UO.FindType(0x0EED, -1, "backpack")
    IF item = 0 THEN
        UO.Print("No loaded matching item")
        RETURN
    END IF
    UO.Hide(item)
    # Это локальное отображение: количество золота не уменьшилось.
    UO.Print("Stack amount: " + CStr(UO.GetQuantity(item)))
END SUB

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

  • Hide получает ID результата поиска, не 0x0EED. При отсутствии результата вызов не выполняется. Unit от Hide нельзя сравнивать с true/false.

Пример 3. Скрыть конкретный предмет из сохранённого объекта

# Скрыть конкретный предмет из сохранённого объекта
#
# Убирает загруженный предмет или другого персонажа с экрана ClassicUO. Помогает убрать мешающий
# объект; работает также с предметами внутри сундуков, рюкзака, вложенных сумок и окна торговли.
#
# Unitвозвращаемого значения нет. Результат нельзя присвоить как serial, graphic/type,
# количество или true/false. Информация выводится в интерфейс/журнал, а не возвращается скрипту.

SUB Main()
    # Именованный объект сначала разрешается через GetSerial. Проверка Exists означает наличие в
    # памяти, а не успешное скрытие или доступность для переноса.

    # До запуска сохраните объект с именем decoration через AddObject.
    VAR item = UO.GetSerial("decoration")
    IF UO.Exists(item) AND item <> UO.GetSerial("self") THEN
        # GetSerial даёт числовую hex-строку. Hide принимает её как serial.
        UO.Hide(item)
    ELSE
        UO.Print("Select a loaded object other than self")
    END IF
END SUB

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

  • Именованный объект сначала разрешается через GetSerial. Проверка Exists означает наличие в памяти, а не успешное скрытие или доступность для переноса.

Clone this wiki locally