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

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

船

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

控制船隻的移動和停止;團隊可用性由當前船隻和伺服器決定。

部分

主題 命令與解釋
MoveBoat UO.MoveBoat
StopBoat UO.StopBoat

所有主題命令

船舶管制

UO.MoveBoat · UO.StopBoat

關於該主題的範例

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

UO.MoveBoat

參數、結果及所有場景

UO.MoveBoat(0, 1);

UO.StopBoat

參數、結果及所有場景

UO.StopBoat();

完整指令說明


UO.MoveBoat

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

C# 簽章

void UO.MoveBoat(object? direction, object? speed);

詢問船的方向和速度。

參數

  • direction —int,初級 3 位元設定方向 0..7: N,NE,E,SE,S,SW,W,NW.
  • speed - int,僅限於0..255並減少為byte; 0——停止請求。協定代碼,而不是單元/秒的速度。

傳回值

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

行為

  • 橋接。 MoveBoat呼叫BoatMovingManager。 MoveRequest((Direction)(方向&7),钳位(速度,0,255))。目前的船隻和控制權由客戶端/伺服器決定。
  • 不透過探路者移動角色,不等待步驟,也不回到船座標。伺服器可能會拒絕該請求。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。直接呼叫-直接腳本

參數與執行流程:

  • 詢問船的方向和速度。
UO.MoveBoat(0, 1);

2。明確選項 - 腳本函數

參數與執行流程:

  • 橋接。 MoveBoat呼叫BoatMovingManager。 MoveRequest((Direction)(方向&7),钳位(速度,0,255))。目前的船隻和控制權由客戶端/伺服器決定。
return  RunScenario();
 object? RunScenario()
{
    UO.MoveBoat(2, 1);
    UO.Wait(500);
    UO.StopBoat();
    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.MoveBoat(0, 0);
        return null;
    }
}

命令實作

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

UO.MoveBoat(direction, speed) — UO.MoveBoat(Any,Any)

參數: direction (Any), speed (Any)

結果: void / Unit.

呼叫時:

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

case "moveboat": bridge.MoveBoat(Arg(0), Arg(1)); return InjectionValue.Unit;

UO.StopBoat

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

C# 簽章

void UO.StopBoat();

要求船停止行駛。

參數

沒有參數。

傳回值

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

行為

  • StopBoat 使用 Player.Direction(或沒有玩家的北向)呼叫 BoatMovingManager.MoveRequest,速度=0。該請求不會返回船隻的伺服器位置。
  • 在範例中,UO.Wait僅指定腳本暫停;暫停的結束並不能證明伺服器已經完成了請求。

獨立的 C# 腳本

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

簡單範例

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

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

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

1。直接呼叫-直接腳本

參數與執行流程:

  • 要求船停止行駛。
UO.StopBoat();

2。明確選項 - 腳本函數

參數與執行流程:

  • StopBoat 使用 Player.Direction(或沒有玩家的北向)呼叫 BoatMovingManager.MoveRequest,速度=0。該請求不會返回船隻的伺服器位置。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsOnline()))
    {
        UO.StopBoat();
    }

    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.StopBoat();
        UO.Wait(250);
        UO.Print(UO.GetX());
        return null;
    }
}

命令實作

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

UO.StopBoat() — UO.StopBoat()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

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

case "stopboat": bridge.StopBoat(); return InjectionValue.Unit;
⚠️ **GitHub.com Fallback** ⚠️