Skip to content

API wait uk

Codex edited this page Sep 26, 2026 · 1 revision

wait

ClassicUO / Basic IDE

Home · API · Journal

Призупиняє поточний скрипт на задану кількість мілісекунд. Використовуйте між повторними перевірками стану, щоб не створювати безперервний цикл.

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

wait(ms:Integer) -> Unit

Параметри

  • ms — Цілі мілісекунди: 1000 — одна секунда. Використовуйте 0..2147483647. Це не кроки, не секунди й не таймаут підтвердження сервера.

Повертає

Unit — результату немає. Викликайте окремим рядком. Завершення затримки не підтверджує перенесення предмета, завершення заклинання чи з’єднання; перевіряйте потрібний стан окремо.

Поведінка

  • Чекає поточна процедура, а ігровий цикл та інші скрипти працюють далі. Скасування скрипту перериває очікування через токен скасування. Планування системи й обробники можуть збільшити час; точний інтервал кадрів не гарантується. Для асинхронного завдання Basic є Delay з Await.
  • UO.Wait ділить додатний час на частини до 25 мс і між ними перевіряє обробники подій UO. Вбудовані wait і sleep викликають одну функцію Basic; за наявності таймерів і callback обслуговують їх, але самі не викликають диспетчер старих подій UO. Для скрипту з UO.SetEvent вони не цілком взаємозамінні.
  • Нуль не створює справжньої затримки й не підходить для паузи у швидкому циклі. Від’ємний час не означає нескінченність: UO.Wait зводить його до 0; wait/sleep можуть відхилити його з активними callback, а клієнтський міст без них не чекає. Використовуйте лише невід’ємний час.
  • Basic.WaitUntil · Basic.Timers · Delay

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

Призупиняє поточний скрипт на задану кількість мілісекунд. Використовуйте між повторними перевірками стану, щоб не створювати безперервний цикл.

1. Wait

Цілі мілісекунди: 1000 — одна секунда. Використовуйте 0..2147483647. Це не кроки, не секунди й не таймаут підтвердження сервера.

UO.Wait ділить додатний час на частини до 25 мс і між ними перевіряє обробники подій UO. Вбудовані wait і sleep викликають одну функцію Basic; за наявності таймерів і callback обслуговують їх, але самі не викликають диспетчер старих подій UO. Для скрипту з UO.SetEvent вони не цілком взаємозамінні.

Код проєкту: external/InjectionScript/src/InjectionScript/Runtime/InjectionApi.cs; функція Wait.

2. WaitWithTimers

Чекає поточна процедура, а ігровий цикл та інші скрипти працюють далі. Скасування скрипту перериває очікування через токен скасування. Планування системи й обробники можуть збільшити час; точний інтервал кадрів не гарантується. Для асинхронного завдання Basic є Delay з Await.

Нуль не створює справжньої затримки й не підходить для паузи у швидкому циклі. Від’ємний час не означає нескінченність: UO.Wait зводить його до 0; wait/sleep можуть відхилити його з активними callback, а клієнтський міст без них не чекає. Використовуйте лише невід’ємний час.

Код проєкту: external/InjectionScript/src/InjectionScript/Runtime/Interpreter.Timers.cs; функція WaitWithTimers.

3. Wait

Цілі мілісекунди: 1000 — одна секунда. Використовуйте 0..2147483647. Це не кроки, не секунди й не таймаут підтвердження сервера.

Чекає поточна процедура, а ігровий цикл та інші скрипти працюють далі. Скасування скрипту перериває очікування через токен скасування. Планування системи й обробники можуть збільшити час; точний інтервал кадрів не гарантується. Для асинхронного завдання Basic є Delay з Await.

Код проєкту: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функція Wait.

Приклади

wait — 1

# wait — 1
#
# Призупиняє поточний скрипт на задану кількість мілісекунд. Використовуйте між повторними
# перевірками стану, щоб не створювати безперервний цикл.
#
# Unit — результату немає. Викликайте окремим рядком. Завершення затримки не підтверджує
# перенесення предмета, завершення заклинання чи з’єднання; перевіряйте потрібний стан окремо.

SUB Main()
    # 250 — чверть секунди. Наступний рядок виконується після очікування; Delay complete — текст
    # прикладу, а не повернений результат.

    wait(250)
    UO.Print("Delay complete")
END SUB

Пояснення параметрів і виконання:

  • 250 — чверть секунди. Наступний рядок виконується після очікування; Delay complete — текст прикладу, а не повернений результат.

wait — 2

# wait — 2
#
# Призупиняє поточний скрипт на задану кількість мілісекунд. Використовуйте між повторними
# перевірками стану, щоб не створювати безперервний цикл.
#
# Unit — результату немає. Викликайте окремим рядком. Завершення затримки не підтверджує
# перенесення предмета, завершення заклинання чи з’єднання; перевіряйте потрібний стан окремо.

SUB Main()
    # WaitForOnline повністю оголошена тут. Аргумент 20 дозволяє до двадцяти пауз по 250 мс.
    # З’єднання перевіряється перед паузами й після останньої. Помічник повертає Connected (1/0);
    # команда очікування не повертає значення й не підключається до сервера.

    RETURN WaitForOnline(20)
END SUB

SUB WaitForOnline(checks)
    WHILE checks > 0
        IF UO.Connected() THEN
            RETURN 1
        END IF
        wait(250)
        checks = checks - 1
    WEND
    RETURN UO.Connected()
END SUB

Пояснення параметрів і виконання:

  • WaitForOnline повністю оголошена тут. Аргумент 20 дозволяє до двадцяти пауз по 250 мс. З’єднання перевіряється перед паузами й після останньої. Помічник повертає Connected (1/0); команда очікування не повертає значення й не підключається до сервера.

wait — 3

# wait — 3
#
# Призупиняє поточний скрипт на задану кількість мілісекунд. Використовуйте між повторними
# перевірками стану, щоб не створювати безперервний цикл.
#
# Unit — результату немає. Викликайте окремим рядком. Завершення затримки не підтверджує
# перенесення предмета, завершення заклинання чи з’єднання; перевіряйте потрібний стан окремо.

SUB Main()
    # Цикл читає вагу рівно тричі. Між читаннями дві паузи по 500 мс, після останнього паузи немає.
    # Друк відбувається при першому читанні та зміні ваги. previous зберігає значення для
    # порівняння, а не змінює вагу в грі.

    VAR previous = -1
    VAR checks = 0
    WHILE checks < 3
        VAR weight = UO.Weight()
        IF weight <> previous THEN
            UO.Print("Weight: " + CStr(weight))
            previous = weight
        END IF
        checks = checks + 1
        IF checks < 3 THEN
            wait(500)
        END IF
    WEND
END SUB

Пояснення параметрів і виконання:

  • Цикл читає вагу рівно тричі. Між читаннями дві паузи по 500 мс, після останнього паузи немає. Друк відбувається при першому читанні та зміні ваги. previous зберігає значення для порівняння, а не змінює вагу в грі.

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

Clone this wiki locally