JA UO Topic profiles configuration - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

プロファイルと構成

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

プロファイル、設定の保存、グローバル値、ホットキー。グローバル ランタイム値とローカル プロシージャ変数の有効期間は異なります。

セクション

トピック コマンドと説明
GetProfile UO.GetProfile
ProfileName UO.ProfileName
ProfileShardName UO.ProfileShardName
ChangeProfile UO.ChangeProfile
ExtChangeProfile UO.ExtChangeProfile
ResetProfile UO.ResetProfile
SaveConfig UO.SaveConfig
Global Variables UO.GetGlobal · UO.SetGlobal · UO.GListGet · UO.GListSet · UO.GListSize
EasyUO Variables UO.GetEasyUO · UO.SetEasyUO
MUL Path UO.SetMulPath

すべてのテーマコマンド

プロフィール

UO.GetProfile · UO.ProfileName · UO.ProfileShardName · UO.ChangeProfile · UO.ExtChangeProfile · UO.ResetProfile · UO.SaveConfig · UO.ReqProfile · UO.ClientProfilePath · UO.ClientPath · UO.SetMulPath

グローバル変数

UO.GetGlobal · UO.SetGlobal · UO.GetEasyUO · UO.SetEasyUO · UO.GListClear · UO.GListGet · UO.GListPosName · UO.GListPosValue · UO.GListSet · UO.GListSize

ホットキー/設定

UO.LoadHotkeys · UO.SaveHotkeys · UO.Set · UO.SetDefault

このトピックに関する例

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

UO.GetGlobal

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

var text = UO.GetGlobal("manual.delay");
var delayMs = 350;
if (Truth(text != "N/A") && Truth(IsNumeric(text)))
{
    var parsed = Val(text);
    if (Truth(parsed >= 50) && Truth(parsed <= 5000))
    {
        delayMs = checked((int)parsed);
    }
}
await Delay(delayMs);

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool IsNumeric(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out _);
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
double Val(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out var number) ? number : 0;

UO.SetGlobal

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

UO.SetGlobal("manual.delay", 350);
UO.SetGlobal("manual.delay", 600);
var text = UO.GetGlobal("manual.delay");
if (Truth(IsNumeric(text)))
{
    await Delay(Val(text));
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool IsNumeric(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out _);
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
double Val(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out var number) ? number : 0;

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


UO.ChangeProfile

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

C# のシグネチャ

dynamic UO.ChangeProfile(object? name);

セッションが切断されたときに、次のセルフクライアント接続用に選択したプロファイルを変更します。

引数

  • name — 選択したシャードのTryResolveProfileCharacter によって解決された、保存されたプロファイル/キャラクター名。空の/不明な名前は -4 を与えます。

戻り値

int: 0 — 選択範囲が準備されています。 -2 — マネージャー セッションまたは接続/ゲーム ワールドがアクティブです。 -3 — 複数のスクリプトが実行されます。 -4 - プロファイル名/シャードは許可されません。

動作

  • ChangeProfile は空のシャード/キャラクターを渡します。 ExtChangeProfile では、明示的なシャードとキャラクターが許可されます。マネージャー セッションでは、ClassicUO マネージャーで別のセッションを選択する必要があります。実行中のセッションはそのプロファイルを保存します。
  • 成功すると、現在のプロファイルを保存してアンロードし、LastServerName を変更し、設定を保存して次の文字を割り当てます。接続自体は開始されません。 Connect は別途呼び出されます。

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

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

簡単な例

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

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

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

1。失敗コードのチェック - 直接スクリプト

引数と実行の流れ:

  • 実際に保存されているプロファイル名を使用します。負のコードは失敗を表します。
var status = UO.ChangeProfile("ExampleProfile");
UO.Print(Convert.ToString(status));

2。空の名前 - スクリプト関数

引数と実行の流れ:

  • 他に違反がなく無効化されたスタンドアロン クライアントは、空の名前に対して -4 を返します。
return  RunScenario();
 object? RunScenario()
{
    var status = UO.ChangeProfile("");
    UO.Print(Convert.ToString(status));
    return null;
}

3。選択が成功した後の接続 - スクリプト クラス

引数と実行の流れ:

  • Connect はコード 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()
    {
        var status = UO.ChangeProfile("ExampleProfile");
        if (Truth(status == 0))
        {
            UO.Connect();
        }

        return null;
    }

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

コマンドの実装

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

UO.ChangeProfile(name) — UO.ChangeProfile(Any)

引数: name (Any)

結果: dynamic / Any.

呼び出し時:

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

case "changeprofile":

                    return new InjectionValue(bridge.ChangeProfileSelection(Text(0), string.Empty, string.Empty));

UO.ClientPath

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

C# のシグネチャ

string UO.ClientPath();

クライアントのインストール/実行可能ディレクトリを返します。

引数

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

戻り値

string — ディレクトリへのパス。 bool、配列、そしてID​​ ではありません。空のパスは、値が使用できないことを意味します。これをデフォルトの現在の作業フォルダーとして使用しないでください。

動作

  • CUOEnviroment.ExecutablePath を読み取ります。これは、運転ルート、ウェイポイントのリスト、スクリプト フォルダー、またはゲーム データへのパスではありません。
  • このコマンドはパスを読み取るだけで、何も開いたり、作成したり、保存したりしません。末尾の区切り文字は想定されるべきではありません。ヘルパーの例では、必要に応じてそれを追加します。
  • 名前はゲーム/クライアント名 API で、UO と綴られます。 ClientPath はクライアント ディレクトリを返し、ClientProfilePath はアクティブなプロファイル ディレクトリを返します。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 引数はありません。フォルダー - 文字列;空の値は個別に処理されます。
var folder = UO.ClientPath();
if (Truth(folder == ""))
{
    UO.Print("Folder is not available");
    return null;
}
UO.Print(folder);

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

2。クライアントフォルダーとプロファイルフォルダーの比較 - スクリプト関数

引数と実行の流れ:

  • これらのフォルダーにはさまざまな目的があります。スクリプトは、構成やプロファイルを変更せずに両方の行を出力します。
return  RunScenario();
 object? RunScenario()
{
    var client = UO.ClientPath();
    var profile = UO.ClientProfilePath();
    UO.Print("Client: " + client);
    if (Truth(profile == ""))
    {
        UO.Print("No current profile");
    }
    else
    {
        UO.Print("Profile: " + profile);
    }

    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。ファイルへのパスを構築するための完全な関数 - スクリプト クラス

引数と実行の流れ:

  • ChildPath は全体が表示されます。フォルダーは結果のディレクトリ、リーフはファイル名です。これは指定された名前の文字列連結であり、ユニバーサル パス ノーマライザーではありません。
  • ファイルは作成も読み取りもされません。まず、結果の文字列を確認できます。
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 folder = UO.ClientPath();
        var filePath = ChildPath(folder, "sample.json");
        if (Truth(filePath != ""))
        {
            UO.Print("Example path: " + filePath);
        }

        return null;
    }

    dynamic ChildPath(dynamic folder, dynamic leaf)
    {
        if (Truth(folder == ""))
        {
            return "";
        }

        var last = Right(folder, 1);
        if (Truth(last == "/") || Truth(last == "\\"))
        {
            return folder + leaf;
        }

        return folder + "/" + leaf;
    }

    string Right(object? value, int count)
    {
        string text = Convert.ToString(value) ?? "";
        return text[Math.Max(0, text.Length - count)..];
    }

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

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

結果: string / String.

呼び出し時:

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

case "clientpath": return new InjectionValue(bridge.ClientPath);

UO.ClientProfilePath

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

C# のシグネチャ

string UO.ClientProfilePath();

現在のクライアント プロファイル ディレクトリを返します。

引数

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

戻り値

string — ディレクトリへのパス。 bool、配列、そしてID​​ ではありません。空のパスは、値が使用できないことを意味します。これをデフォルトの現在の作業フォルダーとして使用しないでください。

動作

  • ProfileManager.ProfilePath を読み取ります。プロファイルがまだ選択されていない場合は、空の文字列が返されます。通話自体はプロファイルを作成せず、設定も転送しません。
  • このコマンドはパスを読み取るだけで、何も開いたり、作成したり、保存したりしません。末尾の区切り文字は想定されるべきではありません。ヘルパーの例では、必要に応じてそれを追加します。
  • 名前はゲーム/クライアント名 API で、UO と綴られます。 ClientPath はクライアント ディレクトリを返し、ClientProfilePath はアクティブなプロファイル ディレクトリを返します。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 引数はありません。フォルダー - 文字列;空の値は個別に処理されます。
var folder = UO.ClientProfilePath();
if (Truth(folder == ""))
{
    UO.Print("Folder is not available");
    return null;
}
UO.Print(folder);

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

2。クライアントフォルダーとプロファイルフォルダーの比較 - スクリプト関数

引数と実行の流れ:

  • これらのフォルダーにはさまざまな目的があります。スクリプトは、構成やプロファイルを変更せずに両方の行を出力します。
return  RunScenario();
 object? RunScenario()
{
    var client = UO.ClientPath();
    var profile = UO.ClientProfilePath();
    UO.Print("Client: " + client);
    if (Truth(profile == ""))
    {
        UO.Print("No current profile");
    }
    else
    {
        UO.Print("Profile: " + profile);
    }

    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。ファイルへのパスを構築するための完全な関数 - スクリプト クラス

引数と実行の流れ:

  • ChildPath は全体が表示されます。フォルダーは結果のディレクトリ、リーフはファイル名です。これは指定された名前の文字列連結であり、ユニバーサル パス ノーマライザーではありません。
  • ファイルは作成も読み取りもされません。まず、結果の文字列を確認できます。
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 folder = UO.ClientProfilePath();
        var filePath = ChildPath(folder, "sample.json");
        if (Truth(filePath != ""))
        {
            UO.Print("Example path: " + filePath);
        }

        return null;
    }

    dynamic ChildPath(dynamic folder, dynamic leaf)
    {
        if (Truth(folder == ""))
        {
            return "";
        }

        var last = Right(folder, 1);
        if (Truth(last == "/") || Truth(last == "\\"))
        {
            return folder + leaf;
        }

        return folder + "/" + leaf;
    }

    string Right(object? value, int count)
    {
        string text = Convert.ToString(value) ?? "";
        return text[Math.Max(0, text.Length - count)..];
    }

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

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

結果: string / String.

呼び出し時:

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

case "shardpath":

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

UO.ExtChangeProfile

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

C# のシグネチャ

dynamic UO.ExtChangeProfile(object? profileName);
dynamic UO.ExtChangeProfile(object? profileName, object? shardName);
dynamic UO.ExtChangeProfile(object? profileName, object? shardName, object? charName);

セッションが切断されたときに、次のセルフクライアント接続用に選択したプロファイルを変更します。

引数

  • profileName — 選択したシャードのTryResolveProfileCharacter によって解決された、保存されたプロファイル/キャラクター名。空の/不明な名前は -4 を与えます。
  • shardName — オプションのシャード名。空の値には、CurrentProfile.ServerName、World.ServerName、または LastServerName が使用されます。
  • charName - オプションのキャラクター名。値が空の場合は、保存されたプロファイル名が使用されます。

戻り値

int: 0 — 選択範囲が準備されています。 -2 — マネージャー セッションまたは接続/ゲーム ワールドがアクティブです。 -3 — 複数のスクリプトが実行されます。 -4 - プロファイル名/シャードは許可されません。

動作

  • ChangeProfile は空のシャード/キャラクターを渡します。 ExtChangeProfile では、明示的なシャードとキャラクターが許可されます。マネージャー セッションでは、ClassicUO マネージャーで別のセッションを選択する必要があります。実行中のセッションはそのプロファイルを保存します。
  • 成功すると、現在のプロファイルを保存してアンロードし、LastServerName を変更し、設定を保存して次の文字を割り当てます。接続自体は開始されません。 Connect は別途呼び出されます。

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

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

簡単な例

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

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

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

1。失敗コードのチェック - 直接スクリプト

引数と実行の流れ:

  • 実際に保存されているプロファイル名を使用します。負のコードは失敗を表します。
var status = UO.ExtChangeProfile("ExampleProfile");
UO.Print(Convert.ToString(status));

2。空の名前 - スクリプト関数

引数と実行の流れ:

  • 他に違反がなく無効化されたスタンドアロン クライアントは、空の名前に対して -4 を返します。
return  RunScenario();
 object? RunScenario()
{
    var status = UO.ExtChangeProfile("");
    UO.Print(Convert.ToString(status));
    return null;
}

3。選択が成功した後の接続 - スクリプト クラス

引数と実行の流れ:

  • Connect はコード 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()
    {
        var status = UO.ExtChangeProfile("ExampleProfile");
        if (Truth(status == 0))
        {
            UO.Connect();
        }

        return null;
    }

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

コマンドの実装

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

UO.ExtChangeProfile(profileName) — UO.ExtChangeProfile(Any)

引数: profileName (Any)

結果: dynamic / Any.

呼び出し時:

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

case "extchangeprofile":

                {

                    string requestedProfile = Text(0);

                    string requestedShard = arguments.Length > 1 ? Text(1) : string.Empty;

                    string requestedCharacter = arguments.Length > 2 ? Text(2) : string.Empty;

                    return new InjectionValue(bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter));

                }

UO.ExtChangeProfile(profileName, shardName) — UO.ExtChangeProfile(Any,Any)

引数: profileName (Any), shardName (Any)

結果: dynamic / Any.

呼び出し時:

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

case "extchangeprofile":

                {

                    string requestedProfile = Text(0);

                    string requestedShard = arguments.Length > 1 ? Text(1) : string.Empty;

                    string requestedCharacter = arguments.Length > 2 ? Text(2) : string.Empty;

                    return new InjectionValue(bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter));

                }

UO.ExtChangeProfile(profileName, shardName, charName) — UO.ExtChangeProfile(Any,Any,Any)

引数: profileName (Any), shardName (Any), charName (Any)

結果: dynamic / Any.

呼び出し時:

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

case "extchangeprofile":

                {

                    string requestedProfile = Text(0);

                    string requestedShard = arguments.Length > 1 ? Text(1) : string.Empty;

                    string requestedCharacter = arguments.Length > 2 ? Text(2) : string.Empty;

                    return new InjectionValue(bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter));

                }

UO.GListClear

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

C# のシグネチャ

void UO.GListClear();

新しい一連のアクションの前に、一時リスト全体をクリアします。

引数

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

戻り値

void - 結果はありません。クリア後​​、GListSize()は0を返します。

動作

  • リストはランタイム インスタンスに属します。他のスクリプト実行には独自のリストがあります。 GList は、クロスプロファイル共有ストレージではありません。これらのコマンドはファイルを書き込まず、保存されたプロファイル状態に入りません。新しいランタイムは空のリストを取得します。また、var/変数宣言でも、UO.SetGlobal でもありません。
  • 新しい名前が末尾に追加されます。大文字と小文字を区別しない名前を繰り返すと、名前の意味とスペルが元の場所に置き換えられます。読んでも何も削除されません。安定したインデックスが必要な場合は、検索の途中でレコードをクリアしたり追加したりすることはできません。
  • 操作はローカルです。パケット、オブジェクト検索、遅延はありません。 Set/Get は名前を順番に検索します。大きなセットの場合は辞書を使用します。このファミリーの 1 つのキーを削除するための個別のコマンドはありません。 Clear はすべてのエントリをクリアします。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • Clear は両方のルールを削除し、Size は空を確認します。キャラクターのアイテムはそのまま残ります。
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
UO.GListClear();
if (Truth(UO.GListSize() == 0))
{
    UO.Print("Batch rules cleared");
}

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

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

引数と実行の流れ:

  • 古いルールは鉱石が追加される前に削除されます。検索では、graphic 0x19B9 を含む新しいルールのみが表示されます。
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("bandage", 0x0E21);
    UO.GListSet("gold", 0x0EED);
    UO.GListClear();
    UO.GListSet("ore", 0x19B9);
    var i = 0;
    while (Truth(i < UO.GListSize()))
    {
        var name = UO.GListPosName(i);
        var graphic = UO.GListPosValue(i);
        UO.Print(name + " | graphic: " + Convert.ToString(graphic));
        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。 GListClear - 3 - シナリオクラス

引数と実行の流れ:

  • 以前に読み込まれて保持された番号は、リストがクリアされた後も使用可能になります。リストにはすでに 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.GListClear();
        UO.GListSet("bandage", 0x0E21);
        UO.GListSet("gold", 0x0EED);
        var retained = UO.GListGet("bandage");
        UO.GListClear();
        UO.Print("Retained graphic: " + Convert.ToString(retained));
        UO.Print("Remaining entries: " + Convert.ToString(UO.GListSize()));
        return null;
    }
}

コマンドの実装

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

UO.GListClear() — UO.GListClear()

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

結果: void / Unit.

呼び出し時:

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

public void GListClear() => globalList.Clear();

UO.GListGet

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

C# のシグネチャ

dynamic UO.GListGet(object? nameValue);

ルールまたはカウンター名によって一時リストから値を読み取ります。

引数

  • nameValue — object?文字列に変換されます。名前は大文字と小文字を区別せずに比較されます。「bandage」と「BANDAGE」は 1 つのキーです。空ではない文字列名を使用することをお勧めします。空の名前も受け入れられます。

戻り値

object? — 同じタイプの保存された値。キーがない場合は、int 0。保存された 0 は、存在しない GListGet と区別できません。名前を確認してください。

動作

  • リストはランタイム インスタンスに属します。他のスクリプト実行には独自のリストがあります。 GList は、クロスプロファイル共有ストレージではありません。これらのコマンドはファイルを書き込まず、保存されたプロファイル状態に入りません。新しいランタイムは空のリストを取得します。また、var/変数宣言でも、UO.SetGlobal でもありません。
  • 新しい名前が末尾に追加されます。大文字と小文字を区別しない名前を繰り返すと、名前の意味とスペルが元の場所に置き換えられます。読んでも何も削除されません。安定したインデックスが必要な場合は、検索の途中でレコードをクリアしたり追加したりすることはできません。
  • 操作はローカルです。パケット、オブジェクト検索、遅延はありません。 Set/Get は名前を順番に検索します。大きなセットの場合は辞書を使用します。このファミリーの 1 つのキーを削除するための個別のコマンドはありません。 Clear はすべてのエントリをクリアします。

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

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

簡単な例

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

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

UO.GListSet("simple_value", 42);
object? result = UO.GListGet("simple_value");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

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

引数と実行の流れ:

  • BANDAGEは包帯の鍵を見つけます。 0x0E21 - graphic の包帯であり、彼の固有の serial ではありません。
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
var graphic = UO.GListGet("BANDAGE");
if (Truth(graphic == 0x0E21))
{
    UO.Print("Bandage rule selected");
}

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

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

引数と実行の流れ:

  • 完全な関数 HasEntry は名前を反復処理します。したがって、0 が処理済みであることは、欠落していることとは異なります。独自のキーの場合、ここでは ASCII-name が使用されます。
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("processed", 0);
    if (Truth(HasEntry("processed")))
    {
        var count = UO.GListGet("processed");
        UO.Print("Recorded count: " + Convert.ToString(count));
    }

    if (!(Truth(HasEntry("missing"))))
    {
        UO.Print("No entry named missing");
    }

    return null;
}

dynamic HasEntry(dynamic name)
{
    var i = 0;
    while (Truth(i < UO.GListSize()))
    {
        if (Truth(Convert.ToString(UO.GListPosName(i)) == Convert.ToString(name)))
        {
            return true;
        }

        i = i + 1;
    }

    return false;
}

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

3。 GListGet - 3 - シナリオクラス

引数と実行の流れ:

  • 遅延 — ミリ秒数。 UO.Wait は、50–5000 の範囲の値に対してのみ呼び出されます。この例では、350 ミリ秒間待機します。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.GListClear();
        UO.GListSet("delay", 350);
        var delayMs = UO.GListGet("delay");
        if (Truth(delayMs >= 50) && Truth(delayMs <= 5000))
        {
            await Delay(delayMs);
        }
        else
        {
            UO.Print("Delay outside the accepted range");
        }

        return null;
    }

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

コマンドの実装

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

UO.GListGet(nameValue) — UO.GListGet(Any)

引数: nameValue (Any)

結果: dynamic / Any.

呼び出し時:

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

public InjectionValue GListGet(InjectionValue nameValue)

        {

            string name = nameValue.ToString();

            int index = globalList.FindIndex(pair => pair.Key.Equals(name, StringComparison.OrdinalIgnoreCase));

            return index >= 0 ? globalList[index].Value : InjectionValue.Zero;

        }

UO.GListPosName

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

C# のシグネチャ

string UO.GListPosName(object? index);

レコード名をその位置で読み取り、ルールを列挙します。

引数

  • index - int: 0 から GListSize()-1 までのインデックス。 serial、graphic、またはスタック内のユニットの数ではありません。

戻り値

string は、レジスタの最後に記録された形式の名前です。無効なインデックスは "" を返します。空のキーも「」を返します。

動作

  • リストはランタイム インスタンスに属します。他のスクリプト実行には独自のリストがあります。 GList は、クロスプロファイル共有ストレージではありません。これらのコマンドはファイルを書き込まず、保存されたプロファイル状態に入りません。新しいランタイムは空のリストを取得します。また、var/変数宣言でも、UO.SetGlobal でもありません。
  • 新しい名前が末尾に追加されます。大文字と小文字を区別しない名前を繰り返すと、名前の意味とスペルが元の場所に置き換えられます。読んでも何も削除されません。安定したインデックスが必要な場合は、検索の途中でレコードをクリアしたり追加したりすることはできません。
  • 操作はローカルです。パケット、オブジェクト検索、遅延はありません。 Set/Get は名前を順番に検索します。大きなセットの場合は辞書を使用します。このファミリーの 1 つのキーを削除するための個別のコマンドはありません。 Clear はすべてのエントリをクリアします。

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

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

簡単な例

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

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

UO.GListClear();
UO.GListSet("simple_value", 42);
var result = UO.GListPosName(0);
UO.Print("GListPosName: " + Convert.ToString(result));

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

引数と実行の流れ:

  • インデックス 0 は最初のルールを意味します。読み取る前に、リストが空でないことがチェックされます。
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
if (Truth(UO.GListSize() > 0))
{
    var first = UO.GListPosName(0);
    UO.Print("First rule: " + first);
}

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

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

引数と実行の流れ:

  • HasEntry は、ヌルカウンターが書き込まれている場合は true を返し、名前が欠落している場合は false を返します。
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("processed", 0);
    if (Truth(HasEntry("processed")))
    {
        var count = UO.GListGet("processed");
        UO.Print("Recorded count: " + Convert.ToString(count));
    }

    if (!(Truth(HasEntry("missing"))))
    {
        UO.Print("No entry named missing");
    }

    return null;
}

dynamic HasEntry(dynamic name)
{
    var i = 0;
    while (Truth(i < UO.GListSize()))
    {
        if (Truth(Convert.ToString(UO.GListPosName(i)) == Convert.ToString(name)))
        {
            return true;
        }

        i = i + 1;
    }

    return false;
}

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

3。 GListPosName - 3 - シナリオクラス

引数と実行の流れ:

  • BANDAGE を繰り返すと、最初の位置の名前のスペルが変更されます。金は引き続き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.GListClear();
        UO.GListSet("bandage", 0x0E21);
        UO.GListSet("gold", 0x0EED);
        UO.GListSet("BANDAGE", 0x0E21);
        var i = 0;
        while (Truth(i < UO.GListSize()))
        {
            var name = UO.GListPosName(i);
            var graphic = UO.GListPosValue(i);
            UO.Print(name + " | graphic: " + Convert.ToString(graphic));
            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;
}

コマンドの実装

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

UO.GListPosName(index) — UO.GListPosName(Integer)

引数: index (Integer)

結果: string / String.

呼び出し時:

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

public string GListPosName(int index) => index >= 0 && index < globalList.Count ? globalList[index].Key : string.Empty;

UO.GListPosValue

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

C# のシグネチャ

dynamic UO.GListPosValue(object? index);

事前に設定されたリストから、graphic などの位置に基づいてエントリの値を読み取ります。

引数

  • index - int: 0 から GListSize()-1 までのインデックス。 serial、graphic、またはスタック内のユニットの数ではありません。

戻り値

object? — 保存された型を持つ値。無効なインデックスは int 0 を返します。 true 0 は許容されるため、境界を確認してください。

動作

  • リストはランタイム インスタンスに属します。他のスクリプト実行には独自のリストがあります。 GList は、クロスプロファイル共有ストレージではありません。これらのコマンドはファイルを書き込まず、保存されたプロファイル状態に入りません。新しいランタイムは空のリストを取得します。また、var/変数宣言でも、UO.SetGlobal でもありません。
  • 新しい名前が末尾に追加されます。大文字と小文字を区別しない名前を繰り返すと、名前の意味とスペルが元の場所に置き換えられます。読んでも何も削除されません。安定したインデックスが必要な場合は、検索の途中でレコードをクリアしたり追加したりすることはできません。
  • 操作はローカルです。パケット、オブジェクト検索、遅延はありません。 Set/Get は名前を順番に検索します。大きなセットの場合は辞書を使用します。このファミリーの 1 つのキーを削除するための個別のコマンドはありません。 Clear はすべてのエントリをクリアします。

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

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

簡単な例

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

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

UO.GListClear();
UO.GListSet("simple_value", 42);
object? result = UO.GListPosValue(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

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

引数と実行の流れ:

  • インデックス 1 は 2 番目のゴールド ルールを選択します。境界チェックは値を読み取る前に行われます。
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
var index = 1;
if (Truth(index >= 0) && Truth(index < UO.GListSize()))
{
    var graphic = UO.GListPosValue(index);
    UO.Print("Second rule graphic: " + Convert.ToString(graphic));
}

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

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

引数と実行の流れ:

  • ブルート フォースは、ワールド内のアイテムではなく、ルール内の graphic 包帯を検索します。ゲームリクエストは送信されません。
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("bandage", 0x0E21);
    UO.GListSet("gold", 0x0EED);
    var total = UO.GListSize();
    var i = 0;
    while (Truth(i < total))
    {
        var graphic = UO.GListPosValue(i);
        if (Truth(graphic == 0x0E21))
        {
            UO.Print("Bandage rule at index " + Convert.ToString(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。 GListPosValue - 3 - シナリオクラス

引数と実行の流れ:

  • インデックス 0 が存在するため、値 0 は有効なカウンターです。ここで値が null でないことを確認するとエラーになります。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.GListClear();
        UO.GListSet("processed", 0);
        var index = 0;
        if (Truth(index < UO.GListSize()))
        {
            var count = UO.GListPosValue(index);
            UO.Print("Valid zero count: " + Convert.ToString(count));
        }

        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.GListPosValue(index) — UO.GListPosValue(Integer)

引数: index (Integer)

結果: dynamic / Any.

呼び出し時:

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

public InjectionValue GListPosValue(int index) => index >= 0 && index < globalList.Count ? globalList[index].Value : InjectionValue.Zero;

UO.GListSet

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

C# のシグネチャ

void UO.GListSet(object? nameValue, object? value);

名前付きの値を一時リストに書き込みます: 例: graphic 戦利品ルールやアイテム処理カウンター。

引数

  • nameValue — object?文字列に変換されます。名前は大文字と小文字を区別せずに比較されます。「bandage」と「BANDAGE」は 1 つのキーです。空ではない文字列名を使用することをお勧めします。空の名前も受け入れられます。

戻り値

void - 結果なし。割り当てのない別のコマンド。

動作

  • リストはランタイム インスタンスに属します。他のスクリプト実行には独自のリストがあります。 GList は、クロスプロファイル共有ストレージではありません。これらのコマンドはファイルを書き込まず、保存されたプロファイル状態に入りません。新しいランタイムは空のリストを取得します。また、var/変数宣言でも、UO.SetGlobal でもありません。
  • 新しい名前が末尾に追加されます。大文字と小文字を区別しない名前を繰り返すと、名前の意味とスペルが元の場所に置き換えられます。読んでも何も削除されません。安定したインデックスが必要な場合は、検索の途中でレコードをクリアしたり追加したりすることはできません。
  • 操作はローカルです。パケット、オブジェクト検索、遅延はありません。 Set/Get は名前を順番に検索します。大きなセットの場合は辞書を使用します。このファミリーの 1 つのキーを削除するための個別のコマンドはありません。 Clear はすべてのエントリをクリアします。

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

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

簡単な例

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

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

UO.Print("Calling UO.GListSet");
UO.GListSet("gold", 0x0EED);

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

引数と実行の流れ:

  • 包帯と金はルールの名前で、番号はgraphicです。 BANDAGE は最初のエントリを置き換えますが、3 番目のエントリは作成しません。出力には順序が表示されます。
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
UO.GListSet("BANDAGE", 0x0E21);
var i = 0;
while (Truth(i < UO.GListSize()))
{
    var name = UO.GListPosName(i);
    var graphic = UO.GListPosValue(i);
    UO.Print(name + " | graphic: " + Convert.ToString(graphic));
    i = i + 1;
}

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

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

引数と実行の流れ:

  • 処理されるのは 0 で始まります。 3 つのステップで、保存されているカウンターが 3 まで増加します。ゲームアイテムはここでは移動しません。
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("processed", 0);
    for (int i = (int)(1); i <= 3; i += (int)(1))
    {
        UO.GListSet("processed", UO.GListGet("processed") + 1);
    }

    UO.Print("Recorded count: " + Convert.ToString(UO.GListGet("processed")));
    return null;
}

3。 GListSet - 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()
    {
        UO.GListClear();
        UO.GListSet("mode", "inspect");
        UO.GListSet("limit", 2);
        if (Truth(UO.GListGet("mode") == "inspect"))
        {
            for (int i = (int)(1); i <= UO.GListGet("limit"); i += (int)(1))
            {
                UO.Print("Inspect batch: " + Convert.ToString(i));
            }
        }

        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.GListSet(nameValue, value) — UO.GListSet(Any,Any)

引数: nameValue (Any), value (Any)

結果: void / Unit.

呼び出し時:

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

public void GListSet(InjectionValue nameValue, InjectionValue value)

        {

            string name = nameValue.ToString();

            int index = globalList.FindIndex(pair => pair.Key.Equals(name, StringComparison.OrdinalIgnoreCase));

            var entry = new KeyValuePair<string, InjectionValue>(name, value);

            if (index >= 0)

                globalList[index] = entry;

            else

                globalList.Add(entry);

        }

UO.GListSize

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

C# のシグネチャ

int UO.GListSize();

一時リスト内の名前付きエントリをカウントして、空かどうかを確認したり、ブルート フォースを制限したりします。

引数

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

戻り値

int >= 0 — スタック内のアイテムやユニットの数ではなく、一意の名前の数。

動作

  • リストはランタイム インスタンスに属します。他のスクリプト実行には独自のリストがあります。 GList は、クロスプロファイル共有ストレージではありません。これらのコマンドはファイルを書き込まず、保存されたプロファイル状態に入りません。新しいランタイムは空のリストを取得します。また、var/変数宣言でも、UO.SetGlobal でもありません。
  • 新しい名前が末尾に追加されます。大文字と小文字を区別しない名前を繰り返すと、名前の意味とスペルが元の場所に置き換えられます。読んでも何も削除されません。安定したインデックスが必要な場合は、検索の途中でレコードをクリアしたり追加したりすることはできません。
  • 操作はローカルです。パケット、オブジェクト検索、遅延はありません。 Set/Get は名前を順番に検索します。大きなセットの場合は辞書を使用します。このファミリーの 1 つのキーを削除するための個別のコマンドはありません。 Clear はすべてのエントリをクリアします。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 空のセットは、ルールが処理される前にプロシージャを停止します。
UO.GListClear();
if (Truth(UO.GListSize() == 0))
{
    UO.Print("No batch rules; stop here");
    return null;
}

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

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

引数と実行の流れ:

  • 2 つのルールは、インデックス 0 と 1 に対して反復されます。 i < サイズの条件では、インデックス 2 へのアクセスが許可されません。
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("bandage", 0x0E21);
    UO.GListSet("gold", 0x0EED);
    var i = 0;
    while (Truth(i < UO.GListSize()))
    {
        var name = UO.GListPosName(i);
        var graphic = UO.GListPosValue(i);
        UO.Print(name + " | graphic: " + Convert.ToString(graphic));
        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。 GListSize - 3 - シナリオクラス

引数と実行の流れ:

  • BANDAGE を置換しても名前の数は増えません。前後サイズは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.GListClear();
        UO.GListSet("bandage", 0x0E21);
        UO.GListSet("gold", 0x0EED);
        var before = UO.GListSize();
        UO.GListSet("BANDAGE", 0x0E21);
        if (Truth(UO.GListSize() == before))
        {
            UO.Print("Existing rule updated without an extra entry");
        }

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

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

結果: int / Integer.

呼び出し時:

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

public int GListSize() => globalList.Count;

UO.GetEasyUO

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

C# のシグネチャ

string UO.GetEasyUO(object? number);

ユーザーの Windows レジストリ EasyUO から文字列を読み取ります。

引数

  • number は、NumberConversions.ToInt によって変換される int/value です。 10 進数の名前レジストリ値を形成します。

戻り値

string — 値 HKCU\Software\EasyUO<数値>;存在しない場合は、名前 * がチェックされます。キー/値が見つからない場合、または Windows の外部にある場合は、空の文字列が返されます。

動作

  • 読んでもキーが作成されたり、ゲーム世界にアクセスされたりすることはありません。従来のレジストリ インターフェイスは GetGlobal とは異なります。システム レジストリ アクセス エラーが広がる可能性があります。ブリッジには別個のキャッチはありません。

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

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

簡単な例

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

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

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

1。エントリ 1 の読み取り - 直接スクリプト

引数と実行の流れ:

  • 名前は最初に 1、次に *1 と読み取られます。
var value = UO.GetEasyUO(1);
UO.Print(value);

2。空の結果をチェックする - スクリプト関数

引数と実行の流れ:

  • 空の文字列には値がないことも、空のテキストを格納することもできます。
return  RunScenario();
 object? RunScenario()
{
    var value = UO.GetEasyUO(999);
    if (Truth(Len(value) == 0))
    {
        UO.Print("empty");
    }

    return null;
}

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

3。保存された番号 - スクリプト クラス

引数と実行の流れ:

  • この番号は、オブジェクトの serial ではなく、レジストリ値を定義します。
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 number = 2;
        var value = UO.GetEasyUO(number);
        UO.Print(value);
        return null;
    }
}

コマンドの実装

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

UO.GetEasyUO(number) — UO.GetEasyUO(Any)

引数: number (Any)

結果: string / String.

呼び出し時:

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

public string GetEasyUO(InjectionValue number) => bridge.GetEasyUO(NumberConversions.ToInt(number));

UO.GetGlobal

C# シグネチャ

string UO.GetGlobal(object? name);
dynamic UO.GetGlobal(object? globalRegion, object? varName);

動作と戻り値

SetGlobal と GetGlobal はすべてのスクリプト、プロファイル、Full Client/Client プロセスで共有されます。値は文字列で、存在しないキーは "N/A" です。キーは大文字と小文字を区別し、region 形式は region/name の組を使用します。Manager/Game Manager/CSharp/globals.json をプロセス間ロックで読み直し、再起動後も保持します。Shared 形式も同じ保存先です。

引数

  • globalRegion — キー名と組み合わせる名前空間。
  • name — 大文字と小文字を区別する共有キー名。
  • varName — 大文字と小文字を区別する共有キー名。

各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。

チャットコマンド

#getglobal team.target
#get global team.message

完全な C# の例

各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。

1

string value = UO.GetGlobal("team.target");
UO.Print(value);

2

string value = UO.GetGlobal("team.delay");
if (int.TryParse(value, out int milliseconds))
    UO.Print(milliseconds.ToString());

3

UO.Print(Convert.ToString(UO.GetGlobal("team", "delay")));

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        string value = api.GetGlobal("team.target");
        api.Print(value);
    }
}

内部呼び出し

CSharpGameApi.GetGlobal
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.RegisterClientApiCompatibility
  -> InjectionScript.Runtime.State.Globals.GetGlobal
Globals -> SharedGlobalStore -> named mutex -> atomic JSON replacement


UO.GetProfile

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

C# のシグネチャ

string UO.GetProfile(object? serial);

サーバーがプロファイル ウィンドウに送信する公開文字の説明を読み取ります。メモを読んだり、選択したキャラクターの説明文を検索したりするのに便利です。これらはマネージャーのプロファイル設定ではありません。

引数

  • serial — 文字シリアル: 数値、ID 0x... の文字列、または「self」や「lasttarget」などのオブジェクト セレクター。これは、本文の種類、ファイル名、または管理者のプロフィールではありません。

戻り値

string — タイトルと署名のない主な説明のテキスト。空の説明は合法です。 3 秒以内に応答がない場合、結果が空白になる可能性もあります。これはtrue/falseではありません。リクエストは呼び出しごとに送信されます。説明がすでにセッションに保存されている場合は、開いているウィンドウの下書きを含む説明がすぐに返されます。これは、新しいサーバー応答が保証されるものではありません。

動作

  • 説明とその草稿はセッションに属します。ゲーム ウィンドウを閉じると公開せずに保存され、開くとプロフィール ウィンドウが復元されます。自分のプロファイルを明示的に閉じると、変更されたテキストが 1 回送信されます。他の人のテキストは送信されません。新しいサーバーの応答によって古いデータが置き換えられ、接続を切断すると古いデータが消去されます。 GetProfile 自体は何も編集しません。

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

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

簡単な例

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

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

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

1。直接適用 - 直接スクリプト

引数と実行の流れ:

  • 「self」 - キャラクターの説明。アカウント設定ではありません。サーバーから受信したテキスト、またはセッションにすでに保存されているテキストが表示されます。
var note = UO.GetProfile("self");
if (Truth(note != ""))
{
    UO.Print(note);
}

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

2。ゲームコンディション - シナリオ機能

引数と実行の流れ:

  • 既存の lasttarget が必要です。 FindText は、フリーテキストで大文字と小文字を区別して「Healer」という単語を検索します。一致するものがあれば、AddObject は選択した serial を healerNote という名前で保存します。これはユーザーのメモであり、職業の証明 NPC ではありません。
return  RunScenario();
 object? RunScenario()
{
    if (!(Truth(UO.Exists("lasttarget"))))
    {
        return null;
    }

    var note = UO.GetProfile("lasttarget");
    if (Truth(FindText(note, "Healer") > 0))
    {
        UO.AddObject("healerNote", "lasttarget");
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
int FindText(int start, object? text, object? value)
{
    string input = Convert.ToString(text) ?? "";
    return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
}

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

引数と実行の流れ:

  • 関数 HasPublicNote の全体を以下に示します。オブジェクトと部分文字列の存在を確認し、true/false を返します。 「ギルド」 - デモテキスト。空の応答は、サーバー上にそのようなレコードが存在しないことを確認するものではありません。
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(HasPublicNote("lasttarget", "Guild")))
        {
            UO.AddObject("guildNote", "lasttarget");
        }

        return null;
    }

    dynamic HasPublicNote(dynamic serial, dynamic phrase)
    {
        if (!(Truth(UO.Exists(serial))))
        {
            return false;
        }

        return FindText(UO.GetProfile(serial), phrase) > 0;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
    int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
    int FindText(int start, object? text, object? value)
    {
        string input = Convert.ToString(text) ?? "";
        return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
    }
}

コマンドの実装

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

UO.GetProfile(serial) — UO.GetProfile(Any)

引数: serial (Any)

結果: string / String.

呼び出し時:

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

public string GetProfile(InjectionValue serial) => bridge.GetProfile(GetObject(serial));

UO.LoadHotkeys

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

C# のシグネチャ

void UO.LoadHotkeys();

保存されたマクロとホットキーをロードします。

引数

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

戻り値

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

動作

  • LoadHotkeys は Invoke 経由で _world.Macros.Load を呼び出します。現在のマクロ テーブルはローカル プロファイル データに置き換えられます。
  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 保存されたマクロとホットキーをロードします。
UO.LoadHotkeys();

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

引数と実行の流れ:

  • LoadHotkeys は Invoke 経由で _world.Macros.Load を呼び出します。現在のマクロ テーブルはローカル プロファイル データに置き換えられます。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ProfileName());
    UO.LoadHotkeys();
    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.LoadHotkeys();
        UO.Print("Macros loaded");
        return null;
    }
}

コマンドの実装

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

UO.LoadHotkeys() — UO.LoadHotkeys()

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

結果: void / Unit.

呼び出し時:

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

case "loadhotkeys": bridge.LoadHotkeys(); break;

UO.ProfileName

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

C# のシグネチャ

dynamic UO.ProfileName();

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

引数

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

戻り値

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

動作

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

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

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

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

引数と実行の流れ:

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

    return null;
}

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

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

引数と実行の流れ:

  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

コマンドの実装

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

UO.ProfileName() — UO.ProfileName()

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

結果: dynamic / Any.

呼び出し時:

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

case "profilename": return new InjectionValue(bridge.ProfileName);

UO.ProfileShardName

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

C# のシグネチャ

dynamic UO.ProfileShardName();

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

引数

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

戻り値

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

動作

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

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

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

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

引数と実行の流れ:

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

    return null;
}

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

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

引数と実行の流れ:

  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

コマンドの実装

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

UO.ProfileShardName() — UO.ProfileShardName()

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

結果: dynamic / Any.

呼び出し時:

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

case "shardname":

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

UO.ReqProfile

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

C# のシグネチャ

void UO.ReqProfile();
void UO.ReqProfile(object? mobile);

キャラクターの既知のプロフィールテキストを印刷します。

引数

  • mobile - オプションの serial/エイリアス。引数なし - 「lasttarget」。これはローカル設定プロファイル ClassicUO ではありません。

戻り値

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

動作

  • ExecuteLegacyManualAlias は GetProfile を呼び出し、次に SystemMessage を呼び出します。 Bridge.GetProfile は RequestProfile を送信し、25 ミリ秒の一時停止を伴い、最大 3 秒間で CharacterPanels.Profile.CurrentText をチェックします。既存のテキストはすぐに返すことができます。タイムアウトがあると、メッセージが表示され、空の行が表示されます。このコマンドはテキストを出力しますが、テキストを返しません。
  • string の値には、UO.GetProfile を使用します。テキストの存在は、名前変更が成功したことやキャラクターのステータスを証明するものではありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • キャラクターの既知のプロフィールテキストを印刷します。
UO.ReqProfile();

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

引数と実行の流れ:

  • ExecuteLegacyManualAlias は GetProfile を呼び出し、次に SystemMessage を呼び出します。 Bridge.GetProfile は RequestProfile を送信し、25 ミリ秒の一時停止を伴い、最大 3 秒間で CharacterPanels.Profile.CurrentText をチェックします。既存のテキストはすぐに返すことができます。タイムアウトがあると、メッセージが表示され、空の行が表示されます。このコマンドはテキストを出力しますが、テキストを返しません。
return  RunScenario();
 object? RunScenario()
{
    UO.ReqProfile("self");
    return null;
}

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

引数と実行の流れ:

  • string の値には、UO.GetProfile を使用します。テキストの存在は、名前変更が成功したことやキャラクターのステータスを証明するものではありません。
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 = UO.GetSerial("lasttarget");
        if (Truth(UO.Exists(id)))
        {
            UO.ReqProfile(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;
}

コマンドの実装

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

UO.ReqProfile() — UO.ReqProfile()

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

結果: void / Unit.

呼び出し時:

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

case "reqprofile":

                    SystemMessage(GetProfile(arguments.Length > 0 ? arguments[0] : new InjectionValue("lasttarget")));

                    break;

UO.ReqProfile(mobile) — UO.ReqProfile(Any)

引数: mobile (Any)

結果: void / Unit.

呼び出し時:

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

case "reqprofile":

                    SystemMessage(GetProfile(arguments.Length > 0 ? arguments[0] : new InjectionValue("lasttarget")));

                    break;

UO.ResetProfile

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

C# のシグネチャ

void UO.ResetProfile();

アクティブなプロファイルをデフォルト値にリセットします。

引数

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

戻り値

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

動作

  • ResetProfile は ProfileManager.ResetCurrentProfileToDefault を呼び出します。アクティブなプロファイルがない場合は、エラーが表示されます。ローカル設定を変更するため、保存されたユーザー値が失われる可能性があります。
  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • アクティブなプロファイルをデフォルト値にリセットします。
UO.ResetProfile();

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

引数と実行の流れ:

  • ResetProfile は ProfileManager.ResetCurrentProfileToDefault を呼び出します。アクティブなプロファイルがない場合は、エラーが表示されます。ローカル設定を変更するため、保存されたユーザー値が失われる可能性があります。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ProfileName());
    UO.ResetProfile();
    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.ResetProfile();
        UO.SaveConfig();
        return null;
    }
}

コマンドの実装

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

UO.ResetProfile() — UO.ResetProfile()

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

結果: void / Unit.

呼び出し時:

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

case "resetprofile": bridge.ResetProfile(); break;

UO.SaveConfig

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

C# のシグネチャ

void UO.SaveConfig();

現在の ClassicUO プロファイルを保存します。

引数

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

戻り値

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

動作

  • SaveConfig は Invoke 経由で ProfileManager.SaveCurrentProfile を呼び出します。このコマンドはローカル プロファイル設定を書き込みます。パスはProfileManagerから取得されます。
  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 現在の ClassicUO プロファイルを保存します。
UO.SaveConfig();

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

引数と実行の流れ:

  • SaveConfig は Invoke 経由で ProfileManager.SaveCurrentProfile を呼び出します。このコマンドはローカル プロファイル設定を書き込みます。パスはProfileManagerから取得されます。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ProfileName());
    UO.SaveConfig();
    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.SaveConfig();
        UO.Print(UO.ShardPath());
        return null;
    }
}

コマンドの実装

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

UO.SaveConfig() — UO.SaveConfig()

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

結果: void / Unit.

呼び出し時:

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

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

UO.SaveHotkeys

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

C# のシグネチャ

void UO.SaveHotkeys();

マクロとホットキーを保存します。

引数

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

戻り値

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

動作

  • SaveHotkeys は、Invoke 経由で _world.Macros.Save を呼び出します。現在のプロファイルのローカル マクロ テーブルが保存されます。
  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • マクロとホットキーを保存します。
UO.SaveHotkeys();

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

引数と実行の流れ:

  • SaveHotkeys は、Invoke 経由で _world.Macros.Save を呼び出します。現在のプロファイルのローカル マクロ テーブルが保存されます。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ProfileName());
    UO.SaveHotkeys();
    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.SaveHotkeys();
        UO.LoadHotkeys();
        return null;
    }
}

コマンドの実装

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

UO.SaveHotkeys() — UO.SaveHotkeys()

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

結果: void / Unit.

呼び出し時:

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

case "savehotkeys": bridge.SaveHotkeys(); break;

UO.Set

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

C# のシグネチャ

void UO.Set(object? name, object? value);

3 つの従来の設定の 1 つを変更します。

引数

  • name — 大文字と小文字を区別しない文字列: "find distance"、"grablay"、または "equipfordress"。不明な名前は黙って無視されます。
  • value - int または double/0x-text。文字列形式の場合は TryStr2Int;間違ったテキストはエラーではなく 0 になります。

戻り値

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

動作

  • find distance は Bridge.SetFindDistance を呼び出し、grabDelay は Bridge.SetGrabDelay を呼び出し、equipfordress は state を割り当てます。UseEquipForDress。これらは 3 つの個別の設定です。任意のプロパティに対する汎用セッターはありません。
  • 文字列値は最初に、fallback=0 を使用して TryStr2Int に変換されます。したがって、タイプミスにより、認識された設定に 0 が書き込まれる可能性があります。 Set 自身は物を探したり、服を着替えたりしません。

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

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

簡単な例

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

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

UO.Print("Calling UO.Set");
UO.Set("finddistance", 10);

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

引数と実行の流れ:

  • 3 つの従来の設定の 1 つを変更します。
UO.Set("finddistance", 10);

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

引数と実行の流れ:

  • find distance は Bridge.SetFindDistance を呼び出し、grabDelay は Bridge.SetGrabDelay を呼び出し、equipfordress は state を割り当てます。UseEquipForDress。これらは 3 つの個別の設定です。任意のプロパティに対する汎用セッターはありません。
return  RunScenario();
 object? RunScenario()
{
    UO.Set("grabdelay", "250");
    return null;
}

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

引数と実行の流れ:

  • 文字列値は最初に、fallback=0 を使用して TryStr2Int に変換されます。したがって、タイプミスにより、認識された設定に 0 が書き込まれる可能性があります。 Set 自身は物を探したり、服を着替えたりしません。
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.Set("equipfordress", 1);
        UO.Print(UO.FindDistance());
        return null;
    }
}

コマンドの実装

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

UO.Set(name, value) — UO.Set(String,Integer)

引数: name (String), value (Integer/String)

結果: void / Unit.

呼び出し時:

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

public void Set(string name, int value)

        {

            if (name.Equals("finddistance", StringComparison.OrdinalIgnoreCase))

            {

                bridge.SetFindDistance(value);

            }

            else if (name.Equals("grabdelay", StringComparison.OrdinalIgnoreCase))

            {

                bridge.SetGrabDelay(value);

            }

            else if (name.Equals("equipfordress", StringComparison.OrdinalIgnoreCase))

            {

                state.UseEquipForDress = value;

            }

        }

UO.Set(name, value) — UO.Set(String,String)

引数: name (String), value (Integer/String)

結果: void / Unit.

呼び出し時:

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

public void Set(string name, string valueStr)

        {

            int valueInt = NumberConversions.TryStr2Int(valueStr, out var value) ? value : 0;

            Set(name, valueInt);

        }

UO.SetDefault

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

C# のシグネチャ

void UO.SetDefault(object? name, object? @object);

名前付きエイリアス serial を実行時状態で保存します。

引数

  • name — エイリアスをテキストとして名前付けし、大文字と小文字を区別してオブジェクト ディクショナリを処理します。
  • object — Arg/GetObject を介したシリアル/エイリアス。名前、serialの順です。

戻り値

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

動作

  • ExecuteLegacyManualAlias は state.Objects.Set(Text(0),Arg(1)) を呼び出します。インタラクティブな選択肢はありません。 serial の存在は確認されていません。
  • これはオブジェクト名を記録するものであり、プロファイルをリセットしたり、すべての設定をデフォルトに変更したりするものではありません。後続の呼び出しでは、エイリアスが再度解決されます。
  • 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。

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

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

簡単な例

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

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

UO.Print("Calling UO.SetDefault");
UO.SetDefault("manualObject", UO.Self());

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

引数と実行の流れ:

  • 名前付きエイリアス serial を実行時状態で保存します。
UO.SetDefault("manualObject", UO.Self());

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

引数と実行の流れ:

  • ExecuteLegacyManualAlias は state.Objects.Set(Text(0),Arg(1)) を呼び出します。インタラクティブな選択肢はありません。 serial の存在は確認されていません。
return  RunScenario();
 object? RunScenario()
{
    UO.SetDefault("manualBag", UO.Backpack());
    UO.Print(UO.GetSerial("manualBag"));
    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 id = UO.GetSerial("lasttarget");
        if (Truth(UO.Exists(id)))
        {
            UO.SetDefault("manualTarget", id);
            UO.Print(UO.GetName("manualTarget"));
        }

        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.SetDefault(name, object) — UO.SetDefault(Any,Any)

引数: name (Any), object (Any)

結果: void / Unit.

呼び出し時:

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

case "setdefault":

                    if (arguments.Length > 1) state.Objects.Set(Text(0), Arg(1));

                    break;

UO.SetEasyUO

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

C# のシグネチャ

void UO.SetEasyUO(object? number, object? value);

文字列値を Windows レジストリ EasyUO に書き込みます。

引数

  • number — int 値の番号。* プレフィックスのない double でフォーマットされます。
  • value — テキスト経由 ToString;送信済みとして保存されます。

戻り値

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

動作

  • Windows では、書き込み権限、SetValue(decimalNumber,value,RegistryValueKind.string) を使用して HKCU\Software\EasyUO を開く/作成します。他の OS では、メッセージが表示されますが、記録されません。
  • これは、現在のユーザーのレジストリ内の外部永続エントリであり、スコープ指定されたグローバル ランタイムやゲーム serial ではありません。この機能ではレジストリアクセスエラーは隠蔽されません。

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

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

簡単な例

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

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

UO.Print("Calling UO.SetEasyUO");
UO.SetEasyUO(9001, "manual-example");

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

引数と実行の流れ:

  • 文字列値を Windows レジストリ EasyUO に書き込みます。
UO.SetEasyUO(9001, "manual-example");

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

引数と実行の流れ:

  • Windows では、書き込み権限、SetValue(decimalNumber,value,RegistryValueKind.String) を使用して HKCU\Software\EasyUO を開く/作成します。他の OS では、メッセージが表示されますが、記録されません。
return  RunScenario();
 object? RunScenario()
{
    UO.SetEasyUO(9001, "");
    return null;
}

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

引数と実行の流れ:

  • これは、現在のユーザーのレジストリ内の外部永続エントリであり、スコープ指定されたグローバル ランタイムやゲーム serial ではありません。この機能ではレジストリアクセスエラーは隠蔽されません。
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.SetEasyUO(9001, "manual-example");
        UO.Print(UO.GetEasyUO(9001));
        return null;
    }
}

コマンドの実装

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

UO.SetEasyUO(number, value) — UO.SetEasyUO(Any,Any)

引数: number (Any), value (Any)

結果: void / Unit.

呼び出し時:

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

public void SetEasyUO(InjectionValue number, InjectionValue value)

            => bridge.SetEasyUO(NumberConversions.ToInt(number), value.ToString());

UO.SetGlobal

C# シグネチャ

void UO.SetGlobal(object? name, object? value);
void UO.SetGlobal(object? globalRegion, object? varName, object? varValue);

動作と戻り値

SetGlobal と GetGlobal はすべてのスクリプト、プロファイル、Full Client/Client プロセスで共有されます。値は文字列で、存在しないキーは "N/A" です。キーは大文字と小文字を区別し、region 形式は region/name の組を使用します。Manager/Game Manager/CSharp/globals.json をプロセス間ロックで読み直し、再起動後も保持します。Shared 形式も同じ保存先です。

引数

  • globalRegion — キー名と組み合わせる名前空間。
  • name — 大文字と小文字を区別する共有キー名。
  • value — 文字列として保存する値。
  • varName — 大文字と小文字を区別する共有キー名。
  • varValue — 文字列として保存する値。

各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。

チャットコマンド

#setglobal team.target 0x40001234
#set global team.message Привіт усім

完全な C# の例

各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。

1

UO.SetGlobal("team.target", 0x40001234);
UO.Print(UO.GetGlobal("team.target"));

2

UO.SetGlobal("team.message", "Привіт");
UO.Print(UO.GetGlobal("team.message"));

3

UO.SetGlobal("team", "delay", "350");
UO.Print(Convert.ToString(UO.GetGlobal("team", "delay")));

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        api.SetGlobal("team.target", 0x40001234);
        api.Print(api.GetGlobal("team.target"));
    }
}

内部呼び出し

CSharpGameApi.SetGlobal
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.RegisterClientApiCompatibility
  -> InjectionScript.Runtime.State.Globals.SetGlobal
Globals -> SharedGlobalStore -> named mutex -> atomic JSON replacement


UO.SetMulPath

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

C# のシグネチャ

void UO.SetMulPath(object? pathValue);

実行時にパス文字列 mulPath を保存します。

引数

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

戻り値

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

動作

  • mulPath = ToString または空の文字列を割り当てます。この機能では、ファイルは開かず、地図データは再ロードされず、パスの利用可能性もチェックされません。
  • これは、現在のランタイムの互換性ストレージです。プロジェクトのプライベート mulPath/showZ にはコンシューマがありません。この変更によってアセットが再ロードされたり、高さの表示が変更されることはありません。

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

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

簡単な例

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

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

UO.Print("Calling UO.SetMulPath");
UO.SetMulPath("C:\\Ultima Online");

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

引数と実行の流れ:

  • 実行時にパス文字列 mulPath を保存します。
UO.SetMulPath("C:\\Ultima Online");

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

引数と実行の流れ:

  • mulPath = ToString または空の文字列を割り当てます。この機能では、ファイルは開かず、地図データは再ロードされず、パスの利用可能性もチェックされません。
return  RunScenario();
 object? RunScenario()
{
    UO.SetMulPath("");
    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("C:\\Ultima Online");
        return null;
    }

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

コマンドの実装

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

UO.SetMulPath(pathValue) — UO.SetMulPath(Any)

引数: pathValue (Any)

結果: void / Unit.

呼び出し時:

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

public void SetMulPath(InjectionValue pathValue) => mulPath = pathValue.ToString() ?? string.Empty;
⚠️ **GitHub.com Fallback** ⚠️