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(0, 1);UO.StopBoat();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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))。目前的船隻和控制權由客戶端/伺服器決定。
- 不透過探路者移動角色,不等待步驟,也不回到船座標。伺服器可能會拒絕該請求。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.MoveBoat");
UO.MoveBoat(0, 1);參數與執行流程:
- 詢問船的方向和速度。
UO.MoveBoat(0, 1);參數與執行流程:
- 橋接。 MoveBoat呼叫BoatMovingManager。 MoveRequest((Direction)(方向&7),钳位(速度,0,255))。目前的船隻和控制權由客戶端/伺服器決定。
return RunScenario();
object? RunScenario()
{
UO.MoveBoat(2, 1);
UO.Wait(500);
UO.StopBoat();
return null;
}參數與執行流程:
- 不透過探路者移動角色,不等待步驟,也不回到船座標。伺服器可能會拒絕該請求。
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。
參數: direction (Any), speed (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.MoveBoat:bridge.MoveBoat(Arg(0), Arg(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "moveboat": bridge.MoveBoat(Arg(0), Arg(1)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.StopBoat();要求船停止行駛。
沒有參數。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- StopBoat 使用 Player.Direction(或沒有玩家的北向)呼叫 BoatMovingManager.MoveRequest,速度=0。該請求不會返回船隻的伺服器位置。
- 在範例中,UO.Wait僅指定腳本暫停;暫停的結束並不能證明伺服器已經完成了請求。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.StopBoat");
UO.StopBoat();參數與執行流程:
- 要求船停止行駛。
UO.StopBoat();參數與執行流程:
- 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;參數與執行流程:
- 在範例中,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。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.StopBoat:bridge.StopBoat().
內部實作程式碼,不能作為獨立腳本執行。
case "stopboat": bridge.StopBoat(); return InjectionValue.Unit;