API UO Step - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.Step
Оглавление · Алфавитный указатель · Movement
ClassicUO • Runtime API
Запрашивает одиночный шаг/поворот и, если был отправлен шаг, ждёт подтверждение сервера.
Точный синтаксис
UO.Step(Direction:Any, Running:Any) -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
Direction— Направление 0=N, 1=NE, 2=E, 3=SE, 4=S, 5=SW, 6=W, 7=NW. Реализация применяет побитовое &7; используйте 0..7 для ясности.Running— TRUE/1 — запрос бега, FALSE/0 — шаг. Серверные задержки движения сохраняются; это не множитель скорости.
Возвращает
Integer: 7 — подтверждён шаг либо выполнен только поворот; 5 — сервер отклонил шаг; 4 — истекло ожидание подтверждения (до 10000 мс); 3 — шаг заблокирован клиентом; 2 — очередь переполнена; 0 — общий отказ, отключение или недостаточная выносливость. Это не true/false: например, ненулевой код 5 означает отказ.
Поведение
- Одна команда может сначала повернуть персонажа; это не обязательно перемещение на следующую клетку.
- Учитываются moveCheckStamina, moveExitOnDisconnect и moveOpenDoor. Серверный запрет и локальное препятствие различаются.
- Не повторяйте команду в цикле без анализа результата и WAIT: очередь движения и скорость сервера ограничены.
Примеры
Пример 1. Шаг на восток
# Шаг на восток
#
# Запрашивает одиночный шаг/поворот и, если был отправлен шаг, ждёт подтверждение сервера.
#
# Integer: 7 — подтверждён шаг либо выполнен только поворот; 5 — сервер отклонил шаг; 4 —
# истекло ожидание подтверждения (до 10000 мс); 3 — шаг заблокирован клиентом; 2 — очередь
# переполнена; 0 — общий отказ, отключение или недостаточная выносливость. Это не true/false:
# например, ненулевой код 5 означает отказ.
SUB Main()
# Direction=2 — E, Running=FALSE — шаг.
# Проверяется точный код 7; для подтверждения перемещения сравните X/Y до и после.
VAR result = UO.Step(2, FALSE)
IF result == 7 THEN
UO.Print('Step accepted or turn completed')
ELSE
UO.Print('Movement status: ' + STR(result))
END IF
END SUB
Разбор параметров и выполнения:
- Direction=2 — E, Running=FALSE — шаг.
- Проверяется точный код 7; для подтверждения перемещения сравните X/Y до и после.
Пример 2. Отличить поворот от перемещения
# Отличить поворот от перемещения
#
# Запрашивает одиночный шаг/поворот и, если был отправлен шаг, ждёт подтверждение сервера.
#
# Integer: 7 — подтверждён шаг либо выполнен только поворот; 5 — сервер отклонил шаг; 4 —
# истекло ожидание подтверждения (до 10000 мс); 3 — шаг заблокирован клиентом; 2 — очередь
# переполнена; 0 — общий отказ, отключение или недостаточная выносливость. Это не true/false:
# например, ненулевой код 5 означает отказ.
SUB Main()
# Direction=0 — N. Координаты считываются до и после вызова.
# Неизменная позиция возможна при повороте или отказе, поэтому result нужен отдельно.
VAR x = UO.GetX()
VAR y = UO.GetY()
VAR result = UO.Step(0, FALSE)
IF UO.GetX() == x AND UO.GetY() == y THEN
UO.Print('Position unchanged; status=' + STR(result))
END IF
END SUB
Разбор параметров и выполнения:
- Direction=0 — N. Координаты считываются до и после вызова.
- Неизменная позиция возможна при повороте или отказе, поэтому result нужен отдельно.
Пример 3. Обработать серверный отказ при беге
# Обработать серверный отказ при беге
#
# Запрашивает одиночный шаг/поворот и, если был отправлен шаг, ждёт подтверждение сервера.
#
# Integer: 7 — подтверждён шаг либо выполнен только поворот; 5 — сервер отклонил шаг; 4 —
# истекло ожидание подтверждения (до 10000 мс); 3 — шаг заблокирован клиентом; 2 — очередь
# переполнена; 0 — общий отказ, отключение или недостаточная выносливость. Это не true/false:
# например, ненулевой код 5 означает отказ.
SUB Main()
# Direction=4 — S, Running=TRUE.
# Код 5 — отказ сервера. WAIT=250 мс задаёт паузу скрипта и не гарантирует, что следующая
# попытка будет успешной.
VAR result = UO.Step(4, TRUE)
IF result == 5 THEN
UO.Print('Server denied the step')
WAIT(250)
END IF
END SUB
Разбор параметров и выполнения:
- Direction=4 — S, Running=TRUE.
- Код 5 — отказ сервера. WAIT=250 мс задаёт паузу скрипта и не гарантирует, что следующая попытка будет успешной.