ZH TW UO Topic diagnostics introspection - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 範例 · Languages
檢查物體、磁磚和橡膠,檢查名稱、參數和簽名API。簽名的存在並不確認在目前狀態下遊戲動作的可能性。
| 主題 | 命令與解釋 |
|---|---|
| Help | UO.Help |
| Dump | UO.Dump |
| Info | UO.Info |
| InfoTile | UO.InfoTile |
| InfoGump | UO.InfoGump |
| API Name Exists | UO.ApiNameExists |
| API Signature Exists | UO.ApiSignatureExists |
| API Parameter Exists | UO.ApiParameterExists |
| Version | UO.Version |
UO.Help · UO.Dump · UO.Info · UO.InfoColor · UO.GetInfo · UO.ExtendedInfo · UO.InfoTile · UO.InfoGump · UO.InfoGumps · UO.ApiNameExists · UO.ApiParameterExists · UO.ApiSignatureExists · UO.Version · UO.ClientInfo
每個命令卡都有幾個獨立的場景:直接程式碼、函數和類別。以下是精選的簡短場景;限制和全面分析是有可能的。
UO.InfoGump();return UO.ApiNameExists("UO.GetType");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.ApiNameExists(object? name);檢查正在呼叫的本機函數名稱的註冊。
-
name- 強制 string:確切的註冊名稱,而不是呼叫表達式。大小寫和邊緣空間並不重要; UO。不會自動新增。空的或未知的名稱給出0。不考慮用戶過程。
int:1 表示名稱已註冊,0 表示未註冊。在 C# 中請使用 result != 0 或 result == 0。不能將 int 與 true 或 false 比較。註冊不代表伺服器已完成動作。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.ApiNameExists("UO.GetType");
UO.Print("ApiNameExists: " + Convert.ToString(result));參數與執行流程:
- 第一個範例使用顯式 UO 測試遊戲名稱。並返回1。正在測試的確切名稱以及需要時的參數數量在呼叫中可見。
return UO.ApiNameExists("UO.GetType");這裡只檢查原生名稱的註冊。Convert.ToInt32 是 .NET 方法,不是 UO API 項目,所以 ApiNameExists 傳回 0。該方法仍可在一般 C# 中使用。
return RunScenario();
object? RunScenario()
{
var name = "Convert.ToInt32";
return UO.ApiNameExists(name);
return null;
}分別將數值結果與 0 比較,再以 && 結合兩個 bool 值。這些名稱的結果是 false。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
return HasBoth("GetType", "UO.GetType");
return null;
}
dynamic HasBoth(dynamic first, dynamic second)
{
return UO.ApiNameExists(first) != 0 && UO.ApiNameExists(second) != 0;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: name (String)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ApiNameExists. -
InjectionScript.Runtime.InjectionApiUO.NormalizeApiName:NormalizeApiName(name).
內部實作程式碼,不能作為獨立腳本執行。
public int ApiNameExists(string name)
{
string normalized = NormalizeApiName(name);
return metadata.NativeSubrutines.Any(definition =>
definition.Name.Equals(normalized, StringComparison.OrdinalIgnoreCase)) ? 1 : 0;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.ApiParameterExists(object? name);檢查運行時值或命名物件是否已註冊。
-
name- 強制 string:確切的註冊名稱,而不是呼叫表達式。大小寫和邊緣空間並不重要; UO。不會自動新增。空的或未知的名稱給出0。不考慮用戶過程。
int:1 表示名稱已註冊,0 表示未註冊。在 C# 中請使用 result != 0 或 result == 0。不能將 int 與 true 或 false 比較。註冊不代表伺服器已完成動作。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.ApiParameterExists("backpack");
UO.Print("ApiParameterExists: " + Convert.ToString(result));參數與執行流程:
- 第一個範例使用顯式 UO 測試遊戲名稱。並返回1。正在測試的確切名稱以及需要時的參數數量在呼叫中可見。
return UO.ApiParameterExists("UO.GetHP");檢查已註冊的 backpack 選擇器,結果為 1。這不是檢查 C# 方法的參數,也不能證明遊戲世界中存在背包。
return RunScenario();
object? RunScenario()
{
var name = "backpack";
return UO.ApiParameterExists(name);
return null;
}參數與執行流程:
- 第三個範例包含完整的輔助函數。它將刪除的簡短形式或不受支援的數量與可用形式進行比較。參數名稱、第一、第二和計數傳遞名稱/計數不變。呼叫檢查的結果是0,值檢查的結果是0:1。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
return CompareNames("GetHP", "UO.GetHP");
return null;
}
dynamic CompareNames(dynamic first, dynamic second)
{
return Convert.ToString(UO.ApiParameterExists(first)) + ":" + Convert.ToString(UO.ApiParameterExists(second));
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: name (String)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ApiParameterExists. -
InjectionScript.Runtime.Metadata.IntrinsicVariableExists:metadata.IntrinsicVariableExists(value).
內部實作程式碼,不能作為獨立腳本執行。
public int ApiParameterExists(string name)
{
string value = (name ?? string.Empty).Trim();
if (value.Length == 0)
return 0;
if (Metadata.ShortcutVariables.Any(item => item.Equals(value, StringComparison.OrdinalIgnoreCase)))
return 1;
return metadata.IntrinsicVariableExists(value) ? 1 : 0;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.ApiSignatureExists(object? name, object? argumentCount);使用給定數量的參數測試名稱的註冊。
-
name- 強制 string:確切的註冊名稱,而不是呼叫表達式。大小寫和邊緣空間並不重要; UO。不會自動新增。空的或未知的名稱給出0。不考慮用戶過程。 -
argumentCount— 必需的 int:位置參數的總數,包括明確傳遞的可選參數。負數或不受支持的數量給出0。不檢查參數本身的型別。
int:1 表示名稱已註冊,0 表示未註冊。在 C# 中請使用 result != 0 或 result == 0。不能將 int 與 true 或 false 比較。註冊不代表伺服器已完成動作。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.ApiSignatureExists("UO.GetType", 1);
UO.Print("ApiSignatureExists: " + Convert.ToString(result));參數與執行流程:
- 第一個範例使用顯式 UO 測試遊戲名稱。並返回1。正在測試的確切名稱以及需要時的參數數量在呼叫中可見。
return UO.ApiSignatureExists("UO.GetType",1);檢查 UO.FindType 的一個參數和零個參數形式。結果是字串 "1:0";零參數形式未註冊。
return RunScenario();
object? RunScenario()
{
return Convert.ToString(UO.ApiSignatureExists("UO.FindType", 1)) + ":" + Convert.ToString(UO.ApiSignatureExists("UO.FindType", 0));
return null;
}參數與執行流程:
- 第三個範例包含完整的輔助函數。它將刪除的簡短形式或不受支援的數量與可用形式進行比較。參數名稱、第一、第二和計數傳遞名稱/計數不變。呼叫檢查的結果是0,值檢查的結果是0:1。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
return CheckForm("UO.GetType", 0);
return null;
}
dynamic CheckForm(dynamic name, dynamic count)
{
return UO.ApiSignatureExists(name, count);
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: name (String), argumentCount (Integer)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ApiSignatureExists. -
InjectionScript.Runtime.Metadata.NativeSubrutineExists:metadata.NativeSubrutineExists(NormalizeApiName(name), argumentCount). -
InjectionScript.Runtime.InjectionApiUO.NormalizeApiName:NormalizeApiName(name).
內部實作程式碼,不能作為獨立腳本執行。
public int ApiSignatureExists(string name, int argumentCount)
=> metadata.NativeSubrutineExists(NormalizeApiName(name), argumentCount) ? 1 : 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ClientInfo();讀取有關正在運行的客戶端的簡要資訊。
沒有參數。
三個string的陣列:[0] - 產品名稱,[1] - 正在運行的客戶端版本,[2] - 客戶端目錄。索引以 0 開頭。這不是字串JSON,也不是字典。
- 資料從RuntimeProductName、RuntimeProductVersion和ClientPath讀取。該命令不會更改任何內容,也不會將任何內容傳送到伺服器。
- 在通用輔助函數中進行索引之前使用 ArrayLength。不要將客戶端資訊與角色統計資料或伺服器版本混淆。
- 讀取有關目前 ClassicUO 客戶端的資訊。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.ClientInfo();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- 0 - 產品,1 - 版本,2 - 目錄。啟動時取得版本值;在範例中它不是固定的。
var info = UO.ClientInfo();
UO.Print("Product: " + info[0]);
UO.Print("Client version: " + info[1]);
UO.Print("Client folder: " + info[2]);參數與執行流程:
- ArrayLength 傳回字段數。最後一個有效索引等於長度減去1。
return RunScenario();
object? RunScenario()
{
var info = UO.ClientInfo();
var i = 0;
while (Truth(i < ArrayLength(info)))
{
UO.Print(Convert.ToString(i) + ": " + info[i]);
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- ClientCaption 傳回標題和版本的字串。原來的數組沒有改變。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.Print(ClientCaption());
return null;
}
dynamic ClientCaption()
{
var info = UO.ClientInfo();
if (Truth(ArrayLength(info) < 2))
{
return "Client information unavailable";
}
return info[0] + " / " + info[1];
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: dynamic / Array.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RuntimeProductName:bridge.RuntimeProductName. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RuntimeProductVersion:bridge.RuntimeProductVersion. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientPath:bridge.ClientPath.
內部實作程式碼,不能作為獨立腳本執行。
case "clientinfo":
return new InjectionValue(new[]
{
new InjectionValue(bridge.RuntimeProductName),
new InjectionValue(bridge.RuntimeProductVersion),
new InjectionValue(bridge.ClientPath)
});Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Dump();
void UO.Dump(object? @object);列印客戶端已知的物件的診斷快照。
-
object- 可選serial/連結。如果沒有參數,則使用bridge.LastTarget。
void - 無回傳值。
- 該訊息包含serial為0xXXXXXXXX、名稱、graphic/type、hue和X/Y/Z。這些欄位是從本機模型中讀取的;遺失的物件給予空名稱和空欄位。該命令不請求最新的伺服器屬性。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.Dump");
UO.Dump();參數與執行流程:
- 缺少參數意味著LastTarget。
UO.Dump();參數與執行流程:
- 所有欄位都特定於您自己的角色。
return RunScenario();
object? RunScenario()
{
UO.Dump("self");
return null;
}參數與執行流程:
- Exists 測試將缺少的模型與零字段的物件分開。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var id = UO.LastTarget();
if (Truth(UO.Exists(id)))
{
UO.Dump(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, bridge.LastTarget). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetName:bridge.GetName(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGraphics:bridge.GetGraphics(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetColor:bridge.GetColor(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetX:bridge.GetX(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetY:bridge.GetY(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetZ:bridge.GetZ(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
內部實作程式碼,不能作為獨立腳本執行。
case "dump":
{
int id = Arg(0, bridge.LastTarget);
SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}");
break;
}參數: object (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, bridge.LastTarget). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetName:bridge.GetName(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGraphics:bridge.GetGraphics(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetColor:bridge.GetColor(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetX:bridge.GetX(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetY:bridge.GetY(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetZ:bridge.GetZ(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
內部實作程式碼,不能作為獨立腳本執行。
case "dump":
{
int id = Arg(0, bridge.LastTarget);
SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}");
break;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ExtendedInfo();傳回目前客戶端連線配置的四個欄位。
沒有參數。
Array [ClientPath:string, CurrentProfilePath:string, GameServerAddress:string, GameServerPort:int].
- 字段的順序是固定的。 ClientPath 和 CurrentProfilePath 是客戶端路徑。 GameServerAddress和GameServerPort讀取全域設定。 GlobalSettings。 IP/連接埠:這是配置的位址,不檢查實際的對等管理器會話。此清單不包含密碼,也不提示伺服器輸入資訊。在選擇設定檔/連線之前可以使用空白值。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.ExtendedInfo();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- 此陣列包含混合類型,因此使用 Convert.ToString。
var info = UO.ExtendedInfo();
for (int i = (int)(0); i <= ArrayLength(info)-1; i += (int)(1))
{
UO.Print(Convert.ToString(info[i]));
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;參數與執行流程:
- 索引2和3是位址和連接埠。
return RunScenario();
object? RunScenario()
{
var info = UO.ExtendedInfo();
UO.Print(Convert.ToString(info[2]) + ":" + Convert.ToString(info[3]));
return null;
}參數與執行流程:
- 索引 1 — CurrentProfilePath,而非 ClientPath。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var info = UO.ExtendedInfo();
var path = info[1];
UO.Print(path);
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientPath:bridge.ClientPath. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CurrentProfilePath:bridge.CurrentProfilePath. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GameServerAddress:bridge.GameServerAddress. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GameServerPort:bridge.GameServerPort.
內部實作程式碼,不能作為獨立腳本執行。
case "extendedinfo":
return new InjectionValue(new[] { new InjectionValue(bridge.ClientPath), new InjectionValue(bridge.CurrentProfilePath), new InjectionValue(bridge.GameServerAddress), new InjectionValue(bridge.GameServerPort) });Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetInfo(object? arg);僅傳回確切字元選擇器的字元名稱。
-
arg- string。字元精確區分大小寫的值呼叫 GetName("self");任何其他值均不被辨識。
string — 你的角色名稱;所有其他參數的字串文字 UNKNOWN。如果沒有字符,則名稱可能為空。
- 比較 StringComparison.Ordinal 區分大小寫。僅支援字元選擇器。該命令不會發出網路請求:它從本地字元模型讀取名稱。視窗FillInfoWindow單獨控制。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.GetInfo("character");
UO.Print("GetInfo: " + Convert.ToString(result));參數與執行流程:
- 確切的字元字面量為 self。
var name = UO.GetInfo("character");
UO.Print(name);參數與執行流程:
- 字元不匹配並回傳UNKNOWN。
return RunScenario();
object? RunScenario()
{
var value = UO.GetInfo("Character");
UO.Print(value);
return null;
}參數與執行流程:
- 此實作不支援設定檔。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var value = UO.GetInfo("profile");
UO.Print(value);
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: arg (String)
結果: string / String.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.GetInfo. -
InjectionScript.Runtime.InjectionApiUO.GetName:GetName("self").
內部實作程式碼,不能作為獨立腳本執行。
private string GetInfo(string arg)
{
if (arg.Equals("character", StringComparison.Ordinal))
return GetName("self");
return "UNKNOWN";
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Help();沒有參數。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- 僅修改或顯示指定的本機資料。該命令沒有伺服器確認。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.Help");
UO.Help();參數與執行流程:
- 顯示有關 C# IDE 的本地提示。
UO.Help();參數與執行流程:
- ExecuteLegacyManualAlias 顯示關於 UO.* 的行、配置的聊天前綴和選項 > C# IDE > 透過 SystemMessage 手動。幫助請求不會發送到伺服器。
return RunScenario();
object? RunScenario()
{
UO.Help();
UO.OpenIDE();
return null;
}參數與執行流程:
- 僅修改或顯示指定的本機資料。該命令沒有伺服器確認。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.Help();
UO.Print("Options > C# IDE > Manual");
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("C# Scripts IDE: use UO.* in scripts or the configured chat prefix. Open Options > C# Scripts IDE > Manual.").
內部實作程式碼,不能作為獨立腳本執行。
case "help": SystemMessage("C# Scripts IDE: use UO.* in scripts or the configured chat prefix. Open Options > C# Scripts IDE > Manual."); break;string UO.Info();
string UO.Info(object? serial);
string UO.Info(object? type, object? x, object? y);
string UO.Info(object? type, object? x, object? y, object? z);呼叫來源決定顯示方式:遊戲圖形聊天指令會開啟含欄位、數值、Ctrl+C 與捲動的表格。一般 C# 腳本只取得報告字串,不開視窗或目標游標,即使遊戲視窗已開啟亦然。僅能讀取用戶端已知資料。
圖形聊天中的無參數 Info 和 InfoTile 會要求選取目標。腳本中的 Info() 讀取最後物件目標或玩家;InfoTile() 讀取玩家腳下的地形。serial、type 和座標可指定物件或地塊。InfoTile(x,y,map) 的第三個參數是地圖編號。
-
serial— 物件序號或已儲存的別名。 -
type— 物品圖形 ID;-1 表示指定位置的任何類型。 -
x— 世界 X 座標。 -
y— 世界 Y 座標。 -
z— Z 高度;簡短形式使用 0。
在 C# Scripts IDE 設定前綴;# 僅為範例。參數以空白分隔,引號將文字保留為單一參數。id 是 serial,type 是 graphic。xy x y [z] 選擇該位置第一個已載入物件;只有 type 時選第一個符合物件。InfoTile(x,y,map) 第三個參數是地圖,不是 Z。
#info
#UO.Info id 0x40001234
#info type 0x0EED
#info xy 1450 1690
#info type 0x0EED xy 1450 1690 0
每個程式碼區塊都是完整的獨立 .csx。請替換範例 serial、type 與座標;參數順序及 C# 具名參數依照簽章。
string report = UO.Info(0x40001234);
UO.Print(report);string InspectSelf() => UO.Info("self");
UO.Print(InspectSelf());foreach (int serial in new[] { 0x40001234, 0x40005678 })
{
string report = UO.Info(serial);
UO.Print(report);
}new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
string report = api.Info(0x40001234);
api.Print(report);
}
}CSharpGameApi.Info
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.Info
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump
string UO.InfoColor();
string UO.InfoColor(object? serial);呼叫來源決定顯示方式:遊戲圖形聊天指令會開啟含欄位、數值、Ctrl+C 與捲動的表格。一般 C# 腳本只取得報告字串,不開視窗或目標游標,即使遊戲視窗已開啟亦然。僅能讀取用戶端已知資料。
圖形聊天中的無參數 Info 和 InfoTile 會要求選取目標。腳本中的 Info() 讀取最後物件目標或玩家;InfoTile() 讀取玩家腳下的地形。serial、type 和座標可指定物件或地塊。InfoTile(x,y,map) 的第三個參數是地圖編號。
-
serial— 物件序號或已儲存的別名。
在 C# Scripts IDE 設定前綴;# 僅為範例。參數以空白分隔,引號將文字保留為單一參數。id 是 serial,type 是 graphic。xy x y [z] 選擇該位置第一個已載入物件;只有 type 時選第一個符合物件。InfoTile(x,y,map) 第三個參數是地圖,不是 Z。
#infocolor 0x40001234
每個程式碼區塊都是完整的獨立 .csx。請替換範例 serial、type 與座標;參數順序及 C# 具名參數依照簽章。
UO.Print(UO.InfoColor(0x40001234));string report = UO.InfoColor();
UO.Print(report);foreach (int serial in new[] { 0x40001234, 0x40005678 })
UO.Print(UO.InfoColor(serial));new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
api.Print(api.InfoColor(0x40001234));
}
}CSharpGameApi.InfoColor
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.InfoColor
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump
string UO.InfoGump();
string UO.InfoGump(object? gump);呼叫來源決定顯示方式:遊戲圖形聊天指令會開啟含欄位、數值、Ctrl+C 與捲動的表格。一般 C# 腳本只取得報告字串,不開視窗或目標游標,即使遊戲視窗已開啟亦然。僅能讀取用戶端已知資料。
InfoGump() 讀取最近的伺服器對話框或用戶端視窗。可指定 ID 或索引;last、LastGump 和 Last Gump 表示最近視窗。InfoGumps 傳回清單,排除檢視器本身。只有圖形指令會開啟表格。
-
gump— 伺服器視窗 ID 或索引;-1 選取最後作用中的視窗。
在 C# Scripts IDE 設定前綴;# 僅為範例。參數以空白分隔,引號將文字保留為單一參數。id 是 serial,type 是 graphic。xy x y [z] 選擇該位置第一個已載入物件;只有 type 時選第一個符合物件。InfoTile(x,y,map) 第三個參數是地圖,不是 Z。
#infogump
#infogump last
#info gump last gump
#infogump 0x12345678
每個程式碼區塊都是完整的獨立 .csx。請替換範例 serial、type 與座標;參數順序及 C# 具名參數依照簽章。
string report = UO.InfoGump();
UO.Print(report);UO.Print(UO.InfoGump(0x12345678));string ReadLatestWindow() => UO.InfoGump();
UO.Print(ReadLatestWindow());new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
string report = api.InfoGump();
api.Print(report);
}
}CSharpGameApi.InfoGump
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.InfoGump
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump
string UO.InfoGumps();
string UO.InfoGumps(object? gump);呼叫來源決定顯示方式:遊戲圖形聊天指令會開啟含欄位、數值、Ctrl+C 與捲動的表格。一般 C# 腳本只取得報告字串,不開視窗或目標游標,即使遊戲視窗已開啟亦然。僅能讀取用戶端已知資料。
InfoGump() 讀取最近的伺服器對話框或用戶端視窗。可指定 ID 或索引;last、LastGump 和 Last Gump 表示最近視窗。InfoGumps 傳回清單,排除檢視器本身。只有圖形指令會開啟表格。
-
gump— 伺服器視窗 ID 或索引;-1 選取最後作用中的視窗。
在 C# Scripts IDE 設定前綴;# 僅為範例。參數以空白分隔,引號將文字保留為單一參數。id 是 serial,type 是 graphic。xy x y [z] 選擇該位置第一個已載入物件;只有 type 時選第一個符合物件。InfoTile(x,y,map) 第三個參數是地圖,不是 Z。
#infogumps
每個程式碼區塊都是完整的獨立 .csx。請替換範例 serial、type 與座標;參數順序及 C# 具名參數依照簽章。
UO.Print(UO.InfoGumps());string report = UO.InfoGumps(0x12345678);
UO.Print(report);string ReadAllWindows() => UO.InfoGumps();
UO.Print(ReadAllWindows());new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
api.Print(api.InfoGumps());
}
}CSharpGameApi.InfoGumps
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.InfoGumps
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump
string UO.InfoTile();
string UO.InfoTile(object? x);
string UO.InfoTile(object? x, object? y);
string UO.InfoTile(object? x, object? y, object? map);
string UO.InfoTile(object? type, object? x, object? y, object? z);
string UO.InfoTile(object? type, object? x, object? y, object? z, object? map);呼叫來源決定顯示方式:遊戲圖形聊天指令會開啟含欄位、數值、Ctrl+C 與捲動的表格。一般 C# 腳本只取得報告字串,不開視窗或目標游標,即使遊戲視窗已開啟亦然。僅能讀取用戶端已知資料。
圖形聊天中的無參數 Info 和 InfoTile 會要求選取目標。腳本中的 Info() 讀取最後物件目標或玩家;InfoTile() 讀取玩家腳下的地形。serial、type 和座標可指定物件或地塊。InfoTile(x,y,map) 的第三個參數是地圖編號。
-
map— 地圖編號;省略時使用目前地圖。 -
type— 物品圖形 ID;-1 表示指定位置的任何類型。 -
x— 世界 X 座標。 -
y— 世界 Y 座標。 -
z— Z 高度;簡短形式使用 0。
在 C# Scripts IDE 設定前綴;# 僅為範例。參數以空白分隔,引號將文字保留為單一參數。id 是 serial,type 是 graphic。xy x y [z] 選擇該位置第一個已載入物件;只有 type 時選第一個符合物件。InfoTile(x,y,map) 第三個參數是地圖,不是 Z。
#infotile
#info tile xy 1450 1690
#infotile 1450 1690 0
#infotile type 0x0EED 1450 1690 0 0
每個程式碼區塊都是完整的獨立 .csx。請替換範例 serial、type 與座標;參數順序及 C# 具名參數依照簽章。
UO.Print(UO.InfoTile(1450, 1690));string report = UO.InfoTile(1450, 1690, 0);
UO.Print(report);UO.Print(UO.InfoTile(0x0EED, 1450, 1690, 0, 0));new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
api.Print(api.InfoTile(1450, 1690));
}
}CSharpGameApi.InfoTile
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.InfoTile
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Version();列印產品的名稱和運行時版本。
沒有參數。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- ExecuteLegacyManualAlias 透過 SystemMessage 輸出橋。 RuntimeProductName 和橋。 RuntimeProductVersion。這是一個日誌字串,而不是傳回的版本號。
- 僅修改或顯示指定的本機資料。該命令沒有伺服器確認。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.Version");
UO.Version();參數與執行流程:
- 列印產品的名稱和運行時版本。
UO.Version();參數與執行流程:
- ExecuteLegacyManualAlias 透過 SystemMessage 輸出橋。 RuntimeProductName 和橋。 RuntimeProductVersion。這是一個日誌字串,而不是傳回的版本號。
return RunScenario();
object? RunScenario()
{
UO.Version();
UO.Help();
return null;
}參數與執行流程:
- 僅修改或顯示指定的本機資料。該命令沒有伺服器確認。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.Version();
UO.Print(UO.GetUserCodepage());
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage($"{bridge.RuntimeProductName} v{bridge.RuntimeProductVersion}"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RuntimeProductName:bridge.RuntimeProductName. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RuntimeProductVersion:bridge.RuntimeProductVersion.
內部實作程式碼,不能作為獨立腳本執行。
case "version": SystemMessage($"{bridge.RuntimeProductName} v{bridge.RuntimeProductVersion}"); break;