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

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

滑鼠和鍵盤

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

滑鼠和鍵盤輸入。螢幕座標、世界單元和口令內的座標有不同的意義。

部分

主題 命令與解釋
Click UO.Click
LClick UO.LClick
RClick UO.RClick
DoubleClick UO.LDblClick · UO.RDblClick
KeyPress UO.KeyPress
Press UO.Press

所有主題命令

輸入

UO.Click · UO.LClick · UO.RClick · UO.LDblClick · UO.RDblClick · UO.KeyPress · UO.Press

關於該主題的範例

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

UO.LClick

參數、結果及所有場景

UO.LClick(100, 100);

UO.KeyPress

參數、結果及所有場景

UO.KeyPress(0x70);

完整指令說明


UO.Click

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

C# 簽章

void UO.Click(object? name);

透過 GameActions.SingleClick 發送物件的點選。

參數

  • name — 物件的序號或支援的 self/backpack/lasttarget/saved 物件名稱;數字字串和 0x 字串由執行時間解析。

傳回值

void - 無回傳值。

行為

  • Click透過ObjectChecked解析連結。 ClickOnObject 首先使用serial 的Arg 并调用Click(int)。這是對物品簽名/資訊的請求,而不是 DoubleClick 或物品的使用。伺服器響應是異步的。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.Click");
UO.Click("self");

1。點擊人物-直接腳本

參數與執行流程:

  • 點選一下就會傳送到self。
UO.Click("self");

2。點擊最後一個目標-腳本功能

參數與執行流程:

  • 在發送之前,會檢查目標的本地存在性。
return  RunScenario();
 object? RunScenario()
{
    var target = UO.LastTarget();
    if (Truth(UO.Exists(target)))
    {
        UO.Click(target);
    }

    return null;
}

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

3。他們會點擊背包-腳本類

參數與執行流程:

  • 點擊背包不會像雙擊那樣打開它。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var bag = UO.Backpack();
        if (Truth(bag != 0))
        {
            UO.Click(bag);
        }

        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.Click(name) — UO.Click(Any)

參數: name (Any)

結果: void / Unit.

呼叫時:

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

public void Click(InjectionValue name) => ObjectChecked(name, id => Click(id));

UO.KeyPress

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

C# 簽章

void UO.KeyPress(object? key);
void UO.KeyPress(object? key, object? count);
void UO.KeyPress(object? key, object? count, object? delay);

合成一次或多次虛擬按鍵操作。

參數

  • key - int 虛擬鍵 Windows,簡化為 byte。它不是字串,也不是ID目標。
  • count — 可選重複次數,預設為1。 0/負 - 無需按下或等待。
  • delay - 每次按下(包括最後一次按下)後可選的毫秒暫停;預設為105。透過網橋傳輸。 Wait,不受此功能進一步限制。

傳回值

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

行為

  • Press 將所有表格轉寄至KeyPress。 KeyPress執行迴圈計數>0:bridge.KeyPress(key),bridge.Wait(delay),count--。橋發送 user32 keybd_event down/up。
  • 需要開啟具有輸入焦點的 Graphics ClassicUO;否則 RequireGameInput 會拋出錯誤。按一下處理目前介面/宏,不傳回伺服器指令的結果。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.KeyPress");
UO.KeyPress(0x70);

1。直接呼叫-直接腳本

參數與執行流程:

  • 合成一次或多次虛擬按鍵操作。
UO.KeyPress(0x70);

2。明確選項 - 腳本函數

參數與執行流程:

  • Press 將所有表格轉寄至KeyPress。 KeyPress執行迴圈計數>0:bridge.KeyPress(key),bridge.Wait(delay),count--。橋發送 user32 keybd_event down/up。
return  RunScenario();
 object? RunScenario()
{
    UO.KeyPress(0x70, 2, 250);
    return null;
}

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

參數與執行流程:

  • 需要開啟具有輸入焦點的 Graphics ClassicUO;否則 RequireGameInput 會拋出錯誤。按一下處理目前介面/宏,不傳回伺服器指令的結果。
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.KeyPress(0x70, 0);
        UO.Print("Zero count sends no key");
        return null;
    }
}

命令實作

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

UO.KeyPress(key) — UO.KeyPress(Integer)

參數: key (Integer)

結果: void / Unit.

呼叫時:

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

public void KeyPress(int key) => KeyPress(key, 1);

UO.KeyPress(key, count) — UO.KeyPress(Integer,Integer)

參數: key (Integer), count (Integer)

結果: void / Unit.

呼叫時:

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

public void KeyPress(int key, int count) => KeyPress(key, count, 105);

UO.KeyPress(key, count, delay) — UO.KeyPress(Integer,Integer,Integer)

參數: key (Integer), count (Integer), delay (Integer)

結果: void / Unit.

呼叫時:

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

public void KeyPress(int key, int count, int delay)

        {

            while (count > 0)

            {

                bridge.KeyPress(key);

                bridge.Wait(delay);

                count--;

            }

        }

UO.LClick

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

C# 簽章

void UO.LClick(object? x, object? y);

合成一次滑鼠點選:左鍵。

參數

  • x — ClassicUO 視窗像素中的 int X,而非世界座標。
  • y — ClassicUO 視窗像素中的 int Y,而非世界座標。

傳回值

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

行為

  • Bridge 呼叫 WarpMouse(x,y),更新 Mouse.Position 和 SDL_WarpMouseInWindow,然後MouseButton 向下/向上一次。雙擊之間沒有停頓。
  • 需要開啟輸入焦點的 ClassicUO 圖形視窗;否則RequireGameInput拋出InvalidOperationException。 user32 mouse_event 在 Windows 上可用。點下的按鈕/物件取決於目前介面。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.LClick");
UO.LClick(100, 100);

1。直接呼叫-直接腳本

參數與執行流程:

  • 合成一次滑鼠點選:左鍵。
UO.LClick(100, 100);

2。明確選項 - 腳本函數

參數與執行流程:

  • Bridge 呼叫 WarpMouse(x,y),更新 Mouse.Position 和 SDL_WarpMouseInWindow,然後MouseButton 向下/向上一次。雙擊之間沒有停頓。
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.LClick(x, y);
    return null;
}

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

參數與執行流程:

  • 需要開啟輸入焦點的 ClassicUO 圖形視窗;否則RequireGameInput拋出InvalidOperationException。 user32 mouse_event 在 Windows 上可用。點下的按鈕/物件取決於目前介面。
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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.LClick(x, y);
    }
}

命令實作

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

UO.LClick(x, y) — UO.LClick(Integer,Integer)

參數: x (Integer), y (Integer)

結果: void / Unit.

呼叫時:

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

public void LClick(int x, int y) => bridge.LClick(x, y);

UO.LDblClick

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

C# 簽章

void UO.LDblClick(object? x, object? y);

合成雙擊滑鼠:左鍵。

參數

  • x — ClassicUO 視窗像素中的 int X,而非世界座標。
  • y — ClassicUO 視窗像素中的 int Y,而非世界座標。

傳回值

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

行為

  • Bridge 呼叫 WarpMouse(x,y),更新 Mouse.Position 和 SDL_WarpMouseInWindow,然後MouseButton 向下/向上兩次。雙擊之間沒有停頓。
  • 需要開啟輸入焦點的 ClassicUO 圖形視窗;否則RequireGameInput拋出InvalidOperationException。 user32 mouse_event 在 Windows 上可用。點下的按鈕/物件取決於目前介面。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.LDblClick");
UO.LDblClick(100, 100);

1。直接呼叫-直接腳本

參數與執行流程:

  • 合成雙擊滑鼠:左鍵。
UO.LDblClick(100, 100);

2。明確選項 - 腳本函數

參數與執行流程:

  • Bridge 呼叫 WarpMouse(x,y),更新 Mouse.Position 和 SDL_WarpMouseInWindow,然後MouseButton 向下/向上兩次。雙擊之間沒有停頓。
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.LDblClick(x, y);
    return null;
}

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

參數與執行流程:

  • 需要開啟輸入焦點的 ClassicUO 圖形視窗;否則RequireGameInput拋出InvalidOperationException。 user32 mouse_event 在 Windows 上可用。點下的按鈕/物件取決於目前介面。
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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.LDblClick(x, y);
    }
}

命令實作

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

UO.LDblClick(x, y) — UO.LDblClick(Integer,Integer)

參數: x (Integer), y (Integer)

結果: void / Unit.

呼叫時:

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

public void LDblClick(int x, int y) => bridge.LDblClick(x, y);

UO.Press

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

C# 簽章

void UO.Press(object? key);
void UO.Press(object? key, object? count);
void UO.Press(object? key, object? count, object? delay);

合成一次或多次虛擬按鍵操作。

參數

  • key - int 虛擬鍵 Windows,簡化為 byte。它不是字串,也不是ID目標。
  • count — 可選重複次數,預設為1。 0/負 - 無需按下或等待。
  • delay - 每次按下(包括最後一次按下)後可選的毫秒暫停;預設為105。透過網橋傳輸。 Wait,不受此功能進一步限制。

傳回值

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

行為

  • Press 將所有表格轉寄至KeyPress。 KeyPress執行迴圈計數>0:bridge.KeyPress(key),bridge.Wait(delay),count--。橋發送 user32 keybd_event down/up。
  • 需要開啟具有輸入焦點的 Graphics ClassicUO;否則 RequireGameInput 會拋出錯誤。按一下處理目前介面/宏,不傳回伺服器指令的結果。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.Press");
UO.Press(0x70);

1。直接呼叫-直接腳本

參數與執行流程:

  • 合成一次或多次虛擬按鍵操作。
UO.Press(0x70);

2。明確選項 - 腳本函數

參數與執行流程:

  • Press 將所有表格轉寄至KeyPress。 KeyPress執行迴圈計數>0:bridge.KeyPress(key),bridge.Wait(delay),count--。橋發送 user32 keybd_event down/up。
return  RunScenario();
 object? RunScenario()
{
    UO.Press(0x70, 2, 250);
    return null;
}

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

參數與執行流程:

  • 需要開啟具有輸入焦點的 Graphics ClassicUO;否則 RequireGameInput 會拋出錯誤。按一下處理目前介面/宏,不傳回伺服器指令的結果。
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.Press(0x70, 0);
        UO.Print("Zero count sends no key");
        return null;
    }
}

命令實作

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

UO.Press(key) — UO.Press(Integer)

參數: key (Integer)

結果: void / Unit.

呼叫時:

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

public void Press(int key) => KeyPress(key);

UO.Press(key, count) — UO.Press(Integer,Integer)

參數: key (Integer), count (Integer)

結果: void / Unit.

呼叫時:

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

public void Press(int key, int count) => KeyPress(key, count);

UO.Press(key, count, delay) — UO.Press(Integer,Integer,Integer)

參數: key (Integer), count (Integer), delay (Integer)

結果: void / Unit.

呼叫時:

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

public void Press(int key, int count, int delay) => KeyPress(key, count, delay);

UO.RClick

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

C# 簽章

void UO.RClick(object? x, object? y);

合成一次滑鼠點選:右鍵。

參數

  • x — ClassicUO 視窗像素中的 int X,而非世界座標。
  • y — ClassicUO 視窗像素中的 int Y,而非世界座標。

傳回值

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

行為

  • Bridge 呼叫 WarpMouse(x,y),更新 Mouse.Position 和 SDL_WarpMouseInWindow,然後MouseButton 向下/向上一次。雙擊之間沒有停頓。
  • 需要開啟輸入焦點的 ClassicUO 圖形視窗;否則RequireGameInput拋出InvalidOperationException。 user32 mouse_event 在 Windows 上可用。點下的按鈕/物件取決於目前介面。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.RClick");
UO.RClick(100, 100);

1。直接呼叫-直接腳本

參數與執行流程:

  • 合成一次滑鼠點選:右鍵。
UO.RClick(100, 100);

2。明確選項 - 腳本函數

參數與執行流程:

  • Bridge 呼叫 WarpMouse(x,y),更新 Mouse.Position 和 SDL_WarpMouseInWindow,然後MouseButton 向下/向上一次。雙擊之間沒有停頓。
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.RClick(x, y);
    return null;
}

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

參數與執行流程:

  • 需要開啟輸入焦點的 ClassicUO 圖形視窗;否則RequireGameInput拋出InvalidOperationException。 user32 mouse_event 在 Windows 上可用。點下的按鈕/物件取決於目前介面。
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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.RClick(x, y);
    }
}

命令實作

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

UO.RClick(x, y) — UO.RClick(Integer,Integer)

參數: x (Integer), y (Integer)

結果: void / Unit.

呼叫時:

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

public void RClick(int x, int y) => bridge.RClick(x, y);

UO.RDblClick

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

C# 簽章

void UO.RDblClick(object? x, object? y);

合成雙擊滑鼠:右鍵。

參數

  • x — ClassicUO 視窗像素中的 int X,而非世界座標。
  • y — ClassicUO 視窗像素中的 int Y,而非世界座標。

傳回值

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

行為

  • Bridge 呼叫 WarpMouse(x,y),更新 Mouse.Position 和 SDL_WarpMouseInWindow,然後MouseButton 向下/向上兩次。雙擊之間沒有停頓。
  • 需要開啟輸入焦點的 ClassicUO 圖形視窗;否則RequireGameInput拋出InvalidOperationException。 user32 mouse_event 在 Windows 上可用。點下的按鈕/物件取決於目前介面。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.RDblClick");
UO.RDblClick(100, 100);

1。直接呼叫-直接腳本

參數與執行流程:

  • 合成雙擊滑鼠:右鍵。
UO.RDblClick(100, 100);

2。明確選項 - 腳本函數

參數與執行流程:

  • Bridge 呼叫 WarpMouse(x,y),更新 Mouse.Position 和 SDL_WarpMouseInWindow,然後MouseButton 向下/向上兩次。雙擊之間沒有停頓。
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.RDblClick(x, y);
    return null;
}

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

參數與執行流程:

  • 需要開啟輸入焦點的 ClassicUO 圖形視窗;否則RequireGameInput拋出InvalidOperationException。 user32 mouse_event 在 Windows 上可用。點下的按鈕/物件取決於目前介面。
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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.RDblClick(x, y);
    }
}

命令實作

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

UO.RDblClick(x, y) — UO.RDblClick(Integer,Integer)

參數: x (Integer), y (Integer)

結果: void / Unit.

呼叫時:

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

public void RDblClick(int x, int y) => bridge.RDblClick(x, y);
⚠️ **GitHub.com Fallback** ⚠️