Skip to content

JA UO Topic client ui

Codex edited this page Oct 12, 2026 · 4 revisions

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

クライアント UI

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

メッセージ、サービスウィンドウ、表示オブジェクトを表示し、IDEを開きます。これらの手順は、サーバーへの音声の送信に代わるものではありません。

セクション

トピック コマンドと説明
Print UO.Print
ClientPrint UO.ClientPrint
Info Window UO.FillInfoWindow · UO.ClearInfoWindow · UO.FillNewWindow
Text Window UO.TextOpen · UO.TextPrint · UO.TextClear · UO.TextClose
シンプルなガンプ UO.CloseSimpleGump
Close UI Window UO.CloseClientUIWindow
Circle Transparency UO.CircleTrans
Show Z UO.SetShowZ
Open IDE UO.OpenIDE

すべてのテーマコマンド

メッセージ

UO.Print · UO.ClientPrint · UO.ClientPrintEx · UO.CharPrint · UO.ColorPrint · UO.ConsolePrint · UO.ServerPrint · UO.SetSilentMode · UO.ConColor · UO.FontColor

窓

UO.ClearInfoWindow · UO.FillInfoWindow · UO.FillNewWindow · UO.TextOpen · UO.TextClear · UO.TextClose · UO.TextPrint · UO.CloseSimpleGump · UO.CloseClientUIWindow · UO.ShowJournal · UO.OpenIDE · UO.HelpRequest · UO.ActivateHandle · UO.CloseHandle · UO.Snap

オブジェクトの表示

UO.Hide · UO.ClientHide · UO.ClientMarkChar · UO.CircleTrans · UO.SetShowZ · UO.Morph

数字

UO.AddFigure · UO.UpdateFigure · UO.RemoveFigure · UO.ClearFigures

このトピックに関する例

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

UO.Print

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

var processed = 12;
UO.Print("Processed item entries: " + Convert.ToString(processed), 0x0044);

UO.FillInfoWindow

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

UO.FillInfoWindow("Status ready");

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


UO.ActivateHandle

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

C# のシグネチャ

void UO.ActivateHandle();

Windows/SDL に現在のクライアント ウィンドウを最前面に表示するよう要求します。引数や結果はありません。これはウィンドウ コマンドであり、アイテム、スキル、ターゲット アプリケーションではありません。実際のフォーカスはウィンドウ システムによって異なります。

引数

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

戻り値

void。この呼び出しはウィンドウのアクティブ化のみを要求します。ウィンドウ システムがそれをフォアグラウンドに持ってきたことを認識していません。

動作

  • クライアントは、SDL を介してゲーム ビュー ウィンドウを表示します。このコマンドは、ゲーム パケットを送信したり、ワールド内でアクションを実行したりしません。最小化されたウィンドウやウィンドウ システムの制限により、実際のフォーカスが妨げられる場合があります。
  • RequireGameView には Client.Game が必要です。 ClassicUO グラフィックス ウィンドウが開いていない場合、ブリッジは InvalidOperationException をスローします。 SDL_RaiseWindow は、既存のウィンドウを上げることを要求します。フォーカスに関する決定はウィンドウ システムに委ねられます。

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

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

簡単な例

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

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

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

1。クライアント ウィンドウを最前面に表示するように要求します。 - 直接スクリプト

引数と実行の流れ:

  • クライアント ウィンドウを最前面に表示するように要求します。
UO.ActivateHandle();

2。ゲームに接続する前にウィンドウのフォーカスを要求しないでください。 - スクリプト機能

引数と実行の流れ:

  • ゲームに接続する前にウィンドウのフォーカスを要求しないでください。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Connected()))
    {
        UO.ActivateHandle();
    }

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

    void RunAction()
    {
        UO.ActivateHandle();
    }
}

コマンドの実装

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

UO.ActivateHandle() — UO.ActivateHandle()

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

結果: void / Unit.

呼び出し時:

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

public void ActivateHandle() => bridge.ActivateHandle();

UO.AddFigure

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

C# のシグネチャ

dynamic UO.AddFigure(object? figure);

ClassicUO ワールドマップにローカル図を追加し、その ID を返します。数値はクライアント側に保存され、ゲームサーバーには通知されません。

引数

戻り値

int は加算された数値の正の ID です。 0 は、図形データが正しくない場合、またはカードが追加を拒否した場合に返されます。受け取ったIDをUO.UpdateFigureまたはUO.RemoveFigureに転送します。

動作

  • WorldMapGump のローカル図を作成します。線、楕円、長方形、方向矢印、テキストがサポートされています。 fcWorld 座標はマップの変換と縮尺に従います。 fcScreen はマップ ウィンドウを基準にして測定されます。選択したファセットの形状が表示されます。

配列形式: [kind, coord, x1, y1, x2, y2, brushColor, brushStyle, color, worldNum, text]。 kind: 0 線、1 楕円、2 長方形、3 方向矢印、4 テキスト。 coord: 0 world、1 画面。 color は、Delphi TColor (0x00BBGGRR) バイトオーダーを使用します。ワールド座標と x2=0,y2=0 を含む矢印の場合、開始点は現在のキャラクターです。互換性のために、歴史的な brushColor および brushStyle が採用されています。ビジュアル シェーディングは、Delphi との完全な一致を保証するものではありません。

Figure は、削除またはパージされるか、プロセスが終了するまで、クライアント コレクションに残ります。ファセットを変更すると、別のファセットに属する図形が非表示になるだけです。

  • 少なくとも 9 フィールドが受け入れられます。 worldNum がない場合は、現在のカードが使用されます。テキストがない場合は、空の文字列が取得されます。種類は 0..4、座標 - 0..1 に限定されます。他の意味は 0 になります。負の worldNum を指定すると、どのファセットでも表示できます。 ID カウンターは SetYokoMapFigure がチェックされる前にインクリメントされるため、拒否されたピースは ID にギャップを残す可能性があります。 WorldMapGump 静的コレクションが進行中です。 1 つのマネージャーの通常のスクリプトは、共通の永続的なランタイム状態を使用します。
  • brushColor と brushStyle はエントリに保存されますが、現在のレンダラはそれらを使用しません。線と長方形は輪郭として描画されます。楕円は 32 セグメントで構成されます。テキスト署名は kind=4; の場合にのみ描画されます。他の種類では出力されません。 color は、アウトラインを COLORREF 0x00BBGGRR の形式で指定します。

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

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

簡単な例

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

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

object? result = UO.AddFigure(new object?[] { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 });
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1。ゲームマップ上の四角形の赤い輪郭 - 直接スクリプト

引数と実行の流れ:

  • kind=2 は赤い輪郭を描きます。値「Area」を持つテキストフィールドは保存されますが、この種類のラベルは描画されません。テキスト出力は kind=4 です。
dynamic[] fig = new dynamic[checked((int)(11) + 1)];
fig[0] = 2;
fig[1] = 0;
fig[2] = UO.GetX("self")-3;
fig[3] = UO.GetY("self")-3;
fig[4] = UO.GetX("self")+3;
fig[5] = UO.GetY("self")+3;
fig[6] = 0;
fig[7] = 1;
fig[8] = 255;
fig[9] = UO.WorldNum();
fig[10] = "Area";
var figureId = UO.AddFigure(fig);

2。キャラクターからゲームマップ上の点への矢印 - スクリプト関数

引数と実行の流れ:

  • world 座標と x2=0,y2=0 を使用すると、矢印の原点は描画時のキャラクターの位置から取得されます。 kind=3 の値が East のテキストは出力されません。
return  RunScenario();
 object? RunScenario()
{
    dynamic[] dirFig = new dynamic[checked((int)(11) + 1)];
    dirFig[0] = 3;
    dirFig[1] = 0;
    dirFig[2] = UO.GetX("self") + 10;
    dirFig[3] = UO.GetY("self");
    dirFig[4] = 0;
    dirFig[5] = 0;
    dirFig[6] = 0;
    dirFig[7] = 1;
    dirFig[8] = 65280;
    dirFig[9] = UO.WorldNum();
    dirFig[10] = "East";
    var arrowId = UO.AddFigure(dirFig);
    return null;
}

3。現在のファセットの 2 点の間に青い線を作成します。 - スクリプトクラス

引数と実行の流れ:

  • 現在のファセットの 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()
    {
        dynamic[] lineFig = new dynamic[checked((int)(11) + 1)];
        lineFig[0] = 0;
        lineFig[1] = 0;
        lineFig[2] = UO.GetX("self");
        lineFig[3] = UO.GetY("self");
        lineFig[4] = UO.GetX("self") + 8;
        lineFig[5] = UO.GetY("self");
        lineFig[6] = 0;
        lineFig[7] = 1;
        lineFig[8] = 16711680;
        lineFig[9] = UO.WorldNum();
        lineFig[10] = "";
        var lineId = UO.AddFigure(lineFig);
        return null;
    }
}

コマンドの実装

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

UO.AddFigure(figure) — UO.AddFigure(Any)

引数: figure (Any)

結果: dynamic / Any.

呼び出し時:

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

case "addfigure":

                {

                    if (!TryMapFigureArg(0, out int[] figure, out string figureText))

                        return InjectionValue.Zero;

                    int id = state.NextMapFigureId++;

                    if (bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText) == 0)

                        return InjectionValue.Zero;

                    state.MapFigures[id] = SerializeMapFigure(figure, figureText);

                    return new InjectionValue(id);

                }

UO.CharPrint

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

C# のシグネチャ

void UO.CharPrint(object? color, object? msg);
void UO.CharPrint(object? id, object? color, object? msg);

ロードされたオブジェクトの上にあなただけに見える碑文を作成します。たとえば、選択したターゲットのマークやキャラクターの上の警告などです。これはキャラクターのスピーチやゲーム ウィンドウの下部に表示されるメッセージではありません。

引数

  • id はオブジェクトのシリアル番号であり、graphic/type や座標ではありません。 3 引数形式の UO.CharPrint は、self、lasttarget、および格納されたオブジェクト名も理解します。 UO.ClientPrintEx の SenderID には、UO.Hex2Int(UO.GetSerial("self") などの番号を使用します。文字列エイリアスはそこでオブジェクトとして解決されません。
  • color は RGB ではなく、UO hue です。数値の最下位 16 ビットが取得されます。 0x0044 は一例です。 -1は「任意の色」という意味ではなく、0xFFFFになります。カラーConColorはここでは使用されていません。

戻り値

戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。

動作

  • オブジェクトはロードされたワールドに存在する必要があり、削除されてはなりません。空のテキストや欠落しているターゲットは描画されません。このコマンドはサーバーからオブジェクトをダウンロードしません。サーバーと他のプレイヤーはこのメッセージを受け取りません。ゲーム ウィンドウがなければ、碑文は世界中で見ることができません。これはマネージャーの syslog に代わるものではありません。
  • UO.CharPrint(color, msg) は自分のキャラクターを選択します。 UO.CharPrint(id, color, msg) は指定されたオブジェクトを選択します。どちらの形式でもフォント 3 が使用されます。 UO.ClientPrintEx には、SenderID、Color、Font、Text の順で 4 つの引数すべてが必要です。
  • フォント番号は UO であり、ポイント サイズや Windows フォント名ではありません。番号は 0..255 の範囲に制限されます。特定のフォントが利用できるかどうかは、ゲーム ファイルによって異なります。例では、3 が通常のフォント番号です。
  • GetSerial は 16 進文字列を返します。 Hex2Int は、数値 0 と比較する前に、それを int に変換します。文字列「0x00000000」を数値0としてチェックすることはできません。
  • UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx

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

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

簡単な例

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

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

UO.Print("Calling UO.CharPrint");
UO.CharPrint(0x0044, "Ready");

1。 UO.CharPrint - 1 - 直接スクリプト

引数と実行の流れ:

  • 最初の形式 CharPrint は、その文字の上に Ready を配置します。 ClientPrintEx は、UO.Hex2Int(UO.GetSerial("self") 経由でserial) を受け取り、フォントを明示的に 3 に渡します。碑文にはゲームモードは含まれていません。
  • GetSerial は 16 進文字列を返します。 Hex2Int は、数値 0 と比較する前に、それを int に変換します。文字列「0x00000000」を数値0としてチェックすることはできません。
UO.CharPrint(0x0044, "Ready");

2。 UO.CharPrint — 2 — スクリプト関数

引数と実行の流れ:

  • ターゲット — 最後のターゲットの serial。この例では、ゼロはタグ付けする人がいないことを意味します。選択されたターゲット - ローカル シグネチャのみ: ターゲットは攻撃されず、アクティブ サーバー ターゲットは満たされません。
  • GetSerial は 16 進文字列を返します。 Hex2Int は、数値 0 と比較する前に、それを int に変換します。文字列「0x00000000」を数値0としてチェックすることはできません。
return  RunScenario();
 object? RunScenario()
{
    var target = UO.Hex2Int(UO.GetSerial("lasttarget"));
    if (Truth(target != 0))
    {
        UO.CharPrint(target, 0x0044, "Selected target");
    }

    return null;
}

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

3。 UO.CharPrint - 3 - シナリオクラス

引数と実行の流れ:

  • ShowWeightWarning の全文を以下に宣言します。彼女はその重さを既知の正の制限と比較し、過負荷になった場合にのみキャラクターを上書きします。何も捨てません。 Convert.ToString は重みをテキストに変換します。
  • GetSerial は 16 進文字列を返します。 Hex2Int は、数値 0 と比較する前に、それを int に変換します。文字列「0x00000000」を数値0としてチェックすることはできません。
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()
    {
        ShowWeightWarning(UO.Weight(), UO.MaxWeight());
        return null;
    }

    void ShowWeightWarning(dynamic weight, dynamic maximum)
    {
        if (Truth(maximum > 0) && Truth(weight >= maximum))
        {
            UO.CharPrint(UO.Hex2Int(UO.GetSerial("self")), 0x0044, "Too heavy: " + Convert.ToString(weight));
        }
    }

    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.CharPrint(color, msg) — UO.CharPrint(Integer,String)

引数: color (Integer/String), msg (String)

結果: void / Unit.

呼び出し時:

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

public void CharPrint(int color, string msg) => CharPrint(bridge.Self, color, msg);

UO.CharPrint(color, msg) — UO.CharPrint(String,String)

引数: color (Integer/String), msg (String)

結果: void / Unit.

呼び出し時:

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

public void CharPrint(string color, string msg) => CharPrint(bridge.Self, NumberConversions.ToInt(color), msg);

UO.CharPrint(id, color, msg) — UO.CharPrint(Any,Any,Any)

引数: id (Any/Integer), color (Any/Integer), msg (Any/String)

結果: void / Unit.

呼び出し時:

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

public void CharPrint(InjectionValue id, InjectionValue color, InjectionValue msg) 

            => CharPrint(GetObject(id), NumberConversions.ToInt(color), (string)msg);

UO.CharPrint(id, color, msg) — UO.CharPrint(Integer,Integer,String)

引数: id (Any/Integer), color (Any/Integer), msg (Any/String)

結果: void / Unit.

呼び出し時:

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

public void CharPrint(int id, int color, string msg) => bridge.CharPrint(id, color, msg);

UO.CircleTrans

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

C# のシグネチャ

int UO.CircleTrans();
void UO.CircleTrans(object? enabled);

アクティブなプロファイルの透明度サークル設定を読み取るか変更します。

引数

  • enabled - int: 0 は無効になり、ゼロ以外の値は有効になります。引数がない場合、設定は読み取り専用になります。

戻り値

引数なし int 1/0;引数のあるフォームは null を返します。

動作

  • プロファイルがない場合に読み取ると、0 が与えられます。プロファイルのないエントリではエラーが出力されます。プロファイルがある場合は、UseCircleOfTransparencyを変更してプロファイルを保存します。これはクライアントの視覚的なカスタマイズです。

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

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

簡単な例

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

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

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

1。設定読み取り - 直接スクリプト

引数と実行の流れ:

  • 読んでもプロフィールは変わりません。
var enabled = UO.CircleTrans();
UO.Print(Convert.ToString(enabled));

2。透明性を有効にする - スクリプト機能

引数と実行の流れ:

  • 記録では透明サークルがオンのままになります。
return  RunScenario();
 object? RunScenario()
{
    UO.CircleTrans(1);
    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()
    {
        var previous = UO.CircleTrans();
        UO.CircleTrans(0);
        UO.CircleTrans(previous);
        return null;
    }
}

コマンドの実装

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

UO.CircleTrans() — UO.CircleTrans()

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

結果: int / Integer.

呼び出し時:

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

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

UO.CircleTrans(enabled) — UO.CircleTrans(Integer)

引数: enabled (Integer)

結果: void / Unit.

呼び出し時:

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

public void CircleTrans(int enabled) => bridge.CircleTrans(enabled);

UO.ClearFigures

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

C# のシグネチャ

void UO.ClearFigures();

すべてのカスタム マップ形状とそのランタイム エントリを削除します。

引数

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

戻り値

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

動作

  • WorldMapGump.ClearYokoMapFigures と状態.MapFigures をクリアします。ベースマップとUserStaticsは変更されません。
  • ClearYokoMapFigures は、進行中の WorldMapGump の静的コレクションをクリアし、その後コマンドは MapFigures の実行時状態をクリアします。このクリーンアップの範囲は、呼び出し元のスクリプトの名前だけでなく、クライアント コレクション全体によって決まります。
  • 通常のカスタム マップ ラベル (userMarkers.usr) は保持されます。

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

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

簡単な例

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

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

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

1。状態のクリア - 直接スクリプト

引数と実行の流れ:

  • すべてのカスタム マップ形状とそのランタイム エントリを削除します。
UO.ClearFigures();

2。セットアップ後にクリア - スクリプト機能

引数と実行の流れ:

  • 現在のマップのローカル形状を作成してから、すべてのカスタム形状を削除します。
return  RunScenario();
 object? RunScenario()
{
    dynamic[] figure = new dynamic[checked((int)(9) + 1)];
    figure[0] = 0;
    figure[1] = 0;
    figure[2] = UO.GetX();
    figure[3] = UO.GetY();
    figure[4] = figure[2] + 1;
    figure[5] = figure[3] + 1;
    figure[6] = 0;
    figure[7] = 0;
    figure[8] = 0;
    figure[9] = UO.WorldNum();
    var figureId = UO.AddFigure(figure);
    UO.ClearFigures();
    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.ClearFigures();
        UO.ClearFigures();
        return null;
    }
}

コマンドの実装

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

UO.ClearFigures() — UO.ClearFigures()

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

結果: void / Unit.

呼び出し時:

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

case "clearfigures":

                    bridge.ClearMapFigures();

                    state.MapFigures.Clear();

                    return InjectionValue.Unit;

UO.ClearInfoWindow

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

C# のシグネチャ

void UO.ClearInfoWindow();

クライアントのテキストウィンドウの行をクリアします。

引数

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

戻り値

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

動作

  • TextClear はバッファをクリアします。ウィンドウが開いている場合は、空のコンテンツでウィンドウを更新します。窓は必ずしも閉まるわけではありません。

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

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

簡単な例

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

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

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

1。状態のクリア - 直接スクリプト

引数と実行の流れ:

  • クライアントのテキストウィンドウの行をクリアします。
UO.ClearInfoWindow();

2。セットアップ後にクリア - スクリプト機能

引数と実行の流れ:

  • 以前に追加したテキスト ウィンドウの行をクリアします。
return  RunScenario();
 object? RunScenario()
{
    UO.FillInfoWindow("status");
    UO.ClearInfoWindow();
    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.ClearInfoWindow();
        UO.ClearInfoWindow();
        return null;
    }
}

コマンドの実装

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

UO.ClearInfoWindow() — UO.ClearInfoWindow()

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

結果: void / Unit.

呼び出し時:

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

case "clearinfowindow": bridge.TextClear(); return InjectionValue.Unit;

UO.ClientHide

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

C# のシグネチャ

dynamic UO.ClientHide(object? objID);

serial のロード済みアイテムまたはその他のキャラクター (コンテナ、ペーパードール、装備アイテムなど) を ClassicUO 表示のみで非表示にします。

引数

  • objID — ロードされた特定のオブジェクトのシリアル: int または 16 進数/10 進数の文字列。これはgraphic/typeではありません。保存名にはGetSerial(名前)を使用します。パラメータは必須です。光景は現れない。

戻り値

ブリッジコマンド送信後、int 1。履歴結果はオブジェクトの存在を確認しません。不明な serial または self であってもブリッジは失敗を出力し、ランタイムは 1 を返します。この値を、非表示が成功するかどうかのテストとして使用しないでください。互換性メタデータには object? が表示されます。

動作

  • 引数は 1 つだけ必要です。マウスで選択するには、UO.Hide() を使用します。
  • Hide(serial) ​​は、読み込まれた既知のオブジェクトに対して即座に動作します。 graphic/type ではなく、特定のスタック/アイテムの serial を渡します。選択したスタックは、量に関係なく完全に非表示になります。
  • アイテムはコンテナ内に残ります。数量、所有者、内容、サーバーの状態は変わりません。 FindType/GetContent はまだ見つけることができます。非表示は、検索フィルター、引き継ぎ、削除、非表示スキル、またはサーバー側の非表示ではありません。
  • 通常のコンテナ、取引ウィンドウ、および戦利品グリッドは、非表示のアイテムを描画せず、そのアイテムのクリック/ドラッグを受け入れません。このフラグは、ロードされた同じオブジェクトの使用中にウィンドウが再構築されて再度開かれた場合にも保持されます。
  • 装備したアイテムはペーパードール、小さなスロット、キャラクター画像から消えます。装備されたままになります。サーバー上のレイヤー、アーマー、状態は変わりません。隠されたローブが下着と重ならなくなりました。マネージャー内のキャラクター画像は同じフラグを使用して更新されます。実際の機器のリストは引き続き利用可能です。
  • Hide は自分のキャラクター、土地、スタティックを隠しません。存在しないserialがメッセージを発します。バッグ自体を非表示にしても、すでに開いている内容ウィンドウは閉じられません。また、含まれている各アイテムが自動的に非表示になることもありません。
  • 現在の API には個別の再表示コマンドはありません。非表示は、ロードされたオブジェクト インスタンスに属します。クライアント ワールドからオブジェクト インスタンスを削除し、再ロードすると (たとえば、再接続するとき)、フラグがリセットされます。チェストを閉じたり開いたりするだけでは、アイテムの返品が保証されません。

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

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

簡単な例

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

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

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

1。既知の ID - 直接スクリプトによる項目の非表示

引数と実行の流れ:

  • ObjID は特定のアイテムであり、その type ではありません。ディスプレイから消え、コンテナ内に残ります。
var item = 0x40001234;
if (Truth(UO.Exists(item)))
{
    UO.ClientHide(item);
}

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

2。見つかったスタックを非表示にする - スクリプト関数

引数と実行の流れ:

  • FindType は、backpack 内の任意の色の graphic 0x0EED を検索します。返された serial は ClientHide に送信されます。スタック全体が完全に非表示になります。
return  RunScenario();
 object? RunScenario()
{
    var item = UO.FindType(0x0EED, -1, "backpack");
    if (Truth(item != ""))
    {
        UO.ClientHide(item);
        UO.Print("Amount is still: " + Convert.ToString(UO.GetQuantity(item)));
    }

    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。名前付きオブジェクトの使用 - スクリプト クラス

引数と実行の流れ:

  • GetSerial は、以前に保存された装飾名を解決します。アイテムは、コンテナを開けるなど、最初にロードする必要があります。
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 item = UO.GetSerial("decoration");
        if (Truth(UO.Exists(item)) && Truth(item != UO.GetSerial("self")))
        {
            UO.ClientHide(item);
        }

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

引数: objID (Any)

結果: dynamic / Any.

呼び出し時:

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

case "clienthide": bridge.ClientHide(Arg(0)); return InjectionValue.True;

UO.ClientMarkChar

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

C# のシグネチャ

void UO.ClientMarkChar(object? actionIndex, object? id);

クライアントラベル LastTarget および/または LastAttack を更新します。

引数

  • actionIndex - int: 1 - LastTarget; 2 - LastAttack; 3 - 両方。他の値ではエラーが出力されます。
  • id — オブジェクトのシリアル番号、または self/backpack/lasttarget/saved オブジェクトのサポートされている名前。数値文字列と 0x 文字列は実行時に解決されます。

戻り値

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

動作

  • ClientMarkChar は、攻撃を送信したりサーバーターゲットに応答したりせずに、保存されたターゲットを変更します。後続のコマンドでは、新しいラベルを使用できます。

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

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

簡単な例

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

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

UO.Print("Calling UO.ClientMarkChar");
UO.ClientMarkChar(1, "self");

1。 LastTarget を更新 - 直接スクリプト

引数と実行の流れ:

  • 保存した対象が自分のキャラクターとなります。
UO.ClientMarkChar(1,"self");

2。両方のラベルを更新 - スクリプト関数

引数と実行の流れ:

  • 後者のターゲットは両方のクライアント タグに使用されます。
return  RunScenario();
 object? RunScenario()
{
    var target = UO.LastTarget();
    if (Truth(UO.Exists(target)))
    {
        UO.ClientMarkChar(3, target);
    }

    return null;
}

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

3。不正なアクション - スクリプト クラス

引数と実行の流れ:

  • ゼロはアクション セットの一部ではないため、エラー メッセージが表示されます。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ClientMarkChar(0, "self");
        return null;
    }
}

コマンドの実装

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

UO.ClientMarkChar(actionIndex, id) — UO.ClientMarkChar(Any,Any)

引数: actionIndex (Any), id (Any)

結果: void / Unit.

呼び出し時:

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

public void ClientMarkChar(InjectionValue actionIndex, InjectionValue id)

            => bridge.ClientMarkChar(NumberConversions.ToInt(actionIndex), GetObject(id));

UO.ClientPrint

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

C# のシグネチャ

void UO.ClientPrint(object? text);

スクリプトの進行状況または停止条件に関するローカル メッセージを表示します。他のプレイヤーではなく、あなたがそれを見ます。

引数

戻り値

戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。

動作

  • メッセージはゲーム ウィンドウの左下の領域とローカル ログに保存されます。コピーは出力 IDE で利用できます。マネージャーの一般ログで、スクリプト メッセージ フィルターを有効にします。エントリはゲーム ウィンドウなしで利用できます。サーバー システムのメッセージ フィルターは、そのようなレコードを選択しません。ネットワーク音声パケットは送信されません。頭上の碑文にはUO.CharPrintがあります。
  • UO.Print は、ゲーム メッセージ ログに新しいエントリを追加します。まず、目的の検索文字列/結果を読み取るか保存し、次に診断メッセージを記録します。高速ループでは、反復ごとではなく、変更が発生したときにメッセージを記録します。
  • このスクリプト ランタイムのシステム メッセージの色が使用されます。最初は 0x0440、変更された場合は UO.ConColor です。これはローカル エントリです。コマンド名はサーバーへの送信を意味するものではありません。
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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

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

簡単な例

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

コマンドは独立した文で、戻り値はありません(void)。メッセージ本文は呼び出しに直接記載されています。

UO.ClientPrint("Hello from C#");

1。簡単なレポート - 直接スクリプト

引数と実行の流れ:

  • 処理済み=12 — すでに処理されたアイテムのデモ番号。 Convert.ToString はそれを文字列に変換します。この例では数値のみが報告されます。オブジェクト自体は転送されません。
var processed = 12;
UO.ClientPrint("Processed item entries: " + Convert.ToString(processed));

2。過負荷警告 - スクリプト関数

引数と実行の流れ:

  • キャラクターの体重と最大値を読み取ります。ゼロまたは不明な最大値は過負荷とみなされません。重み >= 最大の場合、1 行が印刷され、メインが終了します。アイテムは捨てられません。
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ClientPrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    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。重みの変更のみをレポート - スクリプト クラス

引数と実行の流れ:

  • Main は重みを記憶し、1000 ミリ秒待機して、完全に宣言された ReportWeight を呼び出します。アシスタントは、重量が変更された場合にのみ印刷し、次のチェックのために新しい重量を返します。それ自体は無限ループを作成しません。
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ClientPrint("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    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.ClientPrint(text) — UO.ClientPrint(Any)

引数: text (Any)

結果: void / Unit.

呼び出し時:

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

case "addtojournal":

                case "addtosystemjournal":

                case "clientprint":

                    SystemMessage(Text(0)); return InjectionValue.Unit;

UO.ClientPrintEx

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

C# のシグネチャ

void UO.ClientPrintEx(object? senderID, object? color, object? font, object? text);

ロードされたオブジェクトの上にあなただけに見える碑文を作成します。たとえば、選択したターゲットのマークやキャラクターの上の警告などです。これはキャラクターのスピーチやゲーム ウィンドウの下部に表示されるメッセージではありません。

引数

  • senderID はオブジェクトのシリアル番号であり、graphic/type や座標ではありません。 3 引数形式の UO.CharPrint は、self、lasttarget、および格納されたオブジェクト名も理解します。 UO.ClientPrintEx の SenderID には、UO.Hex2Int(UO.GetSerial("self") などの番号を使用します。文字列エイリアスはそこでオブジェクトとして解決されません。
  • color は RGB ではなく、UO hue です。数値の最下位 16 ビットが取得されます。 0x0044 は一例です。 -1は「任意の色」という意味ではなく、0xFFFFになります。カラーConColorはここでは使用されていません。
  • font — ポイント サイズや Windows フォント名ではなく、フォント番号 UO。番号は 0..255 の範囲に制限されます。特定のフォントが利用できるかどうかは、ゲーム ファイルによって異なります。例では、3 が通常のフォント番号です。

戻り値

戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。

動作

  • オブジェクトはロードされたワールドに存在する必要があり、削除されてはなりません。空のテキストや欠落しているターゲットは描画されません。このコマンドはサーバーからオブジェクトをダウンロードしません。サーバーと他のプレイヤーはこのメッセージを受け取りません。ゲーム ウィンドウがなければ、碑文は世界中で見ることができません。これはマネージャーの syslog に代わるものではありません。
  • UO.CharPrint(color, msg) は自分のキャラクターを選択します。 UO.CharPrint(id, color, msg) は指定されたオブジェクトを選択します。どちらの形式でもフォント 3 が使用されます。 UO.ClientPrintEx には、SenderID、Color、Font、Text の順で 4 つの引数すべてが必要です。
  • フォント番号は UO であり、ポイント サイズや Windows フォント名ではありません。番号は 0..255 の範囲に制限されます。特定のフォントが利用できるかどうかは、ゲーム ファイルによって異なります。例では、3 が通常のフォント番号です。
  • GetSerial は 16 進文字列を返します。 Hex2Int は、数値 0 と比較する前に、それを int に変換します。文字列「0x00000000」を数値0としてチェックすることはできません。
  • UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx

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

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

簡単な例

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

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

UO.Print("Calling UO.ClientPrintEx");
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Ready");

1。 UO.ClientPrintEx - 1 - 直接スクリプト

引数と実行の流れ:

  • 最初の形式 CharPrint は、その文字の上に Ready を配置します。 ClientPrintEx は、UO.Hex2Int(UO.GetSerial("self") 経由でserial) を受け取り、フォントを明示的に 3 に渡します。碑文にはゲームモードは含まれていません。
  • GetSerial は 16 進文字列を返します。 Hex2Int は、数値 0 と比較する前に、それを int に変換します。文字列「0x00000000」を数値0としてチェックすることはできません。
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Ready");

2。 UO.ClientPrintEx — 2 — スクリプト関数

引数と実行の流れ:

  • ターゲット — 最後のターゲットの serial。この例では、ゼロはタグ付けする人がいないことを意味します。選択されたターゲット - ローカル シグネチャのみ: ターゲットは攻撃されず、アクティブ サーバー ターゲットは満たされません。
  • GetSerial は 16 進文字列を返します。 Hex2Int は、数値 0 と比較する前に、それを int に変換します。文字列「0x00000000」を数値0としてチェックすることはできません。
return  RunScenario();
 object? RunScenario()
{
    var target = UO.Hex2Int(UO.GetSerial("lasttarget"));
    if (Truth(target != 0))
    {
        UO.ClientPrintEx(target, 0x0044, 3, "Selected target");
    }

    return null;
}

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

3。 UO.ClientPrintEx - 3 - シナリオクラス

引数と実行の流れ:

  • ShowWeightWarning の全文を以下に宣言します。彼女はその重さを既知の正の制限と比較し、過負荷になった場合にのみキャラクターを上書きします。何も捨てません。 Convert.ToString は重みをテキストに変換します。
  • GetSerial は 16 進文字列を返します。 Hex2Int は、数値 0 と比較する前に、それを int に変換します。文字列「0x00000000」を数値0としてチェックすることはできません。
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()
    {
        ShowWeightWarning(UO.Weight(), UO.MaxWeight());
        return null;
    }

    void ShowWeightWarning(dynamic weight, dynamic maximum)
    {
        if (Truth(maximum > 0) && Truth(weight >= maximum))
        {
            UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Too heavy: " + Convert.ToString(weight));
        }
    }

    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.ClientPrintEx(senderID, color, font, text) — UO.ClientPrintEx(Any,Any,Any,Any)

引数: senderID (Any), color (Any), font (Any), text (Any)

結果: void / Unit.

呼び出し時:

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

case "clientprintex":

                    bridge.CharPrintEx(Arg(0), Arg(1), Arg(2), Text(3)); return InjectionValue.Unit;

UO.CloseClientUIWindow

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

C# のシグネチャ

void UO.CloseClientUIWindow(object? uiWindowType, object? id);

特定のオブジェクトの指定されたタイプのローカル クライアント ウィンドウを閉じます。たとえば、キャラクターの紙人形、ステータス、バックパックのウィンドウを削除できます。このコマンドはゲーム クライアントを閉じず、サーバーのガンプ ボタンにも応答しません。

引数

  • uiWindowType — 必須の数値ウィンドウ コード: 0 — ペーパードール (装備)、1 — キャラクターのステータス、2 — プロフィール、3 — コンテナ。これは 4 つのコードの別個のリストであり、graphic/type 本体や ID サーバーガンプではありません。他の番号ではウィンドウが見つかりません。
  • id — ウィンドウが属するオブジェクトのシリアル: 0..2 タイプの場合は self/serial 文字、3 タイプの場合は backpack/serial コンテナ。数値、16 進文字列、または解決可能なオブジェクト エイリアスを受け入れます。これはリスト InfoGumps のウィンドウ番号ではありません。不明なオブジェクトのエイリアスは 0 に変換されます。

戻り値

void - 値なし。呼び出しは、var result = および if UO.CloseClientUIWindow(...) なしで、別の行に書き込まれます。適切な開いているウィンドウがない場合は、何も起こりません。コマンドは true/false を返しません。

動作

  • 両方のパラメータが必要です。ウィンドウクラスとLocalSerialの両方が比較されます。 (3、self) ​​で呼び出すことはバックパックを意味しません。バックパックには backpack が必要です。
  • バイパスは、このタイプの開いている、まだ破棄されていないウィンドウに影響します/serial;ゲーム スレッド上で一致するすべてのウィンドウが閉じられます。残りのウィンドウは開いたままになります。
  • インターフェイスが閉じても、アイテムはコンテナから削除されず、キャラクターも世界から消えません。繰り返しても問題ありません。ウィンドウがすでに閉じている場合、一致するものはありません。
  • サーバー側のダイアログについては、UO.CloseSimpleGump と UO.NumGumpButton ​​を学習してください。このコマンドのコード 0..3 はそこには適用されません。

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

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

簡単な例

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

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

UO.Print("Calling UO.CloseClientUIWindow");
UO.CloseClientUIWindow(0, "self");

1。紙人形を取り除く - 直接スクリプト

引数と実行の流れ:

  • キャラクターの装備のウィンドウのみが閉じます。彼のステータス、プロフィール、バックパックは別のウィンドウのままです。
UO.CloseClientUIWindow(0, "self");

2。作業後にバックパックウィンドウを閉じる - スクリプト機能

引数と実行の流れ:

  • バックパックを開けていない場合、アクションは何も変わりません。このコマンドは項目を移動せず、結果を返しません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Connected()) && Truth(UO.Exists("backpack")))
    {
        UO.CloseClientUIWindow(3, "backpack");
    }

    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。選択したキャラクターのステータスとプロフィールを削除 - シナリオクラス

引数と実行の流れ:

  • 1 - ステータス、2 - プロフィール。 ID は選択した mobile の serial です。ここで、ASC(text,0) は、文字列 serial を予備の 0 を含む数値に解析します。ユーザー プロシージャはウィンドウの存在について何も保証しません。どちらの呼び出しにも Unit があります。
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 selected = Asc(UO.GetSerial("lasttarget"), 0);
        CloseMobilePanels(selected);
        return null;
    }

    void CloseMobilePanels(dynamic id)
    {
        if (Truth(id == 0) || !(Truth(UO.Exists(id))))
        {
            return;
        }

        UO.CloseClientUIWindow(1, id);
        UO.CloseClientUIWindow(2, id);
    }

    int Asc(object? value, int fallback = 0)
    {
        string text = Convert.ToString(value) ?? "";
        if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
            return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
        return int.TryParse(text, out int number) ? number : fallback;
    }

    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.CloseClientUIWindow(uiWindowType, id) — UO.CloseClientUIWindow(Any,Any)

引数: uiWindowType (Any), id (Any)

結果: void / Unit.

呼び出し時:

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

case "closeclientuiwindow": bridge.CloseClientWindow(Arg(0), Arg(1)); return InjectionValue.Unit;

UO.CloseHandle

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

C# のシグネチャ

void UO.CloseHandle();

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

引数

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

戻り値

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

動作

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

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

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

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

引数と実行の流れ:

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

    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.CloseHandle();
        }
    }

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

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

結果: void / Unit.

呼び出し時:

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

public void CloseHandle() => bridge.CloseHandle();

UO.CloseSimpleGump

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

C# のシグネチャ

void UO.CloseSimpleGump(object? gumpIndex);

厳密なインデックスによって閉じることが許可されているサーバー ガンプをローカルで閉じます。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。

戻り値

void - 何も返しません。結果はサーバーまたはboolの確認として解釈されるべきではありません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • 無効なインデックスと NoClose は何も変更しません。このコマンドはボタンの応答をサーバーに送信しません。この回答には、SendGumpSelect を使用してください。
  • 閉じるとリストとインデックスが変更されます。一括クローズするには、リストを最後のインデックスから最初のインデックスまでたどります。

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

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

簡単な例

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

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

UO.Print("Calling UO.CloseSimpleGump");
UO.CloseSimpleGump(0);

1。最初のウィンドウを閉じる - 直接スクリプト

引数と実行の流れ:

  • 0 はインデックスであり、ID ではありません。ウィンドウが閉じることを禁止している場合、ウィンドウは開いたままになります。
UO.CloseSimpleGump(0);

2。有効なウィンドウをすべて閉じる - スクリプト機能

引数と実行の流れ:

  • リバーストラバーサルは、取引終了後のインデックスシフトの影響を軽減します。新しいウィンドウを並行して開く場合は、リストを再度確認してください。
return  RunScenario();
 object? RunScenario()
{
    var i = UO.GetGumpsCount() - 1;
    while (Truth(i >= 0))
    {
        UO.CloseSimpleGump(i);
        i = i - 1;
    }

    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。閉じる前に情報を保存する - スクリプト クラス

引数と実行の流れ:

  • info[1] - GumpID を保存しました。アクションは何も返さないため、結果は変数に代入されません。
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 info = UO.GetGumpInfo(0);
        if (Truth(ArrayLength(info) == 5))
        {
            UO.CloseSimpleGump(0);
            UO.Print(Hex(info[1]));
        }

        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
    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;
}

コマンドの実装

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

UO.CloseSimpleGump(gumpIndex) — UO.CloseSimpleGump(Any)

引数: gumpIndex (Any)

結果: void / Unit.

呼び出し時:

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

case "closesimplegump":

                    if (bridge is IApiGumpAccess gumpAccess) gumpAccess.CloseGumpAtIndex(Arg(0));

                    else bridge.CloseSimpleGump(Arg(0));

                    return InjectionValue.Unit;

UO.ColorPrint

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

C# のシグネチャ

void UO.ColorPrint(object? color, object? msg);

スクリプトの進行状況または停止条件に関するローカル メッセージを表示します。他のプレイヤーではなく、あなたがそれを見ます。

引数

  • RGB ではなく、color - UO hue。数値または 16 進数の文字列。ブリッジは下位 16 ビットを使用します。 graphic/typeと混同しないでください。例の 0x0044 は、選択された hue です。カラーなしの場合は、hue 0x03B2 が使用されます。 UO.Print(text, color) は最初にテキストを受け入れます。 UO.ColorPrint(color, text) – 最初に色を付けます。

戻り値

戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。

動作

  • メッセージはゲーム ウィンドウの左下の領域とローカル ログに保存されます。コピーは出力 IDE で利用できます。マネージャーの一般ログで、スクリプト メッセージ フィルターを有効にします。エントリはゲーム ウィンドウなしで利用できます。サーバー システムのメッセージ フィルターは、そのようなレコードを選択しません。ネットワーク音声パケットは送信されません。頭上の碑文にはUO.CharPrintがあります。
  • UO.Print は、ゲーム メッセージ ログに新しいエントリを追加します。まず、目的の検索文字列/結果を読み取るか保存し、次に診断メッセージを記録します。高速ループでは、反復ごとではなく、変更が発生したときにメッセージを記録します。
  • 色なしの場合は、hue 0x03B2 が使用されます。 UO.Print(text, color) は最初にテキストを受け入れます。 UO.ColorPrint(color, text) – 最初に色を付けます。
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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

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

簡単な例

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

コマンドは独立した文で、戻り値はありません(void)。メッセージ本文は呼び出しに直接記載されています。

UO.ColorPrint(0x0044, "Hello from C#");

1。簡単なレポート - 直接スクリプト

引数と実行の流れ:

  • 処理済み=12 — すでに処理されたアイテムのデモ番号。 Convert.ToString はそれを文字列に変換します。この例では数値のみが報告されます。オブジェクト自体は転送されません。
var processed = 12;
UO.ColorPrint(0x0044, "Processed item entries: " + Convert.ToString(processed));

2。過負荷警告 - スクリプト関数

引数と実行の流れ:

  • キャラクターの体重と最大値を読み取ります。ゼロまたは不明な最大値は過負荷とみなされません。重み >= 最大の場合、1 行が印刷され、メインが終了します。アイテムは捨てられません。
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ColorPrint(0x0044, "Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    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。重みの変更のみをレポート - スクリプト クラス

引数と実行の流れ:

  • Main は重みを記憶し、1000 ミリ秒待機して、完全に宣言された ReportWeight を呼び出します。アシスタントは、重量が変更された場合にのみ印刷し、次のチェックのために新しい重量を返します。それ自体は無限ループを作成しません。
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ColorPrint(0x0044, "Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    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.ColorPrint(color, msg) — UO.ColorPrint(Any,Any)

引数: color (Any), msg (Any)

結果: void / Unit.

呼び出し時:

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

public void ColorPrint(InjectionValue color, InjectionValue msg) => bridge.Print(NumberConversions.ToInt(color), msg.ToString());

UO.ConColor

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

C# のシグネチャ

void UO.ConColor(object? color);

このスクリプト ランタイムの後続のシステム メッセージに UO hue を設定します。

引数

  • RGB ではなく、color - UO hue。数値または 16 進数の文字列。ブリッジは下位 16 ビットを使用します。 graphic/typeと混同しないでください。例の 0x0044 は、選択された hue です。

戻り値

戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。

動作

  • 後続の UO.ClientPrint、UO.AddToJournal、UO.AddToSystemJournal に影響します。前の行の色を変更せず、SpeechHue プロファイルを変更せず、色の引数なしで UO.Print の色を変更しません。古いカラーゲッターはここにはありません。選択した通常の hue を変数に保存します。
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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

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

簡単な例

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

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

UO.Print("Calling UO.ConColor");
UO.ConColor(0x0044);

1。 UO.ConColor - 1 - 直接スクリプト

引数と実行の流れ:

  • 0x0044 は次のシステムラインの色になります。 ConColor自体は何も出力しません。
UO.ConColor(0x0044);
UO.AddToSystemJournal("Notice");

2。 UO.ConColor — 2 — スクリプト関数

引数と実行の流れ:

  • 通常の Print は 0x03B2 の色を保持し、AddToJournal は指定された 0x0044 を使用します。どちらのメッセージもローカルです。
return  RunScenario();
 object? RunScenario()
{
    UO.ConColor(0x0044);
    UO.Print("Normal Print color");
    UO.AddToJournal("System color");
    return null;
}

3。 UO.ConColor - 3 - シナリオクラス

引数と実行の流れ:

  • usualHue=0x0440 は、読み取られた古い値ではなく、明らかに選択された通常の色です。この試行では一時的な 0x0035 が使用されます。 finally は usualHue を返し、次の行が再び通常のカラーで印刷されます。
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 usualHue = 0x0440;
        UO.ConColor(usualHue);
        try
        {
            UO.ConColor(0x0035);
            UO.AddToSystemJournal("Temporary warning");
        }
        finally
        {
            UO.ConColor(usualHue);
        }

        UO.AddToSystemJournal("Normal messages again");
        return null;
    }
}

コマンドの実装

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

UO.ConColor(color) — UO.ConColor(Any)

引数: color (Any)

結果: void / Unit.

呼び出し時:

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

public void ConColor(InjectionValue color)

        {

            systemMessageColor = NumberConversions.ToInt(color);

        }

UO.ConsolePrint

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

C# のシグネチャ

void UO.ConsolePrint(object? msg);

スクリプトの進行状況または停止条件に関するローカル メッセージを表示します。他のプレイヤーではなく、あなたがそれを見ます。

引数

戻り値

戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。

動作

  • メッセージはゲーム ウィンドウの左下の領域とローカル ログに保存されます。コピーは出力 IDE で利用できます。マネージャーの一般ログで、スクリプト メッセージ フィルターを有効にします。エントリはゲーム ウィンドウなしで利用できます。サーバー システムのメッセージ フィルターは、そのようなレコードを選択しません。ネットワーク音声パケットは送信されません。頭上の碑文にはUO.CharPrintがあります。
  • UO.Print は、ゲーム メッセージ ログに新しいエントリを追加します。まず、目的の検索文字列/結果を読み取るか保存し、次に診断メッセージを記録します。高速ループでは、反復ごとではなく、変更が発生したときにメッセージを記録します。
  • 色なしの場合は、hue 0x03B2 が使用されます。 UO.Print(text, color) は最初にテキストを受け入れます。 UO.ColorPrint(color, text) – 最初に色を付けます。
  • 名前にコンソールという名前が付いていますが、これは同じローカル ゲーム出力であり、別個の Windows ターミナルではありません。
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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

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

簡単な例

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

コマンドは独立した文で、戻り値はありません(void)。メッセージ本文は呼び出しに直接記載されています。

UO.ConsolePrint("Hello from C#");

1。簡単なレポート - 直接スクリプト

引数と実行の流れ:

  • 処理済み=12 — すでに処理されたアイテムのデモ番号。 Convert.ToString はそれを文字列に変換します。この例では数値のみが報告されます。オブジェクト自体は転送されません。
var processed = 12;
UO.ConsolePrint("Processed item entries: " + Convert.ToString(processed));

2。過負荷警告 - スクリプト関数

引数と実行の流れ:

  • キャラクターの体重と最大値を読み取ります。ゼロまたは不明な最大値は過負荷とみなされません。重み >= 最大の場合、1 行が印刷され、メインが終了します。アイテムは捨てられません。
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ConsolePrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    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。重みの変更のみをレポート - スクリプト クラス

引数と実行の流れ:

  • Main は重みを記憶し、1000 ミリ秒待機して、完全に宣言された ReportWeight を呼び出します。アシスタントは、重量が変更された場合にのみ印刷し、次のチェックのために新しい重量を返します。それ自体は無限ループを作成しません。
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ConsolePrint("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    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.ConsolePrint(msg) — UO.ConsolePrint(Any)

引数: msg (Any)

結果: void / Unit.

呼び出し時:

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

public void ConsolePrint(InjectionValue msg) => bridge.Print(msg.ToString());

UO.FillInfoWindow

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

C# のシグネチャ

void UO.FillInfoWindow(object? s);

テキストウィンドウに一行追加して表示します。

引数

  • s — 行テキスト。値はstringに変換されます。

戻り値

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

動作

  • 以前に蓄積された行は、MaxTextWindowLines 制限まで保持されます。
  • TextPrint は行を追加し、YokoTextWindowGump 自体を表示します。 TextOpen はオープン状態を確保します。バッファがオーバーフローすると、最も古い行が削除されます。これは別のテキスト ウィンドウであり、サーバー ガンプや UO.GetInfo ではありません。

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

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

簡単な例

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

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

UO.Print("Calling UO.FillInfoWindow");
UO.FillInfoWindow("Status ready");

1。行を表示 - 直接スクリプト

引数と実行の流れ:

  • テキストはクライアントのテキスト ウィンドウに送信されます。
UO.FillInfoWindow("Status ready");

2。変数からのテキスト - スクリプト関数

引数と実行の流れ:

  • 文字列はローカル電流 HP から形成されます。
return  RunScenario();
 object? RunScenario()
{
    var status = "HP: " + Convert.ToString(UO.GetHP());
    UO.FillInfoWindow(status);
    return null;
}

3。連続した 2 行 - スクリプト クラス

引数と実行の流れ:

  • 2 番目のコマンドは、first の後に Second を追加します。
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.FillInfoWindow("first");
        UO.FillInfoWindow("second");
        return null;
    }
}

コマンドの実装

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

UO.FillInfoWindow(s) — UO.FillInfoWindow(Any)

引数: s (Any)

結果: void / Unit.

呼び出し時:

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

case "fillinfowindow":

                    bridge.TextPrint(Text(0));

                    bridge.TextOpen();

                    return InjectionValue.Unit;

UO.FillNewWindow

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

C# のシグネチャ

void UO.FillNewWindow(object? s);

テキスト ウィンドウをクリアし、1 行追加して表示します。

引数

  • s — 行テキスト。値はstringに変換されます。

戻り値

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

動作

  • TextPrint の前に、TextClear が実行されます。以前に蓄積された行は削除されます。
  • TextPrint は行を追加し、YokoTextWindowGump 自体を表示します。 TextOpen はオープン状態を確保します。バッファがオーバーフローすると、最も古い行が削除されます。これは別のテキスト ウィンドウであり、サーバー ガンプや UO.GetInfo ではありません。

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

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

簡単な例

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

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

UO.Print("Calling UO.FillNewWindow");
UO.FillNewWindow("Status ready");

1。行を表示 - 直接スクリプト

引数と実行の流れ:

  • テキストはクライアントのテキスト ウィンドウに送信されます。
UO.FillNewWindow("Status ready");

2。変数からのテキスト - スクリプト関数

引数と実行の流れ:

  • 文字列はローカル電流 HP から形成されます。
return  RunScenario();
 object? RunScenario()
{
    var status = "HP: " + Convert.ToString(UO.GetHP());
    UO.FillNewWindow(status);
    return null;
}

3。連続した 2 行 - スクリプト クラス

引数と実行の流れ:

  • 2 番目のコマンドは内容を置き換えます。残っているのは 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()
    {
        UO.FillNewWindow("first");
        UO.FillNewWindow("second");
        return null;
    }
}

コマンドの実装

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

UO.FillNewWindow(s) — UO.FillNewWindow(Any)

引数: s (Any)

結果: void / Unit.

呼び出し時:

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

case "fillnewwindow": bridge.TextClear(); bridge.TextPrint(Text(0)); bridge.TextOpen(); return InjectionValue.Unit;

UO.FontColor

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

C# のシグネチャ

void UO.FontColor(object? color);

hue をこのスクリプトの後続のローカル UO.UOAMessage に設定します。キャラクターの音声の色、通常のUO.Print、InfoFindList、またはIDEのテーマは変更されません。

引数

  • color — 必須の数値インデックス hue 0..65535 (例: 0x0044)。ここはRGBではありません。 int は内部に格納され、出力がushort に減少すると、 -1はリセットを意味せず、65535になります。新しいランタイムの初期値は 0x03B2 です。引数のない形式は存在しません。

戻り値

void: 結果なし、古い色または成功のサイン。後で設定を元に戻すには、選択した hue をスクリプト変数に保存します。

動作

  • 状態を変更するだけです。FontColor、メッセージの出力やネットワーク パケットの送信は行いません。
  • 同じランタイム内の次の FontColor まで有効です。別の独立したスクリプトには独自の状態があります。 UO.Print(text,color) は色を直接設定し、FontColor を読み取りません。

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

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

簡単な例

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

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

UO.Print("Calling UO.FontColor");
UO.FontColor(0x0021);

1。ハイライトインベントリアラート - ダイレクトスクリプト

引数と実行の流れ:

  • 0x0021 — インデックス hue;最終的な色合いは、クライアントの色相ファイルによって異なります。メッセージはローカルで表示されます。それはキャラクターによって話されるものではありません。
UO.FontColor(0x0021);
var first = UO.FindList("0x0EED", "backpack");
if (Truth(first == ""))
{
    UO.UOAMessage("No gold in the loaded backpack");
}
else
{
    UO.UOAMessage("Gold units: " + Convert.ToString(UO.FindFullQuantity()));
}

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

2。一般的なカラー通知手順 -​​ スクリプト機能

引数と実行の流れ:

  • 完全な通知はテキストと hue を受け入れます。最後にインストールされた hue は、このランタイムの次の UOAMessage まで残ります。ここには読み取り用の組み込み FontColor() はありません。
return  RunScenario();
 object? RunScenario()
{
    Notice("Supplies checked", 0x0044);
    Notice("Restock needed", 0x0021);
    return null;
}

void Notice(dynamic text, dynamic hue)
{
    UO.FontColor(hue);
    UO.UOAMessage(text);
}

3。既知のベースカラーに戻す - スクリプトクラス

引数と実行の流れ:

  • 0x03B2 — 新しいランタイムの初期値 FontColor。最後に、通常の完了/エラー処理に基づいて、選択されたものを正確に返します。不明な以前の値は復元されません。
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 baseHue = 0x03B2;
        try
        {
            UO.FontColor(0x0021);
            UO.UOAMessage("Check the route before moving");
        }
        finally
        {
            UO.FontColor(baseHue);
        }

        UO.UOAMessage("Ready");
        UO.Print("Regular Print keeps its own color");
        return null;
    }
}

コマンドの実装

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

UO.FontColor(color) — UO.FontColor(Any)

引数: color (Any)

結果: void / Unit.

呼び出し時:

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

case "fontcolor": state.FontColor = Arg(0, state.FontColor); break;

UO.HelpRequest

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

C# のシグネチャ

void UO.HelpRequest();

サーバーのヘルプ メニューを要求します。

引数

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

戻り値

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

動作

  • ExecuteClientApiCompatibility は HelpRequest を呼び出し、Invoke 経由で GameActions.RequestHelp を送信します。メニューの内容はサーバーによって決定されます。
  • 例では、UO.Wait はスクリプトの一時停止のみを指定します。一時停止が終了しても、サーバーがリクエストを完了したことは証明されません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • サーバーのヘルプ メニューを要求します。
UO.HelpRequest();

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

引数と実行の流れ:

  • ExecuteClientApiCompatibility は HelpRequest を呼び出し、Invoke 経由で GameActions.RequestHelp を送信します。メニューの内容はサーバーによって決定されます。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsOnline()))
    {
        UO.HelpRequest();
    }

    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()
    {
        if (Truth(UO.IsOnline()))
        {
            UO.HelpRequest();
            UO.Print("Help requested");
        }

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

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

結果: void / Unit.

呼び出し時:

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

case "helprequest": bridge.HelpRequest(); return InjectionValue.Unit;

UO.Hide

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

C# のシグネチャ

void UO.Hide();
void UO.Hide(object? serial);

ロードされたアイテムまたは他の文字を ClassicUO 画面から削除します。干渉する物体の除去に役立ちます。コンテナ内のアイテムを操作して取引し、紙人形やその小さな機器スロットに装備されたアイテムを操作します。

引数

  • serial — 数値 serial またはその 16 進数/10 進数の文字列。ここはtypeではありません。名前付きオブジェクトの場合は、まず GetSerial(name) を介して数値文字列を取得します。引数を指定しないと、ローカル ターゲットが表示されます。

戻り値

void - 戻り値はありません。結果を serial、graphic/type、数量、または true/false として割り当てることはできません。情報はスクリプトに返されるのではなく、インターフェイス/ログに出力されます。

動作

  • Hide() はローカル十字線を開き、すぐに制御をスクリプトに返します。ペーパードール上のアイテム、開いたコンテナ内のアイテム、またはワールド内のオブジェクトをクリックします。エスケープすると選択がキャンセルされます。
  • Hide(serial) ​​は、読み込まれた既知のオブジェクトに対して即座に動作します。 graphic/type ではなく、特定のスタック/アイテムの serial を渡します。選択したスタックは、量に関係なく完全に非表示になります。
  • アイテムはコンテナ内に残ります。数量、所有者、内容、サーバーの状態は変わりません。 FindType/GetContent はまだ見つけることができます。非表示は、検索フィルター、引き継ぎ、削除、非表示スキル、またはサーバー側の非表示ではありません。
  • 通常のコンテナ、取引ウィンドウ、および戦利品グリッドは、非表示のアイテムを描画せず、そのアイテムのクリック/ドラッグを受け入れません。このフラグは、ロードされた同じオブジェクトの使用中にウィンドウが再構築されて再度開かれた場合にも保持されます。
  • 装備したアイテムはペーパードール、小さなスロット、キャラクター画像から消えます。装備されたままになります。サーバー上のレイヤー、アーマー、状態は変わりません。隠されたローブが下着と重ならなくなりました。マネージャー内のキャラクター画像は同じフラグを使用して更新されます。実際の機器のリストは引き続き利用可能です。
  • Hide は自分のキャラクター、土地、スタティックを隠しません。存在しないserialがメッセージを発します。バッグ自体を非表示にしても、すでに開いている内容ウィンドウは閉じられません。また、含まれている各アイテムが自動的に非表示になることもありません。
  • 現在の API には個別の再表示コマンドはありません。非表示は、ロードされたオブジェクト インスタンスに属します。クライアント ワールドからオブジェクト インスタンスを削除し、再ロードすると (たとえば、再接続するとき)、フラグがリセットされます。チェストを閉じたり開いたりするだけでは、アイテムの返品が保証されません。

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

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

簡単な例

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

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

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

1。開いたチェストにアイテムを隠す - 直接スクリプト

引数と実行の流れ:

  • パラメータはありません。クリックすると、選択した項目のみが消えます。サーバー上のチェストの内容は変わりません。
UO.Hide();
UO.Print("Select an item to hide locally");

2。見つかったスタックをバックパックに隠す - スクリプト関数

引数と実行の流れ:

  • Hide は、検索結果の 0x0EED ではなく、ID を取得します。結果がない場合、呼び出しは実行されません。 Hide からのユニットは true/false で比較できません。
return  RunScenario();
 object? RunScenario()
{
    var item = UO.FindType(0x0EED, -1, "backpack");
    if (Truth(item == ""))
    {
        UO.Print("No loaded matching item");
        return null;
    }

    UO.Hide(item);
    UO.Print("Stack amount: " + Convert.ToString(UO.GetQuantity(item)));
    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。保存されたオブジェクトから特定の項目を非表示にする - スクリプト クラス

引数と実行の流れ:

  • 名前付きオブジェクトは、最初に GetSerial によって解決されます。 Exists チェックは、メモリ内に存在することを意味しますが、非表示に成功したり、移行が可能ではないことを意味します。
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 item = UO.GetSerial("decoration");
        if (Truth(UO.Exists(item)) && Truth(item != UO.GetSerial("self")))
        {
            UO.Hide(item);
        }
        else
        {
            UO.Print("Select a loaded object other than self");
        }

        return null;
    }

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

4。画像からローブを削除し、着用したままにします - 直接スクリプト

引数と実行の流れ:

  • 22 はレイヤー番号であり、serial や type ではありません。まず、ObjAtLayer が serial を受け取り、次に Hide がその特定のものの画像を非表示にします。商品の撤去や譲渡は行っておりません。ペーパードールを再度開いても再表示されません。
var robe = UO.ObjAtLayer(22);
if (Truth(robe == 0))
{
    UO.Print("No robe equipped");
    return null;
}
UO.Hide(robe);

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

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

結果: void / Unit.

呼び出し時:

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

public void Hide()

        {

            // Action command: the bridge owns UI/error reporting. A missing/non-interactive

            // target surface must not turn a void compatibility command into a script failure.

            bridge.RequestInteractiveHideTarget();

        }

UO.Hide(serial) — UO.Hide(Any)

引数: serial (Any)

結果: void / Unit.

呼び出し時:

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

public void Hide(InjectionValue serial)

        {

            bridge.ClientHide(NumberConversions.ToInt(serial));

        }

UO.Morph

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

C# のシグネチャ

void UO.Morph(object? @type);

現在のキャラクターの graphic をローカルに変更します。

引数

  • type - int body graphic、またはResolveType によって解決された文字列 type。 0 は、最初の Morph で保存された graphic を復元します。ゼロ以外の数値は ushort に減らされます。

戻り値

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

動作

  • Player なしの Bridge.Morph では何も変わりません。初めて呼び出されるとき、_originalGraphic が保存され、それが Player.Graphic に割り当てられます。 Player が見つからない場合でも、ランタイムは ticksAnim=Timer を更新します。
  • これはローカルな外観であり、サーバーの変更や種族/利用可能なスキルの変更ではありません。 ushort 以外の値はこのブリッジ機能ではチェックされず、16 ビットに削減されます。

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

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

簡単な例

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

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

UO.Print("Calling UO.Morph");
UO.Morph("0x0190");

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

引数と実行の流れ:

  • 現在のキャラクターの graphic をローカルに変更します。
UO.Morph("0x0190");

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

引数と実行の流れ:

  • Player なしの Bridge.Morph では何も変わりません。初めて呼び出されるとき、_originalGraphic が保存され、それが Player.Graphic に割り当てられます。 Player が見つからない場合でも、ランタイムは ticksAnim=Timer を更新します。
return  RunScenario();
 object? RunScenario()
{
    UO.Morph(0);
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • これはローカルな外観であり、サーバーの変更や種族/利用可能なスキルの変更ではありません。 ushort 以外の値はこのブリッジ機能ではチェックされず、16 ビットに削減されます。
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.Morph("0x0190");
        UO.Wait(500);
        UO.Morph(0);
        return null;
    }
}

コマンドの実装

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

UO.Morph(type) — UO.Morph(Integer)

引数: type (Integer/String)

結果: void / Unit.

呼び出し時:

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

public void Morph(int type)

        {

            bridge.Morph(type);

            ticksAnim = Timer();

        }

UO.Morph(type) — UO.Morph(String)

引数: type (Integer/String)

結果: void / Unit.

呼び出し時:

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

public void Morph(string type) => Morph(ResolveType(type));

UO.OpenIDE

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

C# のシグネチャ

void UO.OpenIDE();
void UO.OpenIDE(object? filePath);

引数

  • filePath — オプションのパス。空白/空白 - ファイルを選択せず​​にエディタを開きます。相対は _manager.AutoloadPath から解決され、絶対は保持されます。

戻り値

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

動作

  • Bridge.OpenIDE は要求されたパスを準備し、Invoke は YokoScriptEditorGump.Open(_world,requested) を呼び出します。ファイルのスクリプトは OpenIDE コマンドでは実行されません。
  • エディターはグラフィカル ウィンドウであり、外部の Launch アプリケーションではありません。ファイルの読み取り/表示は、パスとエディター ロジックの存在に依存します。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • グラフィックエディター C# IDE を開きます。
UO.OpenIDE();

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

引数と実行の流れ:

  • Bridge.OpenIDE は要求されたパスを準備し、Invoke は YokoScriptEditorGump.Open(_world,requested) を呼び出します。ファイルのスクリプトは OpenIDE コマンドでは実行されません。
return  RunScenario();
 object? RunScenario()
{
    UO.OpenIDE("Example.csx");
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • エディターはグラフィカル ウィンドウであり、外部の Launch アプリケーションではありません。ファイルの読み取り/表示は、パスとエディター ロジックの存在に依存します。
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 path = "C:\\UO Scripts\\Example.csx";
        UO.OpenIDE(path);
        return null;
    }
}

コマンドの実装

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

UO.OpenIDE() — UO.OpenIDE()

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

結果: void / Unit.

呼び出し時:

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

public void OpenIDE() => bridge.OpenIDE(string.Empty);

UO.OpenIDE(filePath) — UO.OpenIDE(Any)

引数: filePath (Any)

結果: void / Unit.

呼び出し時:

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

public void OpenIDE(InjectionValue filePath) => bridge.OpenIDE(filePath.ToString());

UO.Print

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

C# のシグネチャ

void UO.Print(object? msg);
void UO.Print(object? msg, object? color);

スクリプトの進行状況または停止条件に関するローカル メッセージを表示します。他のプレイヤーではなく、あなたがそれを見ます。

引数

  • RGB ではなく、color - UO hue。数値または 16 進数の文字列。ブリッジは下位 16 ビットを使用します。 graphic/typeと混同しないでください。例の 0x0044 は、選択された hue です。カラーなしの場合は、hue 0x03B2 が使用されます。 UO.Print(text, color) は最初にテキストを受け入れます。 UO.ColorPrint(color, text) – 最初に色を付けます。

戻り値

戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。

動作

  • メッセージはゲーム ウィンドウの左下の領域とローカル ログに保存されます。コピーは出力 IDE で利用できます。マネージャーの一般ログで、スクリプト メッセージ フィルターを有効にします。エントリはゲーム ウィンドウなしで利用できます。サーバー システムのメッセージ フィルターは、そのようなレコードを選択しません。ネットワーク音声パケットは送信されません。頭上の碑文にはUO.CharPrintがあります。
  • UO.Print は、ゲーム メッセージ ログに新しいエントリを追加します。まず、目的の検索文字列/結果を読み取るか保存し、次に診断メッセージを記録します。高速ループでは、反復ごとではなく、変更が発生したときにメッセージを記録します。
  • 色なしの場合は、hue 0x03B2 が使用されます。 UO.Print(text, color) は最初にテキストを受け入れます。 UO.ColorPrint(color, text) – 最初に色を付けます。
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

例 .csx

UO.Print("C# script started");
UO.Print($"Position: {UO.GetX()}, {UO.GetY()}");

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

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

簡単な例

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

コマンドは独立した文で、戻り値はありません(void)。メッセージ本文は呼び出しに直接記載されています。

UO.Print("Hello from C#");

1。簡単なレポート - 直接スクリプト

引数と実行の流れ:

  • 処理済み=12 — すでに処理されたアイテムのデモ番号。 Convert.ToString はそれを文字列に変換します。この例では数値のみが報告されます。オブジェクト自体は転送されません。
var processed = 12;
UO.Print("Processed item entries: " + Convert.ToString(processed), 0x0044);

2。過負荷警告 - スクリプト関数

引数と実行の流れ:

  • キャラクターの体重と最大値を読み取ります。ゼロまたは不明な最大値は過負荷とみなされません。重み >= 最大の場合、1 行が印刷され、メインが終了します。アイテムは捨てられません。
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.Print("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum), 0x0044);
        return null;
    }

    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。重みの変更のみをレポート - スクリプト クラス

引数と実行の流れ:

  • Main は重みを記憶し、1000 ミリ秒待機して、完全に宣言された ReportWeight を呼び出します。アシスタントは、重量が変更された場合にのみ印刷し、次のチェックのために新しい重量を返します。それ自体は無限ループを作成しません。
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.Print("Weight changed: " + Convert.ToString(current), 0x0044);
        }

        return current;
    }

    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.Print(msg) — UO.Print(Any)

引数: msg (Any)

結果: void / Unit.

呼び出し時:

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

public void Print(InjectionValue msg)

        {

            bridge.Print(msg.ToString());

        }

UO.Print(msg, color) — UO.Print(Any,Any)

引数: msg (Any), color (Any)

結果: void / Unit.

呼び出し時:

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

public void Print(InjectionValue msg, InjectionValue color)

        {

            bridge.Print(NumberConversions.ToInt(color), msg.ToString());

        }

UO.RemoveFigure

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

C# のシグネチャ

dynamic UO.RemoveFigure(object? figureID);

ローカルマップ図をIDで削除します。

引数

  • figureID - int ID、AddFigure が返されました。これはserial アイテムでも、ID ガンプでもありません。

戻り値

int — 削除された図形の存在による Bridge.RemoveMapFigure: 1/0 の結果。ランタイム エントリは、ブリッジの結果に関係なく削除されます。

動作

  • 最初にbridge.RemoveMapFigureを呼び出し、次にstate.MapFigures.Remove(id)を呼び出して、ブリッジの結果を返します。不明 ID はシェイプを作成せず、サーバー アクションをトリガーしません。
  • 地図上のローカルな人物は世界の対象ではありません。他の形状とサーバーのジオメトリは変更されません。
  • WorldMapGump はプロセスの静的辞書に画像を保存します。 1 つのワールド/プロファイルの通常のスクリプト/チャット/マクロは、共通の GetPersistentState とカウンター ID を使用します。個々の Manager プロセスは図面を共有しません。 World.Clear/YokoScripts.Clear およびプロファイル状態のロードでは、この辞書はクリアまたは復元されません (ローダーは UserStatics のみを復元します)。したがって、worldNum を考慮すると、図面は同じプロセス内でワールド/プロファイルが変更されても存続できます。新しい状態では、既存の ID 図面を再度強調できます。 ClearFigures は、図面と現在の状態の記録を明示的にクリアします。成功 - データの書き込み/削除。表示の証明ではありません。

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

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

簡単な例

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

var id = UO.AddFigure(new object?[] { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 });
UO.Print("Removed flag: " + Convert.ToString(UO.RemoveFigure(id)));

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

引数と実行の流れ:

  • ローカルマップ図をIDで削除します。
UO.Print(UO.RemoveFigure(1));

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

引数と実行の流れ:

  • 最初にbridge.RemoveMapFigureを呼び出し、次にstate.MapFigures.Remove(id)を呼び出して、ブリッジの結果を返します。不明 ID はシェイプを作成せず、サーバー アクションをトリガーしません。
return  RunScenario();
 object? RunScenario()
{
    dynamic[] figure = new dynamic[checked((int)(10) + 1)];
    figure[0] = 0;
    figure[1] = 0;
    figure[2] = UO.GetX();
    figure[3] = UO.GetY();
    figure[4] = UO.GetX() + 1;
    figure[5] = UO.GetY() + 1;
    figure[6] = 0;
    figure[7] = 0;
    figure[8] = 0;
    figure[9] = UO.WorldNum();
    figure[10] = "Example";
    var id = UO.AddFigure(figure);
    if (Truth(id > 0))
    {
        UO.Print(UO.RemoveFigure(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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 地図上のローカルな人物は世界の対象ではありません。他の形状とサーバーのジオメトリは変更されません。
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 id = 1;
        var first = UO.RemoveFigure(id);
        var second = UO.RemoveFigure(id);
        UO.Print(Convert.ToString(first) + " " + Convert.ToString(second));
        return null;
    }
}

コマンドの実装

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

UO.RemoveFigure(figureID) — UO.RemoveFigure(Any)

引数: figureID (Any)

結果: dynamic / Any.

呼び出し時:

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

case "removefigure":

                {

                    int id = Arg(0);

                    int removed = bridge.RemoveMapFigure(id);

                    state.MapFigures.Remove(id);

                    return new InjectionValue(removed);

                }

UO.ServerPrint

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

C# のシグネチャ

void UO.ServerPrint(object? message);

スクリプトの進行状況または停止条件に関するローカル メッセージを表示します。他のプレイヤーではなく、あなたがそれを見ます。

引数

戻り値

戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。

動作

  • メッセージはゲーム ウィンドウの左下の領域とローカル ログに保存されます。コピーは出力 IDE で利用できます。マネージャーの一般ログで、スクリプト メッセージ フィルターを有効にします。エントリはゲーム ウィンドウなしで利用できます。サーバー システムのメッセージ フィルターは、そのようなレコードを選択しません。ネットワーク音声パケットは送信されません。頭上の碑文にはUO.CharPrintがあります。
  • UO.Print は、ゲーム メッセージ ログに新しいエントリを追加します。まず、目的の検索文字列/結果を読み取るか保存し、次に診断メッセージを記録します。高速ループでは、反復ごとではなく、変更が発生したときにメッセージを記録します。
  • 色なしの場合は、hue 0x03B2 が使用されます。 UO.Print(text, color) は最初にテキストを受け入れます。 UO.ColorPrint(color, text) – 最初に色を付けます。
  • 名前にサーバーが含まれていたり、ネットワーク メッセージに類似していたり​​しても、このコマンドはローカル テキストのみを出力します。世界に向けて話すには、UO.Say を使用してください。
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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

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

簡単な例

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

コマンドは独立した文で、戻り値はありません(void)。メッセージ本文は呼び出しに直接記載されています。

UO.ServerPrint("Hello from C#");

1。簡単なレポート - 直接スクリプト

引数と実行の流れ:

  • 処理済み=12 — すでに処理されたアイテムのデモ番号。 Convert.ToString はそれを文字列に変換します。この例では数値のみが報告されます。オブジェクト自体は転送されません。
var processed = 12;
UO.ServerPrint("Processed item entries: " + Convert.ToString(processed));

2。過負荷警告 - スクリプト関数

引数と実行の流れ:

  • キャラクターの体重と最大値を読み取ります。ゼロまたは不明な最大値は過負荷とみなされません。重み >= 最大の場合、1 行が印刷され、メインが終了します。アイテムは捨てられません。
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ServerPrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    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。重みの変更のみをレポート - スクリプト クラス

引数と実行の流れ:

  • Main は重みを記憶し、1000 ミリ秒待機して、完全に宣言された ReportWeight を呼び出します。アシスタントは、重量が変更された場合にのみ印刷し、次のチェックのために新しい重量を返します。それ自体は無限ループを作成しません。
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ServerPrint("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    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.ServerPrint(message) — UO.ServerPrint(String)

引数: message (String)

結果: void / Unit.

呼び出し時:

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

public void ServerPrint(string message) => bridge.ServerPrint(message);

UO.SetShowZ

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

C# のシグネチャ

void UO.SetShowZ(object? stateValue);

ローカルフラグ showZ ランタイムを変更します。

引数

  • stateValue - 0 がオフになります。ゼロ以外の整数にはすべてが含まれます。

戻り値

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

動作

  • showZ に、NumberConversions.ToInt の後の0 または 1 の値を割り当てます。この関数自体は座標を変更せず、パケットを送信しません。
  • これは、現在のランタイムの互換性ストレージです。プロジェクトのプライベート mulPath/showZ にはコンシューマがありません。この変更によってアセットが再ロードされたり、高さの表示が変更されることはありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • ローカルフラグ showZ ランタイムを変更します。
UO.SetShowZ(1);

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

引数と実行の流れ:

  • showZ に、NumberConversions.ToInt の後の0 または 1 の値を割り当てます。この関数自体は座標を変更せず、パケットを送信しません。
return  RunScenario();
 object? RunScenario()
{
    UO.SetShowZ(0);
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • これは、現在のランタイムの互換性ストレージです。プロジェクトのプライベート mulPath/showZ にはコンシューマがありません。この変更によってアセットが再ロードされたり、高さの表示が変更されることはありません。
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()
    {
        ApplyValue(1);
        return null;
    }

    void ApplyValue(dynamic value)
    {
        UO.SetShowZ(value);
    }
}

コマンドの実装

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

UO.SetShowZ(stateValue) — UO.SetShowZ(Any)

引数: stateValue (Any)

結果: void / Unit.

呼び出し時:

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

public void SetShowZ(InjectionValue stateValue) => showZ = NumberConversions.ToInt(stateValue) != 0 ? 1 : 0;

UO.SetSilentMode

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

C# のシグネチャ

void UO.SetSilentMode(object? value);

ローカルフラグ SilentMode ランタイムを変更します。

引数

  • value - 0 がオフになります。ゼロ以外の整数にはすべてが含まれます。

戻り値

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

動作

  • SilentMode を 0/1 として保存します。 GumpLinesResult はフラグを読み取ります。0 では、空ではない結果 GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription がテキスト ウィンドウにさらに出力されて開きます。 1 を使用すると、この追加の表示が抑制されます。返される配列は変更されません。他の Print サウンドとサーバー メッセージは抑制されません。
  • 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • SilentMode を 0/1 として保存します。 GumpLinesResult はフラグを読み取ります。0 では、空ではない結果 GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription がテキスト ウィンドウにさらに出力されて開きます。 1 を使用すると、この追加の表示が抑制されます。返される配列は変更されません。他の Print サウンドとサーバー メッセージは抑制されません。
UO.SetSilentMode(1);

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

引数と実行の流れ:

  • SilentMode を 0/1 として保存します。 GumpLinesResult はフラグを読み取ります。0 では、空ではない結果 GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription がテキスト ウィンドウにさらに出力されて開きます。 1 を使用すると、この追加の表示が抑制されます。返される配列は変更されません。他の Print サウンドとサーバー メッセージは抑制されません。
return  RunScenario();
 object? RunScenario()
{
    UO.SetSilentMode(0);
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • SilentMode を 0/1 として保存します。 GumpLinesResult はフラグを読み取ります。0 では、空ではない結果 GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription がテキスト ウィンドウにさらに出力されて開きます。 1 を使用すると、この追加の表示が抑制されます。返される配列は変更されません。他の Print サウンドとサーバー メッセージは抑制されません。
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()
    {
        ApplyValue(1);
        return null;
    }

    void ApplyValue(dynamic value)
    {
        UO.SetSilentMode(value);
    }
}

コマンドの実装

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

UO.SetSilentMode(value) — UO.SetSilentMode(Any)

引数: value (Any)

結果: void / Unit.

呼び出し時:

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

case "setsilentmode": state.SilentMode = Arg(0) != 0 ? 1 : 0; return InjectionValue.Unit;

UO.ShowJournal

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

C# のシグネチャ

void UO.ShowJournal();

ローカルクライアントのログウィンドウを開きます。

引数

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

戻り値

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

動作

  • ShowJournal は GameActions.OpenJournal(_world) を呼び出します。レコードはクリアされず、テキストはサーバーに送信されません。
  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • ローカルクライアントのログウィンドウを開きます。
UO.ShowJournal();

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

引数と実行の流れ:

  • ShowJournal は GameActions.OpenJournal(_world) を呼び出します。レコードはクリアされず、テキストはサーバーに送信されません。
return  RunScenario();
 object? RunScenario()
{
    UO.Print("Journal example");
    UO.ShowJournal();
    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.ShowJournal();
        UO.Print(UO.LineCount());
        return null;
    }
}

コマンドの実装

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

UO.ShowJournal() — UO.ShowJournal()

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

結果: void / Unit.

呼び出し時:

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

case "showjournal": bridge.ShowJournal(); break;

UO.Snap

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

C# のシグネチャ

int UO.Snap();
int UO.Snap(object? name);
int UO.Snap(object? name, object? quality);
int UO.Snap(object? file, object? quality, object? includeUI);

クライアントのグラフィックス ウィンドウのスナップショットを保存します。

引数

  • name — オプションのファイル名。 .jpg/.jpeg は JPEG を選択し、その他/なしは PNG を選択します。名前からディレクトリが削除されます。ベース名のみが使用されます。
  • file — オプションのファイル名。 .jpg/.jpeg は JPEG を選択し、その他/なしは PNG を選択します。名前からディレクトリが削除されます。ベース名のみが使用されます。
  • quality — オプションの int、デフォルトは 100、1..100 に限定されます。 JPEG に影響します。 PNG は非可逆品質を使用しません。
  • includeUI - オプションの bool、デフォルトの true。 falseはUIを使わずに世界/照明を描きます。

戻り値

数値フラグ int: 1 - 画像ファイルが保存されました、 0 - キャプチャ/書き込みエラー。グラフィックス ウィンドウがないと、RequireGameView は TakeScreenshot の前にエラーをスローします。

動作

  • TakeScreenshot は ExecutablePath/Data/Client/Screenshots に書き込み、無効な名前文字をクリアし、空の場合は日付によって名前を自動的に選択し、既存のファイルがある場合は _2/_3 を追加します。任意の絶対パスは使用しません。
  • UI を使用するとバックバッファを読み取ります。 UI がない場合は RenderTarget2D が作成され、世界がレンダリングされます。 JPEG は復元により一時的に FNA_GRAPHICS_JPEG_SAVE_QUALITY を設定します。 PNG SaveAsPng。 TakeScreenshot 内のエラーはログに記録され、0 として与えられます。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • クライアントのグラフィックス ウィンドウのスナップショットを保存します。
UO.Print(UO.Snap());

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

引数と実行の流れ:

  • TakeScreenshot は ExecutablePath/Data/Client/Screenshots に書き込み、無効な名前文字をクリアし、空の場合は日付によって名前を自動的に選択し、既存のファイルがある場合は _2/_3 を追加します。任意の絶対パスは使用しません。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Snap("manual-example.jpg", 85));
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • UI を使用するとバックバッファを読み取ります。 UI がない場合は RenderTarget2D が作成され、世界がレンダリングされます。 JPEG は復元により一時的に FNA_GRAPHICS_JPEG_SAVE_QUALITY を設定します。 PNG SaveAsPng。 TakeScreenshot 内のエラーはログに記録され、0 として与えられます。
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.Print(UO.Snap("manual-world.png", 100, false));
        return null;
    }
}

コマンドの実装

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

UO.Snap() — UO.Snap()

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

結果: int / Integer.

呼び出し時:

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

public int Snap() => bridge.Snap(null, 100, true);

UO.Snap(name) — UO.Snap(String)

引数: name (String)

結果: int / Integer.

呼び出し時:

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

public int Snap(string name) => bridge.Snap(name, 100, true);

UO.Snap(name, quality) — UO.Snap(String,Integer)

引数: name (String), quality (Integer)

結果: int / Integer.

呼び出し時:

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

public int Snap(string name, int quality) => bridge.Snap(name, Math.Max(1, Math.Min(100, quality)), true);

UO.Snap(file, quality, includeUI) — UO.Snap(Any,Any,Any)

引数: file (Any), quality (Any), includeUI (Any)

結果: int / Integer.

呼び出し時:

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

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

values => new InjectionValue(Snap(values[0].ToString(), NumberConversions.ToInt(values[1]), ToBoolean(values[2])))

UO.TextClear

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

C# のシグネチャ

void UO.TextClear();

ローカル テキスト ウィンドウのバッファをクリアします。

引数

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

戻り値

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

動作

  • _textWindow をクリアします。ウィンドウが開いていた場合は、空のリストを表示して再表示します。閉じたウィンドウは閉じたままになります。クライアントログはクリアされません。
  • アクションはローカル インターフェイス/バッファです。ネットワーク メッセージやサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • ローカル テキスト ウィンドウのバッファをクリアします。
UO.TextClear();

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

引数と実行の流れ:

  • _textWindow をクリアします。ウィンドウが開いていた場合は、空のリストを表示して再表示します。閉じたウィンドウは閉じたままになります。クライアントログはクリアされません。
return  RunScenario();
 object? RunScenario()
{
    UO.TextPrint("Old line");
    UO.TextClear();
    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.TextClose();
        UO.TextClear();
        UO.TextOpen();
        return null;
    }
}

コマンドの実装

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

UO.TextClear() — UO.TextClear()

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

結果: void / Unit.

呼び出し時:

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

public void TextClear() => bridge.TextClear();

UO.TextClose

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

C# のシグネチャ

void UO.TextClose();

ローカル テキスト ウィンドウを閉じて、バッファを保存します。

引数

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

戻り値

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

動作

  • _textWindowOpen=false を設定し、既存の YokoTextWindowGump を破棄します。 _textWindow リストはクリアされません。 TextOpen は再びラインを表示します。
  • アクションはローカル インターフェイス/バッファです。ネットワーク メッセージやサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • ローカル テキスト ウィンドウを閉じて、バッファを保存します。
UO.TextClose();

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

引数と実行の流れ:

  • _textWindowOpen=false を設定し、既存の YokoTextWindowGump を破棄します。 _textWindow リストはクリアされません。 TextOpen は再びラインを表示します。
return  RunScenario();
 object? RunScenario()
{
    UO.TextPrint("Retained line");
    UO.TextClose();
    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.TextPrint("Retained line");
        UO.TextClose();
        UO.Wait(250);
        UO.TextOpen();
        return null;
    }
}

コマンドの実装

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

UO.TextClose() — UO.TextClose()

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

結果: void / Unit.

呼び出し時:

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

public void TextClose() => bridge.TextClose();

UO.TextOpen

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

C# のシグネチャ

void UO.TextOpen();

ローカルテキストウィンドウを開きます。

引数

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

戻り値

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

動作

  • _textWindowOpen=true を保存し、現在の _textWindow を使用して YokoTextWindowGump.Show を呼び出します。バッファはクリアされません。再度開くと、蓄積された行が表示されます。
  • アクションはローカル インターフェイス/バッファです。ネットワーク メッセージやサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • ローカルテキストウィンドウを開きます。
UO.TextOpen();

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

引数と実行の流れ:

  • _textWindowOpen=true を保存し、現在の _textWindow を使用して YokoTextWindowGump.Show を呼び出します。バッファはクリアされません。再度開くと、蓄積された行が表示されます。
return  RunScenario();
 object? RunScenario()
{
    UO.TextPrint("Example");
    UO.TextOpen();
    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.TextOpen();
        UO.Wait(500);
        UO.TextClose();
        return null;
    }
}

コマンドの実装

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

UO.TextOpen() — UO.TextOpen()

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

結果: void / Unit.

呼び出し時:

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

public void TextOpen() => bridge.TextOpen();

UO.TextPrint

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

C# のシグネチャ

void UO.TextPrint(object? text);

ローカル テキスト ウィンドウに行を追加して開きます。

引数

  • text — テキスト経由 ToString;送信済みとして保存されます。

戻り値

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

動作

  • 限界では、MaxTextWindowLines=2000 は古い行を削除し、テキストまたは空の行を追加し、_textWindowOpen=true を設定してウィンドウを表示します。これはログの UO.Print ではなく、サーバーへの発言でもありません。
  • アクションはローカル インターフェイス/バッファです。ネットワーク メッセージやサーバーの確認はありません。

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

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

簡単な例

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

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

UO.Print("Calling UO.TextPrint");
UO.TextPrint("Example");

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

引数と実行の流れ:

  • ローカル テキスト ウィンドウに行を追加して開きます。
UO.TextPrint("Example");

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

引数と実行の流れ:

  • 限界では、MaxTextWindowLines=2000 は古い行を削除し、テキストまたは空の行を追加し、_textWindowOpen=true を設定してウィンドウを表示します。これはログの UO.Print ではなく、サーバーへの発言でもありません。
return  RunScenario();
 object? RunScenario()
{
    var message = "Line 1";
    UO.TextPrint(message);
    UO.TextPrint("Line 2");
    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.TextClear();
        UO.TextPrint("Fresh report");
        UO.TextClose();
        return null;
    }
}

コマンドの実装

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

UO.TextPrint(text) — UO.TextPrint(String)

引数: text (String)

結果: void / Unit.

呼び出し時:

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

public void TextPrint(string text) => bridge.TextPrint(text);

UO.UpdateFigure

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

C# のシグネチャ

dynamic UO.UpdateFigure(object? figureID, object? figure);

既存のローカル マップ図の説明を置き換えます。

引数

  • figureID - int ID 状態。 MapFigures が AddFigure によって受信されました。不明な ID は 0 を与えます。
  • figure — | を含む配列または文字列: [kind,coord,x1,y1,x2,y2,brushColor,brushStyle,color,worldNum,text]。最初の 9 数値フィールドの最小数。 worldNum はデフォルトで現在のマップであり、テキストはデフォルトで空です。
  • figure[0] (kind) - 種類は 0..4、coord - 0..1、FigureID - 正である必要があります。 WorldMapGump.SetYokoMapFigure は、これらの境界に違反すると 0 を返します。
  • figure[1] (coord) - 種類は 0..4、coord - 0..1、FigureID - 正である必要があります。 WorldMapGump.SetYokoMapFigure は、これらの境界に違反すると 0 を返します。

戻り値

数値フラグ int: 1 - 解析は成功し、ブリッジされました。 SetMapFigure はゼロ以外の結果を返し、その後レコードが更新されました。 0 - ID はありません。構造体/数値テキスト フィールド エラーまたはブリッジが失敗しました。

動作

  • TryMapFigureArg は配列または |string を受け入れます。最初の 9 フィールドが変換されます。数値テキストはTryStr2Intでチェックされます。サポートされていないビュー/短い表記法 - 0、他のビュー変換エラーによりスクリプトが中断される可能性があります。
  • ブリッジに障害が発生した場合、既存のランタイム エントリは置き換えられません。成功すると、SerializeMapFigure が10 数値フィールドとテキストとともに保存されます。この図はローカルのみであり、サーバー項目ではありません。
  • 種類: 0 線、1 楕円 (32 輪郭セグメント)、2 長方形輪郭、3 矢印、4 テキスト。 coord=0 — マップに変換された世界座標、 coord=1 — マップ描画領域を基準としたピクセル。 x1/y1 および x2/y2 - 端/境界。世界の矢印 x2=y2=0 は、プレイヤーの開始点と x1/y1 のゴールを設定します。色 — 0x00BBGGRR (マイナー byte 赤)、輪郭の色。 brushColor/brushStyle は保存されますが、レンダーではそれらを読み込まず、塗りつぶしがありません。 worldNum<0 は任意のマップに表示されます。それ以外の場合は、指定されたマップのみが表示されます。テキストは、アウトラインの色ではなく、マップ フォントの最初のポイント (非テキスト図形の場合は +3 ピクセル) に描画されます。
  • WorldMapGump はプロセスの静的辞書に画像を保存します。 1 つのワールド/プロファイルの通常のスクリプト/チャット/マクロは、共通の GetPersistentState とカウンター ID を使用します。個々の Manager プロセスは図面を共有しません。 World.Clear/YokoScripts.Clear およびプロファイル状態のロードでは、この辞書はクリアまたは復元されません (ローダーは UserStatics のみを復元します)。したがって、worldNum を考慮すると、図面は同じプロセス内でワールド/プロファイルが変更されても存続できます。新しい状態では、既存の ID 図面を再度強調できます。 ClearFigures は、図面と現在の状態の記録を明示的にクリアします。成功 - データの書き込み/削除。表示の証明ではありません。

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

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

簡単な例

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

object?[] figure = { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 };
var id = UO.AddFigure(figure);
figure[8] = 65280;
UO.Print("Updated flag: " + Convert.ToString(UO.UpdateFigure(id, figure)));

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

引数と実行の流れ:

  • 既存のローカル マップ図の説明を置き換えます。
dynamic[] figure = new dynamic[checked((int)(8) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = 100;
figure[3] = 100;
figure[4] = 101;
figure[5] = 101;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
UO.Print(UO.UpdateFigure(1, figure));

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

引数と実行の流れ:

  • TryMapFigureArg は配列または |string を受け入れます。最初の 9 フィールドが変換されます。数値テキストはTryStr2Intでチェックされます。サポートされていないビュー/短い表記法 - 0、他のビュー変換エラーによりスクリプトが中断される可能性があります。
return  RunScenario();
 object? RunScenario()
{
    dynamic[] figure = new dynamic[checked((int)(10) + 1)];
    figure[0] = 0;
    figure[1] = 0;
    figure[2] = UO.GetX();
    figure[3] = UO.GetY();
    figure[4] = UO.GetX() + 1;
    figure[5] = UO.GetY() + 1;
    figure[6] = 0;
    figure[7] = 0;
    figure[8] = 0;
    figure[9] = UO.WorldNum();
    figure[10] = "Example";
    var id = UO.AddFigure(figure);
    if (Truth(id > 0))
    {
        UO.Print(UO.UpdateFigure(id, figure));
        UO.RemoveFigure(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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • ブリッジに障害が発生した場合、既存のランタイム エントリは置き換えられません。成功すると、SerializeMapFigure が10 数値フィールドとテキストとともに保存されます。この図はローカルのみであり、サーバー項目ではありません。
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 figure = "0|0|100|100|101|101|0|0|0";
        UO.Print(UO.UpdateFigure(1, figure));
        return null;
    }
}

コマンドの実装

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

UO.UpdateFigure(figureID, figure) — UO.UpdateFigure(Any,Any)

引数: figureID (Any), figure (Any)

結果: dynamic / Any.

呼び出し時:

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

case "updatefigure":

                {

                    int id = Arg(0);

                    if (!state.MapFigures.ContainsKey(id) || !TryMapFigureArg(1, out int[] figure, out string figureText))

                        return InjectionValue.False;

                    if (bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText) == 0)

                        return InjectionValue.False;

                    state.MapFigures[id] = SerializeMapFigure(figure, figureText);

                    return InjectionValue.True;

                }

Clone this wiki locally