-
Notifications
You must be signed in to change notification settings - Fork 0
API UO StepQ
Оглавление · Алфавитный указатель · Movement
ClassicUO • Runtime API
Запрашивает один шаг через очередь; дополнительная форма может ждать освобождения очереди и подтверждения.
UO.StepQ(direction:Any, run:Any) -> Integer
UO.StepQ(direction:Any, run:Any, timeout:Any) -> Integer
UO.StepQ(direction:Any, run:Any, timeout:Any, queue:Any) -> Integer
UO.StepQ(direction:Any, run:Any, timeout:Any, queue:Any, waitForAck:Any) -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
-
direction— Направление 0=N, 1=NE, 2=E, 3=SE, 4=S, 5=SW, 6=W, 7=NW. Реализация применяет побитовое &7; используйте 0..7 для ясности. -
run— TRUE/1 — запрос бега, FALSE/0 — шаг. Серверные задержки движения сохраняются; это не множитель скорости. -
timeout— Необязательный срок ожидания очереди в мс. 0/отрицательное не ждёт освобождения; при waitForAck=TRUE и timeout=0 подтверждение ожидается до 10000 мс. При положительном значении ожидание подтверждения получает отдельный такой же срок. -
queue— Необязательный флаг, по умолчанию TRUE. FALSE передаёт forcePacket при запросе шага; не отменяет серверные ограничения и не очищает накопленную очередь. -
waitForAck— FALSE/отсутствие — вернуть результат постановки сразу. TRUE — для отправленного шага ждать подтверждения/отказа.
Integer без waitForAck: 0..255 — sequence отправленного запроса, включая допустимый 0; 256 — только поворот; -2 — препятствие на клиенте; -1 — общий отказ/полная очередь/отключение/выносливость. С waitForAck=TRUE: 7 — подтверждение, 5 — отказ сервера, 4 — тайм-аут; -1/-2/256 сохраняют предыдущий смысл. Число 7 в форме без ожидания — sequence, а не подтверждение. Проверка IF result недостаточна.
- Одна команда может сначала повернуть персонажа; это не обязательно перемещение на следующую клетку.
- Учитываются moveCheckStamina, moveExitOnDisconnect и moveOpenDoor. Серверный запрет и локальное препятствие различаются.
- Не повторяйте команду в цикле без анализа результата и WAIT: очередь движения и скорость сервера ограничены.
- Без ожидания команда не подтверждает изменение позиции. LastStepQUsedDoor показывает попытку открытия двери, не результат шага.
# Получить sequence без ожидания
#
# Запрашивает один шаг через очередь; дополнительная форма может ждать освобождения очереди и
# подтверждения.
#
# Integer без waitForAck: 0..255 — sequence отправленного запроса, включая допустимый 0; 256 —
# только поворот; -2 — препятствие на клиенте; -1 — общий отказ/полная
# очередь/отключение/выносливость. С waitForAck=TRUE: 7 — подтверждение, 5 — отказ сервера, 4 —
# тайм-аут; -1/-2/256 сохраняют предыдущий смысл. Число 7 в форме без ожидания — sequence, а не
# подтверждение. Проверка IF result недостаточна.
SUB Main()
# direction=2 — E, run=FALSE. Два аргумента означают обычную постановку без ожидания
# подтверждения.
# sequence=0 является допустимым успехом постановки; sequence=256 означает поворот.
VAR sequence = UO.StepQ(2, FALSE)
IF sequence >= 0 AND sequence <= 255 THEN
UO.Print('Queued sequence: ' + STR(sequence))
ELSE
UO.Print('Queue status: ' + STR(sequence))
END IF
END SUBРазбор параметров и выполнения:
- direction=2 — E, run=FALSE. Два аргумента означают обычную постановку без ожидания подтверждения.
- sequence=0 является допустимым успехом постановки; sequence=256 означает поворот.
# Дождаться подтверждения
#
# Запрашивает один шаг через очередь; дополнительная форма может ждать освобождения очереди и
# подтверждения.
#
# Integer без waitForAck: 0..255 — sequence отправленного запроса, включая допустимый 0; 256 —
# только поворот; -2 — препятствие на клиенте; -1 — общий отказ/полная
# очередь/отключение/выносливость. С waitForAck=TRUE: 7 — подтверждение, 5 — отказ сервера, 4 —
# тайм-аут; -1/-2/256 сохраняют предыдущий смысл. Число 7 в форме без ожидания — sequence, а не
# подтверждение. Проверка IF result недостаточна.
SUB Main()
# direction=4 — S, run=TRUE, timeout=1500 мс. queue=TRUE, waitForAck=TRUE.
# Ожидание места и затем подтверждения может занять до двух интервалов по 1500 мс. 256 требует
# отдельного учёта поворота.
VAR status = UO.StepQ(4, TRUE, 1500, TRUE, TRUE)
IF status == 7 THEN
UO.Print('Server confirmed')
ELSE
UO.Print('Step status: ' + STR(status))
END IF
END SUBРазбор параметров и выполнения:
- direction=4 — S, run=TRUE, timeout=1500 мс. queue=TRUE, waitForAck=TRUE.
- Ожидание места и затем подтверждения может занять до двух интервалов по 1500 мс. 256 требует отдельного учёта поворота.
# Отдельно обработать локальную стену
#
# Запрашивает один шаг через очередь; дополнительная форма может ждать освобождения очереди и
# подтверждения.
#
# Integer без waitForAck: 0..255 — sequence отправленного запроса, включая допустимый 0; 256 —
# только поворот; -2 — препятствие на клиенте; -1 — общий отказ/полная
# очередь/отключение/выносливость. С waitForAck=TRUE: 7 — подтверждение, 5 — отказ сервера, 4 —
# тайм-аут; -1/-2/256 сохраняют предыдущий смысл. Число 7 в форме без ожидания — sequence, а не
# подтверждение. Проверка IF result недостаточна.
SUB Main()
# direction=6 — W, run=FALSE; timeout=0 не ждёт очередь; queue=FALSE запрашивает forcePacket,
# waitForAck=FALSE.
# ForcePacket не даёт права пройти через стену. При -2 рассчитывайте другой маршрут вместо
# повторной отправки в ту же клетку.
VAR status = UO.StepQ(6, FALSE, 0, FALSE, FALSE)
IF status == -2 THEN
UO.Print('Local obstacle; calculate another route')
END IF
END SUBРазбор параметров и выполнения:
- direction=6 — W, run=FALSE; timeout=0 не ждёт очередь; queue=FALSE запрашивает forcePacket, waitForAck=FALSE.
- ForcePacket не даёт права пройти через стену. При -2 рассчитывайте другой маршрут вместо повторной отправки в ту же клетку.
ClassicUO - Bad Newbie & Basic IDE Edition