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

關於該主題的範例

每個命令卡都有幾個獨立的場景:直接程式碼、函數和類別。以下是精選的簡短場景;限制和全面分析是有可能的。

UO.GetCliloc

參數、結果及所有場景

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;

UO.GetClilocByID

參數、結果及所有場景

var text = UO.GetClilocByID(1042971, "");
UO.Print(text);

完整指令說明


UO.GetCliloc

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 簽章

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。

獨立的 C# 腳本

每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。

簡單範例

將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。

將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。

object? result = UO.GetCliloc("backpack");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1。背包中物品的屬性 - 直接腳本

參數與執行流程:

  • 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;

2。處理無回應 - 腳本函數

參數與執行流程:

  • 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;

3。儲存文字直到下一個操作 - 腳本類

參數與執行流程:

  • 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。

UO.GetCliloc(objID) — UO.GetCliloc(Any)

參數: objID (Any)

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "getcliloc":

                case "gettooltip":

                    return new InjectionValue(bridge.GetTooltip(Arg(0)));

UO.GetClilocByID

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 簽章

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)。

獨立的 C# 腳本

每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。

簡單範例

將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。

將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。

object? result = UO.GetClilocByID(1042971, "");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1。不含通配符的範本 - 直接腳本

參數與執行流程:

  • ClilocID=1042971 — 範例編號;替換為您需要的。 Params 是作為單一空值傳遞的空字串。
  • 對於沒有通配符標記的模式,空參數不會變更文字。如果模板需要數據,請傳遞數組,如下例所示。
var text = UO.GetClilocByID(1042971, "");
UO.Print(text);

2。傳遞兩個值——腳本函數

參數與執行流程:

  • 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;
}

3。翻譯第一個不動產 - 腳本類

參數與執行流程:

  • 第一個參數是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。

UO.GetClilocByID(clilocID, params) — UO.GetClilocByID(Any,Any)

參數: clilocID (Any), params (Any)

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "getclilocbyid":

                    return new InjectionValue(bridge.GetClilocById(Arg(0), StringArrayArg(1)));

UO.GetUserCodepage

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 簽章

int UO.GetUserCodepage();

返回 Encoding.Default.CodePage 而不讀取設定檔設定。

參數

沒有參數。

傳回值

int — 目前進程的 Encoding.Default.CodePage。這是.NET 編碼,而不是選定的語音編碼UO。

行為

  • 返回 Encoding.Default.CodePage 而不讀取設定檔設定。價值取決於環境.NET;它不能被認為是有保證的 Windows ANSI。
  • 讀取目前本地狀態。沒有軟體包、目標或自動更新;個別讀取可能會看到不同的狀態。

獨立的 C# 腳本

每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。

簡單範例

將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。

將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。

var result = UO.GetUserCodepage();
UO.Print("GetUserCodepage: " + Convert.ToString(result));

1。直接呼叫-直接腳本

參數與執行流程:

  • 返回 Encoding.Default.CodePage 而不讀取設定檔設定。
UO.Print(UO.GetUserCodepage());

2。明確選項 - 腳本函數

參數與執行流程:

  • 返回 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;

3。完整的輔助函數 - 腳本類

參數與執行流程:

  • 讀取目前本地狀態。沒有軟體包、目標或自動更新;個別讀取可能會看到不同的狀態。
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。

UO.GetUserCodepage() — UO.GetUserCodepage()

參數: 沒有參數。

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public int GetUserCodepage() => Encoding.Default.CodePage;
⚠️ **GitHub.com Fallback** ⚠️