ZH TW UO Topic gumps - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

Gump 視窗

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

讀取伺服器視窗並傳送回應:按鈕、複選框、單選按鈕和欄位。 ID 視窗、serial 擁有者和開啟的視窗索引不可互換。

部分

主題 命令與解釋
GetGump UO.GetGump
GetGumpInfo UO.GetGumpInfo
Gump ID / Serial UO.GetGumpID · UO.GetGumpSerial
Text Lines UO.GetGumpTextLines · UO.GetGumpFullLines · UO.GetGumpShortLines
Buttons UO.GetGumpButtonsDescription · UO.NumGumpButton
CheckBox UO.NumGumpCheckBox · UO.GumpAutoCheckBox
RadioButton UO.NumGumpRadiobutton · UO.GumpAutoRadiobutton
TextEntry UO.NumGumpTextEntry · UO.GumpAutoTextEntry
WaitGump UO.WaitGump
SelectGump UO.SelectGump
SendGumpSelect UO.SendGumpSelect
Ignore 阿甘 UO.AddGumpIgnoreByID · UO.AddGumpIgnoreBySerial ​​· UO.ClearGumpsIgnore
Close Gump UO.IsGumpCanBeClosed · UO.CloseClientGump · UO.CancelGump

所有主題命令

阿甘訊息

UO.GetGump · UO.GetGumpID · UO.GetGumpSerial · UO.GetGumpCount · UO.GetGumpsCount · UO.GetGumpInfo · UO.GetGumpButtonsDescription · UO.GetGumpFullLines · UO.GetGumpShortLines · UO.GetGumpTextLines · UO.GumpObject · UO.LastGump · UO.IsGump · UO.GumpExists · UO.IsGumpCanBeClosed

回應

UO.NumGumpButton · UO.NumGumpCheckBox · UO.NumGumpRadiobutton · UO.NumGumpTextEntry · UO.GumpAutoCheckBox · UO.GumpAutoRadiobutton · UO.GumpAutoTextEntry · UO.WaitGump · UO.WaitGumpCheck · UO.WaitGumpEntry · UO.SelectGump · UO.SendGumpSelect · UO.SetGump

Ignore / 關閉

UO.AddGumpIgnoreByID · UO.AddGumpIgnoreBySerial · UO.ClearGumpsIgnore · UO.CancelGump · UO.CloseClientGump

關於該主題的範例

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

UO.GetGumpInfo

參數、結果及所有場景

var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
    UO.Print("Serial=" + Hex(info[0]));
    UO.Print("GumpID=" + Hex(info[1]));
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

UO.WaitGump

參數、結果及所有場景

UO.WaitGump(100);
UO.UseObject("0x40001234");

完整指令說明


UO.AddGumpIgnoreByID

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

C# 簽章

void UO.AddGumpIgnoreByID(object? id);

將數字 ID gigp 加入 UO.GetGumpInfo 使用的本地異常清單。

參數

  • id 是一個回傳 UO.GetGumpInfo 的數字 ID 口令。

傳回值

void。添加ID不會關閉視窗或確認伺服器已處理它。

行為

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.AddGumpIgnoreByID");
UO.AddGumpIgnoreByID(123);

1。由UO.GetGumpInfo的結果中用ID123消除gump。 - 直接腳本

參數與執行流程:

  • 由UO.GetGumpInfo的結果中用ID123消除gump。
UO.AddGumpIgnoreByID(123);

2。在拋出異常之前將 ID 儲存在變數中。 - 腳本功能

參數與執行流程:

  • 在拋出異常之前將 ID 儲存在變數中。
return  RunScenario();
 object? RunScenario()
{
    var ignoredId = 123;
    UO.AddGumpIgnoreByID(ignoredId);
    return null;
}

3。添加一些ID;每個異常都會影響GetGumpInfo。 - 腳本類

參數與執行流程:

  • 添加一些ID;每個異常都會影響GetGumpInfo。
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.AddGumpIgnoreByID(123);
        UO.AddGumpIgnoreByID(456);
        return null;
    }
}

命令實作

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

UO.AddGumpIgnoreByID(id) — UO.AddGumpIgnoreByID(Any)

參數: id (Any)

結果: void / Unit.

呼叫時:

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

case "addgumpignorebyid": state.IgnoredGumpIds.Add(Arg(0)); return InjectionValue.Unit;

UO.AddGumpIgnoreBySerial

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

C# 簽章

void UO.AddGumpIgnoreBySerial(object? serial);

將 serial gutp 加入 UO.GetGumpInfo 使用的本地異常清單中。

參數

  • serial 是一個回傳 UO.GetGumpInfo 的數字 serial 口令。

傳回值

void。添加serial不會關閉視窗或確認伺服器已處理它。

行為

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.AddGumpIgnoreBySerial");
UO.AddGumpIgnoreBySerial(1073741824);

1。從結果UO.GetGumpInfo中用serial1073741824消除gump。 - 直接腳本

參數與執行流程:

  • 從結果UO.GetGumpInfo中用serial1073741824消除gump。
UO.AddGumpIgnoreBySerial(1073741824);

2。從變數傳遞serial。 - 腳本功能

參數與執行流程:

  • 從變數傳遞serial。
return  RunScenario();
 object? RunScenario()
{
    var ignoredSerial = 1073741824;
    UO.AddGumpIgnoreBySerial(ignoredSerial);
    return null;
}

3。從 GetGumpInfo 的輸出中消除兩個 serial 阿膠。 - 腳本類

參數與執行流程:

  • 從 GetGumpInfo 的輸出中消除兩個 serial 阿膠。
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.AddGumpIgnoreBySerial(1073741824);
        UO.AddGumpIgnoreBySerial(1073741825);
        return null;
    }
}

命令實作

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

UO.AddGumpIgnoreBySerial(serial) — UO.AddGumpIgnoreBySerial(Any)

參數: serial (Any)

結果: void / Unit.

呼叫時:

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

case "addgumpignorebyserial": state.IgnoredGumpSerials.Add(Arg(0)); return InjectionValue.Unit;

UO.CancelGump

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

C# 簽章

void UO.CancelGump();
void UO.CancelGump(object? gumpId);

透過相容的解析器CloseSimpleGump關閉選定的伺服器口令。

參數

  • gumpId - 可選int/數值。解析器首先尋找符合的伺服器/本機serial,然後尋找伺服器gump索引。如果沒有參數,則傳遞 -1 並選擇最後一個 Gump。

傳回值

void - 無回傳值。

行為

  • 名為 gumpId 的參數不保證只搜尋 ID。 CloseGumpUnsafe為伺服器gump傳送按鈕0,然後刪除本機視窗。如果沒有找到gump,則不執行任何操作。這不是CancelMenu,也不是清除待處理的WaitGump。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。關閉最後一個阿甘 - 直接腳本

參數與執行流程:

  • 不含參數的形式選擇最新的可用伺服器口令。
UO.CancelGump();

2。透過已知的ID關閉gump - 腳本函數

參數與執行流程:

  • 使用第一個gump的實際ID;該列表可能會在呼叫之間發生變化。
return  RunScenario();
 object? RunScenario()
{
    var id = UO.GetGumpID(0);
    if (Truth(id != 0))
    {
        UO.CancelGump(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;

3。明確最後一個索引 - 腳本類

參數與執行流程:

  • 值 -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()
    {
        UO.CancelGump(-1);
        return null;
    }
}

命令實作

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

UO.CancelGump() — UO.CancelGump()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

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

case "cancelgump": bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1); break;

UO.CancelGump(gumpId) — UO.CancelGump(Any)

參數: gumpId (Any)

結果: void / Unit.

呼叫時:

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

case "cancelgump": bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1); break;

UO.ClearGumpsIgnore

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

C# 簽章

void UO.ClearGumpsIgnore();

清除兩組被忽略的gump ID 和gump serial 運行時間。

參數

沒有參數。

傳回值

void - 無回傳值。

行為

  • 不關窗戶。一旦清除,GetGumpInfo可以再次返回之前忽略的gump的快照。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。清除狀態-直接腳本

參數與執行流程:

  • 清除兩組被忽略的gump ID 和gump serial 運行時間。
UO.ClearGumpsIgnore();

2。設定後清除-腳本功能

參數與執行流程:

  • 刪除已新增的忽略規則。
return  RunScenario();
 object? RunScenario()
{
    UO.AddGumpIgnoreByID(0x1234);
    UO.ClearGumpsIgnore();
    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.ClearGumpsIgnore();
        UO.ClearGumpsIgnore();
        return null;
    }
}

命令實作

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

UO.ClearGumpsIgnore() — UO.ClearGumpsIgnore()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

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

case "cleargumpsignore":

                    state.IgnoredGumpIds.Clear(); state.IgnoredGumpSerials.Clear(); return InjectionValue.Unit;

UO.CloseClientGump

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

C# 簽章

void UO.CloseClientGump(object? id);

刪除 ServerSerial 與傳遞的 ID 相符的本機伺服器口令。

參數

  • id - int/數字 ID 與 ServerSerial 比較。这不是列表索引,也不是本地serial。

傳回值

void - 無回傳值。

行為

  • 迭代ServerGumpsUnsafe,建立所有符合的快照並呼叫Dispose。不將0按鈕或表單結果傳送到伺服器。如果沒有匹配項,則不會發生任何變化。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.CloseClientGump");
UO.CloseClientGump(UO.GetGumpID(0));

1。通过 ID 关闭第一个 Gump - 直接脚本

參數與執行流程:

  • GetGumpID提供伺服器ID; CloseClientGump 刪除符合的本機視窗。
if (Truth(UO.GetGumpsCount() > 0))
{
    var id = UO.GetGumpID(0);
    UO.CloseClientGump(id);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。來自變數 - 腳本函數的ID

參數與執行流程:

  • 指定所需伺服器口令的ID;不接受任何符合。
return  RunScenario();
 object? RunScenario()
{
    var id = 0x12345678;
    UO.CloseClientGump(id);
    return null;
}

3。重疊 - 腳本類

參數與執行流程:

  • 第一次Dispose後,第二次close通常不再找到視窗。
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.GetGumpID(0);
        if (Truth(id != 0))
        {
            UO.CloseClientGump(id);
            UO.CloseClientGump(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。

UO.CloseClientGump(id) — UO.CloseClientGump(Any)

參數: id (Any)

結果: void / Unit.

呼叫時:

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

case "closeclientgump": bridge.CloseClientGump(Arg(0)); return InjectionValue.Unit;

UO.GetGump

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

C# 簽章

dynamic UO.GetGump(object? identifier);
dynamic UO.GetGump(object? gumpId, object? identifier);
dynamic UO.GetGump(object? gumpId, object? identifier, object? key);

讀取所選伺服器口令的一個欄位。允許您明確設定視窗選擇器。

參數

  • gumpId - 可選的第一個int,形式為(gumpId,標識符)和(gumpId,標識符,密鑰)。 int 或數字字串:首先尋找精確的 GumpID/serial 匹配,然後尋找帶有 0 的索引。 -1是該腳本選擇的gump,如果不存在,則為目前清單中的最後一個。其他負數int保留32位ID。這是一個選擇器,與 NumGump* 中嚴格的 GumpIndex 相反。
  • identifier - string 不區分大小寫。傳回部分列出了所有支援的值和結果類型。未知名稱傳回空字串。
  • key - 可選int,預設 - 1。按鈕/文字/object/指令的索引為0;這不是ID控制。負索引和越界會導致按鈕出現 0 或文字欄位出現空字串。其他識別符不使用密鑰。

傳回值

結果的類型取決於標識符。 int:buttonlen — 常規按鈕的數量; Button — 按索引鍵的 ButtonID; textlen — 可用文字元素的數量; injid — 目前視窗索引;回复- 0 (不儲存回應歷史記錄);客戶內部— 1 對於找到的即時窗口, 0 在缺席的情況下; objectcount — 即時控制項的數量,包括嵌套控制項。 string: serial 和 gutpid - 十六進位字串 0xXXXXXXXX; text — 索引鍵處的元素文字; object ——控制類型名稱;指令——控制描述(類型、頁面、 ID、座標、尺寸和支援的欄位)。在沒有視窗的情況下,數字標識符給出 0, string - 空字串。因吉德=0 也是一個有效的第一個索引:就其本身而言 0 並不能證明沒有窗口。這不是 Array 或 Pascal TGumpInfo。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • SelectGump/InfoGump 指定僅在目前運行時選擇的視窗。如果選定的視窗關閉,則使用目前清單中的最後一項,這不一定是時間上最新的項。
  • textlen/text 指的是可用的文字控件,而不是伺服器包的原始字串池。 object/command 指的是整個即時控制樹。來自不同列表的索引不能混合。
  • 每個呼叫分別讀取當前狀態。對於匹配的serial、GumpID 和列表,請使用GetGumpInfo。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。讀取所選視窗的ID - 直接腳本

參數與執行流程:

  • gigpid 和 serial 傳回已格式化為十六進位的字串;不需要額外的十六進位。空白行表示讀取時沒有視窗。
var id = UO.GetGump("gumpid");
var serial = UO.GetGump("serial");
UO.Print(id + " / " + serial);

2。枚舉 ButtonID - 腳本函數

參數與執行流程:

  • Buttonlen — 按鈕數量; i 是從 0 到 count-1 的行索引。按鈕 - ID 用於答案,而不是圖形或索引。更換視窗時,請重新閱讀清單。
return  RunScenario();
 object? RunScenario()
{
    var count = UO.GetGump("buttonlen");
    var i = 0;
    while (Truth(i < count))
    {
        var button = UO.GetGump("button", i);
        UO.Print(Convert.ToString(button));
        i = i + 1;
    }

    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。選擇後讀取文字 - 腳本類

參數與執行流程:

  • 0x12345678 是 GumpID/serial 的範例,將 ID 替換為所需的形式。 key=0的文字讀取第一個可用的文字控制項;這是一個與按鈕不同的清單。
  • SelectGump 報告指定視窗不存在,但不阻塞後續讀取:如有必要,單獨檢查傳回的gumpid。
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.SelectGump(0x12345678);
        if (Truth(UO.GetGump("inclient")))
        {
            var count = UO.GetGump("textlen");
            if (Truth(count > 0))
            {
                UO.Print(UO.GetGump("text", 0));
            }
        }

        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。

UO.GetGump(identifier) — UO.GetGump(String)

參數: identifier (String)

結果: dynamic / Any.

呼叫時:

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

public InjectionValue GetGump(string identifier) => LastGump(identifier, -1);

UO.GetGump(gumpId, identifier) — UO.GetGump(Integer,String)

參數: gumpId (Integer/String), identifier (String/Integer)

結果: dynamic / Any.

呼叫時:

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

public InjectionValue GetGump(int gumpId, string identifier) => GetGump(gumpId, identifier, -1);

UO.GetGump(gumpId, identifier) — UO.GetGump(String,Integer)

參數: gumpId (Integer/String), identifier (String/Integer)

結果: dynamic / Any.

呼叫時:

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

public InjectionValue GetGump(string identifier, int key) => LastGump(identifier, key);

UO.GetGump(gumpId, identifier, key) — UO.GetGump(Integer,String,Integer)

參數: gumpId (Integer), identifier (String), key (Integer)

結果: dynamic / Any.

呼叫時:

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

public InjectionValue GetGump(int gumpId, string identifier, int key)

            => ConvertGumpValue(identifier, bridge.GetGumpValue(gumpId, identifier, key));

UO.GetGumpButtonsDescription

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

C# 簽章

dynamic UO.GetGumpButtonsDescription(object? gumpIndex);

傳回常規伺服器 Gump 按鈕的描述。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。

傳回值

Array - 常規按鈕的描述。 [] - 無效索引或沒有符合元素。行索引以0開頭;它不是 ID 控制項。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 每行包含 ButtonID、操作、toPage 和圖形。單選按鈕不是常規的答案按鈕。
  • 當SilentMode=0時,非空結果也會加入文字視窗並開啟它。 SetSilentMode(1) 只回傳數組。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。讀取第一行 - 直接腳本

參數與執行流程:

  • 0 — 視窗索引。 ArrayLength 在呼叫lines[0]之前檢查線路是否存在。
var lines = UO.GetGumpButtonsDescription(0);
if (Truth(ArrayLength(lines) > 0))
{
    UO.Print(lines[0]);
}

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;

2。遍歷所有行而不自動視窗 - 腳本函數

參數與執行流程:

  • SetSilentMode(1) ​​停用附加文字視窗。範例中的明確 Print 仍然列印字串。
  • i 是陣列索引;從對應的描述中取得所需按鈕/開關的ID。
return  RunScenario();
 object? RunScenario()
{
    UO.SetSilentMode(1);
    var lines = UO.GetGumpButtonsDescription(0);
    var i = 0;
    while (Truth(i < ArrayLength(lines)))
    {
        UO.Print(lines[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;

3。讀取上次開啟的伺服器視窗資料 - 腳本類

參數與執行流程:

  • 計數被轉換為最後一個視窗的索引。從載入的伺服器gump讀取資料;這裡不包括本機視窗。
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()
    {
        int count = UO.GetGumpsCount();
        if (count == 0)
            return null;
        int index = count - 1;
        var lines = UO.GetGumpButtonsDescription(index);
        foreach (object? line in (object? [])lines)
            UO.Print(Convert.ToString(line) ?? "");
        return null;
    }
}

命令實作

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

UO.GetGumpButtonsDescription(gumpIndex) — UO.GetGumpButtonsDescription(Any)

參數: gumpIndex (Any)

結果: dynamic / Array.

呼叫時:

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

case "getgumpbuttonsdescription": return GumpLinesResult(bridge.GetGumpButtonsDescription(Arg(0)));

UO.GetGumpCount

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

C# 簽章

int UO.GetGumpCount();

簡短版本GetGumpsCount:活動伺服器數量。

參數

沒有參數。

傳回值

int >= 0 — 視窗數,而非最後一個視窗的索引。 0 — 列表為空。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。檢查伺服器視窗 - 直接腳本

參數與執行流程:

  • 這是伺服器gumps的數量,而不是視窗索引;這裡不包括當地的背包和地圖。
int count = UO.GetGumpCount();
UO.Print($"Active server gumps: {count}");

2。讀取開啟的視窗 ID - 腳本函數

參數與執行流程:

  • 索引從零開始。此列表可能會在呼叫之間發生變化,因此在讀取之前會檢查當前數量。
return  RunScenario();
 object? RunScenario()
{
    int count = UO.GetGumpCount();
    for (int index = 0; index < count; index++)
    {
        if (index >= UO.GetGumpCount())
            break;
        UO.Print($"Gump {index}: ID={UO.GetGumpID(index)}, serial={UO.GetGumpSerial(index)}");
    }

    return null;
}

3。等待定時視窗-腳本類

參數與執行流程:

  • 等待受到超時限制。僅僅存在一個視窗並不能證明這是必要的條件;要選擇,請勾選ID。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
    }

    async public Task<object?> RunScenarioAsync()
    {
        bool appeared = await WaitForGump(3000);
        UO.Print(appeared ? "A server gump appeared" : "No server gump within the timeout");
        return null;
    }

    async Task<bool> WaitForGump(int timeoutMs)
    {
        var timer = System.Diagnostics.Stopwatch.StartNew();
        while (timer.ElapsedMilliseconds < timeoutMs)
        {
            if (UO.GetGumpCount() > 0)
                return true;
            await WaitAsync(50);
        }

        return false;
    }
}

命令實作

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

UO.GetGumpCount() — UO.GetGumpCount()

參數: 沒有參數。

結果: int / Integer.

呼叫時:

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

public int GetGumpCount() => bridge.GetGumpCount();

UO.GetGumpFullLines

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

C# 簽章

dynamic UO.GetGumpFullLines(object? gumpIndex);

傳回所有活動元素的描述,包括嵌套的伺服器口令。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。

傳回值

Array - 所有活動元素的描述,包括巢狀元素。 [] - 無效索引或沒有符合元素。行索引以0開頭;它不是 ID 控制項。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 目前控制樹的描述:類型、頁面、ID、X/Y、大小和支援的欄位。這不是原始伺服器標記包。
  • 當SilentMode=0時,非空結果也會加入文字視窗並開啟它。 SetSilentMode(1) 只回傳數組。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。讀取第一行 - 直接腳本

參數與執行流程:

  • 0 — 視窗索引。 ArrayLength 在呼叫lines[0]之前檢查線路是否存在。
var lines = UO.GetGumpFullLines(0);
if (Truth(ArrayLength(lines) > 0))
{
    UO.Print(lines[0]);
}

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;

2。遍歷所有行而不自動視窗 - 腳本函數

參數與執行流程:

  • SetSilentMode(1) ​​停用附加文字視窗。範例中的明確 Print 仍然列印字串。
  • i 是陣列索引;從對應的描述中取得所需按鈕/開關的ID。
return  RunScenario();
 object? RunScenario()
{
    UO.SetSilentMode(1);
    var lines = UO.GetGumpFullLines(0);
    var i = 0;
    while (Truth(i < ArrayLength(lines)))
    {
        UO.Print(lines[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;

3。讀取上次開啟的伺服器視窗資料 - 腳本類

參數與執行流程:

  • 計數被轉換為最後一個視窗的索引。從載入的伺服器gump讀取資料;這裡不包括本機視窗。
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()
    {
        int count = UO.GetGumpsCount();
        if (count == 0)
            return null;
        int index = count - 1;
        var lines = UO.GetGumpFullLines(index);
        foreach (object? line in (object? [])lines)
            UO.Print(Convert.ToString(line) ?? "");
        return null;
    }
}

命令實作

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

UO.GetGumpFullLines(gumpIndex) — UO.GetGumpFullLines(Any)

參數: gumpIndex (Any)

結果: dynamic / Array.

呼叫時:

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

case "getgumpfulllines": return GumpLinesResult(bridge.GetGumpFullLines(Arg(0)));

UO.GetGumpID

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

C# 簽章

int UO.GetGumpID(object? gumpIndex);

從伺服器 Gump 索引中讀取 GumpID 視窗類型 ID。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。

傳回值

int — 32 位元視窗類型識別碼 GumpID。 0 是無效索引(serial=0 也可能存在於視窗本身)。當最高位被置位時,int為負數:以Hex(value)顯示。這不是主題的type或索引。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 對於符合的 serial/GumpID 對,請使用 GetGumpInfo:info[0] 和 info[1] 欄位。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。以十六進位顯示 ID - 直接腳本

參數與執行流程:

  • 0是伺服器清單的第一個索引。 Hex 儲存負int 的位表示。
var value = UO.GetGumpID(0);
UO.Print(Hex(value));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

2。檢查清單邊界 - 腳本函數

參數與執行流程:

  • 對於不可變列表,計數位於最後一個索引之後,因此缺少=0。最後一個有效索引是 count-1。
return  RunScenario();
 object? RunScenario()
{
    var count = UO.GetGumpsCount();
    var missing = UO.GetGumpID(count);
    UO.Print(Hex(missing));
    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

3。透過已知的ID - 腳本類別尋找開啟的窗口

參數與執行流程:

  • 0x999是ID的一個例子;將其替換為所需視窗的實際ID。索引、ID和serial所有者是不同的值。
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()
    {
        int wantedId = 0x00000999;
        int count = UO.GetGumpsCount();
        for (int index = 0; index < count; index++)
        {
            if (index >= UO.GetGumpsCount())
                break;
            if (UO.GetGumpID(index) == wantedId)
            {
                UO.Print($"Gump index {index}, serial {UO.GetGumpSerial(index)}");
                return index;
            }
        }

        return -1;
        return null;
    }
}

命令實作

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

UO.GetGumpID(gumpIndex) — UO.GetGumpID(Any)

參數: gumpIndex (Any)

結果: int / Integer.

呼叫時:

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

case "getgumpid": return new InjectionValue(bridge.GetGumpId(Arg(0)));

UO.GetGumpInfo

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

C# 簽章

dynamic UO.GetGumpInfo(object? gumpIndex);

傳回單一伺服器口令的識別碼和元素的一致快照。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。

傳回值

陣列 - 正好五個元素: [0] int serial; [1] int GumpID; [2] Array 非空文本; [3] Array 常規按鈕的描述; [4] Array 所有生命元素的描述,包括嵌套的元素。此腳本無效/關閉或忽略的 Gump 會產生一個空數組 []. ID 最高有效位元表示為負數 int。空文本數組本身並不意味著沒有視窗。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 整個快照在一個遊戲執行緒請求中複製。返回後更改/關閉視窗不會更改已儲存的陣列。
  • 控制描述指示類型、頁碼、ID、X/Y、尺寸。按鈕還包含 ButtonID、action、toPage 和 graphic;開關 - ID,選中,非活動/活動。文字可以包含空格和=;字串不能無條件地被空格解析。
  • AddGumpIgnoreByID/AddGumpIgnoreBySerial隱藏目前腳本中僅此一次讀取的結果; ClearGumpsIgnore 刪除這些過濾器。 GetGumpsCount不減少。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。閱讀ID - 直接腳本

參數與執行流程:

  • GumpIndex=0 — 第一台伺服器阿甘。長度檢查可保護對缺失視窗欄位的存取。
  • 訊息[0] — serial,訊息[1] — GumpID;兩者屬於同一錄音。
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
    UO.Print("Serial=" + Hex(info[0]));
    UO.Print("GumpID=" + Hex(info[1]));
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。列出真實的 ButtonID - 腳本函數

參數與執行流程:

  • info[3] — 按鈕描述陣列;該行中的 ButtonID 欄位指定回應的 ID。 i 只是行索引,而不是 ButtonID。
  • 單選按鈕是單選按鈕,出現在 info[4] 中,而不是出現在常規按鈕清單中。
return  RunScenario();
 object? RunScenario()
{
    var info = UO.GetGumpInfo(0);
    if (Truth(ArrayLength(info) == 5))
    {
        var buttons = info[3];
        var i = 0;
        while (Truth(i < ArrayLength(buttons)))
        {
            UO.Print(buttons[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;

3。儲存文字直到關閉 - 腳本類

參數與執行流程:

  • info[2] - 文字副本。僅允許關閉非抑制視窗NoClose。
  • 關閉不會清除已儲存的文字;對於現有視窗來說,空白文字陣列也是可以接受的。
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.GetGumpInfo(0);
        if (Truth(ArrayLength(info) == 5))
        {
            var texts = info[2];
            UO.CloseSimpleGump(0);
            if (Truth(ArrayLength(texts) > 0))
            {
                UO.Print(texts[0]);
            }
        }

        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.GetGumpInfo(gumpIndex) — UO.GetGumpInfo(Any)

參數: gumpIndex (Any)

結果: dynamic / Array.

呼叫時:

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

case "getgumpinfo":

                {

                    int index = Arg(0);

                    GumpSnapshot snapshot;

                    if (bridge is IApiGumpAccess reader)

                        snapshot = reader.ReadGump(index);

                    else

                    {

                        int id = bridge.GetGumpId(index);

                        snapshot = id == 0 ? null : new GumpSnapshot(bridge.GetGumpSerial(index), id,

                            bridge.GetGumpTextLines(index), bridge.GetGumpButtonsDescription(index), bridge.GetGumpFullLines(index));

                    }

                    if (snapshot == null || state.IgnoredGumpIds.Contains(snapshot.Id)

                        || state.IgnoredGumpSerials.Contains(snapshot.Serial))

                        return new InjectionValue(Array.Empty<InjectionValue>());

                    return new InjectionValue(new[]

                    {

                        new InjectionValue(snapshot.Serial), new InjectionValue(snapshot.Id), StringArray(snapshot.Text),

                        StringArray(snapshot.Buttons), StringArray(snapshot.Controls)

                    });

                }

UO.GetGumpSerial

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

C# 簽章

int UO.GetGumpSerial(object? gumpIndex);

透過伺服器 Gump 索引讀取 serial 實例/視窗擁有者。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。

傳回值

int 是視窗實例/擁有者的32 位元serial。 0 是無效索引(serial=0 也可能存在於視窗本身)。當最高位被置位時,int為負數:以Hex(value)顯示。这不是主题的type,也不是索引。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 對於符合的 serial/GumpID 對,請使用 GetGumpInfo:info[0] 和 info[1] 欄位。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。以十六進位顯示 ID - 直接腳本

參數與執行流程:

  • 0是伺服器清單的第一個索引。 Hex 儲存負int 的位表示。
var value = UO.GetGumpSerial(0);
UO.Print(Hex(value));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

2。檢查清單邊界 - 腳本函數

參數與執行流程:

  • 對於不可變列表,計數位於最後一個索引之後,因此缺少=0。最後一個有效索引是 count-1。
return  RunScenario();
 object? RunScenario()
{
    var count = UO.GetGumpsCount();
    var missing = UO.GetGumpSerial(count);
    UO.Print(Hex(missing));
    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

3。顯示所有已載入的伺服器視窗的擁有者 - 腳本類

參數與執行流程:

  • 串行由伺服器視窗或其所有者根據命令合約擁有。它不能用來代替 Gump 索引。
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()
    {
        int count = UO.GetGumpsCount();
        for (int index = 0; index < count; index++)
        {
            if (index >= UO.GetGumpsCount())
                break;
            int serial = UO.GetGumpSerial(index);
            UO.Print($"Window {index}: serial={UO.Int2Hex(serial)}, ID={UO.GetGumpID(index)}");
        }

        return null;
    }
}

命令實作

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

UO.GetGumpSerial(gumpIndex) — UO.GetGumpSerial(Any)

參數: gumpIndex (Any)

結果: int / Integer.

呼叫時:

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

case "getgumpserial": return new InjectionValue(bridge.GetGumpSerial(Arg(0)));

UO.GetGumpShortLines

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

C# 簽章

dynamic UO.GetGumpShortLines(object? gumpIndex);

傳回伺服器命令的文字元素和按鈕的描述。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。

傳回值

Array - 文本元素和按钮的描述。 [] - 無效索引或沒有符合元素。行索引以0開頭;它不是 ID 控制項。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 候選清單不包括沒有文字和按鈕類型的裝飾;包括單選按鈕。
  • 當SilentMode=0時,非空結果也會加入文字視窗並開啟它。 SetSilentMode(1) 只回傳數組。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。讀取第一行 - 直接腳本

參數與執行流程:

  • 0 — 視窗索引。 ArrayLength 在呼叫lines[0]之前檢查線路是否存在。
var lines = UO.GetGumpShortLines(0);
if (Truth(ArrayLength(lines) > 0))
{
    UO.Print(lines[0]);
}

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;

2。遍歷所有行而不自動視窗 - 腳本函數

參數與執行流程:

  • SetSilentMode(1) ​​停用附加文字視窗。範例中的明確 Print 仍然列印字串。
  • i 是陣列索引;從對應的描述中取得所需按鈕/開關的ID。
return  RunScenario();
 object? RunScenario()
{
    UO.SetSilentMode(1);
    var lines = UO.GetGumpShortLines(0);
    var i = 0;
    while (Truth(i < ArrayLength(lines)))
    {
        UO.Print(lines[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;

3。讀取上次開啟的伺服器視窗資料 - 腳本類

參數與執行流程:

  • 計數被轉換為最後一個視窗的索引。從載入的伺服器gump讀取資料;這裡不包括本機視窗。
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()
    {
        int count = UO.GetGumpsCount();
        if (count == 0)
            return null;
        int index = count - 1;
        var lines = UO.GetGumpShortLines(index);
        foreach (object? line in (object? [])lines)
            UO.Print(Convert.ToString(line) ?? "");
        return null;
    }
}

命令實作

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

UO.GetGumpShortLines(gumpIndex) — UO.GetGumpShortLines(Any)

參數: gumpIndex (Any)

結果: dynamic / Array.

呼叫時:

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

case "getgumpshortlines": return GumpLinesResult(bridge.GetGumpShortLines(Arg(0)));

UO.GetGumpTextLines

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

C# 簽章

dynamic UO.GetGumpTextLines(object? gumpIndex);

傳回標籤、HTML、輸入欄位和伺服器口訣開關標籤的非空文字。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。

傳回值

Array — 標籤、HTML、輸入欄位和開關標籤的非空白文字。 [] - 無效索引或沒有符合元素。行索引以0開頭;這不是ID控制。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 僅文字;不包括 ButtonID、尺寸和結構。不列印任何額外的東西。
  • GetGumpTextLines 不開啟文字視窗。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。讀取第一行 - 直接腳本

參數與執行流程:

  • 0 — 視窗索引。 ArrayLength 在呼叫lines[0]之前檢查線路是否存在。
var lines = UO.GetGumpTextLines(0);
if (Truth(ArrayLength(lines) > 0))
{
    UO.Print(lines[0]);
}

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;

2。遍歷所有行而不自動視窗 - 腳本函數

參數與執行流程:

  • SetSilentMode(1) ​​停用附加文字視窗。範例中的明確 Print 仍然列印字串。
  • i 是陣列索引;從對應的描述中取得所需按鈕/開關的ID。
return  RunScenario();
 object? RunScenario()
{
    UO.SetSilentMode(1);
    var lines = UO.GetGumpTextLines(0);
    var i = 0;
    while (Truth(i < ArrayLength(lines)))
    {
        UO.Print(lines[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;

3。讀取上次開啟的伺服器視窗資料 - 腳本類

參數與執行流程:

  • 計數被轉換為最後一個視窗的索引。從載入的伺服器gump讀取資料;這裡不包括本機視窗。
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()
    {
        int count = UO.GetGumpsCount();
        if (count == 0)
            return null;
        int index = count - 1;
        var lines = UO.GetGumpTextLines(index);
        foreach (object? line in (object? [])lines)
            UO.Print(Convert.ToString(line) ?? "");
        return null;
    }
}

命令實作

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

UO.GetGumpTextLines(gumpIndex) — UO.GetGumpTextLines(Any)

參數: gumpIndex (Any)

結果: dynamic / Array.

呼叫時:

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

case "getgumptextlines": return StringArray(bridge.GetGumpTextLines(Arg(0)));

UO.GetGumpsCount

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

C# 簽章

int UO.GetGumpsCount();

傳回活動伺服器群組的數量。

參數

沒有參數。

傳回值

int >= 0 — 視窗數,而非最後一個視窗的索引。 0 — 列表為空。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。檢查 Windows - 直接腳本

參數與執行流程:

  • 沒有爭論。 count=0表示目前清單中沒有伺服器視窗。
var count = UO.GetGumpsCount();
if (Truth(count == 0))
{
    UO.Print("No server gumps");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。列表ID - 腳本函數

參數與執行流程:

  • i 是0 的索引。產生的 ID 標識視窗類型而不是清單中的位置。
  • 如果在行走過程中視窗發生變化,則需要重新讀取清單; count 不會阻塞介面。
return  RunScenario();
 object? RunScenario()
{
    var count = UO.GetGumpsCount();
    var i = 0;
    while (Truth(i < count))
    {
        UO.Print(Hex(UO.GetGumpID(i)));
        i = i + 1;
    }

    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3。讀取清單的最後一個元素 - 腳本類

參數與執行流程:

  • count-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()
    {
        var count = UO.GetGumpsCount();
        if (Truth(count > 0))
        {
            var info = UO.GetGumpInfo(count - 1);
            UO.Print(ArrayLength(info));
        }

        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.GetGumpsCount() — UO.GetGumpsCount()

參數: 沒有參數。

結果: int / Integer.

呼叫時:

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

case "getgumpscount": return new InjectionValue(bridge.GetGumpCount());

UO.GumpAutoCheckBox

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

C# 簽章

void UO.GumpAutoCheckBox(object? checkBoxID, object? value);

在第一個合適的伺服器群組中設定元素的值一次;如果該元素尚不存在,則節省等待。

參數

  • checkBoxID - int - 對應型別元素的確切ID。這不是索引,不是 GumpID,也不是 serial 視窗; 0 是通常的ID,沒有替換第一個元素。
  • value - int - 1 打开,0 关闭。非零数值还包括;推荐0/1。選擇一個單選按鈕將取消選擇其群組中相鄰的單選按鈕。

傳回值

void - 不回傳任何內容:既不成功,也不回傳新值,也不回傳伺服器確認。

行為

  • 首先檢查當前介面順序中的現有窗口,然後檢查新的或更新的伺服器佈局。在類型和 ID 的第一個匹配上觸發一次。對於特定窗口,使用 NumGump* 和索引。
  • 所有待處理欄位都會在自動按鈕回應之前套用。在一個腳本中重複相同類型和ID會取代尚未執行的值。限制 — 1024 待處理的客戶端欄位;超過會導致腳本錯誤。
  • 正常完成過程可節省等待時間。用他的名字取消所有者或 Terminate可以消除他的等待;TerminateAll 刪除所有內容,包括完成程序後剩餘的內容。改變世界可以清除佇列。期望不會儲存到設定檔中。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.GumpAutoCheckBox");
UO.GumpAutoCheckBox(33, 1);

1。立即填充-直接腳本

參數與執行流程:

  • 第一個參數33是所需元素的範例ID;將其替換為 InfoGump 中的真實ID。第二個是要設定的值。如果沒有元素,則操作保持待定狀態。
UO.GumpAutoCheckBox(33, 1);

2。打開前填充 - 腳本函數

參數與執行流程:

  • 33是元素的ID,100是確認ButtonID的範例,0x40001234是開啟表單的物件的serial。將所有三個值替換為您自己的值。即使視窗稍後到達,該欄位也會在答案之前填寫。
return  RunScenario();
 object? RunScenario()
{
    UO.GumpAutoCheckBox(33, 1);
    UO.WaitGump(100);
    UO.UseObject("0x40001234");
    return null;
}

3。替換待處理值 - 腳本類

參數與執行流程:

  • 兩個呼叫都使用ID33。如果該元素尚未出現,則套用最後一個值。如果視窗已打開,則這兩項變更都會立即按順序執行。
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.GumpAutoCheckBox(33, 1);
        UO.GumpAutoCheckBox(33, 0);
        return null;
    }
}

命令實作

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

UO.GumpAutoCheckBox(checkBoxID, value) — UO.GumpAutoCheckBox(Any,Any)

參數: checkBoxID (Any), value (Any)

結果: void / Unit.

呼叫時:

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

case "gumpautocheckbox": QueueGumpControl("checkbox", Arg(0), Text(1)); return InjectionValue.Unit;

UO.GumpAutoRadiobutton

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

C# 簽章

void UO.GumpAutoRadiobutton(object? radiobuttonID, object? value);

在第一個合適的伺服器群組中設定元素的值一次;如果該元素尚不存在,則節省等待。

參數

  • radiobuttonID - int - 對應型別元素的確切ID。這不是索引,不是 GumpID,也不是 serial 視窗; 0 是通常的ID,沒有替換第一個元素。
  • value - int - 1 打开,0 关闭。非零数值还包括;推荐0/1。選擇一個單選按鈕將取消選擇其群組中相鄰的單選按鈕。

傳回值

void - 不回傳任何內容:既不成功,也不回傳新值,也不回傳伺服器確認。

行為

  • 首先檢查當前介面順序中的現有窗口,然後檢查新的或更新的伺服器佈局。在類型和 ID 的第一個匹配上觸發一次。對於特定窗口,使用 NumGump* 和索引。
  • 所有待處理欄位都會在自動按鈕回應之前套用。在一個腳本中重複相同類型和ID會取代尚未執行的值。限制 — 1024 待處理的客戶端欄位;超過會導致腳本錯誤。
  • 正常完成過程可節省等待時間。用他的名字取消所有者或 Terminate可以消除他的等待;TerminateAll 刪除所有內容,包括完成程序後剩餘的內容。改變世界可以清除佇列。期望不會儲存到設定檔中。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.GumpAutoRadiobutton");
UO.GumpAutoRadiobutton(33, 1);

1。立即填充-直接腳本

參數與執行流程:

  • 第一個參數33是所需元素的範例ID;將其替換為 InfoGump 中的真實ID。第二個是要設定的值。如果沒有元素,則操作保持待定狀態。
UO.GumpAutoRadiobutton(33, 1);

2。打開前填充 - 腳本函數

參數與執行流程:

  • 33是元素的ID,100是確認ButtonID的範例,0x40001234是開啟表單的物件的serial。將所有三個值替換為您自己的值。即使視窗稍後到達,該欄位也會在答案之前填寫。
return  RunScenario();
 object? RunScenario()
{
    UO.GumpAutoRadiobutton(33, 1);
    UO.WaitGump(100);
    UO.UseObject("0x40001234");
    return null;
}

3。替換待處理值 - 腳本類

參數與執行流程:

  • 兩個呼叫都使用ID33。如果該元素尚未出現,則套用最後一個值。如果視窗已打開,則這兩項變更都會立即按順序執行。
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.GumpAutoRadiobutton(33, 1);
        UO.GumpAutoRadiobutton(33, 0);
        return null;
    }
}

命令實作

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

UO.GumpAutoRadiobutton(radiobuttonID, value) — UO.GumpAutoRadiobutton(Any,Any)

參數: radiobuttonID (Any), value (Any)

結果: void / Unit.

呼叫時:

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

case "gumpautoradiobutton": QueueGumpControl("radio", Arg(0), Text(1)); return InjectionValue.Unit;

UO.GumpAutoTextEntry

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

C# 簽章

void UO.GumpAutoTextEntry(object? textEntryID, object? value);

在第一個合適的伺服器群組中設定元素的值一次;如果該元素尚不存在,則節省等待。

參數

  • textEntryID - int - 對應型別元素的確切ID。這不是索引,不是 GumpID,也不是 serial 視窗; 0 是通常的ID,沒有替換第一個元素。
  • value - string - 欄位文本,包括用於清除的空白行。保留對欄位本身的長度和允許的字元的限制。

傳回值

void - 不回傳任何內容:既不成功,也不回傳新值,也不回傳伺服器確認。

行為

  • 首先檢查當前介面順序中的現有窗口,然後檢查新的或更新的伺服器佈局。在類型和 ID 的第一個匹配上觸發一次。對於特定窗口,使用 NumGump* 和索引。
  • 所有待處理欄位都會在自動按鈕回應之前套用。在一個腳本中重複相同類型和ID會取代尚未執行的值。限制 — 1024 待處理的客戶端欄位;超過會導致腳本錯誤。
  • 正常完成過程可節省等待時間。用他的名字取消所有者或 Terminate可以消除他的等待;TerminateAll 刪除所有內容,包括完成程序後剩餘的內容。改變世界可以清除佇列。期望不會儲存到設定檔中。
  • 受字段限制的文字可以縮短或拒絕;找到的元素仍然消耗一次性操作。該命令不發送按鈕回應,也不等待伺服器。要檢查,請使用GetGumpInfo/NumGumpTextEntry。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.GumpAutoTextEntry");
UO.GumpAutoTextEntry(33, "500");

1。立即填充-直接腳本

參數與執行流程:

  • 第一個參數33是所需元素的範例ID;將其替換為 InfoGump 中的真實ID。第二個是要設定的值。如果沒有元素,則操作保持待定狀態。
UO.GumpAutoTextEntry(33, "500");

2。打開前填充 - 腳本函數

參數與執行流程:

  • 33是元素的ID,100是確認ButtonID的範例,0x40001234是開啟表單的物件的serial。將所有三個值替換為您自己的值。即使視窗稍後到達,該欄位也會在答案之前填寫。
return  RunScenario();
 object? RunScenario()
{
    UO.GumpAutoTextEntry(33, "500");
    UO.WaitGump(100);
    UO.UseObject("0x40001234");
    return null;
}

3。替換待處理值 - 腳本類

參數與執行流程:

  • 兩個呼叫都使用ID33。如果該元素尚未出現,則套用最後一個值。如果視窗已打開,則這兩項變更都會立即按順序執行。
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.GumpAutoTextEntry(33, "500");
        UO.GumpAutoTextEntry(33, "");
        return null;
    }
}

命令實作

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

UO.GumpAutoTextEntry(textEntryID, value) — UO.GumpAutoTextEntry(Any,Any)

參數: textEntryID (Any), value (Any)

結果: void / Unit.

呼叫時:

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

case "gumpautotextentry": QueueGumpControl("textentry", Arg(0), Text(1)); return InjectionValue.Unit;

UO.GumpExists

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

C# 簽章

int UO.GumpExists(object? id);
int UO.GumpExists(object? firstId, object? secondId);

使用一個選擇器或精確的一對 serial/GumpID 檢查伺服器 Gump 是否存在。

參數

  • id — 單一參數形式:數字 serial、GumpID 或 0 的索引。 -1這裡不選擇最後一個gump。
  • firstId — 雙參數形式:數字 32 位元 serial,包含具有最高有效位元的負 int。
  • secondId — 雙參數形式:精確的 32 位元 GumpID。 0 是精確數字,而不是通配符。只有-1切換回firstId的單一參數檢查,如serial/GumpID/index。

傳回值

int - 1,如果對應的視窗現在存在; 0 否則。不返回索引、serial或匹配數。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 該檢查不選擇視窗也不保留它。 ID對作為一個整體進行檢查; ID 具有最高有效位元不會禁用濾波器。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。檢查已知的ID - 直接腳本

參數與執行流程:

  • 0x87654321 — 所需的 GumpID 或 serial。一個參數不區分這些空間ID。
var exists = UO.GumpExists(0x87654321);
UO.Print(Convert.ToString(exists));

2。檢查精確對 - 腳本函數

參數與執行流程:

  • 第一個數字是serial,第二個數字是GumpID。有符號的 int 中兩者都是負數,但比較保留了所有 32 位。
return  RunScenario();
 object? RunScenario()
{
    var exists = UO.GumpExists(0x87654321, 0x98765432);
    if (Truth(exists))
    {
        UO.Print("Matching pair exists");
    }

    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。檢查已儲存的識別碼 - 腳本類

參數與執行流程:

  • info[0]/info[1]屬於同一圖像。存在=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()
    {
        var info = UO.GetGumpInfo(0);
        if (Truth(ArrayLength(info) == 5))
        {
            var exists = UO.GumpExists(info[0], info[1]);
            UO.Print(Convert.ToString(exists));
        }

        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.GumpExists(id) — UO.GumpExists(Any)

參數: id (Any)

結果: int / Integer.

呼叫時:

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

public int GumpExists(InjectionValue id) => bridge.GumpExists(NumberConversions.ToInt(id), -1);

UO.GumpExists(firstId, secondId) — UO.GumpExists(Any,Any)

參數: firstId (Any), secondId (Any)

結果: int / Integer.

呼叫時:

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

public int GumpExists(InjectionValue firstId, InjectionValue secondId)

            => bridge.GumpExists(NumberConversions.ToInt(firstId), NumberConversions.ToInt(secondId));

UO.GumpObject

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

C# 簽章

void UO.GumpObject(object? gumpId);

選擇現有的伺服器口令以供後續呼叫。

參數

  • gumpId - int:先符合LocalSerial或ServerSerial,然後在目前的gumps列表中索引零。這些不是 ID 按鈕。

傳回值

void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。

行為

  • Bridge.SelectGump 儲存 _selectedServerGump。若 serial 不匹配,則採用索引 0..count-1。未找到 - 選定的 Gump 變為 null 並顯示一則訊息。
  • Gump 無法打開,也沒有回應傳送到伺服器。開啟/關閉視窗時索引會發生變化;為了穩定選擇,請使用目前的serial/id。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.GumpObject");
UO.GumpObject(0);

1。直接呼叫-直接腳本

參數與執行流程:

  • 選擇現有的伺服器口令以供後續呼叫。
if (Truth(UO.GumpExists(0)))
{
    UO.GumpObject(0);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。明確選項 - 腳本函數

參數與執行流程:

  • Bridge.SelectGump 儲存 _selectedServerGump。若 serial 不匹配,則採用索引 0..count-1。未找到 - 選定的 Gump 變為 null 並顯示一則訊息。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        var serial = UO.GetGumpSerial(0);
        UO.GumpObject(serial);
    }

    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。完整的輔助函數 - 腳本類

參數與執行流程:

  • Gump 無法打開,也沒有回應傳送到伺服器。開啟/關閉視窗時索引會發生變化;為了穩定選擇,請使用目前的serial/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()
    {
        if (Truth(UO.GetGumpsCount() > 0))
        {
            UO.GumpObject(0);
            UO.Print(UO.LastGump("gumpid"));
        }

        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。

UO.GumpObject(gumpId) — UO.GumpObject(Any)

參數: gumpId (Any)

結果: void / Unit.

呼叫時:

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

case "gumpobject": bridge.SelectGump(Arg(0)); break;

UO.IsGump

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

C# 簽章

int UO.IsGump();

檢查是否至少有一台活動伺服器 Gump。

參數

沒有參數。

傳回值

int — 1,若列表不為空; 0 若為空。這是可用性的標誌,而不是視窗的數量。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。條件讀取 - 直接腳本

參數與執行流程:

  • 沒有爭論。 GetGumpInfo(0) ​​讀取第一個元素,如果視窗已關閉,則可能會傳回空數組。
if (Truth(UO.IsGump()))
{
    var info = UO.GetGumpInfo(0);
    UO.Print(ArrayLength(info));
}

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;

2。區分數量和存在-腳本函數

參數與執行流程:

  • 存在三個穩定視窗=1,計數=3。
return  RunScenario();
 object? RunScenario()
{
    var present = UO.IsGump();
    var count = UO.GetGumpsCount();
    UO.Print(Convert.ToString(present) + "/" + Convert.ToString(count));
    return null;
}

3。有界等待 - 腳本類

參數與執行流程:

  • 等待時間不超過大約3000毫秒,每50毫秒檢查一次。最後呈現的是等待之後的狀態。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var started = Now();
        while (Truth(UO.IsGump() == 0) && Truth(Now() - started < 3000))
        {
            await Delay(50);
        }

        var present = UO.IsGump();
        return null;
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
    private int Now() => global::ClassicUO.CSharp.CSharpScriptContext.Current.Now();
}

命令實作

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

UO.IsGump() — UO.IsGump()

參數: 沒有參數。

結果: int / Integer.

呼叫時:

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

case "isgump": return new InjectionValue(bridge.GetGumpCount() > 0 ? 1 : 0);

UO.IsGumpCanBeClosed

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

C# 簽章

int UO.IsGumpCanBeClosed(object? gumpIndex);

檢查是否允許本機右鍵關閉伺服器gump。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。

傳回值

int — 1,如果視窗存在且CanCloseWithRightClick已啟用;否則0。這不是關閉或存在“取消”按鈕的結果。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • NoClose 禁止CloseSimpleGump;將 ButtonID 傳送到伺服器的能力是一個單獨的操作。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。有條件關閉 - 直接腳本

參數與執行流程:

  • 0 — 視窗索引。驗證和關閉是不同的挑戰;它們之間的索引可能會發生變化。
if (Truth(UO.IsGumpCanBeClosed(0)))
{
    UO.CloseSimpleGump(0);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。顯示關閉停用 - 腳本功能

參數與執行流程:

  • closeable=0 在現有視窗上表示該視窗無法關閉,而不是視窗不存在。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        var closable = UO.IsGumpCanBeClosed(0);
        UO.Print(Convert.ToString(closable));
    }

    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。索引無效 - 腳本類

參數與執行流程:

  • -1 對於該索引命令無效並給出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 result = UO.IsGumpCanBeClosed(-1);
        UO.Print(Convert.ToString(result));
        return null;
    }
}

命令實作

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

UO.IsGumpCanBeClosed(gumpIndex) — UO.IsGumpCanBeClosed(Any)

參數: gumpIndex (Any)

結果: int / Integer.

呼叫時:

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

case "isgumpcanbeclosed": return new InjectionValue(bridge.IsGumpCanBeClosed(Arg(0)));

UO.LastGump

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

C# 簽章

dynamic UO.LastGump(object? identifier);
dynamic UO.LastGump(object? identifier, object? key);

讀取所選伺服器口令的一個欄位。使用此腳本選擇的視窗或目前清單的最後一個元素。

參數

  • identifier - string 不區分大小寫。傳回部分列出了所有支援的值和結果類型。未知名稱傳回空字串。
  • key - 可選int,預設 - 1。按鈕/文字/object/指令的索引為0;這不是ID控制。負索引和越界會導致按鈕出現 0 或文字欄位出現空字串。其他識別符不使用密鑰。

傳回值

結果的類型取決於標識符。 int:buttonlen — 常規按鈕的數量; Button — 按索引鍵的 ButtonID; textlen — 可用文字元素的數量; injid — 目前視窗索引;回复- 0 (不儲存回應歷史記錄);客戶內部— 1 對於找到的即時窗口, 0 在缺席的情況下; objectcount — 即時控制項的數量,包括嵌套控制項。 string: serial 和 gutpid - 十六進位字串 0xXXXXXXXX; text — 索引鍵處的元素文字; object ——控制類型名稱;指令——控制描述(類型、頁面、 ID、座標、尺寸和支援的欄位)。在沒有視窗的情況下,數字標識符給出 0, string - 空字串。因吉德=0 也是一個有效的第一個索引:就其本身而言 0 並不能證明沒有窗口。這不是 Array 或 Pascal TGumpInfo。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • SelectGump/InfoGump 指定僅在目前運行時選擇的視窗。如果選定的視窗關閉,則使用目前清單中的最後一項,這不一定是時間上最新的項。
  • textlen/text 指的是可用的文字控件,而不是伺服器包的原始字串池。 object/command 指的是整個即時控制樹。來自不同列表的索引不能混合。
  • 每個呼叫分別讀取當前狀態。對於匹配的serial、GumpID 和列表,請使用GetGumpInfo。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。讀取所選視窗的ID - 直接腳本

參數與執行流程:

  • gigpid 和 serial 傳回已格式化為十六進位的字串;不需要額外的十六進位。空白行表示讀取時沒有視窗。
var id = UO.LastGump("gumpid");
var serial = UO.LastGump("serial");
UO.Print(id + " / " + serial);

2。枚舉 ButtonID - 腳本函數

參數與執行流程:

  • Buttonlen — 按鈕數量; i 是從 0 到 count-1 的行索引。按鈕 - ID 用於答案,而不是圖形或索引。更換視窗時,請重新閱讀清單。
return  RunScenario();
 object? RunScenario()
{
    var count = UO.LastGump("buttonlen");
    var i = 0;
    while (Truth(i < count))
    {
        var button = UO.LastGump("button", i);
        UO.Print(Convert.ToString(button));
        i = i + 1;
    }

    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。選擇後讀取文字 - 腳本類

參數與執行流程:

  • 0x12345678 是 GumpID/serial 的範例,將 ID 替換為所需的形式。 key=0的文字讀取第一個可用的文字控制項;這是一個與按鈕不同的清單。
  • SelectGump 報告指定視窗不存在,但不阻塞後續讀取:如有必要,單獨檢查傳回的gumpid。
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.SelectGump(0x12345678);
        if (Truth(UO.LastGump("inclient")))
        {
            var count = UO.LastGump("textlen");
            if (Truth(count > 0))
            {
                UO.Print(UO.LastGump("text", 0));
            }
        }

        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。

UO.LastGump(identifier) — UO.LastGump(String)

參數: identifier (String)

結果: dynamic / Any.

呼叫時:

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

public InjectionValue LastGump(string identifier) => LastGump(identifier, -1);

UO.LastGump(identifier, key) — UO.LastGump(String,Integer)

參數: identifier (String), key (Integer)

結果: dynamic / Any.

呼叫時:

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

public InjectionValue LastGump(string identifier, int key) => ConvertGumpValue(identifier, bridge.GetGumpValue(-1, identifier, key));

UO.NumGumpButton

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

C# 簽章

int UO.NumGumpButton(object? gumpIndex, object? value);

根據嚴格的視窗索引和確切的 ButtonID 啟動現有的伺服器 Gump 按鈕。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。
  • value - int - 來自常規按鈕描述的 ButtonID。不是行號,不是 graphic 按鈕,也不是 GumpID。

傳回值

int (bool) - 1,如果找到窗口和按钮并执行本地操作; 0 如果没有窗口/按钮。更改頁面也會回傳1。這不是伺服器處理的確認。

該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • SwitchPage按鈕在本地切換頁面。啟動按鈕會引起阿甘響應;窗戶通常是關閉的。與SendGumpSelect不同,此指令需要控制樹中現有的ButtonID。

獨立的 C# 腳本

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

簡單範例

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

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

var result = UO.NumGumpButton(0, 77);
UO.Print("NumGumpButton: " + Convert.ToString(result));

1。按下眾所周知的按鈕 - 直接腳本

參數與執行流程:

  • 0 是視窗索引,77 是來自檢查器的範例 ButtonID。您的表格需要真實的ID。
var ok = UO.NumGumpButton(0, 77);
if (Truth(ok == 0))
{
    UO.Print("Button not found");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。首先檢查視窗類型 - 腳本函數

參數與執行流程:

  • 0x12345678 是預期的 GumpID,100 是 ButtonID。這兩個數字屬於不同的空間ID。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpID(0) == 0x12345678))
    {
        var ok = UO.NumGumpButton(0, 100);
    }

    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。更改按鈕之前的複選框 - 腳本類

參數與執行流程:

  • 33 - ID 複選框,1 - 啟用,100 - 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()
    {
        if (Truth(UO.NumGumpCheckBox(0, 33, 1)))
        {
            var ok = UO.NumGumpButton(0, 100);
        }

        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。

UO.NumGumpButton(gumpIndex, value) — UO.NumGumpButton(Any,Any)

參數: gumpIndex (Any), value (Any)

結果: int / Integer.

呼叫時:

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

case "numgumpbutton": return (bridge is IApiGumpAccess buttons

                    ? buttons.ActivateGumpButtonAtIndex(Arg(0), Arg(1)) : bridge.ActivateGumpButton(Arg(0), Arg(1))) != 0 ? InjectionValue.True : InjectionValue.False;

UO.NumGumpCheckBox

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

C# 簽章

int UO.NumGumpCheckBox(object? gumpIndex, object? cbid, object? value);

依索引設定伺服器 Gump 中標誌的狀態。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。
  • cbid - int - Gump 描述中的確切 ID 元素。這不是元件的序號;而是元件的序號。缺失的 ID 不會被索引取代。
  • value — int — 1 啟用/選擇,0 停用。非零數字值、true 和checked 也被識別。推薦0和1。

傳回值

int (bool) — 1,如果找到所需的元素且其最終值與指定的值相符; 0 如果索引無效、ID/元素類型遺失,或欄位未採用精確值。重新設定已經設定的值也成功。

該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 更改本地狀態。發送欄位和選取的單選按鈕,然後傳送按鈕回應。
  • 選擇單選按鈕會取消選擇同一組中相鄰的單選按鈕;常規複選框是獨立的。

獨立的 C# 腳本

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

簡單範例

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

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

var result = UO.NumGumpCheckBox(0, 33, 1);
UO.Print("NumGumpCheckBox: " + Convert.ToString(result));

1。設定值並檢查結果 - 直接腳本

參數與執行流程:

  • 0 — 視窗索引; 33 — 精確CBID; 1 - 新值。將 33 替換為阿甘中的 ID。
var ok = UO.NumGumpCheckBox(0, 33, 1);
if (Truth(ok == 0))
{
    UO.Print("Control missing or value rejected");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。清除值 - 腳本函數

參數與執行流程:

  • 0 清除欄位或取消選取它。傳回更改成功,而不是欄位的新值。
return  RunScenario();
 object? RunScenario()
{
    var ok = UO.NumGumpCheckBox(0, 33, 0);
    UO.Print(Convert.ToString(ok));
    return null;
}

3。回覆前填寫 - 腳本類

參數與執行流程:

  • 100 - 伺服器ButtonID確認範例;它需要更換你的窗戶的ID。 0到SendGumpSelect(0,100)是視窗索引。
  • 答案可以關閉阿甘並改變索引。 send表示本地發送,是未經伺服器確認的操作結果。
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()
    {
        if (Truth(UO.NumGumpCheckBox(0, 33, 1)))
        {
            var sent = UO.SendGumpSelect(0, 100);
            UO.Print(Convert.ToString(sent));
        }

        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。

UO.NumGumpCheckBox(gumpIndex, cbid, value) — UO.NumGumpCheckBox(Any,Any,Any)

參數: gumpIndex (Any), cbid (Any), value (Any)

結果: int / Integer.

呼叫時:

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

case "numgumpcheckbox": return SetIndexedGumpValue(Arg(0), "checkbox", Arg(1), Text(2));

UO.NumGumpRadiobutton

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

C# 簽章

int UO.NumGumpRadiobutton(object? gumpIndex, object? radiobuttonID, object? value);

依索引設定伺服器 Gump 中單選按鈕的狀態。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。
  • radiobuttonID - int - Gump 描述中的確切 ID 元素。這不是元件的序號;而是元件的序號。缺失的 ID 不會被索引取代。
  • value — int — 1 啟用/選擇,0 停用。非零數字值、true 和checked 也被識別。推薦0和1。

傳回值

int (bool) — 1,如果找到所需的元素且其最終值與指定的值相符; 0 如果索引無效、ID/元素類型遺失,或欄位未採用精確值。重新設定已經設定的值也成功。

該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 更改本地狀態。發送欄位和選取的單選按鈕,然後傳送按鈕回應。
  • 選擇單選按鈕會取消選擇同一組中相鄰的單選按鈕;常規複選框是獨立的。

獨立的 C# 腳本

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

簡單範例

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

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

var result = UO.NumGumpRadiobutton(0, 33, 1);
UO.Print("NumGumpRadiobutton: " + Convert.ToString(result));

1。設定值並檢查結果 - 直接腳本

參數與執行流程:

  • 0 — 視窗索引; 33 — 精確的 RadiobuttonID; 1 - 新值。將 33 替換為阿甘中的 ID。
var ok = UO.NumGumpRadiobutton(0, 33, 1);
if (Truth(ok == 0))
{
    UO.Print("Control missing or value rejected");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。清除值 - 腳本函數

參數與執行流程:

  • 0 清除欄位或取消選取它。傳回更改成功,而不是欄位的新值。
return  RunScenario();
 object? RunScenario()
{
    var ok = UO.NumGumpRadiobutton(0, 33, 0);
    UO.Print(Convert.ToString(ok));
    return null;
}

3。回覆前填寫 - 腳本類

參數與執行流程:

  • 100 - 伺服器ButtonID確認範例;它需要更換你的窗戶的ID。 0到SendGumpSelect(0,100)是視窗索引。
  • 答案可以關閉阿甘並改變索引。 send表示本地發送,是未經伺服器確認的操作結果。
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()
    {
        if (Truth(UO.NumGumpRadiobutton(0, 33, 1)))
        {
            var sent = UO.SendGumpSelect(0, 100);
            UO.Print(Convert.ToString(sent));
        }

        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。

UO.NumGumpRadiobutton(gumpIndex, radiobuttonID, value) — UO.NumGumpRadiobutton(Any,Any,Any)

參數: gumpIndex (Any), radiobuttonID (Any), value (Any)

結果: int / Integer.

呼叫時:

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

case "numgumpradiobutton": return SetIndexedGumpValue(Arg(0), "radio", Arg(1), Text(2));

UO.NumGumpTextEntry

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

C# 簽章

int UO.NumGumpTextEntry(object? gumpIndex, object? textEntryID, object? value);

依索引設定伺服器 Gump 中輸入欄位的文字。

參數

  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。
  • textEntryID - int - Gump 描述中的確切 ID 元素。這不是元件的序號;而是元件的序號。缺失的 ID 不會被索引取代。
  • value - string - 新文本。空字串會清除該欄位;保留欄位本身的長度/字元限制。

傳回值

int (bool) — 1,如果找到所需的元素且其最終值與指定的值相符; 0 如果索引無效、ID/元素類型遺失,或欄位未採用精確值。重新設定已經設定的值也成功。

該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 更改本地狀態。發送欄位和選取的單選按鈕,然後傳送按鈕回應。
  • 選擇單選按鈕會取消選擇同一組中相鄰的單選按鈕;常規複選框是獨立的。

獨立的 C# 腳本

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

簡單範例

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

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

var result = UO.NumGumpTextEntry(0, 33, "500");
UO.Print("NumGumpTextEntry: " + Convert.ToString(result));

1。設定值並檢查結果 - 直接腳本

參數與執行流程:

  • 0 — 視窗索引; 33 — 精確TextEntryID; '500' 是新值。將 33 替換為阿甘中的 ID。
var ok = UO.NumGumpTextEntry(0, 33, "500");
if (Truth(ok == 0))
{
    UO.Print("Control missing or value rejected");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。清除值 - 腳本函數

參數與執行流程:

  • '' 清除該欄位或取消選取它。傳回更改成功,而不是欄位的新值。
return  RunScenario();
 object? RunScenario()
{
    var ok = UO.NumGumpTextEntry(0, 33, "");
    UO.Print(Convert.ToString(ok));
    return null;
}

3。回覆前填寫 - 腳本類

參數與執行流程:

  • 100 - 伺服器ButtonID確認範例;它需要更換你的窗戶的ID。 0到SendGumpSelect(0,100)是視窗索引。
  • 答案可以關閉阿甘並改變索引。 send表示本地發送,是未經伺服器確認的操作結果。
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()
    {
        if (Truth(UO.NumGumpTextEntry(0, 33, "500")))
        {
            var sent = UO.SendGumpSelect(0, 100);
            UO.Print(Convert.ToString(sent));
        }

        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。

UO.NumGumpTextEntry(gumpIndex, textEntryID, value) — UO.NumGumpTextEntry(Any,Any,Any)

參數: gumpIndex (Any), textEntryID (Any), value (Any)

結果: int / Integer.

呼叫時:

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

case "numgumptextentry": return SetIndexedGumpValue(Arg(0), "textentry", Arg(1), Text(2));

UO.SelectGump

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

C# 簽章

void UO.SelectGump(object? id);

選擇現有的伺服器口令以供後續呼叫。

參數

  • id - int:先符合LocalSerial或ServerSerial,然後在目前的gumps列表中索引零。這些不是 ID 按鈕。

傳回值

void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。

行為

  • Bridge.SelectGump 儲存 _selectedServerGump。若 serial 不匹配,則採用索引 0..count-1。未找到 - 選定的 Gump 變為 null 並顯示一則訊息。
  • Gump 無法打開,也沒有回應傳送到伺服器。開啟/關閉視窗時索引會發生變化;為了穩定選擇,請使用目前的serial/id。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.SelectGump");
UO.SelectGump(0);

1。直接呼叫-直接腳本

參數與執行流程:

  • 選擇現有的伺服器口令以供後續呼叫。
if (Truth(UO.GumpExists(0)))
{
    UO.SelectGump(0);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。明確選項 - 腳本函數

參數與執行流程:

  • Bridge.SelectGump 儲存 _selectedServerGump。若 serial 不匹配,則採用索引 0..count-1。未找到 - 選定的 Gump 變為 null 並顯示一則訊息。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        var serial = UO.GetGumpSerial(0);
        UO.SelectGump(serial);
    }

    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。完整的輔助函數 - 腳本類

參數與執行流程:

  • Gump 無法打開,也沒有回應傳送到伺服器。開啟/關閉視窗時索引會發生變化;為了穩定選擇,請使用目前的serial/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()
    {
        if (Truth(UO.GetGumpsCount() > 0))
        {
            UO.SelectGump(0);
            UO.Print(UO.LastGump("gumpid"));
        }

        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。

UO.SelectGump(id) — UO.SelectGump(Any)

參數: id (Any)

結果: void / Unit.

呼叫時:

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

public void SelectGump(InjectionValue id) => bridge.SelectGump(NumberConversions.ToInt(id));

UO.SendGumpSelect

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

C# 簽章

int UO.SendGumpSelect(object? triggerId);
int UO.SendGumpSelect(object? gumpIndex, object? triggerId);
int UO.SendGumpSelect(object? serial, object? gumpId, object? triggerId);
int UO.SendGumpSelect(object? serial, object? gumpId, object? triggerId, object? timeout);

發送所選伺服器口令的 ButtonID。

參數

  • triggerId - int 或數字字串 - 伺服器 ButtonID。 0通常表示關閉/拒絕,但具體動作由伺服器決定。樹中不需要可見的 ButtonID。
  • gumpIndex — 強制 int — 活動伺服器口令的索引,從 0 到 GetGumpsCount()-1。這不是 GumpID/serial。負數和列表外的索引無效。開啟、關閉和重新排序視窗可以更改索引;行動前檢查GetGumpID/GetGumpSerial。僅以兩個參數形式使用(gumpIndex、triggerId)。
  • serial — 在3/4 參數形式中,數字32 位元serial。 0 或 -1 禁用過濾器 serial;其餘數字(包括最高有效位的負數)將被精確比較。
  • gumpId — 在 3/4 參數形式中,數字 32 位元 GumpID。 0 或 -1 停用 GumpID 過濾器。允許使用十六進位字串;此處不允許使用名稱 AddObject。
  • timeout — 可選的第四個參數,等待匹配對的 int 毫秒 ID。預設 0 - 立即嘗試一次;負數有限 0。複查間隔 20 多發性硬化症。

傳回值

int — 1,如果找到即時伺服器口令並呼叫回應; 0 如果在逾時之前沒有找到視窗。不回傳選取的ID,也不等待伺服器確認結果。

行為

  • 與活動伺服器 Gump 一起使用。背包、地圖、設定等本地視窗不包含在此列表中。一次呼叫讀取遊戲執行緒中的資料;不同的呼叫可能會看到列表的不同狀態。
  • 一個參數選擇此腳本之前選擇的 Gump;如果關閉/未選擇 - 目前清單的最後一個元素。兩個參數指定嚴格索引。三/四 - 一對附過濾器的ID。
  • 選擇和呼叫回應發生在一個遊戲線程請求中。透過停止該過程來取消等待。不要將直接伺服器回應與頁面變更混淆:SwitchPage 按鈕需要NumGumpButton。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。回覆選定視窗-直接腳本

參數與執行流程:

  • SelectGump 選擇類型/serial 0x12345678 或報告缺席; 100 - 按鈕ID。
  • 如果不再有選定的窗口,則單一參數形式將使用最後一個可用的窗口。為了嚴格識別,請使用兩個 ID 的表格。
UO.SelectGump(0x12345678);
var sent = UO.SendGumpSelect(100);
UO.Print(Convert.ToString(sent));

2。回覆第一個清單項目 - 腳本功能

參數與執行流程:

  • 0是索引,100是ButtonID。它不是serial=0,也不是GumpID=100。
return  RunScenario();
 object? RunScenario()
{
    var sent = UO.SendGumpSelect(0, 100);
    if (Truth(sent == 0))
    {
        UO.Print("No gump at index zero");
    }

    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。從快照中專門回覆視窗 - 腳本類

參數與執行流程:

  • 資訊[0] - serial,訊息[1] - GumpID,100 - 按鈕ID。更改索引不會將回應重新導向到不同的類型/所有者。
  • Serial/GumpID值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()
    {
        var info = UO.GetGumpInfo(0);
        if (Truth(ArrayLength(info) == 5))
        {
            var sent = UO.SendGumpSelect(info[0], info[1], 100);
        }

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

4。期望特定類型 - 直接腳本

參數與執行流程:

  • 0 禁用過濾器serial; 0x87654321 — 精確ID,具有最高有效位; 100 — 按鈕; 2000 — 最長等待時間(以毫秒為單位)。不用作無條件通配符。
var sent = UO.SendGumpSelect(0, 0x87654321, 100, 2000);
UO.Print(Convert.ToString(sent));

命令實作

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

UO.SendGumpSelect(triggerId) — UO.SendGumpSelect(Integer)

參數: triggerId (Integer/String)

結果: int / Integer.

呼叫時:

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

public int SendGumpSelect(int triggerId) => bridge.SendGumpSelect(triggerId);

UO.SendGumpSelect(triggerId) — UO.SendGumpSelect(String)

參數: triggerId (Integer/String)

結果: int / Integer.

呼叫時:

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

public int SendGumpSelect(string triggerId) => SendGumpSelect(NumberConversions.ToInt(triggerId));

UO.SendGumpSelect(gumpIndex, triggerId) — UO.SendGumpSelect(Any,Any)

參數: gumpIndex (Any), triggerId (Any)

結果: int / Integer.

呼叫時:

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

public int SendGumpSelect(InjectionValue gumpIndex, InjectionValue triggerId)

            => bridge.SendGumpSelect(NumberConversions.ToInt(gumpIndex), NumberConversions.ToInt(triggerId));

UO.SendGumpSelect(serial, gumpId, triggerId) — UO.SendGumpSelect(Any,Any,Any)

參數: serial (Any), gumpId (Any), triggerId (Any)

結果: int / Integer.

呼叫時:

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

public int SendGumpSelect(InjectionValue serial, InjectionValue gumpId, InjectionValue triggerId)

            => bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId), NumberConversions.ToInt(triggerId));

UO.SendGumpSelect(serial, gumpId, triggerId, timeout) — UO.SendGumpSelect(Any,Any,Any,Any)

參數: serial (Any), gumpId (Any), triggerId (Any), timeout (Any)

結果: int / Integer.

呼叫時:

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

public int SendGumpSelect(InjectionValue serial, InjectionValue gumpId, InjectionValue triggerId, InjectionValue timeout)

            => bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId),

                NumberConversions.ToInt(triggerId), Math.Max(0, NumberConversions.ToInt(timeout)));

UO.SetGump

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

C# 簽章

void UO.SetGump(object? identifier, object? key, object? stateValue);
void UO.SetGump(object? gumpId, object? identifier, object? key, object? stateValue);

更改現有伺服器口令的欄位。

參數

  • gumpId — 僅具有四個參數的形式:serial/id 或零 Gump 索引。有三種用途的形式 -1 — 選定的/最後的阿甘。
  • identifier — 字串“checkbox”、“radio”或“textentry”,大小寫不重要。不受支援的名稱不會變更該欄位。
  • key - int:第一個 LocalSerial/ID 元素,然後是指定型別元素中的零索引。無元素 - 錯誤訊息。
  • stateValue — 對於複選框/單選框:「checked」、「true」不區分大小寫或非零識別的 int 包括;另一個關閉。對於文字輸入 - 通過 ToString 的所有文字。

傳回值

void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。

行為

  • SetGumpValue 呼叫TrySetGumpValue;使用 0 顯示一則訊息。更改已存在的 Gump 的本機字段,並且不註冊等待新視窗的掛鉤。
  • 更改複選框/文字條目本身不會向伺服器發送回應。要接聽,請透過SendGumpSelect/WaitGump選擇按鈕;單選按鈕在單獨的視圖中處理。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.SetGump");
UO.SetGump("checkbox", 0, 1);

1。直接呼叫-直接腳本

參數與執行流程:

  • 更改現有伺服器口令的欄位。
if (Truth(UO.GetGumpsCount() > 0))
{
    UO.SetGump("checkbox", 0, 1);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。明確選項 - 腳本函數

參數與執行流程:

  • SetGumpValue 呼叫TrySetGumpValue;使用 0 顯示一則訊息。更改已存在的 Gump 的本機字段,並且不註冊等待新視窗的掛鉤。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        UO.SetGump(0, "textentry", 0, "Example");
    }

    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。完整的輔助函數 - 腳本類

參數與執行流程:

  • 更改複選框/文字條目本身不會向伺服器發送回應。要接聽,請透過SendGumpSelect/WaitGump選擇按鈕;單選按鈕在單獨的視圖中處理。
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()
    {
        if (Truth(UO.GetGumpsCount() > 0))
        {
            UO.SetGump("radio", 0, "true");
            UO.SetGump("checkbox", 0, 0);
        }

        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。

UO.SetGump(identifier, key, stateValue) — UO.SetGump(Any,Any,Any)

參數: identifier (Any), key (Any), stateValue (Any)

結果: void / Unit.

呼叫時:

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

public void SetGump(InjectionValue identifier, InjectionValue key, InjectionValue stateValue)

            => bridge.SetGumpValue(-1, identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString());

UO.SetGump(gumpId, identifier, key, stateValue) — UO.SetGump(Any,Any,Any,Any)

參數: gumpId (Any), identifier (Any), key (Any), stateValue (Any)

結果: void / Unit.

呼叫時:

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

public void SetGump(InjectionValue gumpId, InjectionValue identifier, InjectionValue key, InjectionValue stateValue)

            => bridge.SetGumpValue(NumberConversions.ToInt(gumpId), identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString());

UO.WaitGump

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

C# 簽章

void UO.WaitGump(object? value);
void UO.WaitGump(object? trigger1, object? trigger2);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14, object? trigger15);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14, object? trigger15, object? trigger16);

註冊對按鈕的一系列一次性回應。腳本立即繼續運作;沒有視窗不會導致 30 秒延遲。

參數

  • value — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger1 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger2 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger3 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger4 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger5 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger6 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger7 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger8 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger9 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger10 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger11 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger12 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger13 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger14 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger15 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。
  • trigger16 — 序列元素:int ButtonID、數字 string、帶有 |/逗號的字串或此類元素的陣列。順序是從左到右。一般邊界和規則triggerId適用。 Value 是 object? 形式的唯一參數的名稱,它也接受一個陣列。

傳回值

void - 不回傳任何內容:既不成功,也不回傳新值,也不回傳伺服器確認。

行為

  • 尋找具有所需 ButtonID 的真實啟動按鈕;沒有所需按鈕的用於切換頁面和視窗的按鈕將被跳過。後續的ID不會繞過第一個等待的。對於一次加價交付 - 一個視窗中不超過一個回應。更新的標記可以使用相同的視窗物件。
  • 同一腳本的下一個 WaitGump 完成其待處理序列。搜尋不限於GumpID:使用NumGumpButton或SendGumpSelect進行精確選擇。 ButtonID=0 僅當存在具有 ID 0 的現有啟動按鈕時才有效;這不是一個通用的閉包。
  • 正常完成過程可節省等待時間。用他的名字取消所有者或 Terminate可以消除他的等待;TerminateAll 刪除所有內容,包括完成程序後剩餘的內容。改變世界可以清除佇列。期望不會儲存到設定檔中。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.WaitGump");
UO.WaitGump(100);

1。答案只有一个——直接脚本

參數與執行流程:

  • 100 — 回應的 ButtonID。 WaitGump先於UseObject註冊;進一步執行並不表示伺服器已經接受了回應。
UO.WaitGump(100);
UO.UseObject("0x40001234");

2。多個步驟 - 腳本函數

參數與執行流程:

  • 7、22和1是順序表單的ButtonID。這些ID是按順序檢查的。參數數量不指定延遲;呼叫記錄整個序列。
return  RunScenario();
 object? RunScenario()
{
    UO.WaitGump(7, 22, 1);
    UO.UseObject("0x40001234");
    return null;
}

3。取消期望 - 脚本类

參數與執行流程:

  • 7|22|1 行指定了相同的序列。 TerminateAll然後清除所有待處理的gump並停止所有程序;這是一項全球行動。
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.WaitGump("7|22|1");
        UO.TerminateAll();
        return null;
    }
}

命令實作

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

UO.WaitGump(value) — UO.WaitGump(Any)

參數: value (Any/Integer/String)

結果: void / Unit.

呼叫時:

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

case "waitgump": CompactWaitGump(arguments); return InjectionValue.Unit;

UO.WaitGump(value) — UO.WaitGump(Integer)

參數: value (Any/Integer/String)

結果: void / Unit.

呼叫時:

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

public void WaitGump(int triggerId)

        {

            if (bridge is IApiGumpAutomation automation) automation.QueueGumpButtons(new[] { triggerId });

            else bridge.WaitGumpSelect(triggerId, 30_000);

        }

UO.WaitGump(value) — UO.WaitGump(String)

參數: value (Any/Integer/String)

結果: void / Unit.

呼叫時:

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

public void WaitGump(string triggerId)

        {

            string text = (triggerId ?? string.Empty).Trim();

            if (text.Contains('|') || text.Contains(','))

            {

                InjectionValue[] chain = text.Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries)

                    .Select(value => new InjectionValue(value.Trim())).ToArray();

                CompactWaitGump(chain);

                return;

            }

            WaitGump(NumberConversions.ToInt(triggerId));

        }

UO.WaitGump(trigger1, trigger2) — UO.WaitGump(Any,Any)

參數: trigger1 (Any), trigger2 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3) — UO.WaitGump(Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4) — UO.WaitGump(Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5) — UO.WaitGump(Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6) — UO.WaitGump(Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14, trigger15) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any), trigger15 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14, trigger15, trigger16) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

參數: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any), trigger15 (Any), trigger16 (Any)

結果: void / Unit.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGumpCheck

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

C# 簽章

void UO.WaitGumpCheck(object? index, object? state);
void UO.WaitGumpCheck(object? index, object? state, object? index2, object? state2);
void UO.WaitGumpCheck(object? index, object? state, object? index2, object? state2, object? index3, object? state3);

更改目前命令的最多三個複選框字段。

參數

  • index — int ID 元素或零索引,如 SetGump。參數成對出現:選擇器、值。
  • index2 — int ID 元素或零索引,如 SetGump。參數成對出現:選擇器、值。
  • index3 — int ID 元素或零索引,如 SetGump。參數成對出現:選擇器、值。
  • state — 通過 ToString 的字段值。 Checkbox包含“checked”/“true”/非零數字; textentry 接受文字。
  • state2 — 通過 ToString 的字段值。 Checkbox包含“checked”/“true”/非零數字; textentry 接受文字。
  • state3 — 通過 ToString 的字段值。 Checkbox包含“checked”/“true”/非零數字; textentry 接受文字。

傳回值

void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。

行為

  • ExecuteLegacyManualAlias 成對地遍歷參數並為每個參數呼叫 SetGumpValue(-1, "checkbox", 選擇器, value)。所有註冊表格都是2、4或6參數。
  • UO.Wait 這個名字並不意味著等待:沒有阻塞,也沒有等待未來的隊列。如果缺少该字段,则会显示错误。不發送按鈕響應。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.WaitGumpCheck");
UO.WaitGumpCheck(0, 1);

1。直接呼叫-直接腳本

參數與執行流程:

  • 更改目前命令的最多三個複選框字段。
if (Truth(UO.GetGumpsCount() > 0))
{
    UO.WaitGumpCheck(0, 1);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。明確選項 - 腳本函數

參數與執行流程:

  • ExecuteLegacyManualAlias 成對地遍歷參數並為每個參數呼叫 SetGumpValue(-1, "checkbox", 選擇器, value)。所有註冊表格都是2、4或6參數。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        UO.WaitGumpCheck(0, 1, 1, 0);
    }

    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。完整的輔助函數 - 腳本類

參數與執行流程:

  • UO.Wait 這個名字並不意味著等待:沒有阻塞,也沒有等待未來的隊列。如果缺少该字段,则会显示错误。不發送按鈕響應。
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()
    {
        if (Truth(UO.GetGumpsCount() > 0))
        {
            UO.WaitGumpCheck(0, 1, 1, 0, 2, 1);
        }

        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。

UO.WaitGumpCheck(index, state) — UO.WaitGumpCheck(Any,Any)

參數: index (Any), state (Any)

結果: void / Unit.

呼叫時:

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

case "waitgumpcheck":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));

                    break;

UO.WaitGumpCheck(index, state, index2, state2) — UO.WaitGumpCheck(Any,Any,Any,Any)

參數: index (Any), state (Any), index2 (Any), state2 (Any)

結果: void / Unit.

呼叫時:

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

case "waitgumpcheck":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));

                    break;

UO.WaitGumpCheck(index, state, index2, state2, index3, state3) — UO.WaitGumpCheck(Any,Any,Any,Any,Any,Any)

參數: index (Any), state (Any), index2 (Any), state2 (Any), index3 (Any), state3 (Any)

結果: void / Unit.

呼叫時:

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

case "waitgumpcheck":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));

                    break;

UO.WaitGumpEntry

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

C# 簽章

void UO.WaitGumpEntry(object? index, object? text);
void UO.WaitGumpEntry(object? index, object? text, object? index2, object? text2);
void UO.WaitGumpEntry(object? index, object? text, object? index2, object? text2, object? index3, object? text3);

更改目前命令的最多三個文字輸入欄位。

參數

  • index — int ID 元素或零索引,如 SetGump。參數成對出現:選擇器、值。
  • index2 — int ID 元素或零索引,如 SetGump。參數成對出現:選擇器、值。
  • index3 — int ID 元素或零索引,如 SetGump。參數成對出現:選擇器、值。
  • text — 通過 ToString 的字段值。 Checkbox包含“checked”/“true”/非零數字; textentry 接受文字。
  • text2 — 通過 ToString 的字段值。 Checkbox包含“checked”/“true”/非零數字; textentry 接受文字。
  • text3 — 通過 ToString 的字段值。 Checkbox包含“checked”/“true”/非零數字; textentry 接受文字。

傳回值

void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。

行為

  • ExecuteLegacyManualAlias 成對地遍歷參數並為每個參數呼叫 SetGumpValue(-1, "textentry", 選擇器, value)。所有註冊表格都是2、4或6參數。
  • UO.Wait 這個名字並不意味著等待:沒有阻塞,也沒有等待未來的隊列。如果缺少该字段,则会显示错误。不發送按鈕響應。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.WaitGumpEntry");
UO.WaitGumpEntry(0, "Example");

1。直接呼叫-直接腳本

參數與執行流程:

  • 更改目前命令的最多三個文字輸入欄位。
if (Truth(UO.GetGumpsCount() > 0))
{
    UO.WaitGumpEntry(0, "Example");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。明確選項 - 腳本函數

參數與執行流程:

  • ExecuteLegacyManualAlias 成對地遍歷參數並為每個參數呼叫 SetGumpValue(-1, "textentry", 選擇器, value)。所有註冊表格都是2、4或6參數。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        UO.WaitGumpEntry(0, "First", 1, "Second");
    }

    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。完整的輔助函數 - 腳本類

參數與執行流程:

  • UO.Wait 這個名字並不意味著等待:沒有阻塞,也沒有等待未來的隊列。如果缺少该字段,则会显示错误。不發送按鈕響應。
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()
    {
        if (Truth(UO.GetGumpsCount() > 0))
        {
            UO.WaitGumpEntry(0, "First", 1, "Second", 2, "Third");
        }

        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。

UO.WaitGumpEntry(index, text) — UO.WaitGumpEntry(Any,Any)

參數: index (Any), text (Any)

結果: void / Unit.

呼叫時:

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

case "waitgumpentry":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));

                    break;

UO.WaitGumpEntry(index, text, index2, text2) — UO.WaitGumpEntry(Any,Any,Any,Any)

參數: index (Any), text (Any), index2 (Any), text2 (Any)

結果: void / Unit.

呼叫時:

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

case "waitgumpentry":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));

                    break;

UO.WaitGumpEntry(index, text, index2, text2, index3, text3) — UO.WaitGumpEntry(Any,Any,Any,Any,Any,Any)

參數: index (Any), text (Any), index2 (Any), text2 (Any), index3 (Any), text3 (Any)

結果: void / Unit.

呼叫時:

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

case "waitgumpentry":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));

                    break;
⚠️ **GitHub.com Fallback** ⚠️