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

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

隊伍

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

群組邀請、成員、退出和訊息。這些交易不同於一般的言語和商業交換。

部分

主題 命令與解釋
InParty UO.InParty
Invite UO.InviteToParty
Accept UO.PartyAcceptInvite
Decline UO.PartyDeclineInvite
Leave UO.PartyLeave
Remove Member UO.RemoveFromParty
Members List UO.PartyMembersList
PartySay UO.PartySay
私人聚會留言 UO.PartyPrivateMessageTo

所有主題命令

派對

UO.InParty · UO.InviteToParty · UO.PartyAcceptInvite · UO.PartyDeclineInvite · UO.PartyLeave · UO.RemoveFromParty · UO.PartyMembersList · UO.PartyCanLootMe · UO.PartySay · UO.PartyPrivateMessageTo

關於該主題的範例

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

UO.PartyMembersList

參數、結果及所有場景

var members = UO.PartyMembersList();
UO.Print(UO.GetArrayLength(members));

UO.PartySay

參數、結果及所有場景

UO.PartySay("Ready");

完整指令說明


UO.InParty

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

C# 簽章

int UO.InParty();

根據客戶端的聚會狀態檢查目前群組是否存在。

參數

沒有參數。

傳回值

int 1 — 黨內已知非零 serial 領袖。 int 0 - 沒有領導者。這不是參與者的數量或您自己的角色在列表中的索引。

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

行為

  • 讀取本機用戶端模型;無需向伺服器發出請求,無需等待或移動。
  • 結果指的是閱讀的那一刻。在UO.Wait或其他操作之後,物件及其標誌可能會發生變化。
  • 該客戶端檢查 Party.Leader,而不僅僅是非空列表行的數量。如果邀請被接受,狀態將在伺服器更新後發生變更。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。基於群組存在的 Fork 腳本 - 直接腳本

參數與執行流程:

  • 沒有爭論。檢查目前角色的群組。
  • 團隊不創建群組,也不接受邀請。
if (Truth(UO.InParty()))
{
    UO.Print("Party is active");
}
else
{
    UO.Print("No active party");
}

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

2。儲存狀態一次 - 腳本函數

參數與執行流程:

  • inParty 是數字bool,不是參與者的數量。
  • 重複使用變數不會重新讀取更改的群組。
return  RunScenario();
 object? RunScenario()
{
    var inParty = UO.InParty();
    UO.Print("Party 1/0: " + Convert.ToString(inParty));
    return null;
}

3。等待更新不超過幾次檢查 - 腳本類

參數與執行流程:

  • 暫停時間不超過 10 200 毫秒;此週期限制為約兩秒加上指令執行。
  • 等待並不發送邀請或保證加入該群組。
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 attempts = 0;
        while (Truth(UO.InParty() == 0) && Truth(attempts < 10))
        {
            await Delay(200);
            attempts = attempts + 1;
        }

        if (Truth(UO.InParty()))
        {
            UO.Print("Party state received");
        }
        else
        {
            UO.Print("Party still absent");
        }

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

命令實作

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

UO.InParty() — UO.InParty()

參數: 沒有參數。

結果: int / Integer.

呼叫時:

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

case "inparty": return new InjectionValue(bridge.InParty());

UO.InviteToParty

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

C# 簽章

void UO.InviteToParty(object? objID);

請求角色加入群組的邀請。

參數

  • objID — 序列/ID 物件:int,數字/十六進位字串或已建立的別名,例如「lasttarget」。這不是graphic/type。在採取行動之前檢查裝載的物體。

傳回值

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

行為

  • PartyInvite 將 serial 透過 _manager.QueueTarget,然後呼叫 RequestPartyInviteByTarget。首先,準備目標隊列,然後發送邀請請求。
  • Bridge 在遊戲串流上發送請求。伺服器規則適用;沒有內建的等待確認。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.InviteToParty");
UO.InviteToParty(UO.GetSerial("lasttarget"));

1。直接呼叫-直接腳本

參數與執行流程:

  • 請求角色加入群組的邀請。
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
    UO.InviteToParty(id);
}

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

2。明確選項 - 腳本函數

參數與執行流程:

  • PartyInvite 將 serial 透過 _manager.QueueTarget,然後呼叫 RequestPartyInviteByTarget。首先,準備目標隊列,然後發送邀請請求。
return  RunScenario();
 object? RunScenario()
{
    var id = UO.GetSerial("self");
    if (Truth(UO.Exists(id)))
    {
        UO.InviteToParty(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。完整的輔助函數 - 腳本類

參數與執行流程:

  • Bridge 在遊戲串流上發送請求。伺服器規則適用;沒有內建的等待確認。
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()
    {
        ApplyToLoaded(UO.GetSerial("lasttarget"));
        return null;
    }

    void ApplyToLoaded(dynamic id)
    {
        if (Truth(UO.Exists(id)))
        {
            UO.InviteToParty(id);
        }
    }

    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.InviteToParty(objID) — UO.InviteToParty(Any)

參數: objID (Any)

結果: void / Unit.

呼叫時:

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

case "invitetoparty": bridge.PartyInvite(Arg(0)); return InjectionValue.Unit;

UO.PartyAcceptInvite

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

C# 簽章

void UO.PartyAcceptInvite();

接受已儲存的群組邀請。

參數

沒有參數。

傳回值

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

行為

  • PartyAcceptInvite 如果 Party.Inviter 非零,則發送 RequestPartyAccept,本地分配 Leader=Inviter 並清除 Inviter。沒有邀請就沒有行動。
  • 在範例中,UO.Wait僅指定腳本暫停;暫停的結束並不能證明伺服器已經完成了請求。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。直接呼叫-直接腳本

參數與執行流程:

  • 接受已儲存的群組邀請。
UO.PartyAcceptInvite();

2。明確選項 - 腳本函數

參數與執行流程:

  • PartyAcceptInvite 如果 Party.Inviter 非零,則發送 RequestPartyAccept,本地分配 Leader=Inviter 並清除 Inviter。沒有邀請就沒有行動。
return  RunScenario();
 object? RunScenario()
{
    UO.PartyAcceptInvite();
    UO.Print(UO.InParty());
    return null;
}

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()
    {
        UO.PartyAcceptInvite();
        UO.Wait(500);
        UO.Print(UO.GetArrayLength(UO.PartyMembersList()));
        return null;
    }
}

命令實作

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

UO.PartyAcceptInvite() — UO.PartyAcceptInvite()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

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

case "partyacceptinvite": bridge.PartyAcceptInvite(); return InjectionValue.Unit;

UO.PartyCanLootMe

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

C# 簽章

void UO.PartyCanLootMe(object? value);

更改是否允許隊伍成員從屍體上移除物品。

參數

  • value - 0 關閉;任何非零整數包括。

傳回值

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

行為

  • PartyCanLoot本地設定Party.CanLoot並呼叫RequestPartyLootState(啟用)。非零值打開,0 關閉。伺服器仍然檢查規則。
  • Bridge 在遊戲串流上發送請求。伺服器規則適用;沒有內建的等待確認。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.PartyCanLootMe");
UO.PartyCanLootMe(1);

1。直接呼叫-直接腳本

參數與執行流程:

  • 更改是否允許隊伍成員從屍體上移除物品。
UO.PartyCanLootMe(1);

2。明確選項 - 腳本函數

參數與執行流程:

  • PartyCanLoot本地設定Party.CanLoot並呼叫RequestPartyLootState(啟用)。非零值打開,0 關閉。伺服器仍然檢查規則。
return  RunScenario();
 object? RunScenario()
{
    UO.PartyCanLootMe(0);
    return null;
}

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

參數與執行流程:

  • Bridge 在遊戲串流上發送請求。伺服器規則適用;沒有內建的等待確認。
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()
    {
        ApplyMode(1);
        return null;
    }

    void ApplyMode(dynamic mode)
    {
        UO.PartyCanLootMe(mode);
    }
}

命令實作

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

UO.PartyCanLootMe(value) — UO.PartyCanLootMe(Any)

參數: value (Any)

結果: void / Unit.

呼叫時:

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

case "partycanlootme": bridge.PartyCanLoot(Arg(0) != 0); return InjectionValue.Unit;

UO.PartyDeclineInvite

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

C# 簽章

void UO.PartyDeclineInvite();

拒絕已儲存的群組邀請。

參數

沒有參數。

傳回值

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

行為

  • PartyDeclineInvite 如果 Party.Inviter 非零,則傳送 Send_PartyDecline 並清除 Inviter。沒有邀請就沒有行動。
  • 在範例中,UO.Wait僅指定腳本暫停;暫停的結束並不能證明伺服器已經完成了請求。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。直接呼叫-直接腳本

參數與執行流程:

  • 拒絕已儲存的群組邀請。
UO.PartyDeclineInvite();

2。明確選項 - 腳本函數

參數與執行流程:

  • PartyDeclineInvite 如果 Party.Inviter 非零,則傳送 Send_PartyDecline 並清除 Inviter。沒有邀請就沒有行動。
return  RunScenario();
 object? RunScenario()
{
    UO.PartyDeclineInvite();
    UO.Print(UO.InParty());
    return null;
}

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()
    {
        UO.PartyDeclineInvite();
        UO.Wait(500);
        UO.Print(UO.GetArrayLength(UO.PartyMembersList()));
        return null;
    }
}

命令實作

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

UO.PartyDeclineInvite() — UO.PartyDeclineInvite()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

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

case "partydeclineinvite": bridge.PartyDeclineInvite(); return InjectionValue.Unit;

UO.PartyLeave

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

C# 簽章

void UO.PartyLeave();

請求當前角色離開隊伍。

參數

沒有參數。

傳回值

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

行為

  • PartyLeave 如果有玩家,則呼叫 GameActions.RequestPartyQuit(_world.Player);如果沒有播放器,它不會發送任何內容。
  • 在範例中,UO.Wait僅指定腳本暫停;暫停的結束並不能證明伺服器已經完成了請求。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。直接呼叫-直接腳本

參數與執行流程:

  • 請求當前角色離開隊伍。
UO.PartyLeave();

2。明確選項 - 腳本函數

參數與執行流程:

  • PartyLeave 如果有玩家,則呼叫 GameActions.RequestPartyQuit(_world.Player);如果沒有播放器,它不會發送任何內容。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.InParty()))
    {
        UO.PartyLeave();
    }

    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()
    {
        UO.PartyLeave();
        UO.Wait(500);
        UO.Print(UO.InParty());
        return null;
    }
}

命令實作

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

UO.PartyLeave() — UO.PartyLeave()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

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

case "partyleave": bridge.PartyLeave(); return InjectionValue.Unit;

UO.PartyMembersList

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

C# 簽章

dynamic UO.PartyMembersList();

Bridge 過濾掉非空 Party.Members 條目並按列表順序儲存它們 serial。

參數

沒有參數。

傳回值

來自本地 Party.Members 的陣列 int serial 成員。排除空白條目/Serial=0。數組可能為空。

行為

  • Bridge 過濾掉非空 Party.Members 條目並按列表順序儲存它們 serial。該呼叫不會從伺服器更新群組,也不會邀請成員。
  • 讀取目前本地狀態。沒有軟體包、目標或自動更新;個別讀取可能會看到不同的狀態。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。直接呼叫-直接腳本

參數與執行流程:

  • Bridge 過濾掉非空 Party.Members 條目並按列表順序儲存它們 serial。
var members = UO.PartyMembersList();
UO.Print(UO.GetArrayLength(members));

2。明確選項 - 腳本函數

參數與執行流程:

  • Bridge 過濾掉非空 Party.Members 條目並按列表順序儲存它們 serial。該呼叫不會從伺服器更新群組,也不會邀請成員。
return  RunScenario();
 object? RunScenario()
{
    var members = UO.PartyMembersList();
    if (Truth(UO.GetArrayLength(members) > 0))
    {
        UO.Print(Hex(members[0]));
    }

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

參數與執行流程:

  • 讀取目前本地狀態。沒有軟體包、目標或自動更新;個別讀取可能會看到不同的狀態。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var before = UO.PartyMembersList();
        UO.Wait(500);
        var after = UO.PartyMembersList();
        UO.Print(before);
        UO.Print(after);
        return null;
    }
}

命令實作

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

UO.PartyMembersList() — UO.PartyMembersList()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

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

case "partymemberslist":

                    return new InjectionValue(bridge.PartyMembersList().Select(serial => new InjectionValue(serial)).ToArray());

UO.PartyPrivateMessageTo

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

C# 簽章

void UO.PartyPrivateMessageTo(object? objID, object? msg);

向群組成員發送私人訊息。

參數

  • objID — 序列/ID 物件:int,數字/十六進位字串或已建立的別名,例如「lasttarget」。這不是graphic/type。在採取行動之前檢查裝載的物體。
  • msg — 透過 ToString 發送文字;儲存為已傳送。

傳回值

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

行為

  • PartySay 取得 Text(1) 與 Arg(0); GameActions.SayParty(text, serial) 將訊息定址到傳輸的serial。順序是先ObjID,然後Msg。
  • Bridge 在遊戲串流上發送請求。伺服器規則適用;沒有內建的等待確認。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.PartyPrivateMessageTo");
UO.PartyPrivateMessageTo("lasttarget", "Ready");

1。直接呼叫-直接腳本

參數與執行流程:

  • 向群組成員發送私人訊息。
UO.PartyPrivateMessageTo("lasttarget", "Ready");

2。明確選項 - 腳本函數

參數與執行流程:

  • PartySay 取得 Text(1) 與 Arg(0); GameActions.SayParty(text, serial) 將訊息定址到傳輸的serial。順序是先ObjID,然後Msg。
return  RunScenario();
 object? RunScenario()
{
    var id = UO.GetSerial("lasttarget");
    if (Truth(UO.Exists(id)))
    {
        UO.PartyPrivateMessageTo(id, "Ready");
    }

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

參數與執行流程:

  • Bridge 在遊戲串流上發送請求。伺服器規則適用;沒有內建的等待確認。
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()
    {
        SendPartyMessage(UO.GetSerial("lasttarget"), "Ready");
        return null;
    }

    void SendPartyMessage(dynamic id, dynamic message)
    {
        if (Truth(id != "0x00000000") && Truth(Len(message) > 0))
        {
            UO.PartyPrivateMessageTo(id, message);
        }
    }

    int Len(object? value) => Convert.ToString(value)?.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.PartyPrivateMessageTo(objID, msg) — UO.PartyPrivateMessageTo(Any,Any)

參數: objID (Any), msg (Any)

結果: void / Unit.

呼叫時:

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

case "partyprivatemessageto": bridge.PartySay(Text(1), Arg(0)); return InjectionValue.Unit;

UO.PartySay

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

C# 簽章

void UO.PartySay(object? msg);

向整個群組發送訊息。

參數

  • msg — 透過 ToString 發送文字;儲存為已傳送。

傳回值

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

行為

  • 呼叫 GameActions.SayParty(文本,0)。空serial表示群組訊息;群組的組成和傳遞由伺服器決定。
  • Bridge 在遊戲串流上發送請求。伺服器規則適用;沒有內建的等待確認。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.PartySay");
UO.PartySay("Ready");

1。直接呼叫-直接腳本

參數與執行流程:

  • 向整個群組發送訊息。
UO.PartySay("Ready");

2。明確選項 - 腳本函數

參數與執行流程:

  • 呼叫 GameActions.SayParty(文本,0)。空serial表示群組訊息;群組的組成和傳遞由伺服器決定。
return  RunScenario();
 object? RunScenario()
{
    var message = "Ready";
    if (Truth(UO.IsOnline()))
    {
        UO.PartySay(message);
    }

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

參數與執行流程:

  • Bridge 在遊戲串流上發送請求。伺服器規則適用;沒有內建的等待確認。
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()
    {
        SendText("Ready");
        return null;
    }

    void SendText(dynamic message)
    {
        if (Truth(Len(message) > 0))
        {
            UO.PartySay(message);
        }
    }

    int Len(object? value) => Convert.ToString(value)?.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.PartySay(msg) — UO.PartySay(Any)

參數: msg (Any)

結果: void / Unit.

呼叫時:

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

case "partysay": bridge.PartySay(Text(0), 0); return InjectionValue.Unit;

UO.RemoveFromParty

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

C# 簽章

void UO.RemoveFromParty(object? objID);

請求透過serial刪除群組成員。

參數

  • objID — 序列/ID 物件:int,數字/十六進位字串或已建立的別名,例如「lasttarget」。這不是graphic/type。在採取行動之前檢查裝載的物體。

傳回值

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

行為

  • PartyRemove 呼叫RequestPartyRemoveMember。解析度取決於目前角色和伺服器的角色;該命令不會同步更改參與者清單。
  • Bridge 在遊戲串流上發送請求。伺服器規則適用;沒有內建的等待確認。

獨立的 C# 腳本

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

簡單範例

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

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

UO.Print("Calling UO.RemoveFromParty");
UO.RemoveFromParty(UO.GetSerial("lasttarget"));

1。直接呼叫-直接腳本

參數與執行流程:

  • 請求透過serial刪除群組成員。
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
    UO.RemoveFromParty(id);
}

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

2。明確選項 - 腳本函數

參數與執行流程:

  • PartyRemove 呼叫RequestPartyRemoveMember。解析度取決於目前角色和伺服器的角色;該命令不會同步更改參與者清單。
return  RunScenario();
 object? RunScenario()
{
    var id = UO.GetSerial("self");
    if (Truth(UO.Exists(id)))
    {
        UO.RemoveFromParty(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。完整的輔助函數 - 腳本類

參數與執行流程:

  • Bridge 在遊戲串流上發送請求。伺服器規則適用;沒有內建的等待確認。
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()
    {
        ApplyToLoaded(UO.GetSerial("lasttarget"));
        return null;
    }

    void ApplyToLoaded(dynamic id)
    {
        if (Truth(UO.Exists(id)))
        {
            UO.RemoveFromParty(id);
        }
    }

    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.RemoveFromParty(objID) — UO.RemoveFromParty(Any)

參數: objID (Any)

結果: void / Unit.

呼叫時:

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

case "removefromparty": bridge.PartyRemove(Arg(0)); return InjectionValue.Unit;
⚠️ **GitHub.com Fallback** ⚠️