-
Notifications
You must be signed in to change notification settings - Fork 0
API UO CallSub zh tw
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
UO.CallSub · UO.FunRunning · UO.SubExists
ClassicUO • Runtime API
要求管理員把已知程序啟動為獨立工作,適合從控制腳本啟動監看工作。這是非同步啟動,不是等待回傳結果的一般 Basic 呼叫。
UO.CallSub(subrutineName:String) -> Unit
-
subrutineName— 必要的 String subrutineName 是目錄中的 Sub/Function 名稱,例如 WeightWatch。不是路徑、檔名、執行索引、程式碼,也不是 SetScriptName 改過的顯示名稱。比對不分大小寫,但不會去除空白。本呼叫不能傳遞程序引數。
Unit:沒有回傳值、函式結果或啟動成功確認。未知名稱不會啟動任何工作。同步執行請使用一般 Basic 的 MyFunction(...)。
- 只搜尋目前工作階段的目錄。同名時選第一筆,因此不同程序請使用唯一名稱。這三個命令不會載入未知檔案或搜尋磁碟。
- CallSub 傳入零個引數。Private、語法錯誤、必要參數、停用 Basic 或單一程序限制都可能拒絕啟動;請查看 IDE 狀態與錯誤。再次呼叫有效工作不會複製或解除暫停。取消後的新啟動可能等待舊工作清理。控制腳本不等待工作完成。
- FunRunning 使用原始程序名稱與鍵值,不使用重新命名的顯示標籤。暫停保留執行個體,因此回傳 1。取消後即使仍在清理也回傳 0。檢查與後續呼叫不是不可分割的操作,工作可能在其間結束。
- Private 或無效定義也可能讓 SubExists 回傳 1。停止工作或關閉編輯器分頁不一定移除目錄項目。重新載入修改過的檔案會移除舊定義。只載入另一個 runtime 的本機函式不一定已登錄到管理員。
以下是真實實作步驟;C# 名稱不是額外的 UO 命令。所有可執行的 Basic 輔助函式都在範例中完整定義。
必要的 String subrutineName 是目錄中的 Sub/Function 名稱,例如 WeightWatch。不是路徑、檔名、執行索引、程式碼,也不是 SetScriptName 改過的顯示名稱。比對不分大小寫,但不會去除空白。本呼叫不能傳遞程序引數。
Unit:沒有回傳值、函式結果或啟動成功確認。未知名稱不會啟動任何工作。同步執行請使用一般 Basic 的 MyFunction(...)。
專案原始碼: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; 函式 CallSub.
只搜尋目前工作階段的目錄。同名時選第一筆,因此不同程序請使用唯一名稱。這三個命令不會載入未知檔案或搜尋磁碟。
Private 或無效定義也可能讓 SubExists 回傳 1。停止工作或關閉編輯器分頁不一定移除目錄項目。重新載入修改過的檔案會移除舊定義。只載入另一個 runtime 的本機函式不一定已登錄到管理員。
專案原始碼: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; 函式 FindProcedureByName.
要求管理員把已知程序啟動為獨立工作,適合從控制腳本啟動監看工作。這是非同步啟動,不是等待回傳結果的一般 Basic 呼叫。
CallSub 傳入零個引數。Private、語法錯誤、必要參數、停用 Basic 或單一程序限制都可能拒絕啟動;請查看 IDE 狀態與錯誤。再次呼叫有效工作不會複製或解除暫停。取消後的新啟動可能等待舊工作清理。控制腳本不等待工作完成。
專案原始碼: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 函式 Exec.
以下是真實實作步驟;C# 名稱不是額外的 UO 命令。所有可執行的 Basic 輔助函式都在範例中完整定義。
# 啟動後繼續 Main
#
# 要求管理員把已知程序啟動為獨立工作,適合從控制腳本啟動監看工作。這是非同步啟動,不是等待回傳結果的一般 Basic 呼叫。
#
# Unit:沒有回傳值、函式結果或啟動成功確認。未知名稱不會啟動任何工作。同步執行請使用一般 Basic 的 MyFunction(...)。
SUB Main()
# WeightWatch 定義於下方。Main 不等待三次量測就回傳 77;77 是 Main 的結果,不是 CallSub 的結果。
# 每個範例各存成一個檔案,在 IDE/管理員載入後執行 Main,讓其他程序登錄到目錄。WeightWatch/ManaWatch 都有完整定義:量測重量/魔力三次,Wait(1000) 為
# 1000 毫秒,只在已進入世界時輸出。不是無限監看;暫停會延長時間。雙工作範例須允許並行程序。
UO.CallSub("WeightWatch")
Return 77
END SUB
Sub WeightWatch()
Dim sample
For sample = 1 To 3
If UO.Connected() Then
UO.Print("Weight: " & CStr(UO.Weight()))
End If
UO.Wait(1000)
Next
End Sub參數與執行說明:
- WeightWatch 定義於下方。Main 不等待三次量測就回傳 77;77 是 Main 的結果,不是 CallSub 的結果。
- 每個範例各存成一個檔案,在 IDE/管理員載入後執行 Main,讓其他程序登錄到目錄。WeightWatch/ManaWatch 都有完整定義:量測重量/魔力三次,Wait(1000) 為 1000 毫秒,只在已進入世界時輸出。不是無限監看;暫停會延長時間。雙工作範例須允許並行程序。
# 保留已有或暫停的工作
#
# 要求管理員把已知程序啟動為獨立工作,適合從控制腳本啟動監看工作。這是非同步啟動,不是等待回傳結果的一般 Basic 呼叫。
#
# Unit:沒有回傳值、函式結果或啟動成功確認。未知名稱不會啟動任何工作。同步執行請使用一般 Basic 的 MyFunction(...)。
SUB Main()
# StartIfIdle 先查定義再查活動狀態。False 表示未送出請求;True 只表示已請求 CallSub,不確認成功啟動或完成。
# 每個範例各存成一個檔案,在 IDE/管理員載入後執行 Main,讓其他程序登錄到目錄。WeightWatch/ManaWatch 都有完整定義:量測重量/魔力三次,Wait(1000) 為
# 1000 毫秒,只在已進入世界時輸出。不是無限監看;暫停會延長時間。雙工作範例須允許並行程序。
Return StartIfIdle("WeightWatch")
END SUB
Function StartIfIdle(name) As Boolean
If Not UO.SubExists(name) Then
Return False
End If
If UO.FunRunning(name) Then
Return False
End If
UO.CallSub(name)
Return True
End Function
Sub WeightWatch()
Dim sample
For sample = 1 To 3
If UO.Connected() Then
UO.Print("Weight: " & CStr(UO.Weight()))
End If
UO.Wait(1000)
Next
End Sub參數與執行說明:
- StartIfIdle 先查定義再查活動狀態。False 表示未送出請求;True 只表示已請求 CallSub,不確認成功啟動或完成。
- 每個範例各存成一個檔案,在 IDE/管理員載入後執行 Main,讓其他程序登錄到目錄。WeightWatch/ManaWatch 都有完整定義:量測重量/魔力三次,Wait(1000) 為 1000 毫秒,只在已進入世界時輸出。不是無限監看;暫停會延長時間。雙工作範例須允許並行程序。
# 兩個獨立監看工作
#
# 要求管理員把已知程序啟動為獨立工作,適合從控制腳本啟動監看工作。這是非同步啟動,不是等待回傳結果的一般 Basic 呼叫。
#
# Unit:沒有回傳值、函式結果或啟動成功確認。未知名稱不會啟動任何工作。同步執行請使用一般 Basic 的 MyFunction(...)。
SUB Main()
# WeightWatch 與 ManaWatch 獨立執行,不共用區域變數;輸出順序不保證。
# 每個範例各存成一個檔案,在 IDE/管理員載入後執行 Main,讓其他程序登錄到目錄。WeightWatch/ManaWatch 都有完整定義:量測重量/魔力三次,Wait(1000) 為
# 1000 毫秒,只在已進入世界時輸出。不是無限監看;暫停會延長時間。雙工作範例須允許並行程序。
UO.CallSub("WeightWatch")
UO.CallSub("ManaWatch")
END SUB
Sub WeightWatch()
Dim sample
For sample = 1 To 3
If UO.Connected() Then
UO.Print("Weight: " & CStr(UO.Weight()))
End If
UO.Wait(1000)
Next
End Sub
Sub ManaWatch()
Dim sample
For sample = 1 To 3
If UO.Connected() Then
UO.Print("Mana: " & CStr(UO.Mana()))
End If
UO.Wait(1000)
Next
End Sub參數與執行說明:
- WeightWatch 與 ManaWatch 獨立執行,不共用區域變數;輸出順序不保證。
- 每個範例各存成一個檔案,在 IDE/管理員載入後執行 Main,讓其他程序登錄到目錄。WeightWatch/ManaWatch 都有完整定義:量測重量/魔力三次,Wait(1000) 為 1000 毫秒,只在已進入世界時輸出。不是無限監看;暫停會延長時間。雙工作範例須允許並行程序。
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь