JA UO Topic quests virtues - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 例 · Languages
一般的なクライアントのクエストと美徳のリクエスト。 Age of Power サーバーのミッションについては、Wiki の別のセクションで説明されています。
| トピック | コマンドと説明 |
|---|---|
| QuestRequest | UO.QuestRequest |
| Quest Arrow | UO.GetQuestArrow |
| Virtues Gump | UO.ReqVirtuesGump |
| UseVirtue | UO.UseVirtue |
UO.QuestRequest · UO.GetQuestArrow · UO.ReqVirtuesGump · UO.UseVirtue
各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。
var arrow = UO.GetQuestArrow();
if (Truth(Truth(arrow[0]) == true))
{
UO.Print(Convert.ToString(arrow[1]) + ", " + Convert.ToString(arrow[2]));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;UO.Print(UO.UseVirtue("Honor"));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetQuestArrow();
dynamic UO.GetQuestArrow(object? point);サーバータスクの矢印の位置を読み取ります。サーバーから受け取った矢印がどこを指しているかをスクリプトが認識できるようにします。コマンド Track は読み取られません。
-
point- 非推奨のオプションのプレースホルダー。 UO.GetQuestArrow(point) 形式は互換性のために残されています。引数は読み取られたり変更されたりしません。 UO.GetQuestArrow() とその戻り配列を使用します。
配列 [exists, x, y]、正確に 3 つの整数。 [0] - 1 (true)、サーバー矢印がある場合、そうでない場合は 0 (false)。 [1] - X、 [2] - Y。矢印なし [0、0、0]。 [0] フィールドのみがブール属性です。アレイ全体は bool ではありません。複数の矢印がある場合は、最初に保存されたものが読み込まれます。ID による選択はありません。
- サーバーとローカルの矢印は別々に保存されます。 Track(0) はサーバーの矢印を削除しません。グラフィックスがない場合、マーカーは保存され、ウィンドウを開いたときに表示されます。ゲーム ウィンドウを閉じてもマーカーは削除されません。接続を切断するとそれらはクリアされます。サーバーは矢印を移動または削除できます。座標は、目標が達成可能であることを証明するものではありません。
- ウィンドウのピクセルではなく、現在のマップ上のセル座標。 Z およびカード番号は使用できません。マップ上の既存のポイントを選択します。チームは地形を確認したり、ルートを計画したり、移動する目標を追跡したりしません。
- 非推奨のオプションのプレースホルダー。 UO.GetQuestArrow(point) 形式は互換性のために残されています。引数は読み取られたり変更されたりしません。 UO.GetQuestArrow() とその戻り配列を使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.GetQuestArrow();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- まず、[0]がチェックされます。 [1]/[2] は X/Y と読み取れます。配列全体を serial または bool として渡さないでください。
var arrow = UO.GetQuestArrow();
if (Truth(Truth(arrow[0]) == true))
{
UO.Print(Convert.ToString(arrow[1]) + ", " + Convert.ToString(arrow[2]));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- サーバー矢印の座標をローカル マーカー Track にコピーします。これは動きではありません。後でサーバーが矢印を移動すると、ローカルの矢印は同じ点に残ります。
return RunScenario();
object? RunScenario()
{
var arrow = UO.GetQuestArrow();
if (Truth(arrow[0] == 1))
{
UO.Track(1, arrow[1], arrow[2]);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- ArrowDistance は、サーバーポイントまでの距離 UO.GetDistance(x,y) を返します。矢印がない場合は、-1 を返します。最大 2 セルの距離では、ローカルの Track のみが削除され、サーバーの矢印は残ります。
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 distance = ArrowDistance();
if (Truth(distance >= 0) && Truth(distance <= 2))
{
UO.Track(0);
}
return null;
}
dynamic ArrowDistance()
{
var arrow = UO.GetQuestArrow();
if (Truth(arrow[0] == 0))
{
return -1;
}
return UO.GetDistance(arrow[1], arrow[2]);
}
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.GetQuestArrow:bridge.GetQuestArrow().
内部実装のコードです。単独のスクリプトとして実行できません。
case "getquestarrow":
return new InjectionValue(bridge.GetQuestArrow().Select(value => new InjectionValue(value)).ToArray());引数: point (Any)
結果: dynamic / Array.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetQuestArrow:bridge.GetQuestArrow().
内部実装のコードです。単独のスクリプトとして実行できません。
case "getquestarrow":
return new InjectionValue(bridge.GetQuestArrow().Select(value => new InjectionValue(value)).ToArray());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.QuestRequest();サーバータスクメニューを要求します。
パラメータはありません。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- QuestRequest は、GameActions.RequestQuestMenu(_world) をゲーム ストリームに渡します。チームはタスクを読んだり作成したりしません。
- 例では、UO.Wait はスクリプトの一時停止のみを指定します。一時停止が終了しても、サーバーがリクエストを完了したことは証明されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.QuestRequest");
UO.QuestRequest();引数と実行の流れ:
- サーバータスクメニューを要求します。
UO.QuestRequest();引数と実行の流れ:
- QuestRequest は、GameActions.RequestQuestMenu(_world) をゲーム ストリームに渡します。チームはタスクを読んだり作成したりしません。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.IsOnline()))
{
UO.QuestRequest();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 例では、UO.Wait はスクリプトの一時停止のみを指定します。一時停止が終了しても、サーバーがリクエストを完了したことは証明されません。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.QuestRequest();
UO.Wait(500);
UO.Print(UO.GetGumpsCount());
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.QuestRequest:bridge.QuestRequest().
内部実装のコードです。単独のスクリプトとして実行できません。
case "questrequest": bridge.QuestRequest(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ReqVirtuesGump();キャラクターの美徳ウィンドウを要求します。
パラメータはありません。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- RequestVirtuesGump は、プレイヤーがいる場合、gumpID=0x1CD、ボタン=1、serial の文字でReplyGump を呼び出します。 Player がなければリクエストはありません。
- 例では、UO.Wait はスクリプトの一時停止のみを指定します。一時停止が終了しても、サーバーがリクエストを完了したことは証明されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.ReqVirtuesGump");
UO.ReqVirtuesGump();引数と実行の流れ:
- キャラクターの美徳ウィンドウを要求します。
UO.ReqVirtuesGump();引数と実行の流れ:
- RequestVirtuesGump は、プレイヤーがいる場合、gumpID=0x1CD、ボタン=1、serial の文字でReplyGump を呼び出します。 Player がなければリクエストはありません。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Self() != 0))
{
UO.ReqVirtuesGump();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 例では、UO.Wait はスクリプトの一時停止のみを指定します。一時停止が終了しても、サーバーがリクエストを完了したことは証明されません。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.ReqVirtuesGump();
UO.Wait(500);
UO.Print(UO.GetGumpsCount());
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestVirtuesGump:bridge.RequestVirtuesGump().
内部実装のコードです。単独のスクリプトとして実行できません。
case "reqvirtuesgump": bridge.RequestVirtuesGump(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.UseVirtue(object? virtueName);美徳の適用を要求します。
-
virtueName— 名誉/犠牲/勇気/思いやり/正直/謙虚/正義/霊性の大文字と小文字を区別せず、外側のスペースを削除した名前、または double-テキスト ID 1..8。
数値フラグ int: 1 - Send_InvokeVirtueRequest 経由で送信された有効な ID 1..8。 0 - 名前が不明/無効な ID。これはサーバーへの影響を確認するものではありません。
- 名前はIDに対応します: 名誉=1、犠牲=2、勇気=3、慈悲=4、誠実=5、謙虚=6、正義=7、精神性=8。この関数の数値解析では、0x 変換ではなく int.TryParse が使用されます。
- チーム自体はフォローアップの目標を設定したり、美徳ポイントや利用可能性をチェックしたりしません。これはサーバーによって決定されます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.UseVirtue("Honor");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 美徳の適用を要求します。
UO.Print(UO.UseVirtue("Honor"));引数と実行の流れ:
- 名前はIDに対応します: 名誉=1、犠牲=2、勇気=3、慈悲=4、誠実=5、謙虚=6、正義=7、精神性=8。この関数の数値解析では、0x 変換ではなく int.TryParse が使用されます。
return RunScenario();
object? RunScenario()
{
UO.Print(UO.UseVirtue("1"));
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 accepted = UO.UseVirtue("Honor");
if (Truth(accepted))
{
UO.Print("Virtue request sent");
}
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 を使います。
引数: virtueName (Any)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseVirtue:bridge.UseVirtue(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "usevirtue": return new InjectionValue(bridge.UseVirtue(Text(0)));