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

このトピックに関する例

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

UO.GetQuestArrow

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

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.UseVirtue

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

UO.Print(UO.UseVirtue("Honor"));

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


UO.GetQuestArrow

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

C# のシグネチャ

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() とその戻り配列を使用します。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • まず、[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;

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

引数と実行の流れ:

  • サーバー矢印の座標をローカル マーカー 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;

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

引数と実行の流れ:

  • 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 を使います。

UO.GetQuestArrow() — UO.GetQuestArrow()

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

結果: dynamic / Array.

呼び出し時:

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

case "getquestarrow":

                    return new InjectionValue(bridge.GetQuestArrow().Select(value => new InjectionValue(value)).ToArray());

UO.GetQuestArrow(point) — UO.GetQuestArrow(Any)

引数: point (Any)

結果: dynamic / Array.

呼び出し時:

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

case "getquestarrow":

                    return new InjectionValue(bridge.GetQuestArrow().Select(value => new InjectionValue(value)).ToArray());

UO.QuestRequest

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

C# のシグネチャ

void UO.QuestRequest();

サーバータスクメニューを要求します。

引数

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

戻り値

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

動作

  • QuestRequest は、GameActions.RequestQuestMenu(_world) をゲーム ストリームに渡します。チームはタスクを読んだり作成したりしません。
  • 例では、UO.Wait はスクリプトの一時停止のみを指定します。一時停止が終了しても、サーバーがリクエストを完了したことは証明されません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • サーバータスクメニューを要求します。
UO.QuestRequest();

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

引数と実行の流れ:

  • 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;

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

引数と実行の流れ:

  • 例では、UO.Wait はスクリプトの一時停止のみを指定します。一時停止が終了しても、サーバーがリクエストを完了したことは証明されません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.QuestRequest();
        UO.Wait(500);
        UO.Print(UO.GetGumpsCount());
        return null;
    }
}

コマンドの実装

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

UO.QuestRequest() — UO.QuestRequest()

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

結果: void / Unit.

呼び出し時:

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

case "questrequest": bridge.QuestRequest(); return InjectionValue.Unit;

UO.ReqVirtuesGump

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

C# のシグネチャ

void UO.ReqVirtuesGump();

キャラクターの美徳ウィンドウを要求します。

引数

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

戻り値

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

動作

  • RequestVirtuesGump は、プレイヤーがいる場合、gumpID=0x1CD、ボタン=1、serial の文字でReplyGump を呼び出します。 Player がなければリクエストはありません。
  • 例では、UO.Wait はスクリプトの一時停止のみを指定します。一時停止が終了しても、サーバーがリクエストを完了したことは証明されません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • キャラクターの美徳ウィンドウを要求します。
UO.ReqVirtuesGump();

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

引数と実行の流れ:

  • 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;

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

引数と実行の流れ:

  • 例では、UO.Wait はスクリプトの一時停止のみを指定します。一時停止が終了しても、サーバーがリクエストを完了したことは証明されません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ReqVirtuesGump();
        UO.Wait(500);
        UO.Print(UO.GetGumpsCount());
        return null;
    }
}

コマンドの実装

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

UO.ReqVirtuesGump() — UO.ReqVirtuesGump()

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

結果: void / Unit.

呼び出し時:

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

case "reqvirtuesgump": bridge.RequestVirtuesGump(); return InjectionValue.Unit;

UO.UseVirtue

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

C# のシグネチャ

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 が使用されます。
  • チーム自体はフォローアップの目標を設定したり、美徳ポイントや利用可能性をチェックしたりしません。これはサーバーによって決定されます。

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

各サンプルは個別のファイル .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));

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

引数と実行の流れ:

  • 美徳の適用を要求します。
UO.Print(UO.UseVirtue("Honor"));

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

引数と実行の流れ:

  • 名前はIDに対応します: 名誉=1、犠牲=2、勇気=3、慈悲=4、誠実=5、謙虚=6、正義=7、精神性=8。この関数の数値解析では、0x 変換ではなく int.TryParse が使用されます。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.UseVirtue("1"));
    return null;
}

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

引数と実行の流れ:

  • チーム自体はフォローアップの目標を設定したり、美徳ポイントや利用可能性をチェックしたりしません。これはサーバーによって決定されます。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var 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 を使います。

UO.UseVirtue(virtueName) — UO.UseVirtue(Any)

引数: virtueName (Any)

結果: dynamic / Any.

呼び出し時:

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

case "usevirtue": return new InjectionValue(bridge.UseVirtue(Text(0)));
⚠️ **GitHub.com Fallback** ⚠️