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