-
Notifications
You must be signed in to change notification settings - Fork 0
API 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.
Без аргумента вызывает RequestInteractiveHideTarget; с serial вызывает ClientHide.
Возвращает Unit. Команда не вызывает навык Hiding.
Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция Hide.
На игровом потоке проверяет существование объекта и запрет self.
Устанавливает IsLocallyHiddenByScript; объект остаётся в World.Items/World.Mobiles.
Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция ClientHide.
Создаёт локальный прицел с обработчиком выбора.
После выбора проверяет объект и устанавливает тот же флаг; сам вызов не блокирует скрипт.
Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция RequestInteractiveHideTarget.
Окно контейнера читает флаг текущего объекта при проверке попадания мыши.
Скрытый предмет не выбирается. Отдельные обработчики также отклоняют поздний double-click и захват.
Исходник проекта: src/ClassicUO.Client/Game/UI/Controls/ItemGump.cs; функция Contains.
Перед созданием команд рисования проверяет локальное скрытие.
При скрытии возвращает false; мировое отсечение AllowedToDraw не используется как фильтр контейнера.
Исходник проекта: src/ClassicUO.Client/Game/UI/Controls/ItemGump.cs; функция AddToRenderLists.
Элемент сетки добычи проверяет тот же флаг и существование предмета.
Скрытый или удалённый объект не принимает клики; AddToRenderLists использует ту же проверку для отрисовки.
Исходник проекта: src/ClassicUO.Client/Game/UI/Gumps/GridLootGump.cs; функция Contains.
Окна не сохраняют отдельный устаревающий список скрытых serial. Флаг читается из объекта при каждом обращении.
# Скрыть предмет в открытом сундуке
#
# Убирает загруженный предмет или другого персонажа с экрана ClassicUO. Помогает убрать мешающий
# объект; работает также с предметами внутри сундуков, рюкзака, вложенных сумок и окна торговли.
#
# Unit — возвращаемого значения нет. Результат нельзя присвоить как serial, graphic/type,
# количество или true/false. Информация выводится в интерфейс/журнал, а не возвращается скрипту.
SUB Main()
# Параметров нет. После щелчка исчезает только выбранный предмет; содержимое сундука на сервере
# не меняется.
# Откройте сундук, затем выберите прицелом одну мешающую стопку.
# Вызов не ждёт щелчка: следующие строки исполняются сразу.
UO.Hide()
UO.Print("Select an item to hide locally")
END SUBРазбор параметров и выполнения:
- Параметров нет. После щелчка исчезает только выбранный предмет; содержимое сундука на сервере не меняется.
# Скрыть найденную стопку в рюкзаке
#
# Убирает загруженный предмет или другого персонажа с экрана ClassicUO. Помогает убрать мешающий
# объект; работает также с предметами внутри сундуков, рюкзака, вложенных сумок и окна торговли.
#
# Unit — возвращаемого значения нет. Результат нельзя присвоить как serial, graphic/type,
# количество или true/false. Информация выводится в интерфейс/журнал, а не возвращается скрипту.
SUB Main()
# Hide получает ID результата поиска, не 0x0EED. При отсутствии результата вызов не выполняется.
# Unit от Hide нельзя сравнивать с true/false.
# 0x0EED — graphic золота; -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.
# Скрыть конкретный предмет из сохранённого объекта
#
# Убирает загруженный предмет или другого персонажа с экрана 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 означает наличие в памяти, а не успешное скрытие или доступность для переноса.
ClassicUO - Bad Newbie & Basic IDE Edition