Skip to content

API wait zh tw

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;有活動 callback 時 wait/sleep 可能拒絕負數,沒有時用戶端橋接不等待。可攜腳本應只使用非負值。
  • 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;有活動 callback 時 wait/sleep 可能拒絕負數,沒有時用戶端橋接不等待。可攜腳本應只使用非負值。

專案原始碼: 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