Skip to content

ZH TW UO Topic conversion compatibility

Codex edited this page Oct 12, 2026 · 4 revisions

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

轉換與相容性

家 · C# · IDE · UO API · A–Z · 範例 · Languages

轉換數字、serial 和舊腳本格式。相容名稱可能有限製或明確禁止的操作 - 這在卡上註明。

部分

主題 命令與解釋
Hex / int UO.Hex2Int · UO.Int2Hex
EUO ↔ Injection UO.EUO2ID · UO.EUO2Type · UO.EUO2Inj · UO.Inj2EUO
EasyUO UO.GetEasyUO · UO.SetEasyUO
Type Conversion C# 和標準庫 · C# 和標準庫 · C# 和標準庫 · C# 和標準庫 · C# 和標準庫 · C# 和標準庫

所有主題命令

轉換

UO.Hex2Int · UO.Int2Hex · UO.ScanInt · UO.EUO2ID · UO.EUO2Inj · UO.EUO2Type · UO.Inj2EUO

相容性限制

UO.BoxHack · UO.ShutdownWindows

關於該主題的範例

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

UO.Int2Hex

參數、結果及所有場景

UO.Print(UO.Int2Hex(1073746484));

UO.EUO2ID

參數、結果及所有場景

var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));

完整指令說明


UO.BoxHack

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

C# 簽章

void UO.BoxHack();

列印通知,表示 ClassicUO 不需要舊版機用戶端補丁 BoxHack。

參數

沒有參數。

傳回值

void - 無回傳值。

行為

  • ExecuteLegacyManualAlias分支僅呼叫SystemMessage。它不糾正運動、語音、容器或網路協定。

獨立的 C# 腳本

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

簡單範例

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

指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。

UO.Print("Calling UO.BoxHack");
UO.BoxHack();

1。相容性聲明 - 直接腳本

參數與執行流程:

  • 該訊息描述了不需要舊補丁。
UO.BoxHack();

2。呼叫過程-腳本函數

參數與執行流程:

  • 相容性程式不會改變遊戲世界。
return  RunScenario();
 object? RunScenario()
{
    CompatibilityNotice();
    return null;
}

void CompatibilityNotice()
{
    UO.BoxHack();
}

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()
    {
        UO.BoxHack();
        UO.Print("continued");
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.BoxHack() — UO.BoxHack()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

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

case "boxhack":

                case "fixtalk":

                case "fixwalk":

                    SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.");

                    break;

UO.EUO2ID

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

C# 簽章

dynamic UO.EUO2ID(object? euo);

以 A=0 解碼基數 26 中的 EasyUO 文字表示法。

參數

  • euo — EasyUO 字串/值。字母轉換為大寫;非字母字元將被跳過。

傳回值

int — 結果 32 位數值;這不是十六進位字串。

行為

  • 依序計算value=value*26+(字母-A)。 uint 累加器運作時不受檢查,因此溢位會圍繞 32 位元。空字串和沒有字母的字串給出0。不要尋找世界上的任何物體。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。單字母值 - 直接腳本

參數與執行流程:

  • B 編碼數字1。
var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));

2。非字母字元 - 腳本函數

參數與執行流程:

  • 大小寫並不重要;連字符和感嘆號被跳過。
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2ID("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3。空條目 - 腳本類

參數與執行流程:

  • A 代碼為零;結果並未表示找到了物件。
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.EUO2ID("A");
        UO.Print(Convert.ToString(value));
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.EUO2ID(euo) — UO.EUO2ID(Any)

參數: euo (Any)

結果: dynamic / Any.

呼叫時:

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

case "euo2id":

                case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));

UO.EUO2Inj

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

C# 簽章

string UO.EUO2Inj(object? easyValue);

以 A=0 解碼基數 26 中的 EasyUO 文字表示法。

參數

  • easyValue — EasyUO 字串/值。字母轉換為大寫;非字母字元將被跳過。

傳回值

string 是結果serial 注入的十六進位字串。

行為

  • 依序計算value=value*26+(字母-A)。 uint 累加器運作時不受檢查,因此溢位會圍繞 32 位元。空字串和沒有字母的字串給出0。不要尋找世界上的任何物體。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。單字母值 - 直接腳本

參數與執行流程:

  • B 編碼數字1。
var value = UO.EUO2Inj("B");
UO.Print(Convert.ToString(value));

2。非字母字元 - 腳本函數

參數與執行流程:

  • 大小寫並不重要;連字符和感嘆號被跳過。
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2Inj("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3。空條目 - 腳本類

參數與執行流程:

  • A 代碼為零;結果並未表示找到了物件。
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.EUO2Inj("A");
        UO.Print(Convert.ToString(value));
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.EUO2Inj(easyValue) — UO.EUO2Inj(Any)

參數: easyValue (Any)

結果: string / String.

呼叫時:

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

public string EUO2Inj(InjectionValue easyValue)

        {

            uint value = 0;

            foreach (char c in easyValue.ToString().ToUpperInvariant())

            {

                if (c < 'A' || c > 'Z')

                    continue;

                value = unchecked(value * 26 + (uint)(c - 'A'));

            }

            return NumberConversions.ToHex(unchecked((int)value));

        }

UO.EUO2Type

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

C# 簽章

dynamic UO.EUO2Type(object? euo);

以 A=0 解碼基數 26 中的 EasyUO 文字表示法。

參數

  • euo — EasyUO 字串/值。字母轉換為大寫;非字母字元將被跳過。

傳回值

int — 結果 32 位數值;這不是十六進位字串。

行為

  • 依序計算value=value*26+(字母-A)。 uint 累加器運作時不受檢查,因此溢位會圍繞 32 位元。空字串和沒有字母的字串給出0。不要尋找世界上的任何物體。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。單字母值 - 直接腳本

參數與執行流程:

  • B 編碼數字1。
var value = UO.EUO2Type("B");
UO.Print(Convert.ToString(value));

2。非字母字元 - 腳本函數

參數與執行流程:

  • 大小寫並不重要;連字符和感嘆號被跳過。
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2Type("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3。空條目 - 腳本類

參數與執行流程:

  • A 代碼為零;結果並未表示找到了物件。
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.EUO2Type("A");
        UO.Print(Convert.ToString(value));
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.EUO2Type(euo) — UO.EUO2Type(Any)

參數: euo (Any)

結果: dynamic / Any.

呼叫時:

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

case "euo2id":

                case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));

UO.Hex2Int

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

C# 簽章

int UO.Hex2Int(object? value);

將數值或數字文字轉換為 int。

參數

  • value — int、double、double-文本或帶有 0x 的十六進位文字。邊緣和標誌周圍允許有空格。這裡不允許使用別名字串“self”/“lasttarget”。

傳回值

具有 32 位元的 int;十六進位0xFFFFFFFF給出-1。透過範圍檢查將 double 截斷為零。 NumberConversions.ToInt 中的陣列和 null 會導致 0。

行為

  • 儘管有這個名稱,十進位文字仍然被接受。無效文字給出FormatException,不支援的類型給出InvalidCastException;溢出double—轉換錯誤。
  • 反向格式化為UO.Int2Hex。變換並不能證明對象的存在。

獨立的 C# 腳本

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

簡單範例

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

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

var result = UO.Hex2Int("0x40001234");
UO.Print("Hex2Int: " + Convert.ToString(result));

1。直接呼叫-直接腳本

參數與執行流程:

  • 將數值或數字文字轉換為 int。
UO.Print(UO.Hex2Int("0x40001234"));

2。明確選項 - 腳本函數

參數與執行流程:

  • 儘管有這個名稱,十進位文字仍然被接受。無效文字給出FormatException,不支援的類型給出InvalidCastException;溢出double—轉換錯誤。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Hex2Int("255"));
    UO.Print(UO.Hex2Int("0xFFFFFFFF"));
    return null;
}

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

參數與執行流程:

  • 反向格式化為UO.Int2Hex。變換並不能證明對象的存在。
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 number = UO.Hex2Int("0x000000FF");
        UO.Print(UO.Int2Hex(number));
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.Hex2Int(value) — UO.Hex2Int(Any)

參數: value (Any)

結果: int / Integer.

呼叫時:

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

public int Hex2Int(InjectionValue value) => NumberConversions.ToInt(value);

UO.Inj2EUO

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

C# 簽章

string UO.Inj2EUO(object? serialValue);

對於 EasyUO,使用字母 A..Z 編碼32位數serial。

參數

  • serialValue — 到NumberConversions.ToInt 的數字,然後是保留位的無符號 uint。對於別名,首先取得GetSerial/Hex2Int。

傳回值

string 是常用的基數26,其中 A=0..Z=25。零給出“A”。這不是十六進位或物件名稱。

行為

  • 演算法在左側插入字母 A + 值 % 26 並將 uint 除以 26 為零。這是專案自己的轉換,不是Excel A1列號。
  • EUO2Inj 執行反向轉換為十六進位字串。編碼不會建立對象,也不會向客戶端請求對象。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。直接呼叫-直接腳本

參數與執行流程:

  • 對於 EasyUO,使用字母 A..Z 編碼32位數serial。
UO.Print(UO.Inj2EUO(0));

2。明確選項 - 腳本函數

參數與執行流程:

  • 演算法在左側插入字母 A + 值 % 26 並將 uint 除以 26 為零。這是專案自己的轉換,不是Excel A1列號。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Inj2EUO(26));
    UO.Print(UO.Inj2EUO(25));
    return null;
}

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

參數與執行流程:

  • EUO2Inj 執行反向轉換為十六進位字串。編碼不會建立對象,也不會向客戶端請求對象。
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.Hex2Int("0x40001234");
        var encoded = UO.Inj2EUO(value);
        UO.Print(encoded);
        UO.Print(UO.EUO2Inj(encoded));
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.Inj2EUO(serialValue) — UO.Inj2EUO(Any)

參數: serialValue (Any)

結果: string / String.

呼叫時:

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

public string Inj2EUO(InjectionValue serialValue)

        {

            uint value = unchecked((uint)NumberConversions.ToInt(serialValue));

            if (value == 0)

                return "A";

            var result = new StringBuilder();

            while (value > 0)

            {

                result.Insert(0, (char)('A' + value % 26));

                value /= 26;

            }

            return result.ToString();

        }

UO.Int2Hex

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

C# 簽章

string UO.Int2Hex(object? value);

將 int 格式化為十六進位 serial 字串。

參數

  • value - int 或數字/十六進位文字;透過溢位檢查將double截斷為零。找不到物件別名。

傳回值

string「0xXXXXXXXX」:八個十六進位數字,所有32位int。負值以二進制補碼表示。

行為

  • NumberConversions.ToInt 執行轉換,然後 ToHex 使用 X8 格式。例如 -1 給出「0xFFFFFFFF」。無效的數字文字會導致錯誤;這不是對serial是否存在的測試。
  • 要表示一個數字,轉換就足夠了;物件的存在由UO.Exists單獨檢查。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。直接呼叫-直接腳本

參數與執行流程:

  • 將 int 格式化為十六進位 serial 字串。
UO.Print(UO.Int2Hex(1073746484));

2。明確選項 - 腳本函數

參數與執行流程:

  • NumberConversions.ToInt 執行轉換,然後 ToHex 使用 X8 格式。例如 -1 給出「0xFFFFFFFF」。無效的數字文字會導致錯誤;這不是對serial是否存在的測試。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Int2Hex(-1));
    return null;
}

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

參數與執行流程:

  • 要表示一個數字,轉換就足夠了;物件的存在由UO.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 encoded = UO.Int2Hex(255);
        UO.Print(encoded);
        UO.Print(UO.Hex2Int(encoded));
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.Int2Hex(value) — UO.Int2Hex(Any)

參數: value (Any)

結果: string / String.

呼叫時:

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

public string Int2Hex(InjectionValue value) => NumberConversions.ToHex(NumberConversions.ToInt(value));

UO.ScanInt

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

C# 簽章

int UO.ScanInt(object? textValue, object? startValue);

尋找字串中第一個帶符號的double/十六進位數字,從位置開始。

參數

  • textValue — 透過 ToString 傳簡訊。搜尋正規表示式 [-+]?(?:0[xX][0-9A-Fa-f]+|\d+) 的第一個符合項。
  • startValue - int,零位UTF-16。限制為0..text.Length;不是1的索引。

傳回值

int 是第一個被辨識的 32 位數字。沒有符合或號碼不適合 - 0;實數零也給0。

行為

  • Regex.Match 套用於 Substring(start)。如果第一个匹配无法转换TryStr2Int,则不会搜索下一个数字。小数部分,例如 .5,不包含在数字标记中。
  • 負數開頭變為0,超出行尾的開頭變為text.Length,結果為0。原線不變。

獨立的 C# 腳本

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

簡單範例

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

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

var result = UO.ScanInt("gold=123", 0);
UO.Print("ScanInt: " + Convert.ToString(result));

1。直接呼叫-直接腳本

參數與執行流程:

  • 尋找字串中第一個帶符號的double/十六進位數字,從位置開始。
UO.Print(UO.ScanInt("gold=123", 0));

2。明確選項 - 腳本函數

參數與執行流程:

  • Regex.Match 套用於 Substring(start)。如果第一个匹配无法转换TryStr2Int,则不会搜索下一个数字。小数部分,例如 .5,不包含在数字标记中。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ScanInt("-7 0xFF", 3));
    return null;
}

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

參數與執行流程:

  • 負數開頭變為0,超出行尾的開頭變為text.Length,結果為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 text = "count=0x20";
        var amount = UO.ScanInt(text, 6);
        UO.Print(amount);
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.ScanInt(textValue, startValue) — UO.ScanInt(Any,Any)

參數: textValue (Any), startValue (Any)

結果: int / Integer.

呼叫時:

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

public int ScanInt(InjectionValue textValue, InjectionValue startValue)

        {

            string text = textValue.ToString() ?? string.Empty;

            int start = Math.Max(0, Math.Min(text.Length, NumberConversions.ToInt(startValue)));

            Match match = Regex.Match(text.Substring(start), @"[-+]?(?:0[xX][0-9A-Fa-f]+|\d+)", RegexOptions.CultureInvariant);

            return match.Success && NumberConversions.TryStr2Int(match.Value, out int value) ? value : 0;

        }

UO.ShutdownWindows

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

C# 簽章

void UO.ShutdownWindows(object? state);

始終拒絕透過腳本關閉 Windows 的嘗試。

參數

  • state - 舊參數儲存在簽名中,但未使用:任何呼叫都會被阻止。

傳回值

沒有正常結果:NativeSubrutineException,並顯示訊息「shutdownwindows 被故意阻止:腳本可能無法關閉 Windows」。

行為

  • ExecuteLegacyManualAlias 立即拋出異常。不執行任何關閉、重新啟動或啟動外部程序的操作。
  • 所有三個範例都故意顯示禁止的呼叫並在運行時失敗。它們不能作為成功關閉的條件。

獨立的 C# 腳本

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

簡單範例

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

try { UO.ShutdownWindows(0); }
catch (Exception error) { UO.Print(error.Message); }

1。直接呼叫-直接腳本

參數與執行流程:

  • 始終拒絕透過腳本關閉 Windows 的嘗試。
UO.ShutdownWindows(0);

2。明確選項 - 腳本函數

參數與執行流程:

  • ExecuteLegacyManualAlias 立即拋出異常。不執行任何關閉、重新啟動或啟動外部程序的操作。
return  RunScenario();
 object? RunScenario()
{
    UO.ShutdownWindows(1);
    return null;
}

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()
    {
        UO.Print("The next command is expected to fail");
        UO.ShutdownWindows(0);
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.ShutdownWindows(state) — UO.ShutdownWindows(Any)

參數: state (Any)

結果: void / Unit.

呼叫時:

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

case "shutdownwindows":

                    throw new NativeSubrutineException("shutdownwindows is intentionally blocked: scripts may not shut down Windows.");

Clone this wiki locally