Skip to content

API UO GetQuestArrow

Codex edited this page Sep 23, 2026 · 6 revisions

UO.GetQuestArrow

ClassicUO / Basic IDE

Home · API · Commands

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

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

UO.GetQuestArrow() -> Array
UO.GetQuestArrow(point:Any) -> Array

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

Параметры

  • point — Устаревший необязательный заполнитель. Форма UO.GetQuestArrow(point) оставлена для совместимости; аргумент не читается и не изменяется. Используйте UO.GetQuestArrow() и его возвращаемый массив.

Возвращает

Array [exists, x, y], ровно три целых числа. [0] — 1 (true), если есть серверная стрелка, иначе 0 (false); [1] — X, [2] — Y. Без стрелки [0, 0, 0]. Только поле [0] является логическим признаком; весь массив не Boolean. Если стрелок несколько, читается первая сохранённая, выбора по ID нет.

Поведение

  • Серверные и локальная стрелки хранятся отдельно. Track(0) не удаляет серверную стрелку. Без графики маркер сохраняется и появляется при открытии окна. Закрытие игрового окна не удаляет маркеры; разрыв соединения очищает их. Сервер может переместить или убрать свою стрелку. Координаты не доказывают, что цель достижима.
  • Координаты клетки на текущей карте, не пиксели окна. Z и номер карты не принимаются. Выберите существующую точку своей карты; команда не проверяет проходимость, не прокладывает маршрут и не следует за движущейся целью.
  • Устаревший необязательный заполнитель. Форма UO.GetQuestArrow(point) оставлена для совместимости; аргумент не читается и не изменяется. Используйте UO.GetQuestArrow() и его возвращаемый массив.

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

SessionCharacterPanels проверяет полный пакет описания/стрелки и сохраняет данные на потоке сеанса. Bridge читает записи без создания графики. GetProfile посылает запрос 0xB8 и ждёт доступный текст до 3 секунд с ожиданиями по 25 мс. Track меняет отдельный локальный маркер. ProfileGump и QuestArrowGump отображают те же записи. Стрелки исключены из списка серверных диалогов GetGumpsCount.

1. GetQuestArrow

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

Array [exists, x, y], ровно три целых числа. [0] — 1 (true), если есть серверная стрелка, иначе 0 (false); [1] — X, [2] — Y. Без стрелки [0, 0, 0]. Только поле [0] является логическим признаком; весь массив не Boolean. Если стрелок несколько, читается первая сохранённая, выбора по ID нет.

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

2. SessionCharacterPanels

Серверные и локальная стрелки хранятся отдельно. Track(0) не удаляет серверную стрелку. Без графики маркер сохраняется и появляется при открытии окна. Закрытие игрового окна не удаляет маркеры; разрыв соединения очищает их. Сервер может переместить или убрать свою стрелку. Координаты не доказывают, что цель достижима.

SessionCharacterPanels проверяет полный пакет описания/стрелки и сохраняет данные на потоке сеанса. Bridge читает записи без создания графики. GetProfile посылает запрос 0xB8 и ждёт доступный текст до 3 секунд с ожиданиями по 25 мс. Track меняет отдельный локальный маркер. ProfileGump и QuestArrowGump отображают те же записи. Стрелки исключены из списка серверных диалогов GetGumpsCount.

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

Array [exists, x, y], ровно три целых числа. [0] — 1 (true), если есть серверная стрелка, иначе 0 (false); [1] — X, [2] — Y. Без стрелки [0, 0, 0]. Только поле [0] является логическим признаком; весь массив не Boolean. Если стрелок несколько, читается первая сохранённая, выбора по ID нет.

Примеры

Пример 1. Прямое применение

# Прямое применение
#
# Читает положение серверной стрелки задания. Позволяет скрипту узнать, куда указывает
# полученная от сервера стрелка; команду Track она не читает.
#
# Array [exists, x, y], ровно три целых числа. [0] — 1 (true), если есть серверная стрелка,
# иначе 0 (false); [1] — X, [2] — Y. Без стрелки [0, 0, 0]. Только поле [0] является логическим
# признаком; весь массив не Boolean. Если стрелок несколько, читается первая сохранённая, выбора
# по ID нет.

SUB Main()
    # Сначала проверяется [0]; затем [1]/[2] можно читать как X/Y. Не передавайте весь массив как
    # serial или Boolean.

    VAR arrow = UO.GetQuestArrow()
    IF arrow[0] = TRUE THEN
        UO.Print(CStr(arrow[1]) + ", " + CStr(arrow[2]))
    END IF
END SUB

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

  • Сначала проверяется [0]; затем [1]/[2] можно читать как X/Y. Не передавайте весь массив как serial или Boolean.

Пример 2. Игровое условие

# Игровое условие
#
# Читает положение серверной стрелки задания. Позволяет скрипту узнать, куда указывает
# полученная от сервера стрелка; команду Track она не читает.
#
# Array [exists, x, y], ровно три целых числа. [0] — 1 (true), если есть серверная стрелка,
# иначе 0 (false); [1] — X, [2] — Y. Без стрелки [0, 0, 0]. Только поле [0] является логическим
# признаком; весь массив не Boolean. Если стрелок несколько, читается первая сохранённая, выбора
# по ID нет.

SUB Main()
    # Копирует координаты серверной стрелки в локальный маркер Track. Это не движение. Если сервер
    # позже переместит стрелку, локальная останется на прежней точке.

    VAR arrow = UO.GetQuestArrow()
    IF arrow[0] = 1 THEN
        UO.Track(1, arrow[1], arrow[2])
    END IF
END SUB

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

  • Копирует координаты серверной стрелки в локальный маркер Track. Это не движение. Если сервер позже переместит стрелку, локальная останется на прежней точке.

Пример 3. Полная вспомогательная функция

# Полная вспомогательная функция
#
# Читает положение серверной стрелки задания. Позволяет скрипту узнать, куда указывает
# полученная от сервера стрелка; команду Track она не читает.
#
# Array [exists, x, y], ровно три целых числа. [0] — 1 (true), если есть серверная стрелка,
# иначе 0 (false); [1] — X, [2] — Y. Без стрелки [0, 0, 0]. Только поле [0] является логическим
# признаком; весь массив не Boolean. Если стрелок несколько, читается первая сохранённая, выбора
# по ID нет.

SUB Main()
    # ArrowDistance возвращает дистанцию UO.GetDistance(x,y) до серверной точки или1, если стрелки
    # нет. При расстоянии до двух клеток убирается только локальный Track, серверная стрелка
    # остаётся.

    VAR distance = ArrowDistance()
    IF distance >= 0 AND distance <= 2 THEN
        UO.Track(0)
    END IF
END SUB

FUNCTION ArrowDistance()
    VAR arrow = UO.GetQuestArrow()
    IF arrow[0] = 0 THEN
        RETURN -1
    END IF
    RETURN UO.GetDistance(arrow[1], arrow[2])
END FUNCTION

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

  • ArrowDistance возвращает дистанцию UO.GetDistance(x,y) до серверной точки или −1, если стрелки нет. При расстоянии до двух клеток убирается только локальный Track, серверная стрелка остаётся.

Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Clone this wiki locally