API UO GetLandscapeTile - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.GetLandscapeTile
Оглавление · Алфавитный указатель · World & Geometry
ClassicUO • Runtime API
Читает землю одной клетки текущей карты.
Точный синтаксис
UO.GetLandscapeTile(x:Any, y:Any, map:Any) -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
x— X клетки текущей загруженной карты; мировая координата, не позиция внутри гампа.y— Y клетки текущей загруженной карты; мировая координата, не позиция внутри гампа.map— Номер карты. Если этот аргумент отсутствует в выбранной форме, используется текущая карта. Реальный клиент читает тайлы только текущей загруженной карты.
Возвращает
Array из трёх Integer: [0] graphic — type земли; [1] z — мировая высота земли; [2] flags — младшие 32 бита tiledata-флагов. Если карта/клетка недоступна или земли нет, возвращается пустой массив []. Это плоская запись, а не список из трёх тайлов.
Поведение
- Данные относятся к текущей загруженной карте. Другая карта или недоступная клетка дают пустой массив. Прямые запросы тайлов могут дополнительно сообщать о несовпадении карты; GetWorldCell и GetWorldTilesArray сразу возвращают пустой массив без такого сообщения.
- Индексы массивов начинаются с 0. Перед чтением поля проверяйте GetArrayLength. Z означает высоту в мире; layer — свойство экипировки из tiledata, а index — порядковый номер записи клетки.
Примеры
Пример 1. Показать землю под персонажем
# Показать землю под персонажем
#
# Читает землю одной клетки текущей карты.
#
# Array из трёх Integer: `[0] graphic` — type земли; `[1] z` — мировая высота земли; `[2] flags`
# — младшие 32 бита tiledata-флагов. Если карта/клетка недоступна или земли нет, возвращается
# пустой массив `[]`. Это плоская запись, а не список из трёх тайлов.
SUB Main()
# x/y берутся из позиции персонажа; map=WorldNum() выбирает текущую карту.
# Наличие трёх полей проверяется до индексации; land[0] — graphic, land[1] — Z.
VAR land = UO.GetLandscapeTile(UO.GetX(), UO.GetY(), UO.WorldNum())
IF GetArrayLength(land) >= 3 THEN
UO.Print('Graphic: ' + CStr(land[0]))
UO.Print('Ground Z: ' + CStr(land[1]))
ELSE
UO.Print('Land is unavailable')
END IF
END SUB
Разбор параметров и выполнения:
- x/y берутся из позиции персонажа; map=WorldNum() выбирает текущую карту.
- Наличие трёх полей проверяется до индексации; land[0] — graphic, land[1] — Z.
Пример 2. Сравнить высоту соседней клетки
# Сравнить высоту соседней клетки
#
# Читает землю одной клетки текущей карты.
#
# Array из трёх Integer: `[0] graphic` — type земли; `[1] z` — мировая высота земли; `[2] flags`
# — младшие 32 бита tiledata-флагов. Если карта/клетка недоступна или земли нет, возвращается
# пустой массив `[]`. Это плоская запись, а не список из трёх тайлов.
SUB Main()
# x+1 — соседняя клетка, y и map сохраняются.
# deltaZ сравнивает землю и персонажа. Это не проверка проходимости: мосты и статики учитываются
# отдельно.
VAR land = UO.GetLandscapeTile(UO.GetX() + 1, UO.GetY(), UO.WorldNum())
IF GetArrayLength(land) >= 3 THEN
VAR deltaZ = land[1] - UO.GetZ()
UO.Print('Ground height difference: ' + CStr(deltaZ))
END IF
END SUB
Разбор параметров и выполнения:
- x+1 — соседняя клетка, y и map сохраняются.
- deltaZ сравнивает землю и персонажа. Это не проверка проходимости: мосты и статики учитываются отдельно.
Пример 3. Прочитать название найденной земли
# Прочитать название найденной земли
#
# Читает землю одной клетки текущей карты.
#
# Array из трёх Integer: `[0] graphic` — type земли; `[1] z` — мировая высота земли; `[2] flags`
# — младшие 32 бита tiledata-флагов. Если карта/клетка недоступна или земли нет, возвращается
# пустой массив `[]`. Это плоская запись, а не список из трёх тайлов.
SUB Main()
# group=0 выбирает землю; land[0] — graphic.
# GetTileName возвращает текст, тогда как GetLandscapeTile возвращает массив.
VAR land = UO.GetLandscapeTile(UO.GetX(), UO.GetY(), UO.WorldNum())
IF GetArrayLength(land) >= 3 THEN
VAR name = UO.GetTileName(0, land[0])
UO.Print(name)
END IF
END SUB
Разбор параметров и выполнения:
- group=0 выбирает землю; land[0] — graphic.
- GetTileName возвращает текст, тогда как GetLandscapeTile возвращает массив.