JA UO Topic diagnostics introspection - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 例 · Languages
オブジェクト、タイル、ガンプの検査、名前、パラメータ、署名のチェック API。署名の存在は、現在の状態でゲームアクションの可能性を確認するものではありません。
| トピック | コマンドと説明 |
|---|---|
| Help | UO.Help |
| Dump | UO.Dump |
| Info | UO.Info |
| InfoTile | UO.InfoTile |
| InfoGump | UO.InfoGump |
| API Name Exists | UO.ApiNameExists |
| API Signature Exists | UO.ApiSignatureExists |
| API Parameter Exists | UO.ApiParameterExists |
| Version | UO.Version |
UO.Help · UO.Dump · UO.Info · UO.InfoColor · UO.GetInfo · UO.ExtendedInfo · UO.InfoTile · UO.InfoGump · UO.InfoGumps · UO.ApiNameExists · UO.ApiParameterExists · UO.ApiSignatureExists · UO.Version · UO.ClientInfo
各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。
UO.InfoGump();return UO.ApiNameExists("UO.GetType");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.ApiNameExists(object? name);呼び出されるネイティブ関数名の登録を確認します。
-
name- 必須 string: 呼び出し表現ではなく、正確な登録名。大文字と小文字のスペースとエッジのスペースは重要ではありません。 UO。は自動的には追加されません。空の名前または不明な名前は 0 になります。ユーザーの手順は考慮されていません。
int:1 は名前が登録済み、0 は未登録です。C# では result != 0 または result == 0 を使用します。int と true または false は比較できません。登録はサーバーの動作完了を確認するものではありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.ApiNameExists("UO.GetType");
UO.Print("ApiNameExists: " + Convert.ToString(result));引数と実行の流れ:
- 最初の例では、明示的な UO を使用してゲーム名をテストします。そして 1 を返します。テストされる正確な名前と、それが必要な場合の引数の数が呼び出しに表示されます。
return UO.ApiNameExists("UO.GetType");ネイティブ名の登録だけを確認します。Convert.ToInt32 は .NET メソッドであり、UO API の登録ではないため、ApiNameExists は 0 を返します。このメソッドは通常の C# で利用できます。
return RunScenario();
object? RunScenario()
{
var name = "Convert.ToInt32";
return UO.ApiNameExists(name);
return null;
}各数値結果を 0 と比較した後、&& で 2 つの bool 値を組み合わせます。この名前の場合、結果は 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()
{
return HasBoth("GetType", "UO.GetType");
return null;
}
dynamic HasBoth(dynamic first, dynamic second)
{
return UO.ApiNameExists(first) != 0 && UO.ApiNameExists(second) != 0;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: name (String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ApiNameExists. -
InjectionScript.Runtime.InjectionApiUO.NormalizeApiName:NormalizeApiName(name).
内部実装のコードです。単独のスクリプトとして実行できません。
public int ApiNameExists(string name)
{
string normalized = NormalizeApiName(name);
return metadata.NativeSubrutines.Any(definition =>
definition.Name.Equals(normalized, StringComparison.OrdinalIgnoreCase)) ? 1 : 0;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.ApiParameterExists(object? name);ランタイム値または名前付きオブジェクトが登録されているかどうかを確認します。
-
name- 必須 string: 呼び出し表現ではなく、正確な登録名。大文字と小文字のスペースとエッジのスペースは重要ではありません。 UO。は自動的には追加されません。空の名前または不明な名前は 0 になります。ユーザーの手順は考慮されていません。
int:1 は名前が登録済み、0 は未登録です。C# では result != 0 または result == 0 を使用します。int と true または false は比較できません。登録はサーバーの動作完了を確認するものではありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.ApiParameterExists("backpack");
UO.Print("ApiParameterExists: " + Convert.ToString(result));引数と実行の流れ:
- 最初の例では、明示的な UO を使用してゲーム名をテストします。そして 1 を返します。テストされる正確な名前と、それが必要な場合の引数の数が呼び出しに表示されます。
return UO.ApiParameterExists("UO.GetHP");登録済みの backpack セレクターを確認し、1 を返します。C# メソッドの引数や、ゲーム内でのバックパックの存在を確認するものではありません。
return RunScenario();
object? RunScenario()
{
var name = "backpack";
return UO.ApiParameterExists(name);
return null;
}引数と実行の流れ:
- 3 番目の例には、完全なヘルパー関数が含まれています。削除された短い形式またはサポートされていないアリティを、利用可能な形式と比較します。パラメータ名、first、second、および count のパス名/カウントは変更されません。結果は、呼び出しチェックの場合は 0、値チェックの場合は 0:1 です。
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()
{
return CompareNames("GetHP", "UO.GetHP");
return null;
}
dynamic CompareNames(dynamic first, dynamic second)
{
return Convert.ToString(UO.ApiParameterExists(first)) + ":" + Convert.ToString(UO.ApiParameterExists(second));
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: name (String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ApiParameterExists. -
InjectionScript.Runtime.Metadata.IntrinsicVariableExists:metadata.IntrinsicVariableExists(value).
内部実装のコードです。単独のスクリプトとして実行できません。
public int ApiParameterExists(string name)
{
string value = (name ?? string.Empty).Trim();
if (value.Length == 0)
return 0;
if (Metadata.ShortcutVariables.Any(item => item.Equals(value, StringComparison.OrdinalIgnoreCase)))
return 1;
return metadata.IntrinsicVariableExists(value) ? 1 : 0;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.ApiSignatureExists(object? name, object? argumentCount);指定された数の引数を使用して名前の登録をテストします。
-
name- 必須 string: 呼び出し表現ではなく、正確な登録名。大文字と小文字のスペースとエッジのスペースは重要ではありません。 UO。は自動的には追加されません。空の名前または不明な名前は 0 になります。ユーザーの手順は考慮されていません。 -
argumentCount— 必須 int: 明示的に渡されるオプションの引数を含む、位置引数の合計数。負の数量またはサポートされていない数量は 0 になります。引数自体の型はチェックされません。
int:1 は名前が登録済み、0 は未登録です。C# では result != 0 または result == 0 を使用します。int と true または false は比較できません。登録はサーバーの動作完了を確認するものではありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.ApiSignatureExists("UO.GetType", 1);
UO.Print("ApiSignatureExists: " + Convert.ToString(result));引数と実行の流れ:
- 最初の例では、明示的な UO を使用してゲーム名をテストします。そして 1 を返します。テストされる正確な名前と、それが必要な場合の引数の数が呼び出しに表示されます。
return UO.ApiSignatureExists("UO.GetType",1);UO.FindType の引数が 1 個と 0 個の形式を確認します。結果は文字列 "1:0" です。引数なしの形式は登録されていません。
return RunScenario();
object? RunScenario()
{
return Convert.ToString(UO.ApiSignatureExists("UO.FindType", 1)) + ":" + Convert.ToString(UO.ApiSignatureExists("UO.FindType", 0));
return null;
}引数と実行の流れ:
- 3 番目の例には、完全なヘルパー関数が含まれています。削除された短い形式またはサポートされていないアリティを、利用可能な形式と比較します。パラメータ名、first、second、および count のパス名/カウントは変更されません。結果は、呼び出しチェックの場合は 0、値チェックの場合は 0:1 です。
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()
{
return CheckForm("UO.GetType", 0);
return null;
}
dynamic CheckForm(dynamic name, dynamic count)
{
return UO.ApiSignatureExists(name, count);
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: name (String), argumentCount (Integer)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ApiSignatureExists. -
InjectionScript.Runtime.Metadata.NativeSubrutineExists:metadata.NativeSubrutineExists(NormalizeApiName(name), argumentCount). -
InjectionScript.Runtime.InjectionApiUO.NormalizeApiName:NormalizeApiName(name).
内部実装のコードです。単独のスクリプトとして実行できません。
public int ApiSignatureExists(string name, int argumentCount)
=> metadata.NativeSubrutineExists(NormalizeApiName(name), argumentCount) ? 1 : 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ClientInfo();実行中のクライアントに関する簡単な情報を読み取ります。
パラメータはありません。
3 つの string の配列: [0] - 製品名、[1] - 実行中のクライアントのバージョン、[2] - クライアント ディレクトリ。インデックスは 0 で始まります。これは文字列 JSON ではなく、辞書でもありません。
- データはRuntimeProductName、RuntimeProductVersion、ClientPathから読み取られます。このコマンドは何も変更せず、サーバーに何も送信しません。
- 一般的なヘルパー関数でインデックスを作成する前に、ArrayLength を使用します。クライアント情報をキャラクター統計やサーバーのバージョンと混同しないでください。
- 現在の ClassicUO クライアントに関する情報を読み取ります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.ClientInfo();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 0 - 製品、1 - バージョン、2 - カタログ。バージョン値は起動時に取得されます。この例では修正されていません。
var info = UO.ClientInfo();
UO.Print("Product: " + info[0]);
UO.Print("Client version: " + info[1]);
UO.Print("Client folder: " + info[2]);引数と実行の流れ:
- ArrayLength はフィールドの数を返します。最後の有効なインデックスは、長さから 1 を引いたものと等しくなります。
return RunScenario();
object? RunScenario()
{
var info = UO.ClientInfo();
var i = 0;
while (Truth(i < ArrayLength(info)))
{
UO.Print(Convert.ToString(i) + ": " + info[i]);
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- ClientCaption はタイトルとバージョンの文字列を返します。元の配列は変更されません。
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(ClientCaption());
return null;
}
dynamic ClientCaption()
{
var info = UO.ClientInfo();
if (Truth(ArrayLength(info) < 2))
{
return "Client information unavailable";
}
return info[0] + " / " + info[1];
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: dynamic / Array.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RuntimeProductName:bridge.RuntimeProductName. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RuntimeProductVersion:bridge.RuntimeProductVersion. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientPath:bridge.ClientPath.
内部実装のコードです。単独のスクリプトとして実行できません。
case "clientinfo":
return new InjectionValue(new[]
{
new InjectionValue(bridge.RuntimeProductName),
new InjectionValue(bridge.RuntimeProductVersion),
new InjectionValue(bridge.ClientPath)
});Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Dump();
void UO.Dump(object? @object);クライアントが認識しているオブジェクトの診断スナップショットを印刷します。
-
object- オプションのserial/リンク。引数なしでは、bridge.LastTarget が使用されます。
void - 戻り値はありません。
- メッセージには、0xXXXXXXXX としての serial、名前、graphic/type、hue、X/Y/Z が含まれます。フィールドはローカル モデルから読み取られます。オブジェクトが見つからない場合、名前は空になり、フィールドは null になります。このコマンドは、最新のサーバー プロパティを要求しません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.Dump");
UO.Dump();引数と実行の流れ:
- 引数が欠落している場合は、LastTarget を意味します。
UO.Dump();引数と実行の流れ:
- すべてのフィールドは自分のキャラクターに固有です。
return RunScenario();
object? RunScenario()
{
UO.Dump("self");
return null;
}引数と実行の流れ:
- Exists チェックは、欠落しているモデルを 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()
{
var id = UO.LastTarget();
if (Truth(UO.Exists(id)))
{
UO.Dump(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 を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, bridge.LastTarget). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetName:bridge.GetName(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGraphics:bridge.GetGraphics(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetColor:bridge.GetColor(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetX:bridge.GetX(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetY:bridge.GetY(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetZ:bridge.GetZ(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
内部実装のコードです。単独のスクリプトとして実行できません。
case "dump":
{
int id = Arg(0, bridge.LastTarget);
SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}");
break;
}引数: object (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, bridge.LastTarget). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetName:bridge.GetName(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGraphics:bridge.GetGraphics(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetColor:bridge.GetColor(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetX:bridge.GetX(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetY:bridge.GetY(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetZ:bridge.GetZ(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
内部実装のコードです。単独のスクリプトとして実行できません。
case "dump":
{
int id = Arg(0, bridge.LastTarget);
SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}");
break;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ExtendedInfo();現在のクライアント接続構成の 4 つのフィールドを返します。
パラメータはありません。
Array [ClientPath:string, CurrentProfilePath:string, GameServerAddress:string, GameServerPort:int].
- フィールドの順序は固定されています。 ClientPath と CurrentProfilePath はクライアント パスです。 GameServerAddress および GameServerPort はグローバル設定を読み取ります。GlobalSettings.IP/ポート: これは設定されたアドレスであり、実際のピア マネージャー セッションはチェックしません。リストにはパスワードが含まれておらず、サーバーに情報の入力を求めるプロンプトも表示されません。プロファイル/接続を選択する前に、値を空白にすることができます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.ExtendedInfo();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 配列には混合型が含まれているため、Convert.ToString が使用されます。
var info = UO.ExtendedInfo();
for (int i = (int)(0); i <= ArrayLength(info)-1; i += (int)(1))
{
UO.Print(Convert.ToString(info[i]));
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;引数と実行の流れ:
- インデックス 2 と 3 はアドレスとポートです。
return RunScenario();
object? RunScenario()
{
var info = UO.ExtendedInfo();
UO.Print(Convert.ToString(info[2]) + ":" + Convert.ToString(info[3]));
return null;
}引数と実行の流れ:
- インデックス 1 — ClientPath ではなく、CurrentProfilePath。
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.ExtendedInfo();
var path = info[1];
UO.Print(path);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientPath:bridge.ClientPath. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CurrentProfilePath:bridge.CurrentProfilePath. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GameServerAddress:bridge.GameServerAddress. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GameServerPort:bridge.GameServerPort.
内部実装のコードです。単独のスクリプトとして実行できません。
case "extendedinfo":
return new InjectionValue(new[] { new InjectionValue(bridge.ClientPath), new InjectionValue(bridge.CurrentProfilePath), new InjectionValue(bridge.GameServerAddress), new InjectionValue(bridge.GameServerPort) });Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetInfo(object? arg);正確な文字セレクターの文字名のみを返します。
-
arg- string。大文字と小文字を区別する正確な文字値は、GetName("self") を呼び出します。他の値は認識されません。
string — キャラクターごとの名前。他のすべての引数には文字列リテラル UNKNOWN。文字がない場合、名前は空でも構いません。
- 比較 StringComparison.Ordinal では大文字と小文字が区別されます。文字セレクターのみがサポートされています。このコマンドはネットワーク要求を行いません。ローカルの文字モデルから名前を読み取ります。ウィンドウFillInfoWindowは個別に制御されます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetInfo("character");
UO.Print("GetInfo: " + Convert.ToString(result));引数と実行の流れ:
- 正確な文字リテラルは self となります。
var name = UO.GetInfo("character");
UO.Print(name);引数と実行の流れ:
- 文字が一致しないため、UNKNOWN が返されます。
return RunScenario();
object? RunScenario()
{
var value = UO.GetInfo("Character");
UO.Print(value);
return null;
}引数と実行の流れ:
- プロファイルはこの実装ではサポートされていません。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var value = UO.GetInfo("profile");
UO.Print(value);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: arg (String)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GetInfo. -
InjectionScript.Runtime.InjectionApiUO.GetName:GetName("self").
内部実装のコードです。単独のスクリプトとして実行できません。
private string GetInfo(string arg)
{
if (arg.Equals("character", StringComparison.Ordinal))
return GetName("self");
return "UNKNOWN";
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Help();パラメータはありません。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.Help");
UO.Help();引数と実行の流れ:
- C# IDE に関するローカルヒントを表示します。
UO.Help();引数と実行の流れ:
- ExecuteLegacyManualAlias は、UO.*、設定されたチャット プレフィックス、およびオプション > C# IDE > SystemMessage 経由の手動に関する行を表示します。ヘルプ リクエストはサーバーに送信されません。
return RunScenario();
object? RunScenario()
{
UO.Help();
UO.OpenIDE();
return null;
}引数と実行の流れ:
- 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.Help();
UO.Print("Options > C# IDE > Manual");
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("C# Scripts IDE: use UO.* in scripts or the configured chat prefix. Open Options > C# Scripts IDE > Manual.").
内部実装のコードです。単独のスクリプトとして実行できません。
case "help": SystemMessage("C# Scripts IDE: use UO.* in scripts or the configured chat prefix. Open Options > C# Scripts IDE > Manual."); break;string UO.Info();
string UO.Info(object? serial);
string UO.Info(object? type, object? x, object? y);
string UO.Info(object? type, object? x, object? y, object? z);呼び出し元によって表示が変わります。ゲーム内チャットのコマンドは、項目、値、Ctrl+C、スクロールを備えた表を開きます。通常の C# スクリプトは、ゲーム画面が開いていても、ウィンドウやターゲットなしで文字列を受け取ります。取得できるのはクライアントが知る情報です。
引数なしの Info と InfoTile は、画面内チャットではターゲットを開始します。スクリプトの Info() は最後の物件ターゲットまたは自分を、InfoTile() は足元の地形を読みます。serial、type、座標で対象を指定できます。InfoTile(x,y,map) の第3引数はマップ番号です。
-
serial— オブジェクトのシリアル番号または保存済み別名。 -
type— アイテムの画像 ID。-1 は指定位置のすべての種類に一致。 -
x— ワールドの X 座標。 -
y— ワールドの Y 座標。 -
z— Z 高度。短い形式では 0。
プレフィックスは C# Scripts IDE で設定し、# は例です。引数は空白区切りで、引用符内の文字列は一つの引数です。id は serial、type は graphic です。xy x y [z] は位置にある最初の読み込み済み対象、type のみは最初の一致対象です。InfoTile(x,y,map) の第3引数は Z ではなくマップです。
#info
#UO.Info id 0x40001234
#info type 0x0EED
#info xy 1450 1690
#info type 0x0EED xy 1450 1690 0
各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。
string report = UO.Info(0x40001234);
UO.Print(report);string InspectSelf() => UO.Info("self");
UO.Print(InspectSelf());foreach (int serial in new[] { 0x40001234, 0x40005678 })
{
string report = UO.Info(serial);
UO.Print(report);
}new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
string report = api.Info(0x40001234);
api.Print(report);
}
}CSharpGameApi.Info
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.Info
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump
string UO.InfoColor();
string UO.InfoColor(object? serial);呼び出し元によって表示が変わります。ゲーム内チャットのコマンドは、項目、値、Ctrl+C、スクロールを備えた表を開きます。通常の C# スクリプトは、ゲーム画面が開いていても、ウィンドウやターゲットなしで文字列を受け取ります。取得できるのはクライアントが知る情報です。
引数なしの Info と InfoTile は、画面内チャットではターゲットを開始します。スクリプトの Info() は最後の物件ターゲットまたは自分を、InfoTile() は足元の地形を読みます。serial、type、座標で対象を指定できます。InfoTile(x,y,map) の第3引数はマップ番号です。
-
serial— オブジェクトのシリアル番号または保存済み別名。
プレフィックスは C# Scripts IDE で設定し、# は例です。引数は空白区切りで、引用符内の文字列は一つの引数です。id は serial、type は graphic です。xy x y [z] は位置にある最初の読み込み済み対象、type のみは最初の一致対象です。InfoTile(x,y,map) の第3引数は Z ではなくマップです。
#infocolor 0x40001234
各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。
UO.Print(UO.InfoColor(0x40001234));string report = UO.InfoColor();
UO.Print(report);foreach (int serial in new[] { 0x40001234, 0x40005678 })
UO.Print(UO.InfoColor(serial));new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
api.Print(api.InfoColor(0x40001234));
}
}CSharpGameApi.InfoColor
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.InfoColor
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump
string UO.InfoGump();
string UO.InfoGump(object? gump);呼び出し元によって表示が変わります。ゲーム内チャットのコマンドは、項目、値、Ctrl+C、スクロールを備えた表を開きます。通常の C# スクリプトは、ゲーム画面が開いていても、ウィンドウやターゲットなしで文字列を受け取ります。取得できるのはクライアントが知る情報です。
InfoGump() は最新のサーバーダイアログまたはクライアントのウィンドウを読みます。ID やインデックスで指定でき、last、LastGump、Last Gump は最新を意味します。InfoGumps は一覧を返し、検査ウィンドウ自体は含めません。表を開くのは画面内コマンドだけです。
-
gump— サーバーウィンドウ ID またはインデックス。-1 は最後のアクティブなもの。
プレフィックスは C# Scripts IDE で設定し、# は例です。引数は空白区切りで、引用符内の文字列は一つの引数です。id は serial、type は graphic です。xy x y [z] は位置にある最初の読み込み済み対象、type のみは最初の一致対象です。InfoTile(x,y,map) の第3引数は Z ではなくマップです。
#infogump
#infogump last
#info gump last gump
#infogump 0x12345678
各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。
string report = UO.InfoGump();
UO.Print(report);UO.Print(UO.InfoGump(0x12345678));string ReadLatestWindow() => UO.InfoGump();
UO.Print(ReadLatestWindow());new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
string report = api.InfoGump();
api.Print(report);
}
}CSharpGameApi.InfoGump
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.InfoGump
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump
string UO.InfoGumps();
string UO.InfoGumps(object? gump);呼び出し元によって表示が変わります。ゲーム内チャットのコマンドは、項目、値、Ctrl+C、スクロールを備えた表を開きます。通常の C# スクリプトは、ゲーム画面が開いていても、ウィンドウやターゲットなしで文字列を受け取ります。取得できるのはクライアントが知る情報です。
InfoGump() は最新のサーバーダイアログまたはクライアントのウィンドウを読みます。ID やインデックスで指定でき、last、LastGump、Last Gump は最新を意味します。InfoGumps は一覧を返し、検査ウィンドウ自体は含めません。表を開くのは画面内コマンドだけです。
-
gump— サーバーウィンドウ ID またはインデックス。-1 は最後のアクティブなもの。
プレフィックスは C# Scripts IDE で設定し、# は例です。引数は空白区切りで、引用符内の文字列は一つの引数です。id は serial、type は graphic です。xy x y [z] は位置にある最初の読み込み済み対象、type のみは最初の一致対象です。InfoTile(x,y,map) の第3引数は Z ではなくマップです。
#infogumps
各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。
UO.Print(UO.InfoGumps());string report = UO.InfoGumps(0x12345678);
UO.Print(report);string ReadAllWindows() => UO.InfoGumps();
UO.Print(ReadAllWindows());new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
api.Print(api.InfoGumps());
}
}CSharpGameApi.InfoGumps
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.InfoGumps
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump
string UO.InfoTile();
string UO.InfoTile(object? x);
string UO.InfoTile(object? x, object? y);
string UO.InfoTile(object? x, object? y, object? map);
string UO.InfoTile(object? type, object? x, object? y, object? z);
string UO.InfoTile(object? type, object? x, object? y, object? z, object? map);呼び出し元によって表示が変わります。ゲーム内チャットのコマンドは、項目、値、Ctrl+C、スクロールを備えた表を開きます。通常の C# スクリプトは、ゲーム画面が開いていても、ウィンドウやターゲットなしで文字列を受け取ります。取得できるのはクライアントが知る情報です。
引数なしの Info と InfoTile は、画面内チャットではターゲットを開始します。スクリプトの Info() は最後の物件ターゲットまたは自分を、InfoTile() は足元の地形を読みます。serial、type、座標で対象を指定できます。InfoTile(x,y,map) の第3引数はマップ番号です。
-
map— マップ番号。省略時は現在のマップ。 -
type— アイテムの画像 ID。-1 は指定位置のすべての種類に一致。 -
x— ワールドの X 座標。 -
y— ワールドの Y 座標。 -
z— Z 高度。短い形式では 0。
プレフィックスは C# Scripts IDE で設定し、# は例です。引数は空白区切りで、引用符内の文字列は一つの引数です。id は serial、type は graphic です。xy x y [z] は位置にある最初の読み込み済み対象、type のみは最初の一致対象です。InfoTile(x,y,map) の第3引数は Z ではなくマップです。
#infotile
#info tile xy 1450 1690
#infotile 1450 1690 0
#infotile type 0x0EED 1450 1690 0 0
各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。
UO.Print(UO.InfoTile(1450, 1690));string report = UO.InfoTile(1450, 1690, 0);
UO.Print(report);UO.Print(UO.InfoTile(0x0EED, 1450, 1690, 0, 0));new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
api.Print(api.InfoTile(1450, 1690));
}
}CSharpGameApi.InfoTile
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.InfoTile
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Version();製品の名前とランタイム バージョンを出力します。
パラメータはありません。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- ExecuteLegacyManualAlias は、SystemMessage を介してブリッジ.RuntimeProductName とブリッジ.RuntimeProductVersion を出力します。これはログ文字列であり、返されるバージョン番号ではありません。
- 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.Version");
UO.Version();引数と実行の流れ:
- 製品の名前とランタイム バージョンを出力します。
UO.Version();引数と実行の流れ:
- ExecuteLegacyManualAlias は、SystemMessage を介してブリッジ.RuntimeProductName とブリッジ.RuntimeProductVersion を出力します。これはログ文字列であり、返されるバージョン番号ではありません。
return RunScenario();
object? RunScenario()
{
UO.Version();
UO.Help();
return null;
}引数と実行の流れ:
- 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.Version();
UO.Print(UO.GetUserCodepage());
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage($"{bridge.RuntimeProductName} v{bridge.RuntimeProductVersion}"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RuntimeProductName:bridge.RuntimeProductName. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RuntimeProductVersion:bridge.RuntimeProductVersion.
内部実装のコードです。単独のスクリプトとして実行できません。
case "version": SystemMessage($"{bridge.RuntimeProductName} v{bridge.RuntimeProductVersion}"); break;