ZH TW UO Topic localization - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 範例 · Languages
檢索在地化的 cliloc 文字和編碼資訊。更改語言時,指令名稱API不會翻譯。
| 主題 | 命令與解釋 |
|---|---|
| Cliloc | UO.GetCliloc |
| Cliloc by ID | UO.GetClilocByID |
| Codepage | UO.GetUserCodepage |
UO.GetCliloc · UO.GetClilocByID · UO.GetUserCodepage
每個命令卡都有幾個獨立的場景:直接程式碼、函數和類別。以下是精選的簡短場景;限制和全面分析是有可能的。
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
UO.Print(UO.GetCliloc(item));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;var text = UO.GetClilocByID(1042971, "");
UO.Print(text);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetCliloc(object? objID);從OPL讀取完成的物件屬性文字。 GetTooltip 和 GetCliloc 是同義詞。
-
objID— 必需的 serial/ID 對象,而非 type 也不是 cliloc。接受 int、十進位/十六進位字串、self、backpack、lasttarget、finditem 或名稱 AddObject。 0表示沒有物體。
string — 屬性的名稱和文本,以換行符號分隔,或僅非空部分。如果 ObjID=0 或未收到屬性,則為空字串。這是現成的文字;數字ID cliloc 和參數由GetTooltipRec 傳回。
- 如果條目已經在 OPL,她的短信立即返回。如果沒有條目,則會發送屬性請求並預計會收到回應,直到 200 毫秒檢查每個 10 多發性硬化症。暫停並不能保證得到回應。
- 我们需要一个可访问的对象并支持服务器的属性。空結果並不能證明該物件不存在:單獨使用 Exists。
- 文本可能包含服务器标记。不要按行位置解析數字屬性;為此使用GetTooltipRec。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.GetCliloc("backpack");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- FindType:黃金0x0EED,任hue=-1,直接內容backpack。 ObjID=項目 - 找到serial。
- getter 結果是文本,而不是金幣數量。對於數量,請使用FindCount(項目)。
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
UO.Print(UO.GetCliloc(item));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- ObjID=lasttarget 必須指向所需的物件。
- 空字串單獨處理;不需要無限循環地自動重複請求。
return RunScenario();
object? RunScenario()
{
var text = UO.GetCliloc("lasttarget");
if (Truth(text == ""))
{
UO.Print("No properties received");
}
else
{
UO.Print(text);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- id 和 saving 是單獨的變數:物件的唯一 ID 及其文字的快照。
- 如果伺服器上的屬性稍後發生更改,則儲存的內容不會自動更改。
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.GetSerial("lasttarget");
var saved = UO.GetCliloc(id);
UO.Print("Object: 0x" + Hex(id));
UO.Print(saved);
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: objID (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetTooltip:bridge.GetTooltip(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "getcliloc":
case "gettooltip":
return new InjectionValue(bridge.GetTooltip(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetClilocByID(object? clilocID, object? @params);從遊戲檔案翻譯 cliloc 模板並替換傳遞的參數。
-
clilocID- 強制 int - 本地化訊息的ID,而不是物件的serial,也不是graphic。例如,結果GetTooltipRec的行[0]中的數字。 -
params— 強制替換陣列 ,順序為1_...、2_...。允許有一個標量值:它成為一個字串的陣列。對於不帶參數的模板,可以傳遞空字串。 #number 元素引用另一個 cliloc。元素轉換為字串;最好明確傳遞字串。
string — 翻譯後的模板,帶有來自 Params 的替換。如果沒有 cliloc 載入程序,則傳回空字串。如果 ID 未知,則載入的 ClilocLoader 傳回診斷文字 MegaCliloc:缺少此編號和取代參數。不回傳 cliloc ID 或成功標誌。
- 對於物件屬性,首先GetTooltipRec(ObjID):訊息號碼和物件不同ID。對於所有屬性的現成文本,請使用 GetTooltip(ObjID)。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.GetClilocByID(1042971, "");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- ClilocID=1042971 — 範例編號;替換為您需要的。 Params 是作為單一空值傳遞的空字串。
- 對於沒有通配符標記的模式,空參數不會變更文字。如果模板需要數據,請傳遞數組,如下例所示。
var text = UO.GetClilocByID(1042971, "");
UO.Print(text);參數與執行流程:
- ClilocID=1042971 是模板的範例。 args[0]和args[1]佔據第一個和第二個參數的位置。
- 索引變數宣告[1]建立兩個元素:0到1。使用 ID 模板,它需要適當的參數。
return RunScenario();
object? RunScenario()
{
dynamic[] args = new dynamic[checked((int)(1) + 1)];
args[0] = "iron";
args[1] = "ingot";
UO.Print(UO.GetClilocByID(1042971, args));
return null;
}參數與執行流程:
- 第一個參數是clilocID屬性;第二個是現成的參數陣列。
- 檢查至少一筆記錄的存在。所有參數均從伺服器接收並與其ID一起傳送。
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 rows = UO.GetTooltipRec("lasttarget");
if (Truth(ArrayLength(rows) > 0))
{
var row = rows[0];
UO.Print(UO.GetClilocByID(row[0], row[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;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: clilocID (Any), params (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetClilocById:bridge.GetClilocById(Arg(0), StringArrayArg(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::StringArrayArg:StringArrayArg(1).
內部實作程式碼,不能作為獨立腳本執行。
case "getclilocbyid":
return new InjectionValue(bridge.GetClilocById(Arg(0), StringArrayArg(1)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetUserCodepage();返回 Encoding.Default.CodePage 而不讀取設定檔設定。
沒有參數。
int — 目前進程的 Encoding.Default.CodePage。這是.NET 編碼,而不是選定的語音編碼UO。
- 返回 Encoding.Default.CodePage 而不讀取設定檔設定。價值取決於環境.NET;它不能被認為是有保證的 Windows ANSI。
- 讀取目前本地狀態。沒有軟體包、目標或自動更新;個別讀取可能會看到不同的狀態。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.GetUserCodepage();
UO.Print("GetUserCodepage: " + Convert.ToString(result));參數與執行流程:
- 返回 Encoding.Default.CodePage 而不讀取設定檔設定。
UO.Print(UO.GetUserCodepage());參數與執行流程:
- 返回 Encoding.Default.CodePage 而不讀取設定檔設定。價值取決於環境.NET;它不能被認為是有保證的 Windows ANSI。
return RunScenario();
object? RunScenario()
{
var codepage = UO.GetUserCodepage();
if (Truth(codepage == 65001))
{
UO.Print("UTF-8");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 讀取目前本地狀態。沒有軟體包、目標或自動更新;個別讀取可能會看到不同的狀態。
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 before = UO.GetUserCodepage();
UO.Wait(500);
var after = UO.GetUserCodepage();
UO.Print(before);
UO.Print(after);
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
內部實作程式碼,不能作為獨立腳本執行。
public int GetUserCodepage() => Encoding.Default.CodePage;