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

UO.GetX

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

ClassicUO • Runtime API

Читает поле X загруженного объекта или текущего персонажа.

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

UO.GetX() -> Integer
UO.GetX(id:String) -> Integer
UO.GetX(id:Integer) -> Integer
UO.GetX(ObjID:Any) -> Any

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

Параметры

  • id / ObjID — Serial/ID объекта, а не graphic/type. Число, hex-строка, стандартное имя self/backpack/lasttarget/lastobject/lastcontainer/laststatus/finditem/lastcorpse или имя AddObject. Алиас должен быть установлен; существование проверяется Exists. В зарегистрированной форме без аргументов используется self.

Возвращает

Integer — координата X. Для неизвестного объекта возвращается 0. Ноль также является допустимой координатой. Измеряется в клетках для объектов мира; это не экранные пиксели.

Поведение

  • Читаются последние данные, уже известные клиенту; запрос обновления серверу не отправляется.
  • Неизвестный объект и ещё не полученное свойство могут иметь нулевое/пустое значение. Проверяйте Exists и условия конкретного действия.
  • Для персонажа или предмета на земле это координата мира. У предмета внутри контейнера X/Y задают положение внутри гампа; команда не переводит их в мировые координаты владельца.
  • Читается текущая координата объекта. Ожидающие подтверждения шаги не превращаются этой командой в расчёт маршрута.

Примеры

Пример 1. Прочитать свою координату

# Прочитать свою координату
#
# Читает поле X загруженного объекта или текущего персонажа.
#
# Integer — координата X. Для неизвестного объекта возвращается 0. Ноль также является
# допустимой координатой. Измеряется в клетках для объектов мира; это не экранные пиксели.

SUB Main()
    # Форма без аргумента выбирает self, текущего персонажа.
    # position содержит координата X, а не serial.

    VAR position = UO.GetX()
    UO.Print('X: ' + STR(position))
END SUB

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

  • Форма без аргумента выбирает self, текущего персонажа.
  • position содержит координата X, а не serial.

Пример 2. Сравнить с выбранным персонажем

# Сравнить с выбранным персонажем
#
# Читает поле X загруженного объекта или текущего персонажа.
#
# Integer — координата X. Для неизвестного объекта возвращается 0. Ноль также является
# допустимой координатой. Измеряется в клетках для объектов мира; это не экранные пиксели.

SUB Main()
    # lasttarget должен указывать на загруженного персонажа или предмет на земле.
    # delta — разность по одной оси. Она не является длиной маршрута; значение может быть
    # отрицательным.

    VAR other = UO.GetSerial('lasttarget')
    IF UO.Exists(other) THEN
        VAR delta = UO.GetX(other) - UO.GetX()
        UO.Print('Difference: ' + STR(delta))
    END IF
END SUB

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

  • lasttarget должен указывать на загруженного персонажа или предмет на земле.
  • delta — разность по одной оси. Она не является длиной маршрута; значение может быть отрицательным.

Пример 3. Запомнить точку и сравнить позднее

# Запомнить точку и сравнить позднее
#
# Читает поле X загруженного объекта или текущего персонажа.
#
# Integer — координата X. Для неизвестного объекта возвращается 0. Ноль также является
# допустимой координатой. Измеряется в клетках для объектов мира; это не экранные пиксели.

SUB Main()
    # id="self" — явная форма выбора персонажа. WAIT=500 миллисекунд.
    # Сравнение показывает изменение только оси X. Изменение другой оси или поворот здесь не
    # учитываются.

    VAR before = UO.GetX('self')
    WAIT(500)
    VAR after = UO.GetX('self')
    IF before <> after THEN
        UO.Print('Coordinate changed')
    END IF
END SUB

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

  • id="self" — явная форма выбора персонажа. WAIT=500 миллисекунд.
  • Сравнение показывает изменение только оси X. Изменение другой оси или поворот здесь не учитываются.