Skip to content

JA UO Topic client connection

Codex edited this page Oct 12, 2026 · 4 revisions

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

クライアントと接続

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

接続、ワールドエントリーステータス、レイテンシー、サーバーアドレス、キャラクターリスト。

セクション

トピック コマンドと説明
Connect UO.Connect
Disconnect UO.Disconnect
Connected UO.Connected
Online UO.Online
Ping UO.GetPing
Server IP UO.GameServerIPString
Shard Name UO.ShardName
Shard Path UO.ShardPath
キャラクターリスト UO.GetCharsListForShard
Resend UO.Resend
CheckLag UO.CheckLag

すべてのテーマコマンド

繋がり

UO.Connect · UO.Disconnect · UO.Connected · UO.Online · UO.IsOnline · UO.ConnectedTime · UO.DisconnectedTime · UO.GetPing · UO.CheckLag · UO.GameServerIPString · UO.ShardName · UO.ShardPath · UO.GetCharsListForShard · UO.Resend · UO.CloseUO

このトピックに関する例

各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。

UO.Connected

パラメータ、結果、およびすべてのシナリオ

if (Truth(Truth(UO.Connected()) == false))
{
    return null;
}
UO.UseSkill("Hiding");

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

UO.GameServerIPString

パラメータ、結果、およびすべてのシナリオ

var address = UO.GameServerIPString();
UO.Print(address);

コマンドの完全なリファレンス


UO.CheckLag

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

C# のシグネチャ

int UO.CheckLag();
dynamic UO.CheckLag(object? timeoutMS);
int UO.CheckLag(object? timeout, object? retries);

割り当てられた時間内にゲームサーバーから新しい応答を受信したかどうかを確認します。ネットワーク遅延後にスクリプトを続行する前に便利です。

引数

  • timeout — タイムアウト / timeoutMS — 1 回の試行の待機時間 (ミリ秒単位) (int に変換)。負の値はゼロに制限されます。 0 ではリクエストを送信できますが、応答は期待できません。無限のタイムアウトではありません。
  • timeoutMS — タイムアウト / timeoutMS — 1 回の試行の待機時間 (ミリ秒単位) (int に変換)。負の値はゼロに制限されます。 0 ではリクエストを送信できますが、応答は期待できません。無限のタイムアウトではありません。
  • retries - 再試行 - 追加の繰り返し数ではなく、試行の合計数。 int に変換され、以下から 1 に制限されます。たとえば、(250、3) - 250 ミリ秒で最大 3 回の試行。応答が成功すると、チェックが早期に完了します。

戻り値

数値フラグ int: 1 (条件が満たされた) - 新しい応答を受信しました。 0 (条件が満たされていない) - リクエストは不可能か、制限時間が経過しています。単一パラメータ登録 object?実際にはこれ int を返します。これは ping 値や試行回数ではありません。

動作

  • CheckLag() は 1 回試行し、最大 10000 ミリ秒待機します。 CheckLag(timeoutMS) - 指定された期待値での 1 回の試行。 CheckLag(タイムアウト、再試行) は、成功するか試行の合計回数がなくなるまでチェックを繰り返します。
  • 待機すると、ゲームのアクションを確認するのではなく、呼び出しスクリプトが遅延します。このコマンドは再接続せず、ネットワーク設定も変更しません。サーバーが echo に応答しない場合があります: 失敗自体は、接続が切断されたことを証明するものではありません。タイミングはフローのスケジューリングにも依存します。すべてのフレームでアクティブなチェックを呼び出さないでください。スクリプトを停止すると待機が中断されます。
  • UO.GetPing · UO.CheckLag · UO.IsOnline

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。 CheckLag - 1 - 直接スクリプト

引数と実行の流れ:

  • パラメーターのないフォームは、最大 10 秒まで待機することができます。 true は新鮮なエコー応答を意味します。非表示は別のコマンドによって呼び出され、ゲームの仕組みによってオーバーライドできます。
if (Truth(Truth(UO.CheckLag()) == true))
{
    UO.UseSkill("Hiding");
}
else
{
    UO.Print("No fresh server response");
}

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

2。 CheckLag — 2 — スクリプト関数

引数と実行の流れ:

  • 250 — 1 回の試行を待機中、3 — 試行の合計数。成功した場合、それ以上の試行は行われません。 0 ではスクリプトは続行されません。これは、250 ミリ秒の ping 測定や追加の 3 回の繰り返しではありません。
return  RunScenario();
 object? RunScenario()
{
    var responsive = UO.CheckLag(250, 3);
    if (Truth(responsive == 0))
    {
        UO.Print("No response after the allowed attempts");
        return null;
    }

    UO.Print("Fresh response received; the script can continue");
    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。 CheckLag - 3 - シナリオクラス

引数と実行の流れ:

  • CanContinue(timeoutMs, 試行) は最初に UO.IsOnline をチェックし、次に最新の答えをチェックします。 false と 0 は、この述語と同等です。 500 ミリ秒と 2 試行は個別に指定されます。この機能は自動再接続をトリガーしません。
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(CanContinue(500, 2))))
        {
            return null;
        }

        UO.UseSkill("Hiding");
        return null;
    }

    dynamic CanContinue(dynamic timeoutMs, dynamic attempts)
    {
        if (Truth(Truth(UO.IsOnline()) == false))
        {
            return false;
        }

        return Truth(Truth(UO.CheckLag(timeoutMs, attempts)) == true);
    }

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

引数: 引数はありません。

結果: int / Integer.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

public int CheckLag() => bridge.CheckLag(10_000);

UO.CheckLag(timeoutMS) — UO.CheckLag(Any)

引数: timeoutMS (Any)

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "checklag": return new InjectionValue(bridge.CheckLag(Arg(0, 10_000)));

UO.CheckLag(timeout, retries) — UO.CheckLag(Any,Any)

引数: timeout (Any), retries (Any)

結果: int / Integer.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

public int CheckLag(InjectionValue timeout, InjectionValue retries)

        {

            int timeoutMs = Math.Max(0, NumberConversions.ToInt(timeout));

            int attempts = Math.Max(1, NumberConversions.ToInt(retries));

            for (int attempt = 0; attempt < attempts; attempt++)

            {

                if (bridge.CheckLag(timeoutMs) != 0)

                    return 1;

            }

            return 0;

        }

UO.CloseUO

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

C# のシグネチャ

void UO.CloseUO();

Client.Game.Exit を介して現在のクライアント アプリケーションを終了するように要求します。

引数

パラメータはありません。

戻り値

void - 戻り値はありません。

動作

  • CloseUO は同じブリッジに送信されます。CloseHandle。終了はゲーム スレッドで実行されます。 Client.Game がない場合、アクションはありません。このコマンドは、別のガンプをシャットダウンするものではありません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

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

1。クライアントの終了 - 直接スクリプト

引数と実行の流れ:

  • この呼び出しは、クライアント アプリケーションの終了を要求します。
UO.CloseUO();

2。明示的な終了条件 - スクリプト関数

引数と実行の流れ:

  • この例は制御された状態を示しています。値 0 はクライアントを開いたままにします。
return  RunScenario();
 object? RunScenario()
{
    var finishClient = 0;
    if (Truth(finishClient))
    {
        UO.CloseUO();
    }

    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()
    {
        FinishClient(0);
        return null;
    }

    void FinishClient(dynamic enabled)
    {
        if (Truth(enabled))
        {
            UO.CloseUO();
        }
    }

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

引数: 引数はありません。

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "closeuo": bridge.CloseHandle(); break;

UO.Connect

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

C# のシグネチャ

void UO.Connect();

現在のクライアント セッションの接続または再接続を要求します。

引数

パラメータはありません。

戻り値

void - 戻り値はありません。

動作

  • マネージャーセッションで、SessionControl.RequestConnect を呼び出します。スタンドアロン クライアントでは、アクティブ/準備済みの接続は変更されません。
  • GameScene の場合、更新中にシーンが変更されないように、保存された再接続を計画します。 LoginScene では、自動再接続がオフになっている場合でも、現在のアカウントと保存されたパスワードを使用し、再接続をオンにして、記憶されているシャード/キャラクターで Connect を呼び出します。
  • チームは世界への参入を待っていません。さらなるアクションで接続が必要な場合は、別の待機後に UO.Connected を確認してください。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

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

1。接続 - 直接スクリプト

引数と実行の流れ:

  • この呼び出しは接続を開始するだけです。
UO.Connect();

2。接続がない場合に接続する - スクリプト関数

引数と実行の流れ:

  • 検証により再リクエストを回避できます。
return  RunScenario();
 object? RunScenario()
{
    if (!(Truth(UO.Connected())))
    {
        UO.Connect();
    }

    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。後でステータスを確認する - スクリプト クラス

引数と実行の流れ:

  • 1000 ミリ秒待ってもエントリーは保証されません。出力には実際の現在のフラグが表示されます。
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()
    {
        UO.Connect();
        await Delay(1000);
        UO.Print(Convert.ToString(UO.Connected()));
        return null;
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.Connect() — UO.Connect()

引数: 引数はありません。

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "connect": bridge.ConnectClient(); return InjectionValue.Unit;

UO.Connected

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

C# のシグネチャ

dynamic UO.Connected();

現在のセッションがゲーム ワールド内にあるかどうか、およびそのゲーム接続が開いているかどうかを確認します。キャラクターの行動前や入力待ちの際に使用します。

引数

パラメータはありません。

戻り値

int。 1 - プレーヤー、ロードされたカード、およびアクティブなゲームソケットが同時に存在します。それ以外の場合は 0 。ログイン段階で開いているクライアント ウィンドウ、文字のリスト、または TCP 接続は、1 を意味しません。数値フラグ int: 1 (条件が満たされた)、0 (条件が満たされていない)。これは数値フラグです: C# チェック結果 != 0 または結果 == 0。 int と true/false の直接比較、および if (結果) は許可されません。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • パラメータがありません:serial、type、キャラクター名、IPは転送できません。 UO.Online()、UO.Connected()、UO.IsOnline() も同じことをチェックします。これは、特定のセッション所有者の状態であり、別のマネージャー プロファイルではありません。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。ゲーム スキルをオフラインで実行しない - 直接スクリプト

引数と実行の流れ:

  • false は 0 と同等です。 return は Main を UseSkill に終了します。非表示はスキル名であるUseSkillの唯一のパラメータです。 1 では、スクリプトはスキルの使用を要求するだけです。結果はキャラクターとサーバーの状態によって異なります。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
if (Truth(Truth(UO.Connected()) == false))
{
    return null;
}
UO.UseSkill("Hiding");

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

2。接続がない場合に接続を要求 - スクリプト関数

引数と実行の流れ:

  • 0 との比較では、自動再接続設定ではなく、現在の接続がチェックされます。引数なしの Connect は、保存された設定を使用し、ログインの完了を待ちません。すでに開始されているログイン中にコマンドを繰り返しても、2 番目のセッションは作成されません。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Connected() == 0))
    {
        UO.Connect();
    }

    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。制限時間内に世界の準備が整うまで待つ - シナリオ クラス

引数と実行の流れ:

  • WaitForWorld(timeoutMs) ​​は、組み込みコマンドではなく、完全に表示されるユーザー定義関数です。 5000 — ミリ秒単位のバジェット、UO.Wait(50) — チェック間隔。負の値は false を与えます。 0 では既製の世界のみが許可されます。 Timer は秒を測定するため、その差に 1000 を掛けます。自動一時停止を事前にオフにする必要があります。オフにしないとメインが終了します。この関数はConnect を呼び出しず、時間が経過しても開始された入力をキャンセルしません。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
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()
    {
        if (Truth(UO.GetPauseScriptOnDisconnectStatus()))
        {
            return null;
        }

        if (Truth(await WaitForWorld(5000)))
        {
            UO.UseSkill("Hiding");
        }

        return null;
    }

    async Task<dynamic> WaitForWorld(dynamic timeoutMs)
    {
        if (Truth(timeoutMs < 0))
        {
            return false;
        }

        var started = Environment.TickCount;
        while (!(Truth(UO.Connected())))
        {
            if (Truth((Environment.TickCount - started) * 1000.0 >= timeoutMs))
            {
                return false;
            }

            await Delay(50);
        }

        return true;
    }

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

引数: 引数はありません。

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "connected": return new InjectionValue(bridge.IsOnline());

UO.ConnectedTime

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

C# のシグネチャ

dynamic UO.ConnectedTime();

キャラクターがワールドに最後に成功したときのカレンダー スタンプを返します。同じタスクを続行する前に待機中または一時停止中に接続が変更されたかどうかを理解するのに役立ちます。

引数

パラメータはありません。

戻り値

double: 1899-12-30 の日数、小数部 - 時刻 (OLE 自動化日)。 0 は、このセッション所有者がまだワールドに入っていないことを意味します。切断後は、最後の入力マークが保持されます。 bool や秒単位の継続時間ではありません。

動作

  • 引数はありません。履歴は同じセッション所有者のスクリプトに共通です。遅い開始、一時停止、および終了 IDE ではマークは変わりません。新しいセッションプロセスにより、新しいストーリーが始まります。すべての接続のログではありません。
  • キャラクターがワールドに表示されずにログイン試行が失敗した場合は、ログイン成功とみなされません。オフライン チェックを繰り返してもシャットダウン時間は変わりません。現在の状態には、ゼロ以外の日付ではなく UO.Connected() を使用します。
  • クロックはコンピュータのローカル クロックから取得されます。差に 86400 を掛けるとカレンダーの秒が得られます。クロック/タイムゾーンを変更すると、結果が歪む可能性があります。タイムアウトの場合は、単調な Timer() を使用します。個々の呼び出しはアトミックなスナップショットを形成しません。同じマークは一意の ID 接続ではありません。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。最初の入力を要求します - 直接スクリプト

引数と実行の流れ:

  • 0 は、この特定のプロセスに入力がないかどうかをチェックします。 Connect は保存されたプロファイルを使用し、ログインのみを要求します。この例では、すでに終了した接続を意図的に復元しません。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。
if (Truth(UO.ConnectedTime() == 0))
{
    UO.Connect();
}

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

2。新規ログイン後に予想されるターゲットをリセット - スクリプト関数

引数と実行の流れ:

  • 30.0 — 数秒で予算を監視 Timer; 250 — 間隔UO.Wait (ミリ秒)。エントリマークを変更した後、CancelWaitTarget は前の遅延ターゲットをクリアします。新しい入力がない場合、ループはこのアクションなしで終了します。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var login = UO.ConnectedTime();
    var started = Environment.TickCount;
    while (Truth(Environment.TickCount - started < 30.0))
    {
        if (Truth(UO.Connected()) && Truth(UO.ConnectedTime() != login))
        {
            UO.CancelWaitTarget();
            return null;
        }

        await Delay(250);
    }

    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;

3。続行する前に接続をテストする - スクリプト クラス

引数と実行の流れ:

  • SameConnection(ログイン)はboolを返します。マークを保存し、500 ミリ秒待ってから、接続がない場合や入力が変化した場合は続行を禁止します。これは再テストであり、将来のサーバーの可用性を保証するものではありません。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。
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 login = UO.ConnectedTime();
        await Delay(500);
        if (!(Truth(SameConnection(login))))
        {
            return null;
        }

        UO.AddToSystemJournal("Same connection; continue this batch");
        return null;
    }

    dynamic SameConnection(dynamic login)
    {
        return Truth(login != 0) && Truth(UO.Connected()) && Truth(UO.ConnectedTime() == login);
    }

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

引数: 引数はありません。

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "connectedtime":

                    UpdateConnectionState();

                    return new InjectionValue(state.ConnectedTime == default(DateTime) ? 0d : state.ConnectedTime.ToOADate());

UO.Disconnect

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

C# のシグネチャ

void UO.Disconnect();

現在またはインストールされているクライアント トランスポートを切断し、再接続用のスクリプトを準備します。

引数

パラメータはありません。

戻り値

void - 戻り値はありません。

動作

  • 自動再接続がオフになっている場合、BeginScriptControlledDisconnect は、後の UO.Connect のために電話をかける作業者を保存します。マネージャーセッションはRequestDisconnectを受け取ります。
  • スタンドアロン クライアントは Socket.Disconnect と PrepareForReconnect を呼び出します。グローバル再接続が有効になっている場合、保存されたシーンの遷移が明示的にスケジュールされます。 LoginScene ではポップアップをクリアし、Main に戻ります。
  • void を返しても、再接続の結果は報告されません。接続ステータスは個別に読み取られます。自動再接続設定により、新しいログインを開始できます。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

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

1。セッションの切断 - 直接スクリプト

引数と実行の流れ:

  • このコマンドは、アクティブなトランスポートとインストールされているトランスポートの両方をキャンセルします。
UO.Disconnect();

2。明示的再接続 - スクリプト関数

引数と実行の流れ:

  • AR をオフにすると、発信者は Connect に自分自身を接続できます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.Disconnect();
    await Delay(1000);
    UO.Connect();
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

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()
    {
        if (Truth(UO.Connected()))
        {
            UO.Disconnect();
        }

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

引数: 引数はありません。

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "disconnect": bridge.DisconnectClient(); return InjectionValue.Unit;

UO.DisconnectedTime

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

C# のシグネチャ

dynamic UO.DisconnectedTime();

最後にゲーム接続が失われたときのカレンダー スタンプを返します。これは切断を診断し、接続が完了するまでの時間を見積もるために必要であり、ログイン試行回数を決定するために必要ではありません。

引数

パラメータはありません。

戻り値

double: 1899-12-30 の日数 (小数部分を含む)。休憩後 - クライアントが停止に気づいた時間。最初のブレークの前は、セッション所有者が作成された時刻です。これはオフライン フラグやミリ秒ではありません。

動作

  • 引数はありません。履歴は同じセッション所有者のスクリプトに共通です。遅い開始、一時停止、および終了 IDE ではマークは変わりません。新しいセッションプロセスにより、新しいストーリーが始まります。すべての接続のログではありません。
  • キャラクターがワールドに表示されずにログイン試行が失敗した場合は、ログイン成功とみなされません。オフライン チェックを繰り返してもシャットダウン時間は変わりません。現在の状態には、ゼロ以外の日付ではなく UO.Connected() を使用します。
  • クロックはコンピュータのローカル クロックから取得されます。差に 86400 を掛けるとカレンダーの秒が得られます。クロック/タイムゾーンを変更すると、結果が歪む可能性があります。タイムアウトの場合は、単調な Timer() を使用します。個々の呼び出しはアトミックなスナップショットを形成しません。同じマークは一意の ID 接続ではありません。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。完了した接続の継続時間を見積もる - 直接スクリプト

引数と実行の流れ:

  • CompletedConnectionSeconds() は、完了した接続がない場合、または読み取り間で入力が変化した場合は秒を返すか、または -1 を返します。 86400 — 1 日の秒数。最後の入力/ブレーク ペアのみが再計算されます。この関数は、すべてのセッションの履歴を要約するわけではありません。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。
var seconds = CompletedConnectionSeconds();
if (Truth(seconds >= 0))
{
    UO.AddToSystemJournal("Completed connection seconds: " + Convert.ToString(seconds));
}

dynamic CompletedConnectionSeconds()
{
    var login = UO.ConnectedTime();
    var loss = UO.DisconnectedTime();
    if (Truth(login == 0) || Truth(loss < login) || Truth(UO.Connected()))
    {
        return -1;
    }
    if (Truth(UO.ConnectedTime() != login))
    {
        return -1;
    }
    return (loss - login) * 86400.0;
}

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

2。オフラインで少し待機した後のログイン要求 - スクリプト関数

引数と実行の流れ:

  • 自動一時停止が有効になっている場合、このコントローラーはすぐに終了します。オフラインで作業するには、事前にオフにする必要があります。 UO.Wait(1000) オフライン後、前のブレークマークが再度チェックされます。 Connect は成功を保証するものではなく、自動再接続設定を置き換えるものでもありません。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.GetPauseScriptOnDisconnectStatus()))
    {
        return null;
    }

    if (Truth(UO.Connected()))
    {
        return null;
    }

    var loss = UO.DisconnectedTime();
    await Delay(1000);
    if (!(Truth(UO.Connected())) && Truth(UO.DisconnectedTime() == loss))
    {
        UO.Connect();
    }

    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;

3。チェック間の休憩に注目してください - スクリプト クラス

引数と実行の流れ:

  • previousLossと比較すると、すでに再突入が起こった後でもブレイクしていることがわかります。スクリプト実行中の30 秒制限監視、WaitAsync(250) はチェック間でスレッドを解放します。複数の割り込みを 1 つの通知にまとめることができます。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。
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 previousLoss = UO.DisconnectedTime();
        var started = Environment.TickCount;
        while (Truth(Environment.TickCount - started < 30.0))
        {
            if (Truth(UO.DisconnectedTime() != previousLoss))
            {
                UO.AddToSystemJournal("A connection loss occurred; check the session");
                return null;
            }

            await Delay(250);
        }

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

引数: 引数はありません。

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "disconnectedtime":

                    UpdateConnectionState();

                    return new InjectionValue(state.DisconnectedTime.ToOADate());

UO.GameServerIPString

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

C# のシグネチャ

dynamic UO.GameServerIPString();

構成されたサーバーアドレスをクライアントのグローバル設定から読み取ります。

引数

パラメータはありません。

戻り値

string — 設定。GlobalSettings.IP、または値がない場合は空の文字列。

動作

  • 現在のブリッジのGameServerAddress は、グローバル設定 IP を読み取ります。これは DNS/ネットワーク リクエストではなく、実際のピアのアドレスをチェックするものでもありません。マネージャー セッションは独自の接続パラメーターを持つことができます。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。アドレスの読み取り - 直接スクリプト

引数と実行の流れ:

  • 現在のグローバル設定を返します IP.
var address = UO.GameServerIPString();
UO.Print(address);

2。空のアドレスのチェック - スクリプト関数

引数と実行の流れ:

  • 空白の値は、構成がなく、ネットワーク障害が測定されていないことを示します。
return  RunScenario();
 object? RunScenario()
{
    var address = UO.GameServerIPString();
    if (Truth(Len(address) == 0))
    {
        UO.Print("no configured address");
    }

    return null;
}

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;

3。スナップショットの保存 - スクリプト クラス

引数と実行の流れ:

  • 変数には、最初の呼び出しで取得した文字列が格納されます。
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 address = UO.GameServerIPString();
        await Delay(100);
        UO.Print(address);
        return null;
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.GameServerIPString() — UO.GameServerIPString()

引数: 引数はありません。

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "gameserveripstring": return new InjectionValue(bridge.GameServerAddress);

UO.GetCharsListForShard

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

C# のシグネチャ

dynamic UO.GetCharsListForShard();

クライアントが認識している現在のシャードのキャラクター名を返します。

引数

パラメータはありません。

戻り値

文字列の配列。既知の名前はなく、現在の文字は空の配列です。

動作

  • マネージャー セッションは SessionControl.Characters を読み取ります。スタンドアロンでは、LastCharacterManager がアカウント/サーバーとして最初に使用されます。リストが空の場合は、LoginScene を読んでください。空の名前のない文字。その場合、現在の Player.Name が唯一の要素として使用されます。
  • これらは地元では有名な名前です。このコマンドはサーバーに完全なリストを要求せず、キャッシュの鮮度も保証しません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。名前の印刷 - 直接スクリプト

引数と実行の流れ:

  • このループは、既知の名前の実際の配列に対して動作します。
var names = UO.GetCharsListForShard();
for (int i = (int)(0); i <= ArrayLength(names)-1; i += (int)(1))
{
    UO.Print(names[i]);
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

2。最初の既知の名前 - スクリプト関数

引数と実行の流れ:

  • インデックス 0 は空ではない配列にのみ使用されます。
return  RunScenario();
 object? RunScenario()
{
    var names = UO.GetCharsListForShard();
    if (Truth(ArrayLength(names) > 0))
    {
        UO.Print(names[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;

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 names = UO.GetCharsListForShard();
        UO.Print(Convert.ToString(ArrayLength(names)));
        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
}

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.GetCharsListForShard() — UO.GetCharsListForShard()

引数: 引数はありません。

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "getcharslistforshard": return StringArray(bridge.GetCharactersForCurrentShard());

UO.GetPing

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

C# のシグネチャ

int UO.GetPing();
int UO.GetPing(object? timeout);

ゲームサーバーの応答遅延を読み取ります。引数を指定しないと、最後の次元が使用されます。タイムアウトを指定すると、新しい応答が要求されます。

引数

  • timeout — タイムアウト / timeoutMS — 1 回の試行の待機時間 (ミリ秒単位) (int に変換)。負の値はゼロに制限されます。 0 ではリクエストを送信できますが、応答は期待できません。無限のタイムアウトではありません。

戻り値

int、ミリ秒。値 >= 0 – 測定値。 0 ms も許容されます。 -1 - 測定なし: 引数のあるフォームの場合、リクエストが完了しなかったか、応答が時間通りに受信されませんでした。これは bool ではありません。 0 を失敗、-1 を成功とみなすことはできません。

動作

  • GetPing() は何も送信せず、すぐに最後の ServerPing を読み取ります。古い値自体は、接続が現在機能していることを証明するものではありません。これは最後のサーバー エコー測定であり、平滑化/バックアップ TCP インジケーター ping や ICMP Ping (ホスト) ではありません。 GetPing(タイムアウト) は、新しい応答を待ってから、最後のサーバー測定値を読み取ります。
  • 待機すると、ゲームのアクションを確認するのではなく、呼び出しスクリプトが遅延します。このコマンドは再接続せず、ネットワーク設定も変更しません。サーバーが echo に応答しない場合があります: 失敗自体は、接続が切断されたことを証明するものではありません。タイミングはフローのスケジューリングにも依存します。すべてのフレームでアクティブなチェックを呼び出さないでください。スクリプトを停止すると待機が中断されます。
  • UO.GetPing · UO.CheckLag · UO.IsOnline

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。 GetPing - 1 - 直接スクリプト

引数と実行の流れ:

  • 新しいネットワーク要求なしでキャッシュを読み取ります。この例では、50 または 200 ミリ秒を選択して、250 ミリ秒のしきい値でスクリプト自体を待機します。未知の次元は個別に処理されます。これらの数値は設定例であり、ユニバーサル サーバーの制限ではありません。
var pingMs = UO.GetPing();
if (Truth(pingMs < 0))
{
    UO.Print("No server latency sample");
    return null;
}
var delayMs = 50;
if (Truth(pingMs > 250))
{
    delayMs = 200;
}
await Delay(delayMs);

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;

2。 GetPing — 2 — スクリプト関数

引数と実行の流れ:

  • 1000 — 新しい応答を待機する最大時間 (ミリ秒)。 -1 で手順は終了します。測定が成功した場合は、非表示が要求されます。エコー応答は、スキルの使用が成功したことを証明するものではありません。
return  RunScenario();
 object? RunScenario()
{
    var pingMs = UO.GetPing(1000);
    if (Truth(pingMs == -1))
    {
        UO.Print("No fresh server response");
        return null;
    }

    UO.UseSkill("Hiding");
    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。 GetPing - 3 - シナリオクラス

引数と実行の流れ:

  • MeanPing(サンプル、timeoutMs) ​​は完全に表示されます: 3 は 500 ミリ秒で試行されます。失敗した測定は平均から除外されます。成功したものがない場合は、-1 が返されます。サンプルは1–10に限定されます。 UO.Wait(100) は、試行間のリクエスト率を減らします。
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 meanMs = await MeanPing(3, 500);
        if (Truth(meanMs < 0))
        {
            UO.Print("No successful samples");
        }
        else
        {
            UO.Print("Measured mean, ms: " + Convert.ToString(meanMs));
        }

        return null;
    }

    async Task<dynamic> MeanPing(dynamic samples, dynamic timeoutMs)
    {
        if (Truth(samples < 1) || Truth(samples > 10))
        {
            return -1;
        }

        var total = 0;
        var count = 0;
        for (int i = (int)(1); i <= samples; i += (int)(1))
        {
            var current = UO.GetPing(timeoutMs);
            if (Truth(current >= 0))
            {
                total = total + current;
                count = count + 1;
            }

            await Delay(100);
        }

        if (Truth(count == 0))
        {
            return -1;
        }

        return total / count;
    }

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

引数: 引数はありません。

結果: int / Integer.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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

UO.GetPing(timeout) — UO.GetPing(Any)

引数: timeout (Any)

結果: int / Integer.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

public int GetPing(InjectionValue timeout) => bridge.GetPing(Math.Max(0, NumberConversions.ToInt(timeout)));

UO.IsOnline

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

C# のシグネチャ

int UO.IsOnline();

現在のセッションがゲーム ワールド内にあるかどうか、およびそのゲーム接続が開いているかどうかを確認します。キャラクターの行動前や入力待ちの際に使用します。

引数

パラメータはありません。

戻り値

int。 1 - プレーヤー、ロードされたカード、およびアクティブなゲームソケットが同時に存在します。それ以外の場合は 0 。ログイン段階で開いているクライアント ウィンドウ、文字のリスト、または TCP 接続は、1 を意味しません。数値フラグ int: 1 (条件が満たされた)、0 (条件が満たされていない)。これは数値フラグです: C# チェック結果 != 0 または結果 == 0。 int と true/false の直接比較、および if (結果) は許可されません。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • パラメータがありません:serial、type、キャラクター名、IPは転送できません。 UO.Online()、UO.Connected()、UO.IsOnline() も同じことをチェックします。これは、特定のセッション所有者の状態であり、別のマネージャー プロファイルではありません。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。ゲーム スキルをオフラインで実行しない - 直接スクリプト

引数と実行の流れ:

  • false は 0 と同等です。 return は Main を UseSkill に終了します。非表示はスキル名であるUseSkillの唯一のパラメータです。 1 では、スクリプトはスキルの使用を要求するだけです。結果はキャラクターとサーバーの状態によって異なります。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
if (Truth(Truth(UO.IsOnline()) == false))
{
    return null;
}
UO.UseSkill("Hiding");

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

2。接続がない場合に接続を要求 - スクリプト関数

引数と実行の流れ:

  • 0 との比較では、自動再接続設定ではなく、現在の接続がチェックされます。引数なしの Connect は、保存された設定を使用し、ログインの完了を待ちません。すでに開始されているログイン中にコマンドを繰り返しても、2 番目のセッションは作成されません。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsOnline() == 0))
    {
        UO.Connect();
    }

    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。制限時間内に世界の準備が整うまで待つ - シナリオ クラス

引数と実行の流れ:

  • WaitForWorld(timeoutMs) ​​は、組み込みコマンドではなく、完全に表示されるユーザー定義関数です。 5000 — ミリ秒単位のバジェット、UO.Wait(50) — チェック間隔。負の値は false を与えます。 0 では既製の世界のみが許可されます。 Timer は秒を測定するため、その差に 1000 を掛けます。自動一時停止を事前にオフにする必要があります。オフにしないとメインが終了します。この関数はConnect を呼び出しず、時間が経過しても開始された入力をキャンセルしません。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
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()
    {
        if (Truth(UO.GetPauseScriptOnDisconnectStatus()))
        {
            return null;
        }

        if (Truth(await WaitForWorld(5000)))
        {
            UO.UseSkill("Hiding");
        }

        return null;
    }

    async Task<dynamic> WaitForWorld(dynamic timeoutMs)
    {
        if (Truth(timeoutMs < 0))
        {
            return false;
        }

        var started = Environment.TickCount;
        while (!(Truth(UO.IsOnline())))
        {
            if (Truth((Environment.TickCount - started) * 1000.0 >= timeoutMs))
            {
                return false;
            }

            await Delay(50);
        }

        return true;
    }

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

引数: 引数はありません。

結果: int / Integer.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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

UO.Online

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

C# のシグネチャ

int UO.Online();

現在のセッションがゲーム ワールド内にあるかどうか、およびそのゲーム接続が開いているかどうかを確認します。キャラクターの行動前や入力待ちの際に使用します。

引数

パラメータはありません。

戻り値

int。 1 - プレーヤー、ロードされたカード、およびアクティブなゲームソケットが同時に存在します。それ以外の場合は 0 。ログイン段階で開いているクライアント ウィンドウ、文字のリスト、または TCP 接続は、1 を意味しません。数値フラグ int: 1 (条件が満たされた)、0 (条件が満たされていない)。これは数値フラグです: C# チェック結果 != 0 または結果 == 0。 int と true/false の直接比較、および if (結果) は許可されません。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • パラメータがありません:serial、type、キャラクター名、IPは転送できません。 UO.Online()、UO.Connected()、UO.IsOnline() も同じことをチェックします。これは、特定のセッション所有者の状態であり、別のマネージャー プロファイルではありません。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
  • UO.Wait にはミリ秒かかります。接続が失われた場合は自動一時停止し、手動一時停止は例の実行を遅らせます。タイムアウト チェックは一時停止が解除された後にのみ続行されます。これらのコマンドは一時停止を解除せず、自動再接続を有効にしません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。ゲーム スキルをオフラインで実行しない - 直接スクリプト

引数と実行の流れ:

  • false は 0 と同等です。 return は Main を UseSkill に終了します。非表示はスキル名であるUseSkillの唯一のパラメータです。 1 では、スクリプトはスキルの使用を要求するだけです。結果はキャラクターとサーバーの状態によって異なります。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
if (Truth(Truth(UO.Online()) == false))
{
    return null;
}
UO.UseSkill("Hiding");

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

2。接続がない場合に接続を要求 - スクリプト関数

引数と実行の流れ:

  • 0 との比較では、自動再接続設定ではなく、現在の接続がチェックされます。引数なしの Connect は、保存された設定を使用し、ログインの完了を待ちません。すでに開始されているログイン中にコマンドを繰り返しても、2 番目のセッションは作成されません。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Online() == 0))
    {
        UO.Connect();
    }

    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。制限時間内に世界の準備が整うまで待つ - シナリオ クラス

引数と実行の流れ:

  • WaitForWorld(timeoutMs) ​​は、組み込みコマンドではなく、完全に表示されるユーザー定義関数です。 5000 — ミリ秒単位のバジェット、UO.Wait(50) — チェック間隔。負の値は false を与えます。 0 では既製の世界のみが許可されます。 Timer は秒を測定するため、その差に 1000 を掛けます。自動一時停止を事前にオフにする必要があります。オフにしないとメインが終了します。この関数はConnect を呼び出しず、時間が経過しても開始された入力をキャンセルしません。
  • このコマンドはローカル状態を読み取るだけです。 ping は送信されず、接続も一時停止もされず、インターネットの可用性も確認されません。読んだ後は接続が変わる可能性があります。 1 は、次のアクションの成功を保証するものではありません。
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()
    {
        if (Truth(UO.GetPauseScriptOnDisconnectStatus()))
        {
            return null;
        }

        if (Truth(await WaitForWorld(5000)))
        {
            UO.UseSkill("Hiding");
        }

        return null;
    }

    async Task<dynamic> WaitForWorld(dynamic timeoutMs)
    {
        if (Truth(timeoutMs < 0))
        {
            return false;
        }

        var started = Environment.TickCount;
        while (!(Truth(UO.Online())))
        {
            if (Truth((Environment.TickCount - started) * 1000.0 >= timeoutMs))
            {
                return false;
            }

            await Delay(50);
        }

        return true;
    }

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

引数: 引数はありません。

結果: int / Integer.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

内部実装のコードです。単独のスクリプトとして実行できません。

() => bridge.IsOnline()

API の作成: これらの関数は API を登録します。コマンドを呼ぶたびに実行されるものではありません。


UO.Resend

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

C# のシグネチャ

void UO.Resend();

世界を再同期するリクエストを送信します。

引数

パラメータはありません。

戻り値

void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。

動作

  • Resync はゲーム スレッドで NetClient.Socket.Send_Resync を送信します。これは更新リクエストであり、再接続やデータ受信の確認ではありません。
  • 例では、UO.Wait はスクリプトの一時停止のみを指定します。一時停止が終了しても、サーバーがリクエストを完了したことは証明されません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

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

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • 世界を再同期するリクエストを送信します。
UO.Resend();

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • Resync はゲーム スレッドで NetClient.Socket.Send_Resync を送信します。これは更新リクエストであり、再接続やデータ受信の確認ではありません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsOnline()))
    {
        UO.Resend();
    }

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

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.Resend() — UO.Resend()

引数: 引数はありません。

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "resend": bridge.Resync(); break;

UO.ShardName

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

C# のシグネチャ

dynamic UO.ShardName();

シャード名を読み取ります。

引数

パラメータはありません。

戻り値

string — ブリッジフィールドのテキスト。ShardName;利用可能なデータがない場合は、空の文字列が可能です。これは接続記号ではなく、数字の ID でもありません。

動作

  • ExecuteClientApiCompatibility は、プロファイルやサーバーの選択を変更せずに、bridge.ShardName を返します。
  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • シャード名を読み取ります。
var value = UO.ShardName();
UO.Print(value);

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • ExecuteClientApiCompatibility は、プロファイルやサーバーの選択を変更せずに、bridge.ShardName を返します。
return  RunScenario();
 object? RunScenario()
{
    var value = UO.ShardName();
    if (Truth(Len(value) > 0))
    {
        UO.TextPrint(value);
    }

    return null;
}

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;

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.ShardName();
        UO.Wait(500);
        var after = UO.ShardName();
        UO.Print(before = after);
        return null;
    }
}

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.ShardName() — UO.ShardName()

引数: 引数はありません。

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "shardname":

                case "profileshardname": return new InjectionValue(bridge.ShardName);

UO.ShardPath

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

C# のシグネチャ

dynamic UO.ShardPath();

現在のプロファイルのパスを読み取ります。

引数

パラメータはありません。

戻り値

string — ブリッジフィールドのテキスト。CurrentProfilePath;利用可能なデータがない場合は、空の文字列が可能です。これは接続記号ではなく、数字の ID でもありません。

動作

  • ExecuteClientApiCompatibility は、プロファイルやサーバーの選択を変更せずに、bridge.CurrentProfilePath を返します。
  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • 現在のプロファイルのパスを読み取ります。
var value = UO.ShardPath();
UO.Print(value);

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • ExecuteClientApiCompatibility は、プロファイルやサーバーの選択を変更せずに、bridge.CurrentProfilePath を返します。
return  RunScenario();
 object? RunScenario()
{
    var value = UO.ShardPath();
    if (Truth(Len(value) > 0))
    {
        UO.TextPrint(value);
    }

    return null;
}

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;

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.ShardPath();
        UO.Wait(500);
        var after = UO.ShardPath();
        UO.Print(before = after);
        return null;
    }
}

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.ShardPath() — UO.ShardPath()

引数: 引数はありません。

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "shardpath":

                case "clientprofilepath": return new InjectionValue(bridge.CurrentProfilePath);

Clone this wiki locally