Skip to content

JA UO Topic character Part 2

Codex edited this page Oct 11, 2026 · 2 revisions

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

キャラクター — 2

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

リファレンスの各部

1 · 2 · 3 · 4

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


UO.GetHidden

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

C# のシグネチャ

int UO.GetHidden();
int UO.GetHidden(object? arg0);

キャラクターのステルス性をテストします。

引数

  • value — 次の形式のオプションのオブジェクト: 数値/16 進文字列による serial、self、lasttarget、または登録名 AddObject。これはtypeではありません。引数なしでselfをお読みください。フォームによっては不明なテキストがあると変換エラーが発生します。電話をかける前に名前を確認してください。

戻り値

数値フラグ int: 1 (条件が満たされた)、0 (条件が満たされていない)。これは数値フラグです: C# チェック結果 != 0 または結果 == 0。 int と true/false の直接比較、および if (結果) は許可されません。 1 - mobile には IsHidden があり、0 にはフラグがないか、mobile がありません。これはサーバーのフラグであり、壁の後ろの可視性ではありません。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • ローカル モデルを読み取ります。ターゲットを開いたり、ステータスを要求したり、フラグを変更したり、パケットを送信したりしません。破壊されたオブジェクトは、エントリが辞書から削除される前であっても、紛失したものとみなされます。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。

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

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

簡単な例

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

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

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

1。自分の状態を確認する - 直接スクリプト

引数と実行の流れ:

  • 空の括弧は self となります。 active は結果を 1 回保存します。 true と false は 2 つのブランチを定義します。 Print はメッセージの例のみを表示します。
var active = UO.GetHidden();
if (Truth(Truth(active) == true))
{
    UO.Print("State is active");
}
else
{
    UO.Print("State is inactive or unavailable");
}

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

2。選択されたオブジェクトと全機能 ReadState - スクリプト機能

引数と実行の流れ:

  • lasttarget - 以前に選択したオブジェクト。 Exists は、その存在をチェックします。 obj は唯一のパラメータ ReadState です。この関数はコマンドの結果を変更せずに返します。その定義はコピーされたコードに含まれています。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.Exists("lasttarget")))
    {
        var observed = ReadState("lasttarget");
        UO.Print("State 1/0: " + Convert.ToString(observed));
    }

    return null;
}

dynamic ReadState(dynamic obj)
{
    return UO.GetHidden(obj);
}

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

3。 0.5 秒後の変化に注目してください - スクリプト クラス

引数と実行の流れ:

  • 引数なしの 2 つの呼び出しは、self を読み取り、UO.Wait(500) は 500 ミリ秒を設定します。 2 つの画像を比較します。中間の遷移はスキップされる場合があります。終わりのない待ち時間はありません。
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()
    {
        var before = UO.GetHidden();
        await Delay(500);
        var after = UO.GetHidden();
        if (Truth(before != after))
        {
            UO.Print("State changed: " + Convert.ToString(before) + " -> " + Convert.ToString(after));
        }

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

UO.GetInt

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

C# のシグネチャ

int UO.GetInt();
int UO.GetInt(object? arg0);

キャラクターの現在の知能 (Intelligence、INT) を読み取ります。

引数

  • ObjID — 引数が 1 つ指定された、示されている形式のみの ObjID: serial 文字番号、10 進数/0x 16 進数文字列、「self」、「lasttarget」、または名前 AddObject。 graphic/type 以外のオブジェクトを選択します。引数を指定しないと、現在の文字が読み取られます。

戻り値

int — 現在のステータス ポイント、クライアント モデルの 0..65535。パーセンテージ、ID、スキル、ロックモード、bool ではありません。 0 は、欠落/削除された文字、またはアクセスできないオブジェクトも意味します。 == true ではなく、数値要件と比較してください。これはステータスの上限や修飾子のない保証された基本値ではありません。

動作

  • サポートされているのは、self の () と明示的なオブジェクトの (ObjID) です。その他のオプションの引数はありません。
  • Player が存在し、破壊されていない場合は Player.Intelligence を読み取ります。それ以外の場合は、0。死んだキャラクターが存在しても、削除されたオブジェクトではありません。ステータスはHP、マナ、スタミナから計算されません。
  • GetStr/GetInt/GetDex は ObjID を受け入れます。 PlayerMobile データは self でのみ利用可能です。別の serial - 0、ロードされた mobile であっても。他人の特性を置き換えたり推測したりすることはありません。
  • スクリプトによって待機をキャンセルする機能を備えたゲーム ストリームの読み取りを呼び出します。ステータスを問い合わせたり、ターゲットをオープンしたり、パケットを送信したり、特性を変更したり、遅延を追加したりしません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • UO と同等の特性名。これがない場合は、大文字と小文字が区別されません: Int Intelligence GetInt GetIntelligence。
  • ExecuteClientApiCompatibility.Arg は、まずオブジェクト名を解決し、次に数値を変換します。不明な非数値文字列は、ターゲットではなく変換エラーを引き起こします。 double は int に削減され、Array/void は 0 に削減されます。文字を選択するには、そのような変換ではなく、正しい serial を使用してください。

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

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

簡単な例

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

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

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

1。ポイントの読み取りと表示 - 直接スクリプト

引数と実行の流れ:

  • value には数値結果が格納されます。 Convert.ToStringは雑誌用にフォーマットするだけです。引数やキャラクターのアクションはありません。
var value = UO.GetInt();
UO.Print("Intelligence: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後に別々の 1000 ミリ秒。 UO.Wait を例に追加しました。 change=after-before には、正、ゼロ、または負の値を指定できます。それ自体では、すべての中間更新とワールドからの終了を区別しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetInt();
    await Delay(1000);
    var after = UO.GetInt();
    var change = after - before;
    UO.Print("Change: " + Convert.ToString(change));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な要件検証機能 - スクリプト クラス

引数と実行の流れ:

  • minimum=80 は要件の一例であり、クライアントの制限ではありません。 AttributeAtLeast(最小) は欠落文字を拒否し、特性を 1 回読み取って bool: true または false (>= 最小の場合) を返します。論理的な意味は、特性自体ではなく、比較によって与えられます。
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()
    {
        if (Truth(Truth(AttributeAtLeast(80)) == true))
        {
            UO.Print("Requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic AttributeAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetInt();
        return value >= minimum;
    }

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

4。 serial とオブジェクト名で文字を選択 - 直接スクリプト

引数と実行の流れ:

  • id は UO.Self() の結果であり、type ではありません。 AddObjectは、第2引数が指定されているため、IDをスコープなしでstatSubjectとして格納します。どちらの呼び出しも同じ文字を選択しますが、読み取りはアトミックではありません。
var id = UO.Self();
if (Truth(id != 0))
{
    UO.AddObject("statSubject", id);
    var direct = UO.GetInt(id);
    var byName = UO.GetInt("statSubject");
    UO.Print("Direct: " + Convert.ToString(direct) + "; alias: " + Convert.ToString(byName));
}

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

UO.GetIntelligence

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

C# のシグネチャ

int UO.GetIntelligence();

キャラクターの現在の知能 (Intelligence、INT) を読み取ります。

引数

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

戻り値

int — 現在のステータス ポイント、クライアント モデルの 0..65535。パーセンテージ、ID、スキル、ロックモード、bool ではありません。 0 は、欠落/削除された文字、またはアクセスできないオブジェクトも意味します。 == true ではなく、数値要件と比較してください。これはステータスの上限や修飾子のない保証された基本値ではありません。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • Player が存在し、破壊されていない場合は Player.Intelligence を読み取ります。それ以外の場合は、0。死んだキャラクターが存在しても、削除されたオブジェクトではありません。ステータスはHP、マナ、スタミナから計算されません。
  • GetStr/GetInt/GetDex は ObjID を受け入れます。 PlayerMobile データは self でのみ利用可能です。別の serial - 0、ロードされた mobile であっても。他人の特性を置き換えたり推測したりすることはありません。
  • スクリプトによって待機をキャンセルする機能を備えたゲーム ストリームの読み取りを呼び出します。ステータスを問い合わせたり、ターゲットをオープンしたり、パケットを送信したり、特性を変更したり、遅延を追加したりしません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • UO と同等の特性名。これがない場合は、大文字と小文字が区別されません: Int Intelligence GetInt GetIntelligence。

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

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

簡単な例

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

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

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

1。ポイントの読み取りと表示 - 直接スクリプト

引数と実行の流れ:

  • value には数値結果が格納されます。 Convert.ToStringは雑誌用にフォーマットするだけです。引数やキャラクターのアクションはありません。
var value = UO.GetIntelligence();
UO.Print("Intelligence: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後に別々の 1000 ミリ秒。 UO.Wait を例に追加しました。 change=after-before には、正、ゼロ、または負の値を指定できます。それ自体では、すべての中間更新とワールドからの終了を区別しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetIntelligence();
    await Delay(1000);
    var after = UO.GetIntelligence();
    var change = after - before;
    UO.Print("Change: " + Convert.ToString(change));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な要件検証機能 - スクリプト クラス

引数と実行の流れ:

  • minimum=80 は要件の一例であり、クライアントの制限ではありません。 AttributeAtLeast(最小) は欠落文字を拒否し、特性を 1 回読み取って bool: true または false (>= 最小の場合) を返します。論理的な意味は、特性自体ではなく、比較によって与えられます。
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()
    {
        if (Truth(Truth(AttributeAtLeast(80)) == true))
        {
            UO.Print("Requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic AttributeAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetIntelligence();
        return value >= minimum;
    }

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

UO.GetLife

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

C# のシグネチャ

int UO.GetLife();

ローカル モデルから現在の健全性を読み取ります。

引数

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

戻り値

int は、パーセンテージや bool ではなく、Hits フィールドの値です。 0 は、実際の値または欠損データを示す可能性があります。ゼロ最大値を除数として使用することはできません。他人のmobileの場合は意味が分からない可能性があります。 HP/HitsMax には、正確なポイントではなく、相対的なサーバー スケールが含まれる場合があります。 HP=0 は死亡を証明するものではありません。これには Dead/IsDead があります。

動作

  • このコマンドはステータスをオープンせず、サーバーの更新も要求しません。クライアントは、すでにロードされているデータのみを読み取ります。特性を変更せず、パケットを送信しません。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • オブジェクトを読み取るとき、World.Get は欠落しているものまたは IsDestroyed を拒否し、結果は 0 になります。 HP/HitsMax は、これらのフィールドを持つ項目を含めてエンティティから読み取られます。 Mana/Stamina - モバイル専用。引数なしでselfをお読みください。パラメーターのない同じ名前のバリアントには、必ずしも ID を持つバリアントがあるとは限りません: シグネチャを参照してください。
  • 引数なしで読み取ると、プレーヤーが見つからないか破壊された場合にも 0 が返されます。これは、World.Get 経由のフォームだけでなく、直接の Mana/Stamina とその最大値にも適用されます。死んだキャラクターが存在しても値を保持できます。

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

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

簡単な例

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

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

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

1。キャラクターの値を出力します - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは self となります。 value には 1 つの数値が格納されます。Convert.ToString はメッセージのみに変換されます。
var value = UO.GetLife();
UO.Print("GetLife: " + Convert.ToString(value));

2。チェックまたは計算に値を適用 - スクリプト関数

引数と実行の流れ:

  • このフィールドに適用されたしきい値または計算が表示されます。条件内の数値は設定例であり、サーバーの制限ではありません。最大値で割る前に、その正性がチェックされます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetLife();
    var maximum = UO.GetMaxHP();
    if (Truth(maximum > 0) && Truth(value * 100 / maximum < 50))
    {
        UO.Print("Health below half of the known maximum");
    }

    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。完全なヘルパー関数 ReadValue - スクリプト クラス

引数と実行の流れ:

  • この名前には ID という形式はありません。パラメータなしの ReadValue は self を読み取ります。 2 つの呼び出しは UO.Wait(1000) によって区切られます。 2 つのスナップショットを比較すると、中間の変更が失われる可能性があります。
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()
    {
        var before = ReadValue();
        await Delay(1000);
        var after = ReadValue();
        UO.Print("Before: " + Convert.ToString(before) + "; after: " + Convert.ToString(after));
        return null;
    }

    dynamic ReadValue()
    {
        return UO.GetLife();
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

UO.GetLuck

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

C# のシグネチャ

int UO.GetLuck();

キャラクターのステータスカウンター、つまり幸運ポイントを読み取ります。

引数

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

戻り値

int — クライアントモデルの幸運ポイント、0..65535。 0 は、実際の値である場合もあれば、データがない場合もあれば、紛失または破壊されたプレーヤーである場合もあります。これは数量であり、bool、ID、type ではありません。1 は 1 単位を意味し、成功ではありません。このコマンドはオブジェクトを反復処理せず、配列を返しません。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • 現在の Player が存在し、破棄されていない場合、ゲーム スレッドの読み取りには Player.Luck がかかります。それ以外の場合は、0。装備はソートされず、ボーナスは再計算されず、ステータスは要求されず、更新を待つこともありません。現在のゴーストは破壊されたプレイヤーと同等ではありません。
  • Luck は、ステータス type >= 4 から UInt16 として保存されているサーバーの幸運ポイントを読み取ります。これは割合、乱数、または戦利品の品質を保証するものではありません。読み取り時にクライアントはドロップ率を計算せず、装備ボーナスを追加しません。
  • CharacterStatus は更新前に必要な本体をチェックします。 Weight は独自の拡張ステータス、スロット - type 3、Luck - type 4、サーバー WeightMax - type 5 で利用可能です。オプションのカウンターのないコンパクト/古いパッケージは、以前のキャッシュを残します。新しいプレーヤーは最初から始まります。この呼び出しは、新しいステータスの受信を証明するものではありません。
  • RegisterCharacterGetterAliases は、欠落している引数なしの関数とフィールドのインライン名を追加します。既存の互換性ブランチは同じブリッジ フィールドを読み取ります。名前の大文字と小文字は重要ではありません。括弧のない組み込み関数は、変数によってオーバーライドされない場合、再度読み取られます。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。

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

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

簡単な例

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

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

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

1。 Display saved counter - direct script

引数と実行の流れ:

  • value には、それ自体の文字に対する引数なしの呼び出しが 1 つ格納されます。 Convert.ToString は、意味を変えずにログの番号をフォーマットします。
var value = UO.GetLuck();
UO.Print("Luck: " + Convert.ToString(value));

2。変化の観察 - スクリプト関数

引数と実行の流れ:

  • UO.Wait(500) は前後を 500 ミリ秒で区切ります。差は正、ゼロ、負のいずれかになります。暫定的な更新やキャラクターの変更はスキップされる場合があります。一時停止はその一例です。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetLuck();
    await Delay(500);
    var after = UO.GetLuck();
    var difference = after - before;
    UO.Print("Counter change: " + Convert.ToString(difference));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

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

引数と実行の流れ:

  • LuckAtLeast(最小) は数値要件を受け取ります。 1000 は一例であり、制限や割合ではありません。プレイヤーの不在を拒否し、運を一度読み取り、最小値以上の値で bool: true または false を返します。運自体はboolではありません。キャッシュされたポイントは比較され、戦利品のドロップは予測されません。
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()
    {
        if (Truth(Truth(LuckAtLeast(1000)) == true))
        {
            UO.Print("Local check passed");
        }
        else
        {
            UO.Print("Local check failed or data unavailable");
        }

        return null;
    }

    dynamic LuckAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetLuck();
        return value >= minimum;
    }

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

UO.GetMana

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

C# のシグネチャ

int UO.GetMana();
dynamic UO.GetMana(object? arg0);

ローカルモデルから現在のマナを読み取ります。

引数

  • ObjID — 次の形式のオプションのオブジェクト: 数値/16 進文字列による serial、self、lasttarget、または登録名 AddObject。これはtypeではありません。引数なしでselfをお読みください。フォームによっては不明なテキストがあると変換エラーが発生します。電話をかける前に名前を確認してください。

戻り値

int は、パーセンテージや bool ではなく、Mana フィールドの値です。 0 は、実際の値または欠損データを示す可能性があります。ゼロ最大値を除数として使用することはできません。他人のmobile の場合、意味がわからない可能性があります。 HP/HitsMax には、正確なポイントではなく、相対的なサーバー スケールが含まれる場合があります。 HP=0 は死亡を証明するものではありません。これには Dead/IsDead があります。

動作

  • このコマンドはステータスをオープンせず、サーバーの更新も要求しません。クライアントは、すでにロードされているデータのみを読み取ります。特性を変更せず、パケットを送信しません。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • オブジェクトを読み取るとき、World.Get は欠落しているものまたは IsDestroyed を拒否し、結果は 0 になります。 HP/HitsMax は、これらのフィールドを持つ項目を含めてエンティティから読み取られます。 Mana/Stamina - モバイル専用。引数なしでselfをお読みください。パラメーターのない同じ名前のバリアントには、必ずしも ID を持つバリアントがあるとは限りません: シグネチャを参照してください。
  • 引数なしで読み取ると、プレーヤーが見つからないか破壊された場合にも 0 が返されます。これは、World.Get 経由のフォームだけでなく、直接の Mana/Stamina とその最大値にも適用されます。死んだキャラクターが存在しても値を保持できます。

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

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

簡単な例

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

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

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

1。キャラクターの値を出力します - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは self となります。 value には 1 つの数値が格納されます。Convert.ToString はメッセージのみに変換されます。
var value = UO.GetMana();
UO.Print("GetMana: " + Convert.ToString(value));

2。チェックまたは計算に値を適用 - スクリプト関数

引数と実行の流れ:

  • このフィールドに適用されたしきい値または計算が表示されます。条件内の数値は設定例であり、サーバーの制限ではありません。最大値で割る前に、その正性がチェックされます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetMana();
    if (Truth(value >= 10))
    {
        UO.Print("At least ten mana points are known");
    }

    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。完全なヘルパー関数 ReadValue - スクリプト クラス

引数と実行の流れ:

  • lasttarget - 以前に選択したオブジェクト。 Exists は存在をチェックします。 obj は ReadValue の唯一のパラメータです。この関数は、コマンド番号を変更せずにそのまま返します。
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()
    {
        if (Truth(UO.Exists("lasttarget")))
        {
            var value = ReadValue("lasttarget");
            UO.Print("Selected value: " + Convert.ToString(value));
        }

        return null;
    }

    dynamic ReadValue(dynamic obj)
    {
        return UO.GetMana(obj);
    }

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

UO.GetMaxHP

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

C# のシグネチャ

int UO.GetMaxHP();
int UO.GetMaxHP(object? arg0);

ローカル モデルから最大健全性を読み取ります。

引数

  • ObjID — 次の形式のオプションのオブジェクト: 数値/16 進文字列による serial、self、lasttarget、または登録名 AddObject。これはtypeではありません。引数なしでselfをお読みください。フォームによっては不明なテキストがあると変換エラーが発生します。電話をかける前に名前を確認してください。
  • id — 次の形式のオプションのオブジェクト: 数値/16 進文字列による serial、self、lasttarget、または登録名 AddObject。これはtypeではありません。引数なしでselfをお読みください。フォームによっては不明なテキストがあると変換エラーが発生します。電話をかける前に名前を確認してください。

戻り値

int は、パーセンテージや bool ではなく、HitsMax フィールドの値です。 0 は、実際の値または欠損データを示す可能性があります。ゼロ最大値を除数として使用することはできません。他人のmobile の場合、意味がわからない可能性があります。 HP/HitsMax には、正確なポイントではなく相対的なサーバースケールが含まれる場合があります。 HP=0 は死亡を証明するものではありません。これには Dead/IsDead があります。

動作

  • このコマンドはステータスをオープンせず、サーバーの更新も要求しません。クライアントは、すでにロードされているデータのみを読み取ります。特性を変更せず、パケットを送信しません。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • オブジェクトを読み取るとき、World.Get は欠落しているものまたは IsDestroyed を拒否し、結果は 0 になります。 HP/HitsMax は、これらのフィールドを持つ項目を含めてエンティティから読み取られます。 Mana/Stamina - モバイル専用。引数なしでselfをお読みください。パラメーターのない同じ名前のバリアントには、必ずしも ID を持つバリアントがあるとは限りません: シグネチャを参照してください。
  • 引数なしで読み取ると、プレーヤーが見つからないか破壊された場合にも 0 が返されます。これは、World.Get 経由のフォームだけでなく、直接の Mana/Stamina とその最大値にも適用されます。死んだキャラクターが存在しても値を保持できます。

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

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

簡単な例

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

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

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

1。キャラクターの値を出力します - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは self となります。 value には 1 つの数値が格納されます。Convert.ToString はメッセージのみに変換されます。
var value = UO.GetMaxHP();
UO.Print("GetMaxHP: " + Convert.ToString(value));

2。チェックまたは計算に値を適用 - スクリプト関数

引数と実行の流れ:

  • このフィールドに適用されたしきい値または計算が表示されます。条件内の数値は設定例であり、サーバーの制限ではありません。最大値で割る前に、その正性がチェックされます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetMaxHP();
    if (Truth(value > 0))
    {
        UO.Print("Known HP percent: " + Convert.ToString(UO.GetHP() * 100 / value));
    }
    else
    {
        UO.Print("HP maximum unavailable");
    }

    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。完全なヘルパー関数 ReadValue - スクリプト クラス

引数と実行の流れ:

  • lasttarget - 以前に選択したオブジェクト。 Exists は存在をチェックします。 obj は ReadValue の唯一のパラメータです。この関数は、コマンド番号を変更せずにそのまま返します。
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()
    {
        if (Truth(UO.Exists("lasttarget")))
        {
            var value = ReadValue("lasttarget");
            UO.Print("Selected value: " + Convert.ToString(value));
        }

        return null;
    }

    dynamic ReadValue(dynamic obj)
    {
        return UO.GetMaxHP(obj);
    }

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

UO.GetMaxLife

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

C# のシグネチャ

int UO.GetMaxLife();

ローカル モデルから最大健全性を読み取ります。

引数

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

戻り値

int は、パーセンテージや bool ではなく、HitsMax フィールドの値です。 0 は、実際の値または欠損データを示す可能性があります。ゼロ最大値を除数として使用することはできません。他人のmobile の場合、意味がわからない可能性があります。 HP/HitsMax には、正確なポイントではなく相対的なサーバースケールが含まれる場合があります。 HP=0 は死亡を証明するものではありません。これには Dead/IsDead があります。

動作

  • このコマンドはステータスをオープンせず、サーバーの更新も要求しません。クライアントは、すでにロードされているデータのみを読み取ります。特性を変更せず、パケットを送信しません。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • オブジェクトを読み取るとき、World.Get は欠落しているものまたは IsDestroyed を拒否し、結果は 0 になります。 HP/HitsMax は、これらのフィールドを持つ項目を含めてエンティティから読み取られます。 Mana/Stamina - モバイル専用。引数なしでselfをお読みください。パラメーターのない同じ名前のバリアントには、必ずしも ID を持つバリアントがあるとは限りません: シグネチャを参照してください。
  • 引数なしで読み取ると、プレーヤーが見つからないか破壊された場合にも 0 が返されます。これは、World.Get 経由のフォームだけでなく、直接の Mana/Stamina とその最大値にも適用されます。死んだキャラクターが存在しても値を保持できます。

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

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

簡単な例

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

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

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

1。キャラクターの値を出力します - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは self となります。 value には 1 つの数値が格納されます。Convert.ToString はメッセージのみに変換されます。
var value = UO.GetMaxLife();
UO.Print("GetMaxLife: " + Convert.ToString(value));

2。チェックまたは計算に値を適用 - スクリプト関数

引数と実行の流れ:

  • このフィールドに適用されたしきい値または計算が表示されます。条件内の数値は設定例であり、サーバーの制限ではありません。最大値で割る前に、その正性がチェックされます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetMaxLife();
    if (Truth(value > 0))
    {
        UO.Print("Known HP percent: " + Convert.ToString(UO.GetHP() * 100 / value));
    }
    else
    {
        UO.Print("HP maximum unavailable");
    }

    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。完全なヘルパー関数 ReadValue - スクリプト クラス

引数と実行の流れ:

  • この名前には ID という形式はありません。パラメータなしの ReadValue は self を読み取ります。 2 つの呼び出しは UO.Wait(1000) によって区切られます。 2 つのスナップショットを比較すると、中間の変更が失われる可能性があります。
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()
    {
        var before = ReadValue();
        await Delay(1000);
        var after = ReadValue();
        UO.Print("Before: " + Convert.ToString(before) + "; after: " + Convert.ToString(after));
        return null;
    }

    dynamic ReadValue()
    {
        return UO.GetMaxLife();
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

UO.GetMaxMana

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

C# のシグネチャ

int UO.GetMaxMana();
dynamic UO.GetMaxMana(object? arg0);

ローカルモデルから最大マナを読み取ります。

引数

  • ObjID — 次の形式のオプションのオブジェクト: 数値/16 進文字列による serial、self、lasttarget、または登録名 AddObject。これはtypeではありません。引数なしでselfをお読みください。フォームによっては不明なテキストがあると変換エラーが発生します。電話をかける前に名前を確認してください。

戻り値

int は、パーセンテージや bool ではなく、ManaMax フィールドの値です。 0 は、実際の値または欠損データを示す可能性があります。ゼロ最大値を除数として使用することはできません。他人のmobile の場合、意味がわからない可能性があります。 HP/HitsMax には、正確なポイントではなく相対的なサーバースケールが含まれる場合があります。 HP=0 は死亡を証明するものではありません。これには Dead/IsDead があります。

動作

  • このコマンドはステータスをオープンせず、サーバーの更新も要求しません。クライアントは、すでにロードされているデータのみを読み取ります。特性を変更せず、パケットを送信しません。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • オブジェクトを読み取るとき、World.Get は欠落しているものまたは IsDestroyed を拒否し、結果は 0 になります。 HP/HitsMax は、これらのフィールドを持つ項目を含めてエンティティから読み取られます。 Mana/Stamina - モバイル専用。引数なしでselfをお読みください。パラメーターのない同じ名前のバリアントには、必ずしも ID を持つバリアントがあるとは限りません: シグネチャを参照してください。
  • 引数なしで読み取ると、プレーヤーが見つからないか破壊された場合にも 0 が返されます。これは、World.Get 経由のフォームだけでなく、直接の Mana/Stamina とその最大値にも適用されます。死んだキャラクターが存在しても値を保持できます。

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

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

簡単な例

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

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

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

1。キャラクターの値を出力します - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは self となります。 value には 1 つの数値が格納されます。Convert.ToString はメッセージのみに変換されます。
var value = UO.GetMaxMana();
UO.Print("GetMaxMana: " + Convert.ToString(value));

2。チェックまたは計算に値を適用 - スクリプト関数

引数と実行の流れ:

  • このフィールドに適用されたしきい値または計算が表示されます。条件内の数値は設定例であり、サーバーの制限ではありません。最大値で割る前に、その正性がチェックされます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetMaxMana();
    if (Truth(value > 0))
    {
        UO.Print("Mana percent: " + Convert.ToString(UO.Mana() * 100 / value));
    }

    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。完全なヘルパー関数 ReadValue - スクリプト クラス

引数と実行の流れ:

  • lasttarget - 以前に選択したオブジェクト。 Exists は存在をチェックします。 obj は ReadValue の唯一のパラメータです。この関数は、コマンド番号を変更せずにそのまま返します。
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()
    {
        if (Truth(UO.Exists("lasttarget")))
        {
            var value = ReadValue("lasttarget");
            UO.Print("Selected value: " + Convert.ToString(value));
        }

        return null;
    }

    dynamic ReadValue(dynamic obj)
    {
        return UO.GetMaxMana(obj);
    }

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

UO.GetMaxStam

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

C# のシグネチャ

int UO.GetMaxStam();
dynamic UO.GetMaxStam(object? arg0);

ローカル モデルから最大耐久性を読み取ります。

引数

  • ObjID — 次の形式のオプションのオブジェクト: 数値/16 進文字列による serial、self、lasttarget、または登録名 AddObject。これはtypeではありません。引数なしでselfをお読みください。フォームによっては不明なテキストがあると変換エラーが発生します。電話をかける前に名前を確認してください。

戻り値

int は、パーセンテージや bool ではなく、StaminaMax フィールドの値です。 0 は、実際の値または欠損データを示す可能性があります。ゼロ最大値を除数として使用することはできません。他人のmobile の場合、意味がわからない可能性があります。 HP/HitsMax には、正確なポイントではなく相対的なサーバースケールが含まれる場合があります。 HP=0 は死亡を証明するものではありません。これには Dead/IsDead があります。

動作

  • このコマンドはステータスをオープンせず、サーバーの更新も要求しません。クライアントは、すでにロードされているデータのみを読み取ります。特性を変更せず、パケットを送信しません。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • オブジェクトを読み取るとき、World.Get は欠落しているものまたは IsDestroyed を拒否し、結果は 0 になります。 HP/HitsMax は、これらのフィールドを持つ項目を含めてエンティティから読み取られます。 Mana/Stamina - モバイル専用。引数なしでselfをお読みください。パラメーターのない同じ名前のバリアントには、必ずしも ID を持つバリアントがあるとは限りません: シグネチャを参照してください。
  • 引数なしで読み取ると、プレーヤーが見つからないか破壊された場合にも 0 が返されます。これは、World.Get 経由のフォームだけでなく、直接の Mana/Stamina とその最大値にも適用されます。死んだキャラクターが存在しても値を保持できます。

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

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

簡単な例

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

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

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

1。キャラクターの値を出力します - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは self となります。 value には 1 つの数値が格納されます。Convert.ToString はメッセージのみに変換されます。
var value = UO.GetMaxStam();
UO.Print("GetMaxStam: " + Convert.ToString(value));

2。チェックまたは計算に値を適用 - スクリプト関数

引数と実行の流れ:

  • このフィールドに適用されたしきい値または計算が表示されます。条件内の数値は設定例であり、サーバーの制限ではありません。最大値で割る前に、その正性がチェックされます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetMaxStam();
    if (Truth(value > 0))
    {
        UO.Print("Stamina percent: " + Convert.ToString(UO.Stamina() * 100 / value));
    }

    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。完全なヘルパー関数 ReadValue - スクリプト クラス

引数と実行の流れ:

  • lasttarget - 以前に選択したオブジェクト。 Exists は存在をチェックします。 obj は ReadValue の唯一のパラメータです。この関数は、コマンド番号を変更せずにそのまま返します。
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()
    {
        if (Truth(UO.Exists("lasttarget")))
        {
            var value = ReadValue("lasttarget");
            UO.Print("Selected value: " + Convert.ToString(value));
        }

        return null;
    }

    dynamic ReadValue(dynamic obj)
    {
        return UO.GetMaxStam(obj);
    }

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

UO.GetMaxStamina

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

C# のシグネチャ

int UO.GetMaxStamina();

ローカル モデルから最大耐久性を読み取ります。

引数

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

戻り値

int は、パーセンテージや bool ではなく、StaminaMax フィールドの値です。 0 は、実際の値または欠損データを示す可能性があります。ゼロ最大値を除数として使用することはできません。他人のmobile の場合、意味がわからない可能性があります。 HP/HitsMax には、正確なポイントではなく相対的なサーバースケールが含まれる場合があります。 HP=0 は死亡を証明するものではありません。これには Dead/IsDead があります。

動作

  • このコマンドはステータスをオープンせず、サーバーの更新も要求しません。クライアントは、すでにロードされているデータのみを読み取ります。特性を変更せず、パケットを送信しません。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • オブジェクトを読み取るとき、World.Get は欠落しているものまたは IsDestroyed を拒否し、結果は 0 になります。 HP/HitsMax は、これらのフィールドを持つ項目を含めてエンティティから読み取られます。 Mana/Stamina - モバイル専用。引数なしでselfをお読みください。パラメーターのない同じ名前のバリアントには、必ずしも ID を持つバリアントがあるとは限りません: シグネチャを参照してください。
  • 引数なしで読み取ると、プレーヤーが見つからないか破壊された場合にも 0 が返されます。これは、World.Get 経由のフォームだけでなく、直接の Mana/Stamina とその最大値にも適用されます。死んだキャラクターが存在しても値を保持できます。

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

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

簡単な例

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

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

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

1。キャラクターの値を出力します - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは self となります。 value には 1 つの数値が格納されます。Convert.ToString はメッセージのみに変換されます。
var value = UO.GetMaxStamina();
UO.Print("GetMaxStamina: " + Convert.ToString(value));

2。チェックまたは計算に値を適用 - スクリプト関数

引数と実行の流れ:

  • このフィールドに適用されたしきい値または計算が表示されます。条件内の数値は設定例であり、サーバーの制限ではありません。最大値で割る前に、その正性がチェックされます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetMaxStamina();
    if (Truth(value > 0))
    {
        UO.Print("Stamina percent: " + Convert.ToString(UO.Stamina() * 100 / value));
    }

    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。完全なヘルパー関数 ReadValue - スクリプト クラス

引数と実行の流れ:

  • この名前には ID という形式はありません。パラメータなしの ReadValue は self を読み取ります。 2 つの呼び出しは UO.Wait(1000) によって区切られます。 2 つのスナップショットを比較すると、中間の変更が失われる可能性があります。
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()
    {
        var before = ReadValue();
        await Delay(1000);
        var after = ReadValue();
        UO.Print("Before: " + Convert.ToString(before) + "; after: " + Convert.ToString(after));
        return null;
    }

    dynamic ReadValue()
    {
        return UO.GetMaxStamina();
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

UO.GetMaxWeight

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

C# のシグネチャ

int UO.GetMaxWeight();

キャラクターのステータスカウンター(石の最大重量)を読み取ります。

引数

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

戻り値

int — 石の最大重量、クライアント モデルでは 0..65535。 0 は、実際の値である場合もあれば、データがない場合もあれば、紛失または破壊されたプレーヤーである場合もあります。これは数量であり、bool、ID、type ではありません。1 は 1 単位を意味し、成功ではありません。このコマンドはオブジェクトを反復処理せず、配列を返しません。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • 現在の Player が存在し、破棄されていない場合、ゲーム スレッドの読み取りには Player.WeightMax がかかります。それ以外の場合は、0。装備はソートされず、ボーナスは再計算されず、ステータスは要求されず、更新を待つこともありません。現在のゴーストは破壊されたプレイヤーと同等ではありません。
  • MaxWeight は WeightMax キャッシュを読み取ります。ネイティブ ステータス type >= 5 は、0 に等しい場合でも、サーバー制限を UInt16 に設定します。古い拡張ステータスは、受信時に一度計算します: プロトコル UO >= 5.0.0a - 7 * Floor(Convert.ToString / 2) + 40;古いものは Convert.ToString * 4 + 25 です。結果は UInt16 として保存されます。極値はモジュロ 65536 でラップされます。 Convert.ToString=101 は、それぞれ 390 または 429 を与えます。 Convert.ToStringを個別に変更する場合、ゲッター自体は制限を再計算しません。
  • CharacterStatus は更新前に必要な本体をチェックします。 Weight は独自の拡張ステータス、スロット - type 3、Luck - type 4、サーバー WeightMax - type 5 で利用可能です。オプションのカウンターのないコンパクト/古いパッケージは、以前のキャッシュを残します。新しいプレーヤーは最初から始まります。この呼び出しは、新しいステータスの受信を証明するものではありません。
  • RegisterCharacterGetterAliases は、欠落している引数なしの関数とフィールドのインライン名を追加します。既存の互換性ブランチは同じブリッジ フィールドを読み取ります。名前の大文字と小文字は重要ではありません。括弧のない組み込み関数は、変数によってオーバーライドされない場合、再度読み取られます。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。

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

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

簡単な例

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

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

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

1。 Display saved counter - direct script

引数と実行の流れ:

  • value には、それ自体の文字に対する引数なしの呼び出しが 1 つ格納されます。 Convert.ToString は、意味を変えずにログの番号をフォーマットします。
var value = UO.GetMaxWeight();
UO.Print("WeightMax: " + Convert.ToString(value));

2。変化の観察 - スクリプト関数

引数と実行の流れ:

  • UO.Wait(500) は前後を 500 ミリ秒で区切ります。差は正、ゼロ、負のいずれかになります。暫定的な更新やキャラクターの変更はスキップされる場合があります。一時停止はその一例です。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetMaxWeight();
    await Delay(500);
    var after = UO.GetMaxWeight();
    var difference = after - before;
    UO.Print("Counter change: " + Convert.ToString(difference));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

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

引数と実行の流れ:

  • CanCarry(追加) 石の重量が追加されます。 10 は一例であり、スタック数ではありません。マイナスのエクストラ、プレーヤーなし、または最大値 <= 0 を拒否し、現在の重量と制限を読み取り、エクストラ <= 最大値 - 現在の値で bool: true または false を返します。減算により、電流と余分なオーバーフローが回避されます。オーバーロードすると、extra=0であっても結果はfalseになります。これはローカルの評価であり、サーバーの解決策ではありません。読み取りはアトミックではないため、ゼロの重みが不明である可能性があります。
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()
    {
        if (Truth(Truth(CanCarry(10)) == true))
        {
            UO.Print("Local check passed");
        }
        else
        {
            UO.Print("Local check failed or data unavailable");
        }

        return null;
    }

    dynamic CanCarry(dynamic extra)
    {
        if (Truth(extra < 0) || Truth(UO.Self() == 0))
        {
            return false;
        }

        var current = UO.Weight();
        var maximum = UO.GetMaxWeight();
        if (Truth(maximum <= 0))
        {
            return false;
        }

        return extra <= maximum - current;
    }

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

UO.GetParalisa

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

C# のシグネチャ

int UO.GetParalisa();
int UO.GetParalisa(object? arg0);

クライアントが認識しているキャラクターの麻痺フラグを確認します。

引数

  • value - オプションの serial/ID mobile: 数値、16 進文字列、self、lasttarget、またはその他の標準オブジェクト名または AddObject 名。これはgraphic/typeではありません。引数なしでは、self が使用されます。不明な名前は 0 で解決されています。ターゲットが開かない。

戻り値

数値フラグ int: 1 (条件が満たされた) - ロードされた mobile にはフラグ IsParalyzed があります。 0 (条件が満たされていない) - フラグなし、mobile 不明、削除済み、またはオブジェクトがアイテムです。これは麻痺の時間ではなく、0 の結果として動ける能力を保証するものではありません。

動作

  • Paralyzed を使用して麻痺フラグを確認します。バリアント Is/Get、GetParalisa、Frozen、および GetLocked は同じフラグを読み取ります。
  • このコマンドはローカル データのみを読み取ります。麻痺を適用または解除したり、麻痺が終了するのを待ったり、サーバーに更新リクエストを送信したりすることはありません。
  • このコマンドの結果はタイプ int です: if (value != 0) または if (value == 0) を使用します。 true/false および C# の if (値) との直接比較は許可されません。値は数量や ID ではなく、フラグの意味を保持します。

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

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

簡単な例

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

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

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

1。 true - 直接スクリプトで自分自身をテストしてください

引数と実行の流れ:

  • 空の括弧は self を選択します。状態にはフラグの 1 つのスナップショットが保存されます。 true — 数値定数 1。
  • false という結果は、壁、スタミナ不足、またはその他の停止理由を排除するものではありません。
var state = UO.GetParalisa();
if (Truth(Truth(state) == true))
{
    UO.Print("Paralysis flag is set");
}
else
{
    UO.Print("Paralysis flag is absent or unavailable");
}

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

2。選択されたチェックmobile - スクリプト関数

引数と実行の流れ:

  • target には、最後のターゲットの 16 進文字列 serial が格納されます。 IsNpc は、プレーヤーを含むロードされた mobile であることを確認します。
  • 引数を指定したコマンドはターゲットを読み取ります。彼女は新しいキャラクターを選択したり、lasttarget を変更したりしません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var target = UO.GetSerial("lasttarget");
    if (Truth(UO.IsNPC(target)))
    {
        var state = UO.GetParalisa(target);
        UO.Print("Selected mobile paralysis 1/0: " + Convert.ToString(state));
    }
    else
    {
        UO.Print("No loaded mobile selected");
    }

    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。麻痺が解除されるまでの待ち時間を制限 - シナリオクラス

引数と実行の流れ:

  • 10 の一時停止時間は 100 ミリ秒以内です。引数のない各呼び出しは、self を再度読み取ります。
  • ループの後、self の存在が個別にチェックされます。これはコマンドの実行に加えて約 1 秒間の観察であり、麻痺の解除を保証するものではありません。
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()
    {
        var attempts = 0;
        while (Truth(Truth(UO.GetParalisa()) == true) && Truth(attempts < 10))
        {
            await Delay(100);
            attempts = attempts + 1;
        }

        if (Truth(UO.IsNPC("self")))
        {
            if (Truth(Truth(UO.GetParalisa()) == false))
            {
                UO.Print("Paralysis flag is clear");
            }
            else
            {
                UO.Print("Still paralyzed");
            }
        }
        else
        {
            UO.Print("Self is unavailable");
        }

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

UO.GetParalysed

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

C# のシグネチャ

int UO.GetParalysed();
int UO.GetParalysed(object? arg0);

クライアントが認識しているキャラクターの麻痺フラグを確認します。

引数

  • value - オプションの serial/ID mobile: 数値、16 進文字列、self、lasttarget、またはその他の標準オブジェクト名または AddObject 名。これはgraphic/typeではありません。引数なしでは、self が使用されます。不明な名前は 0 で解決されています。ターゲットが開かない。

戻り値

数値フラグ int: 1 (条件が満たされた) - ロードされた mobile にはフラグ IsParalyzed があります。 0 (条件が満たされていない) - フラグなし、mobile 不明、削除済み、またはオブジェクトがアイテムです。これは麻痺の時間ではなく、0 の結果として動ける能力を保証するものではありません。

動作

  • Paralyzed を使用して麻痺フラグを確認します。バリアント Is/Get、GetParalisa、Frozen、および GetLocked は同じフラグを読み取ります。
  • このコマンドはローカル データのみを読み取ります。麻痺を適用または解除したり、麻痺が終了するのを待ったり、サーバーに更新リクエストを送信したりすることはありません。
  • このコマンドの結果はタイプ int です: if (value != 0) または if (value == 0) を使用します。 true/false および C# の if (値) との直接比較は許可されません。値は数量や ID ではなく、フラグの意味を保持します。

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

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

簡単な例

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

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

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

1。 true - 直接スクリプトで自分自身をテストしてください

引数と実行の流れ:

  • 空の括弧は self を選択します。状態にはフラグの 1 つのスナップショットが保存されます。 true — 数値定数 1。
  • false という結果は、壁、スタミナ不足、またはその他の停止理由を排除するものではありません。
var state = UO.GetParalysed();
if (Truth(Truth(state) == true))
{
    UO.Print("Paralysis flag is set");
}
else
{
    UO.Print("Paralysis flag is absent or unavailable");
}

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

2。選択されたチェックmobile - スクリプト関数

引数と実行の流れ:

  • target には、最後のターゲットの 16 進文字列 serial が格納されます。 IsNpc は、プレーヤーを含むロードされた mobile であることを確認します。
  • 引数を指定したコマンドはターゲットを読み取ります。彼女は新しいキャラクターを選択したり、lasttarget を変更したりしません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var target = UO.GetSerial("lasttarget");
    if (Truth(UO.IsNPC(target)))
    {
        var state = UO.GetParalysed(target);
        UO.Print("Selected mobile paralysis 1/0: " + Convert.ToString(state));
    }
    else
    {
        UO.Print("No loaded mobile selected");
    }

    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。麻痺が解除されるまでの待ち時間を制限 - シナリオクラス

引数と実行の流れ:

  • 10 の一時停止時間は 100 ミリ秒以内です。引数のない各呼び出しは、self を再度読み取ります。
  • ループの後、self の存在が個別にチェックされます。これはコマンドの実行に加えて約 1 秒間の観察であり、麻痺の解除を保証するものではありません。
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()
    {
        var attempts = 0;
        while (Truth(Truth(UO.GetParalysed()) == true) && Truth(attempts < 10))
        {
            await Delay(100);
            attempts = attempts + 1;
        }

        if (Truth(UO.IsNPC("self")))
        {
            if (Truth(Truth(UO.GetParalysed()) == false))
            {
                UO.Print("Paralysis flag is clear");
            }
            else
            {
                UO.Print("Still paralyzed");
            }
        }
        else
        {
            UO.Print("Self is unavailable");
        }

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

UO.GetParalyzed

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

C# のシグネチャ

int UO.GetParalyzed();
int UO.GetParalyzed(object? arg0);

クライアントが認識しているキャラクターの麻痺フラグを確認します。

引数

  • value - オプションの serial/ID mobile: 数値、16 進文字列、self、lasttarget、またはその他の標準オブジェクト名または AddObject 名。これはgraphic/typeではありません。引数なしでは、self が使用されます。不明な名前は 0 で解決されています。ターゲットが開かない。

戻り値

数値フラグ int: 1 (条件が満たされた) - ロードされた mobile にはフラグ IsParalyzed があります。 0 (条件が満たされていない) - フラグなし、mobile 不明、削除済み、またはオブジェクトがアイテムです。これは麻痺の時間ではなく、0 の結果として動ける能力を保証するものではありません。

動作

  • Paralyzed を使用して麻痺フラグを確認します。バリアント Is/Get、GetParalisa、Frozen、および GetLocked は同じフラグを読み取ります。
  • このコマンドはローカル データのみを読み取ります。麻痺を適用または解除したり、麻痺が終了するのを待ったり、サーバーに更新リクエストを送信したりすることはありません。
  • このコマンドの結果はタイプ int です: if (value != 0) または if (value == 0) を使用します。 true/false および C# の if (値) との直接比較は許可されません。値は数量や ID ではなく、フラグの意味を保持します。

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

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

簡単な例

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

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

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

1。 true - 直接スクリプトで自分自身をテストしてください

引数と実行の流れ:

  • 空の括弧は self を選択します。状態にはフラグの 1 つのスナップショットが保存されます。 true — 数値定数 1。
  • false という結果は、壁、スタミナ不足、またはその他の停止理由を排除するものではありません。
var state = UO.GetParalyzed();
if (Truth(Truth(state) == true))
{
    UO.Print("Paralysis flag is set");
}
else
{
    UO.Print("Paralysis flag is absent or unavailable");
}

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

2。選択されたチェックmobile - スクリプト関数

引数と実行の流れ:

  • target には、最後のターゲットの 16 進文字列 serial が格納されます。 IsNpc は、プレーヤーを含むロードされた mobile であることを確認します。
  • 引数を指定したコマンドはターゲットを読み取ります。彼女は新しいキャラクターを選択したり、lasttarget を変更したりしません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var target = UO.GetSerial("lasttarget");
    if (Truth(UO.IsNPC(target)))
    {
        var state = UO.GetParalyzed(target);
        UO.Print("Selected mobile paralysis 1/0: " + Convert.ToString(state));
    }
    else
    {
        UO.Print("No loaded mobile selected");
    }

    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。麻痺が解除されるまでの待ち時間を制限 - シナリオクラス

引数と実行の流れ:

  • 10 の一時停止時間は 100 ミリ秒以内です。引数のない各呼び出しは、self を再度読み取ります。
  • ループの後、self の存在が個別にチェックされます。これはコマンドの実行に加えて約 1 秒間の観察であり、麻痺の解除を保証するものではありません。
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()
    {
        var attempts = 0;
        while (Truth(Truth(UO.GetParalyzed()) == true) && Truth(attempts < 10))
        {
            await Delay(100);
            attempts = attempts + 1;
        }

        if (Truth(UO.IsNPC("self")))
        {
            if (Truth(Truth(UO.GetParalyzed()) == false))
            {
                UO.Print("Paralysis flag is clear");
            }
            else
            {
                UO.Print("Still paralyzed");
            }
        }
        else
        {
            UO.Print("Self is unavailable");
        }

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

UO.GetPhysicalResist

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

C# のシグネチャ

int UO.GetPhysicalResist();

現在のキャラクターの抵抗フィールド (物理的な鎧/抵抗) を読み取ります。

引数

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

戻り値

int は、クライアント モデルの署名付きステータス値 -32768..32767 です。負の値は保持されます。 0 は、実際のレジスタンス、データの欠如、プレーヤーの紛失/破壊である可能性があります。 GetResist は、不明なセレクターに対して 0 も与えます。 bool、ID、スキルや耐性の制限ではありません。 1 は成功ではなく、1 ポイントを意味します。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • 現在の Player が存在し、破棄されていない場合、ゲーム スレッドの読み取りには Player.PhysicalResistance がかかります。それ以外の場合は、0。装備はソートされず、ボーナスは再計算されず、ステータスは要求されず、更新を待つこともありません。現在のゴーストは破壊されたプレイヤーと同等ではありません。
  • PhysicalResistance - サーバー アーマー/ステータス フィールド: クラシック サーバーはアーマー レーティングを送信でき、耐性のあるルールは物理耐性を送信できます。 API は一方から他方への変換を行わず、ダメージ軽減のパーセンテージを計算しません。 Armor と物理エイリアスは同じフィールドを読み取ります。
  • CharacterStatus は、名前、健康状態、自身の特性を変更する前に必要な本体をチェックし、各抵抗ワードを符号付き Int16 に変換します。トリミングされた必須ボディは以前のデータを変更しません。オプションの末尾 type 6 も同じルールを保持します。抵抗コマンドはそこから最大制限を読み取りません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • RegisterCharacterGetterAliases は、欠落している引数なしの関数とフィールドのインライン名を追加します。既存の互換性ブランチは同じブリッジ フィールドを読み取ります。名前の大文字と小文字は重要ではありません。括弧のない組み込み関数は、変数によってオーバーライドされない場合、再度読み取られます。

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

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

簡単な例

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

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

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

1。保存された値を印刷 - 直接スクリプト

引数と実行の流れ:

  • value には 1 回の呼び出しの結果が格納されます。 Convert.ToString はログの数値をフォーマットします。議論はありません。自分の文字を読み取ることができます。
var value = UO.GetPhysicalResist();
UO.Print("PhysicalResistance: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後の間には UO.Wait(500) ミリ秒があります。差がマイナスになることもあります。中間更新が失われる可能性があります。一時停止は例を指しており、遅延 API ではありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetPhysicalResist();
    await Delay(500);
    var after = UO.GetPhysicalResist();
    var difference = after - before;
    UO.Print("Resistance change: " + Convert.ToString(difference));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な最小抵抗テスト関数 - スクリプト クラス

引数と実行の流れ:

  • minimum=50 は要件の一例であり、クライアントの制限ではありません。 ResistanceAtLeast は、見つからないプレーヤーを拒否し、値を 1 つ読み取り、値 >= 最小値の場合は bool: true または false を返します。抵抗自体はboolではありません。関数は以下で完全に宣言されています。
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()
    {
        if (Truth(Truth(ResistanceAtLeast(50)) == true))
        {
            UO.Print("Local resistance requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic ResistanceAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetPhysicalResist();
        return value >= minimum;
    }

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

UO.GetPlayerStatusText

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

C# のシグネチャ

dynamic UO.GetPlayerStatusText(object? arg0);

オブジェクトの名前と状態の短いテキストを生成します。

引数

  • ObjID — 特定のオブジェクトのシリアル/ID: int、10 進数/16 進数の文字列、またはセットエイリアス self、backpack、lasttarget、lastobject または名前 AddObject。これはgraphic/typeではありません。

戻り値

string の形式は「名前 HP/MaxHP」です。たとえば、「レイブン 75/100」。不明なオブジェクトの場合は、通常、先頭にスペースを付けて「0/0」となります。これはテキストであり、構造、bool、またはオープンステータスガンプではありません。

動作

  • GetName/GetHP/GetMaxHP は、更新を要求せずに読み取られます。 ID または HP を取得するためにテキストをスペースで解析しないでください。名前にはスペースが含まれる場合があります。数値には別の getter コマンドを使用してください。

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

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

簡単な例

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

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

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

1。健康状態を示す - 直接スクリプト

引数と実行の流れ:

  • ObjID=self - 現在のキャラクター。
  • Print は、日記の完成したテキストを示します。
UO.Print(UO.GetPlayerStatusText("self"));

2。表示前に対象を確認 - スクリプト機能

引数と実行の流れ:

  • 最後のターゲットの ObjID=serial。
  • Exists は、0/0 のような不明なオブジェクトの出力を防ぎます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var target = UO.GetSerial("lasttarget");
    if (Truth(UO.Exists(target)))
    {
        UO.Print(UO.GetPlayerStatusText(target));
    }

    return null;
}

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

3。 2 つのスナップショットの保存 - スクリプト クラス

引数と実行の流れ:

  • 500 - 読み取り間のミリ秒。
  • キャラクターのすべての特徴ではなく、名前/HP のテキストが比較されます。
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()
    {
        var before = UO.GetPlayerStatusText("self");
        await Delay(500);
        var after = UO.GetPlayerStatusText("self");
        if (Truth(before != after))
        {
            UO.Print(after);
        }

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

UO.GetPoisonResist

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

C# のシグネチャ

int UO.GetPoisonResist();

現在のキャラクターの抵抗フィールド「毒」を読み取ります。

引数

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

戻り値

int は、クライアント モデルの署名付きステータス値 -32768..32767 です。負の値は保持されます。 0 は、実際のレジスタンス、データの欠如、プレーヤーの紛失/破壊である可能性があります。 GetResist は、不明なセレクターに対して 0 も与えます。 bool、ID、スキルや耐性の制限ではありません。 1 は成功ではなく、1 ポイントを意味します。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • 現在の Player が存在し、破棄されていない場合、ゲーム スレッドの読み取りには Player.PoisonResistance がかかります。それ以外の場合は、0。装備はソートされず、ボーナスは再計算されず、ステータスは要求されず、更新を待つこともありません。現在のゴーストは破壊されたプレイヤーと同等ではありません。
  • 要素フィールドは拡張 CharacterStatus (0x11)、type >= 4 になります。コマンド自体はサーバー エポックをチェックしません。これらのフィールドのないコンパクト/古いステータスは、以前のキャッシュを残します。新しいプレーヤーは最初は 0 です。毒耐性は Poisoned フラグではありません。また、これは Resisting Spells スキルでもありません。
  • CharacterStatus は、名前、健康状態、自身の特性を変更する前に必要な本体をチェックし、各抵抗ワードを符号付き Int16 に変換します。トリミングされた必須ボディは以前のデータを変更しません。オプションの末尾 type 6 も同じルールを保持します。抵抗コマンドはそこから最大制限を読み取りません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • RegisterCharacterGetterAliases は、欠落している引数なしの関数とフィールドのインライン名を追加します。既存の互換性ブランチは同じブリッジ フィールドを読み取ります。名前の大文字と小文字は重要ではありません。括弧のない組み込み関数は、変数によってオーバーライドされない場合、再度読み取られます。

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

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

簡単な例

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

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

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

1。保存された値を印刷 - 直接スクリプト

引数と実行の流れ:

  • value には 1 回の呼び出しの結果が格納されます。 Convert.ToString はログの数値をフォーマットします。議論はありません。自分の文字を読み取ることができます。
var value = UO.GetPoisonResist();
UO.Print("PoisonResistance: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後の間には UO.Wait(500) ミリ秒があります。差がマイナスになることもあります。中間更新が失われる可能性があります。一時停止は例を指しており、遅延 API ではありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetPoisonResist();
    await Delay(500);
    var after = UO.GetPoisonResist();
    var difference = after - before;
    UO.Print("Resistance change: " + Convert.ToString(difference));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な最小抵抗テスト関数 - スクリプト クラス

引数と実行の流れ:

  • minimum=50 は要件の一例であり、クライアントの制限ではありません。 ResistanceAtLeast は、見つからないプレーヤーを拒否し、値を 1 つ読み取り、値 >= 最小値の場合は bool: true または false を返します。抵抗自体はboolではありません。関数は以下で完全に宣言されています。
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()
    {
        if (Truth(Truth(ResistanceAtLeast(50)) == true))
        {
            UO.Print("Local resistance requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic ResistanceAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetPoisonResist();
        return value >= minimum;
    }

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

UO.GetPoisoned

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

C# のシグネチャ

int UO.GetPoisoned();
int UO.GetPoisoned(object? arg0);

キャラクターの毒状態をチェックします。

引数

  • value — 次の形式のオプションのオブジェクト: 数値/16 進文字列による serial、self、lasttarget、または登録名 AddObject。これはtypeではありません。引数なしでselfをお読みください。フォームによっては不明なテキストがあると変換エラーが発生します。電話をかける前に名前を確認してください。

戻り値

数値フラグ int: 1 (条件が満たされた)、0 (条件が満たされていない)。これは数値フラグです: C# チェック結果 != 0 または結果 == 0。 int と true/false の直接比較、および if (結果) は許可されません。 1 - mobile には IsPoisoned があり、0 にはフラグがないか、mobile がありません。毒度や残り時間は返されません。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • ローカル モデルを読み取ります。ターゲットを開いたり、ステータスを要求したり、フラグを変更したり、パケットを送信したりしません。破壊されたオブジェクトは、エントリが辞書から削除される前であっても、紛失したものとみなされます。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • Poisoned/Flying では、プロトコルのバージョンが考慮されます。7.0.0.0 までは、0x04 ビットはポイズンを意味します。 7.0.0.0で始まるのは飛行を意味し、毒は別に保管されます。フライトはZから計算されません。

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

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

簡単な例

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

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

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

1。自分の状態を確認する - 直接スクリプト

引数と実行の流れ:

  • 空の括弧は self となります。 active は結果を 1 回保存します。 true と false は 2 つのブランチを定義します。 Print はメッセージの例のみを表示します。
var active = UO.GetPoisoned();
if (Truth(Truth(active) == true))
{
    UO.Print("State is active");
}
else
{
    UO.Print("State is inactive or unavailable");
}

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

2。選択されたオブジェクトと全機能 ReadState - スクリプト機能

引数と実行の流れ:

  • lasttarget - 以前に選択したオブジェクト。 Exists は、その存在をチェックします。 obj は唯一のパラメータ ReadState です。この関数はコマンドの結果を変更せずに返します。その定義はコピーされたコードに含まれています。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.Exists("lasttarget")))
    {
        var observed = ReadState("lasttarget");
        UO.Print("State 1/0: " + Convert.ToString(observed));
    }

    return null;
}

dynamic ReadState(dynamic obj)
{
    return UO.GetPoisoned(obj);
}

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

3。 0.5 秒後の変化に注目してください - スクリプト クラス

引数と実行の流れ:

  • 引数なしの 2 つの呼び出しは、self を読み取り、UO.Wait(500) は 500 ミリ秒を設定します。 2 つの画像を比較します。中間の遷移はスキップされる場合があります。終わりのない待ち時間はありません。
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()
    {
        var before = UO.GetPoisoned();
        await Delay(500);
        var after = UO.GetPoisoned();
        if (Truth(before != after))
        {
            UO.Print("State changed: " + Convert.ToString(before) + " -> " + Convert.ToString(after));
        }

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

UO.GetRace

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

C# のシグネチャ

int UO.GetRace();

クライアントモデルからキャラクターの種族を読み取ります。

引数

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

戻り値

int — クライアントモデルに応じて、1=人間、2=エルフ、3=ガーゴイル。 0 はキャラクターがロードされていないことを意味します。 body/graphic ではなく、serial でもありません。

動作

  • 受信済みのローカルデータを読み込みます。このリクエストはステータスをオープンせず、サーバーに更新の送信を強制しません。死亡、マップの遷移、またはオブジェクトの削除後、2 つの呼び出しの間で値が変化する可能性があります。
  • これらは読み取り関数です。結果を変数に代入すると、スナップショットが保存されます。キャラクターの特性は変わりません。名前では大文字と小文字が区別されません。必要な数の引数を指定して、示されている形式を正確に使用してください。

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

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

簡単な例

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

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

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

1。キャラクターの現在の値を表示 - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは、self を参照します。キャラクターの種族はvalueに格納されます。
  • Convert.ToString は出力する数値を変換するもので、結果の意味は変わりません。
var value = UO.GetRace();
UO.Print("GetRace: " + Convert.ToString(value));

2。アプリケーション検証での値の使用 - スクリプト関数

引数と実行の流れ:

  • 値は引数なしで 1 回読み取られます。表示される計算や条件にはキャラクターの種族が使用されます。
  • 数値しきい値はスクリプト条件の例であり、新しいクライアントの制限ではありません。このフィールドには、上記のサーバー単位と制限が格納されます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetRace();
    if (Truth(value == 3))
    {
        UO.Print("Player race is gargoyle");
    }

    return null;
}

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

3。変化を 1 秒で監視する - スクリプト クラス

引数と実行の流れ:

  • 引数なしの両方の呼び出しは、現在の値を読み取ります。 UO.Wait(1000) はショット間にミリ秒単位の一時停止を与えます。
  • 比較した変更点: キャラクターの種族。例は世界を変えることはなく、無限に待つこともありません。この 1 秒以内のイベントは見逃される可能性があります。
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()
    {
        var before = UO.GetRace();
        await Delay(1000);
        var after = UO.GetRace();
        if (Truth(before != after))
        {
            UO.Print("Before: " + Convert.ToString(before) + "; after: " + Convert.ToString(after));
        }

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

UO.GetResist

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

C# のシグネチャ

int UO.GetResist(object? arg0);

数値または文字列セレクターを使用して、キャラクターの抵抗の 1 つを読み取ります。

引数

  • resistance — 抵抗が必要です。数字: 0=物理、1=火、2=冷気、3=毒、4=エネルギー。ライン:物理/物理/鎧、火、冷気、毒、エネルギー。大文字と小文字と末尾のスペースは無視されます。 serial、type、hue、サイト、または 2 番目の引数はありません。

戻り値

int は、クライアント モデルの署名付きステータス値 -32768..32767 です。負の値は保持されます。 0 は、実際のレジスタンス、データの欠如、プレーヤーの紛失/破壊である可能性があります。 GetResist は、不明なセレクターに対して 0 も与えます。 bool、ID、スキルや耐性の制限ではありません。 1 は成功ではなく、1 ポイントを意味します。

動作

  • GetResistance は、最初に値のタイプを識別します。文字列 "1" と "0" は未知の名前であり、0 を与え、数値セレクターではありません。非文字列 double は小数部をゼロに切り捨てます: 1.9 -> 火災、-0.9 -> 物理。 true=1は火災を選択し、false=0は物理を選択します。配列/null も 0 に変換されます。明示的な整数または有効な名前を使用してください。 AddObject という名前は使用できません。
  • GetResistance はブリッジ フィールドを 1 つだけ選択します。不明な番号/名前は、フィールドを読み取らずに int 0 を返します。このコマンドは 5 つの値を原子的に削除せず、抵抗も変更しません。
  • PhysicalResistance - サーバー アーマー/ステータス フィールド: クラシック サーバーはアーマー レーティングを送信でき、耐性のあるルールは物理耐性を送信できます。 API は一方から他方への変換を行わず、ダメージ軽減のパーセンテージを計算しません。 Armor と物理エイリアスは同じフィールドを読み取ります。
  • 要素フィールドは拡張 CharacterStatus (0x11)、type >= 4 になります。コマンド自体はサーバー エポックをチェックしません。これらのフィールドのないコンパクト/古いステータスは、以前のキャッシュを残します。新しいプレーヤーは最初は 0 です。毒耐性は Poisoned フラグではありません。また、これは Resisting Spells スキルでもありません。
  • CharacterStatus は、名前、健康状態、自身の特性を変更する前に必要な本体をチェックし、各抵抗ワードを符号付き Int16 に変換します。トリミングされた必須ボディは以前のデータを変更しません。オプションの末尾 type 6 も同じルールを保持します。抵抗コマンドはそこから最大制限を読み取りません。
  • スクリプトによって待機をキャンセルする機能を備えたゲーム ストリームの読み取りを呼び出します。ステータスを問い合わせたり、ターゲットをオープンしたり、パケットを送信したり、特性を変更したり、遅延を追加したりしません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。

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

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

簡単な例

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

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

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

1。大文字と小文字を区別して名前で選択 - 直接スクリプト

引数と実行の流れ:

  • resistance=" FiRe " は、末尾のスペースを削除した後に火を選択し、大文字と小文字は区別されません。値は符号付きの数値のままです。光景は現れない。
var value = UO.GetResist(" FiRe ");
UO.Print("Fire resistance: " + Convert.ToString(value));

2。数値セレクターと文字列セレクターの比較 - スクリプト関数

引数と実行の流れ:

  • 2 はコールドを選択します。 「毒」 - 毒。これらはセレクターであり、serial ではありません。 2 つのスナップショットを比較すると、bool が返されます。毒耐性はキャラクターが毒されているかどうかを示しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var cold = UO.GetResist(2);
    var poison = UO.GetResist("poison");
    if (Truth(cold < poison))
    {
        UO.Print("Cold resistance is lower");
    }
    else
    {
        UO.Print("Cold resistance is equal or higher");
    }

    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。完全な最小抵抗テスト関数 - スクリプト クラス

引数と実行の流れ:

  • minimum=50 は要件の一例であり、クライアントの制限ではありません。 ResistanceAtLeast は、見つからないプレーヤーを拒否し、値を 1 つ読み取り、値 >= 最小値の場合は bool: true または false を返します。抵抗自体はboolではありません。関数は以下で完全に宣言されています。
  • セレクターは変更せずに関数から GetResist に渡されます。この例では「fire」を使用しています。この関数は Player の存在をチェックしますが、任意のセレクターは検証せず、ステータスの最新性も確認しません。上のリストのセレクターを使用します。
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()
    {
        if (Truth(Truth(ResistanceAtLeast("fire", 50)) == true))
        {
            UO.Print("Local fire resistance requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic ResistanceAtLeast(dynamic selector, dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetResist(selector);
        return value >= minimum;
    }

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

UO.GetResistCold

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

C# のシグネチャ

int UO.GetResistCold();

現在のキャラクターの抵抗フィールド「冷気」を読み取ります。

引数

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

戻り値

int は、クライアント モデルの署名付きステータス値 -32768..32767 です。負の値は保持されます。 0 は、実際のレジスタンス、データの欠如、プレーヤーの紛失/破壊である可能性があります。 GetResist は、不明なセレクターに対して 0 も与えます。 bool、ID、スキルや耐性の制限ではありません。 1 は成功ではなく、1 ポイントを意味します。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • 現在の Player が存在し、破棄されていない場合、ゲーム スレッドの読み取りには Player.ColdResistance がかかります。それ以外の場合は、0。装備はソートされず、ボーナスは再計算されず、ステータスは要求されず、更新を待つこともありません。現在のゴーストは破壊されたプレイヤーと同等ではありません。
  • 要素フィールドは拡張 CharacterStatus (0x11)、type >= 4 になります。コマンド自体はサーバー エポックをチェックしません。これらのフィールドのないコンパクト/古いステータスは、以前のキャッシュを残します。新しいプレーヤーは最初は 0 です。毒耐性は Poisoned フラグではありません。また、これは Resisting Spells スキルでもありません。
  • CharacterStatus は、名前、健康状態、自身の特性を変更する前に必要な本体をチェックし、各抵抗ワードを符号付き Int16 に変換します。トリミングされた必須ボディは以前のデータを変更しません。オプションの末尾 type 6 も同じルールを保持します。抵抗コマンドはそこから最大制限を読み取りません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • RegisterCharacterGetterAliases は、欠落している引数なしの関数とフィールドのインライン名を追加します。既存の互換性ブランチは同じブリッジ フィールドを読み取ります。名前の大文字と小文字は重要ではありません。括弧のない組み込み関数は、変数によってオーバーライドされない場合、再度読み取られます。

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

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

簡単な例

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

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

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

1。保存された値を印刷 - 直接スクリプト

引数と実行の流れ:

  • value には 1 回の呼び出しの結果が格納されます。 Convert.ToString はログの数値をフォーマットします。議論はありません。自分の文字を読み取ることができます。
var value = UO.GetResistCold();
UO.Print("ColdResistance: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後の間には UO.Wait(500) ミリ秒があります。差がマイナスになることもあります。中間更新が失われる可能性があります。一時停止は例を指しており、遅延 API ではありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetResistCold();
    await Delay(500);
    var after = UO.GetResistCold();
    var difference = after - before;
    UO.Print("Resistance change: " + Convert.ToString(difference));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な最小抵抗テスト関数 - スクリプト クラス

引数と実行の流れ:

  • minimum=50 は要件の一例であり、クライアントの制限ではありません。 ResistanceAtLeast は、見つからないプレーヤーを拒否し、値を 1 つ読み取り、値 >= 最小値の場合は bool: true または false を返します。抵抗自体はboolではありません。関数は以下で完全に宣言されています。
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()
    {
        if (Truth(Truth(ResistanceAtLeast(50)) == true))
        {
            UO.Print("Local resistance requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic ResistanceAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetResistCold();
        return value >= minimum;
    }

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

UO.GetResistEnergy

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

C# のシグネチャ

int UO.GetResistEnergy();

現在のキャラクターの抵抗フィールド、つまりエネルギーを読み取ります。

引数

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

戻り値

int は、クライアント モデルの署名付きステータス値 -32768..32767 です。負の値は保持されます。 0 は、実際のレジスタンス、データの欠如、プレーヤーの紛失/破壊である可能性があります。 GetResist は、不明なセレクターに対して 0 も与えます。 bool、ID、スキルや耐性の制限ではありません。 1 は成功ではなく、1 ポイントを意味します。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • 現在の Player が存在し、破棄されていない場合、ゲーム スレッドの読み取りには Player.EnergyResistance がかかります。それ以外の場合は、0。装備はソートされず、ボーナスは再計算されず、ステータスは要求されず、更新を待つこともありません。現在のゴーストは破壊されたプレイヤーと同等ではありません。
  • 要素フィールドは拡張 CharacterStatus (0x11)、type >= 4 になります。コマンド自体はサーバー エポックをチェックしません。これらのフィールドのないコンパクト/古いステータスは、以前のキャッシュを残します。新しいプレーヤーは最初は 0 です。毒耐性は Poisoned フラグではありません。また、これは Resisting Spells スキルでもありません。
  • CharacterStatus は、名前、健康状態、自身の特性を変更する前に必要な本体をチェックし、各抵抗ワードを符号付き Int16 に変換します。トリミングされた必須ボディは以前のデータを変更しません。オプションの末尾 type 6 も同じルールを保持します。抵抗コマンドはそこから最大制限を読み取りません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • RegisterCharacterGetterAliases は、欠落している引数なしの関数とフィールドのインライン名を追加します。既存の互換性ブランチは同じブリッジ フィールドを読み取ります。名前の大文字と小文字は重要ではありません。括弧のない組み込み関数は、変数によってオーバーライドされない場合、再度読み取られます。

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

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

簡単な例

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

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

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

1。保存された値を印刷 - 直接スクリプト

引数と実行の流れ:

  • value には 1 回の呼び出しの結果が格納されます。 Convert.ToString はログの数値をフォーマットします。議論はありません。自分の文字を読み取ることができます。
var value = UO.GetResistEnergy();
UO.Print("EnergyResistance: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後の間には UO.Wait(500) ミリ秒があります。差がマイナスになることもあります。中間更新が失われる可能性があります。一時停止は例を指しており、遅延 API ではありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetResistEnergy();
    await Delay(500);
    var after = UO.GetResistEnergy();
    var difference = after - before;
    UO.Print("Resistance change: " + Convert.ToString(difference));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な最小抵抗テスト関数 - スクリプト クラス

引数と実行の流れ:

  • minimum=50 は要件の一例であり、クライアントの制限ではありません。 ResistanceAtLeast は、見つからないプレーヤーを拒否し、値を 1 つ読み取り、値 >= 最小値の場合は bool: true または false を返します。抵抗自体はboolではありません。関数は以下で完全に宣言されています。
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()
    {
        if (Truth(Truth(ResistanceAtLeast(50)) == true))
        {
            UO.Print("Local resistance requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic ResistanceAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetResistEnergy();
        return value >= minimum;
    }

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

UO.GetResistFire

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

C# のシグネチャ

int UO.GetResistFire();

現在のキャラクターの抵抗フィールド (火) を読み取ります。

引数

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

戻り値

int は、クライアント モデルの署名付きステータス値 -32768..32767 です。負の値は保持されます。 0 は、実際のレジスタンス、データの欠如、プレーヤーの紛失/破壊である可能性があります。 GetResist は、不明なセレクターに対して 0 も与えます。 bool、ID、スキルや耐性の制限ではありません。 1 は成功ではなく、1 ポイントを意味します。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • 現在の Player が存在し、破棄されていない場合、ゲーム スレッドの読み取りには Player.FireResistance がかかります。それ以外の場合は、0。装備はソートされず、ボーナスは再計算されず、ステータスは要求されず、更新を待つこともありません。現在のゴーストは破壊されたプレイヤーと同等ではありません。
  • 要素フィールドは拡張 CharacterStatus (0x11)、type >= 4 になります。コマンド自体はサーバー エポックをチェックしません。これらのフィールドのないコンパクト/古いステータスは、以前のキャッシュを残します。新しいプレーヤーは最初は 0 です。毒耐性は Poisoned フラグではありません。また、これは Resisting Spells スキルでもありません。
  • CharacterStatus は、名前、健康状態、自身の特性を変更する前に必要な本体をチェックし、各抵抗ワードを符号付き Int16 に変換します。トリミングされた必須ボディは以前のデータを変更しません。オプションの末尾 type 6 も同じルールを保持します。抵抗コマンドはそこから最大制限を読み取りません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • RegisterCharacterGetterAliases は、欠落している引数なしの関数とフィールドのインライン名を追加します。既存の互換性ブランチは同じブリッジ フィールドを読み取ります。名前の大文字と小文字は重要ではありません。括弧のない組み込み関数は、変数によってオーバーライドされない場合、再度読み取られます。

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

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

簡単な例

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

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

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

1。保存された値を印刷 - 直接スクリプト

引数と実行の流れ:

  • value には 1 回の呼び出しの結果が格納されます。 Convert.ToString はログの数値をフォーマットします。議論はありません。自分の文字を読み取ることができます。
var value = UO.GetResistFire();
UO.Print("FireResistance: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後の間には UO.Wait(500) ミリ秒があります。差がマイナスになることもあります。中間更新が失われる可能性があります。一時停止は例を指しており、遅延 API ではありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetResistFire();
    await Delay(500);
    var after = UO.GetResistFire();
    var difference = after - before;
    UO.Print("Resistance change: " + Convert.ToString(difference));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な最小抵抗テスト関数 - スクリプト クラス

引数と実行の流れ:

  • minimum=50 は要件の一例であり、クライアントの制限ではありません。 ResistanceAtLeast は、見つからないプレーヤーを拒否し、値を 1 つ読み取り、値 >= 最小値の場合は bool: true または false を返します。抵抗自体はboolではありません。関数は以下で完全に宣言されています。
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()
    {
        if (Truth(Truth(ResistanceAtLeast(50)) == true))
        {
            UO.Print("Local resistance requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic ResistanceAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetResistFire();
        return value >= minimum;
    }

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

UO.GetResistPhysical

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

C# のシグネチャ

int UO.GetResistPhysical();

現在のキャラクターの抵抗フィールド (物理的な鎧/抵抗) を読み取ります。

引数

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

戻り値

int は、クライアント モデルの署名付きステータス値 -32768..32767 です。負の値は保持されます。 0 は、実際のレジスタンス、データの欠如、プレーヤーの紛失/破壊である可能性があります。 GetResist は、不明なセレクターに対して 0 も与えます。 bool、ID、スキルや耐性の制限ではありません。 1 は成功ではなく、1 ポイントを意味します。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • 現在の Player が存在し、破棄されていない場合、ゲーム スレッドの読み取りには Player.PhysicalResistance がかかります。それ以外の場合は、0。装備はソートされず、ボーナスは再計算されず、ステータスは要求されず、更新を待つこともありません。現在のゴーストは破壊されたプレイヤーと同等ではありません。
  • PhysicalResistance - サーバー アーマー/ステータス フィールド: クラシック サーバーはアーマー レーティングを送信でき、耐性のあるルールは物理耐性を送信できます。 API は一方から他方への変換を行わず、ダメージ軽減のパーセンテージを計算しません。 Armor と物理エイリアスは同じフィールドを読み取ります。
  • CharacterStatus は、名前、健康状態、自身の特性を変更する前に必要な本体をチェックし、各抵抗ワードを符号付き Int16 に変換します。トリミングされた必須ボディは以前のデータを変更しません。オプションの末尾 type 6 も同じルールを保持します。抵抗コマンドはそこから最大制限を読み取りません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • RegisterCharacterGetterAliases は、欠落している引数なしの関数とフィールドのインライン名を追加します。既存の互換性ブランチは同じブリッジ フィールドを読み取ります。名前の大文字と小文字は重要ではありません。括弧のない組み込み関数は、変数によってオーバーライドされない場合、再度読み取られます。

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

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

簡単な例

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

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

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

1。保存された値を印刷 - 直接スクリプト

引数と実行の流れ:

  • value には 1 回の呼び出しの結果が格納されます。 Convert.ToString はログの数値をフォーマットします。議論はありません。自分の文字を読み取ることができます。
var value = UO.GetResistPhysical();
UO.Print("PhysicalResistance: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後の間には UO.Wait(500) ミリ秒があります。差がマイナスになることもあります。中間更新が失われる可能性があります。一時停止は例を指しており、遅延 API ではありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetResistPhysical();
    await Delay(500);
    var after = UO.GetResistPhysical();
    var difference = after - before;
    UO.Print("Resistance change: " + Convert.ToString(difference));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な最小抵抗テスト関数 - スクリプト クラス

引数と実行の流れ:

  • minimum=50 は要件の一例であり、クライアントの制限ではありません。 ResistanceAtLeast は、見つからないプレーヤーを拒否し、値を 1 つ読み取り、値 >= 最小値の場合は bool: true または false を返します。抵抗自体はboolではありません。関数は以下で完全に宣言されています。
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()
    {
        if (Truth(Truth(ResistanceAtLeast(50)) == true))
        {
            UO.Print("Local resistance requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic ResistanceAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetResistPhysical();
        return value >= minimum;
    }

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

UO.GetResistPoison

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

C# のシグネチャ

int UO.GetResistPoison();

現在のキャラクターの抵抗フィールド「毒」を読み取ります。

引数

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

戻り値

int は、クライアント モデルの署名付きステータス値 -32768..32767 です。負の値は保持されます。 0 は、実際のレジスタンス、データの欠如、プレーヤーの紛失/破壊である可能性があります。 GetResist は、不明なセレクターに対して 0 も与えます。 bool、ID、スキルや耐性の制限ではありません。 1 は成功ではなく、1 ポイントを意味します。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • 現在の Player が存在し、破棄されていない場合、ゲーム スレッドの読み取りには Player.PoisonResistance がかかります。それ以外の場合は、0。装備はソートされず、ボーナスは再計算されず、ステータスは要求されず、更新を待つこともありません。現在のゴーストは破壊されたプレイヤーと同等ではありません。
  • 要素フィールドは拡張 CharacterStatus (0x11)、type >= 4 になります。コマンド自体はサーバー エポックをチェックしません。これらのフィールドのないコンパクト/古いステータスは、以前のキャッシュを残します。新しいプレーヤーは最初は 0 です。毒耐性は Poisoned フラグではありません。また、これは Resisting Spells スキルでもありません。
  • CharacterStatus は、名前、健康状態、自身の特性を変更する前に必要な本体をチェックし、各抵抗ワードを符号付き Int16 に変換します。トリミングされた必須ボディは以前のデータを変更しません。オプションの末尾 type 6 も同じルールを保持します。抵抗コマンドはそこから最大制限を読み取りません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • RegisterCharacterGetterAliases は、欠落している引数なしの関数とフィールドのインライン名を追加します。既存の互換性ブランチは同じブリッジ フィールドを読み取ります。名前の大文字と小文字は重要ではありません。括弧のない組み込み関数は、変数によってオーバーライドされない場合、再度読み取られます。

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

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

簡単な例

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

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

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

1。保存された値を印刷 - 直接スクリプト

引数と実行の流れ:

  • value には 1 回の呼び出しの結果が格納されます。 Convert.ToString はログの数値をフォーマットします。議論はありません。自分の文字を読み取ることができます。
var value = UO.GetResistPoison();
UO.Print("PoisonResistance: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後の間には UO.Wait(500) ミリ秒があります。差がマイナスになることもあります。中間更新が失われる可能性があります。一時停止は例を指しており、遅延 API ではありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetResistPoison();
    await Delay(500);
    var after = UO.GetResistPoison();
    var difference = after - before;
    UO.Print("Resistance change: " + Convert.ToString(difference));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な最小抵抗テスト関数 - スクリプト クラス

引数と実行の流れ:

  • minimum=50 は要件の一例であり、クライアントの制限ではありません。 ResistanceAtLeast は、見つからないプレーヤーを拒否し、値を 1 つ読み取り、値 >= 最小値の場合は bool: true または false を返します。抵抗自体はboolではありません。関数は以下で完全に宣言されています。
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()
    {
        if (Truth(Truth(ResistanceAtLeast(50)) == true))
        {
            UO.Print("Local resistance requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic ResistanceAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetResistPoison();
        return value >= minimum;
    }

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

UO.GetSex

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

C# のシグネチャ

int UO.GetSex();

クライアントモデルから性別と人種のコードを読み取ります。

引数

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

戻り値

int - 互換性のあるコード: 0=人間男性、1=人間女性、2=エルフ男性、3=エルフ女性、4=ガーゴイル男性、5=ガーゴイル女性。キャラクターなしの0もありますので、Exists(self)で在庫状況をご確認ください。これは単純なbool女性ではありません。

動作

  • 受信済みのローカルデータを読み込みます。このリクエストはステータスをオープンせず、サーバーに更新の送信を強制しません。死亡、マップの遷移、またはオブジェクトの削除後、2 つの呼び出しの間で値が変化する可能性があります。
  • これらは読み取り関数です。結果を変数に代入すると、スナップショットが保存されます。キャラクターの特性は変わりません。名前では大文字と小文字が区別されません。必要な数の引数を指定して、示されている形式を正確に使用してください。

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

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

簡単な例

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

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

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

1。キャラクターの現在の値を表示 - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは、self を参照します。性別と人種コードは value に格納されます。
  • Convert.ToString は出力する数値を変換するもので、結果の意味は変わりません。
var value = UO.GetSex();
UO.Print("GetSex: " + Convert.ToString(value));

2。アプリケーション検証での値の使用 - スクリプト関数

引数と実行の流れ:

  • 値は引数なしで 1 回読み取られます。性別と人種コードは、表示される計算または条件に使用されます。
  • 数値しきい値はスクリプト条件の例であり、新しいクライアントの制限ではありません。このフィールドには、上記のサーバー単位と制限が格納されます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetSex();
    if (Truth(value == 4) || Truth(value == 5))
    {
        UO.Print("Gargoyle sex/race code");
    }

    return null;
}

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

3。変化を 1 秒で監視する - スクリプト クラス

引数と実行の流れ:

  • 引数なしの両方の呼び出しは、現在の値を読み取ります。 UO.Wait(1000) はショット間にミリ秒単位の一時停止を与えます。
  • 性別と人種コードの変更を比較します。例は世界を変えることはなく、無限に待つこともありません。この 1 秒以内のイベントは見逃される可能性があります。
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()
    {
        var before = UO.GetSex();
        await Delay(1000);
        var after = UO.GetSex();
        if (Truth(before != after))
        {
            UO.Print("Before: " + Convert.ToString(before) + "; after: " + Convert.ToString(after));
        }

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

UO.GetStam

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

C# のシグネチャ

int UO.GetStam();
dynamic UO.GetStam(object? arg0);

ローカルモデルから現在のスタミナを読み取ります。

引数

  • ObjID — 次の形式のオプションのオブジェクト: 数値/16 進文字列による serial、self、lasttarget、または登録名 AddObject。これはtypeではありません。引数なしでselfをお読みください。フォームによっては不明なテキストがあると変換エラーが発生します。電話をかける前に名前を確認してください。

戻り値

int は、パーセンテージや bool ではなく、Stamina フィールドの値です。 0 は、実際の値または欠損データを示す可能性があります。ゼロ最大値を除数として使用することはできません。他人のmobile の場合、意味がわからない可能性があります。 HP/HitsMax には、正確なポイントではなく、相対的なサーバー スケールが含まれる場合があります。 HP=0 は死亡を証明するものではありません。これには Dead/IsDead があります。

動作

  • このコマンドはステータスをオープンせず、サーバーの更新も要求しません。クライアントは、すでにロードされているデータのみを読み取ります。特性を変更せず、パケットを送信しません。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • オブジェクトを読み取るとき、World.Get は欠落しているものまたは IsDestroyed を拒否し、結果は 0 になります。 HP/HitsMax は、これらのフィールドを持つ項目を含めてエンティティから読み取られます。 Mana/Stamina - モバイル専用。引数なしでselfをお読みください。パラメーターのない同じ名前のバリアントには、必ずしも ID を持つバリアントがあるとは限りません: シグネチャを参照してください。
  • 引数なしで読み取ると、プレーヤーが見つからないか破壊された場合にも 0 が返されます。これは、World.Get 経由のフォームだけでなく、直接の Mana/Stamina とその最大値にも適用されます。死んだキャラクターが存在しても値を保持できます。

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

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

簡単な例

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

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

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

1。キャラクターの値を出力します - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは self となります。 value には 1 つの数値が格納されます。Convert.ToString はメッセージのみに変換されます。
var value = UO.GetStam();
UO.Print("GetStam: " + Convert.ToString(value));

2。チェックまたは計算に値を適用 - スクリプト関数

引数と実行の流れ:

  • このフィールドに適用されたしきい値または計算が表示されます。条件内の数値は設定例であり、サーバーの制限ではありません。最大値で割る前に、その正性がチェックされます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetStam();
    if (Truth(value < 15))
    {
        UO.Print("Known stamina is below the movement threshold of 15");
    }

    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。完全なヘルパー関数 ReadValue - スクリプト クラス

引数と実行の流れ:

  • lasttarget - 以前に選択したオブジェクト。 Exists は存在をチェックします。 obj は ReadValue の唯一のパラメータです。この関数は、コマンド番号を変更せずにそのまま返します。
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()
    {
        if (Truth(UO.Exists("lasttarget")))
        {
            var value = ReadValue("lasttarget");
            UO.Print("Selected value: " + Convert.ToString(value));
        }

        return null;
    }

    dynamic ReadValue(dynamic obj)
    {
        return UO.GetStam(obj);
    }

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

UO.GetStamina

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

C# のシグネチャ

int UO.GetStamina();

ローカルモデルから現在のスタミナを読み取ります。

引数

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

戻り値

int は、パーセンテージや bool ではなく、Stamina フィールドの値です。 0 は、実際の値または欠損データを示す可能性があります。ゼロ最大値を除数として使用することはできません。他人のmobile の場合、意味がわからない可能性があります。 HP/HitsMax には、正確なポイントではなく、相対的なサーバー スケールが含まれる場合があります。 HP=0 は死亡を証明するものではありません。これには Dead/IsDead があります。

動作

  • このコマンドはステータスをオープンせず、サーバーの更新も要求しません。クライアントは、すでにロードされているデータのみを読み取ります。特性を変更せず、パケットを送信しません。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • オブジェクトを読み取るとき、World.Get は欠落しているものまたは IsDestroyed を拒否し、結果は 0 になります。 HP/HitsMax は、これらのフィールドを持つ項目を含めてエンティティから読み取られます。 Mana/Stamina - モバイル専用。引数なしでselfをお読みください。パラメーターのない同じ名前のバリアントには、必ずしも ID を持つバリアントがあるとは限りません: シグネチャを参照してください。
  • 引数なしで読み取ると、プレーヤーが見つからないか破壊された場合にも 0 が返されます。これは、World.Get 経由のフォームだけでなく、直接の Mana/Stamina とその最大値にも適用されます。死んだキャラクターが存在しても値を保持できます。

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

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

簡単な例

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

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

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

1。キャラクターの値を出力します - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは self となります。 value には 1 つの数値が格納されます。Convert.ToString はメッセージのみに変換されます。
var value = UO.GetStamina();
UO.Print("GetStamina: " + Convert.ToString(value));

2。チェックまたは計算に値を適用 - スクリプト関数

引数と実行の流れ:

  • このフィールドに適用されたしきい値または計算が表示されます。条件内の数値は設定例であり、サーバーの制限ではありません。最大値で割る前に、その正性がチェックされます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.GetStamina();
    if (Truth(value < 15))
    {
        UO.Print("Known stamina is below the movement threshold of 15");
    }

    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。完全なヘルパー関数 ReadValue - スクリプト クラス

引数と実行の流れ:

  • この名前には ID という形式はありません。パラメータなしの ReadValue は self を読み取ります。 2 つの呼び出しは UO.Wait(1000) によって区切られます。 2 つのスナップショットを比較すると、中間の変更が失われる可能性があります。
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()
    {
        var before = ReadValue();
        await Delay(1000);
        var after = ReadValue();
        UO.Print("Before: " + Convert.ToString(before) + "; after: " + Convert.ToString(after));
        return null;
    }

    dynamic ReadValue()
    {
        return UO.GetStamina();
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

UO.GetStatLockState

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

C# のシグネチャ

int UO.GetStatLockState(object? arg0);

ローカル特性変更モードを読み出します。

引数

  • statNum - 必須の特性番号: 0 - ToString、1 - DEX、2 - INT を変換します。これは現在の値ではなく、文字列の名前でもありません。

戻り値

int: 0 — 増加、1 — 減少、2 — ブロック。これはモード コードであり、true/false ではありません。 0..2 以外の数値の場合、-1 が返されます。文字が欠落している場合は、デフォルトで有効な数値 0 が返されます。これはサーバーの状態を確認するものではありません。

動作

  • 読み取りは、すでに受信したデータに基づいてゲーム スレッドの Invoke を介して実行されます。ネットワークパケットは送信されません。スキルは使用または訓練されていません。 2 つのリクエスト - 2 つの別々のスナップショット。
  • 必須の特性番号: 0 - ToString、1 - DEX、2 - INT。これは現在の値ではなく、文字列の名前でもありません。
  • ExecuteClientApiCompatibility はコマンドブランチを選択します。 Text はスキル セレクターを読み取り、Arg は数値とモードを読み取ります。変換できない引数は、変換エラーで呼び出しに失敗する可能性があります。

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

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

簡単な例

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

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

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

1。読み取りと出力 - 直接スクリプト

引数と実行の流れ:

  • この例では、セレクターと、録音時のモードが明示的に指定されています。最初の行では、スキルを名前で選択するか、特性を番号で選択します。 Print は結果のみを印刷します。
var selector = 0;
var mode = UO.GetStatLockState(selector);
UO.Print(Convert.ToString(mode));

2。条件または比較で適用 - スクリプト関数

引数と実行の流れ:

  • しきい値 95.1 とモード 0/1/2 は例として示されています。 −1はモードを変更する前にチェックされます。書き込み後は、ローカル コピーのみが読み取られます。サーバーの応答を待っているわけではありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var mode = UO.GetStatLockState(0);
    if (Truth(mode == 2))
    {
        UO.Print("Locked");
    }
    else
    {
        if (Truth(mode == -1))
        {
            UO.Print("Unknown selector");
        }
        else
        {
            UO.Print("Mode: " + Convert.ToString(mode));
        }
    }

    return null;
}

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

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

引数と実行の流れ:

  • すべてのヘルパー コードは Main の下に示されています。セレクターはスキル/特性を選択し、モードは記録モードを設定します。 ReadValue/ReadMode 元の番号を返します。 ApplyMode は引数をチェックし、アクションを実行しますが、値を返しません。読み取り例のUO.Wait(1000) は 2 つの画像を分離します。
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()
    {
        var before = ReadMode(0);
        await Delay(1000);
        var after = ReadMode(0);
        UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
        return null;
    }

    dynamic ReadMode(dynamic selector)
    {
        return UO.GetStatLockState(selector);
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

UO.GetStatus

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

C# のシグネチャ

void UO.GetStatus(object? arg0);

指定されたmobileのステータスに関するサーバーリクエストを送信します。

引数

  • id — オブジェクトのシリアル番号、または self/backpack/lasttarget/saved オブジェクトのサポートされている名前。数値文字列と 0x 文字列は実行時に解決されます。

戻り値

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

動作

  • string-フォームは、GetObject を介して名前を解決します。 int 形式は serial を直接レンダリングします。ブリッジは GameActions.RequestMobileStatus(world,serial,true) を呼び出します。このコマンドはデータを返さず、応答を待ちません。ワールド更新後、GetHP/GetMaxHP とその他のゲッターを個別に読み取ります。

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

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

簡単な例

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

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

UO.Print("Calling UO.GetStatus");
UO.GetStatus("self");

1。自己ステータスの要求 - 直接スクリプト

引数と実行の流れ:

  • ステータス要求は、応答を待たずに送信されます。
UO.GetStatus("self");

2。 serialによるクエリ - スクリプト関数

引数と実行の流れ:

  • int-フォームは同じリクエストを送信します。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var id = UO.Self();
    UO.GetStatus(id);
    return null;
}

3。一時停止後の読書 - スクリプトクラス

引数と実行の流れ:

  • 一時停止しても、新しい答えが得られるとは限りません。ゲッターは現在のローカル モデルを返します。
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.GetStatus("self");
        await Delay(500);
        UO.Print(Convert.ToString(UO.GetHP()) + "/" + Convert.ToString(UO.GetMaxHP()));
        return null;
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

UO.GetStr

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

C# のシグネチャ

int UO.GetStr();
int UO.GetStr(object? arg0);

キャラクターの現在のパワー(Strength、Convert.ToString)を読み取ります。

引数

  • ObjID — 引数が 1 つ指定された、示されている形式のみの ObjID: serial 文字番号、10 進数/0x 16 進数文字列、「self」、「lasttarget」、または名前 AddObject。 graphic/type 以外のオブジェクトを選択します。引数を指定しないと、現在の文字が読み取られます。

戻り値

int — 現在のステータス ポイント、クライアント モデルの 0..65535。パーセンテージ、ID、スキル、ロックモード、bool ではありません。 0 は、欠落/削除された文字、またはアクセスできないオブジェクトも意味します。 == true ではなく、数値要件と比較してください。これはステータスの上限や修飾子のない保証された基本値ではありません。

動作

  • サポートされているのは、self の () と明示的なオブジェクトの (ObjID) です。その他のオプションの引数はありません。
  • Player が存在し、破壊されていない場合は Player.Strength を読み取ります。それ以外の場合は、0。死んだキャラクターが存在しても、削除されたオブジェクトではありません。ステータスはHP、マナ、スタミナから計算されません。
  • GetStr/GetInt/GetDex は ObjID を受け入れます。 PlayerMobile データは self でのみ利用可能です。別の serial - 0、ロードされた mobile であっても。他人の特性を置き換えたり推測したりすることはありません。
  • スクリプトによって待機をキャンセルする機能を備えたゲーム ストリームの読み取りを呼び出します。ステータスを問い合わせたり、ターゲットをオープンしたり、パケットを送信したり、特性を変更したり、遅延を追加したりしません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • UO と同等の特性名。これがない場合は、大文字と小文字が区別されません: Convert.ToString Strength GetStr GetStrength。
  • ExecuteClientApiCompatibility.Arg は、まずオブジェクト名を解決し、次に数値を変換します。不明な非数値文字列は、ターゲットではなく変換エラーを引き起こします。 double は int に削減され、Array/void は 0 に削減されます。文字を選択するには、そのような変換ではなく、正しい serial を使用してください。

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

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

簡単な例

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

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

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

1。ポイントの読み取りと表示 - 直接スクリプト

引数と実行の流れ:

  • value には数値結果が格納されます。 Convert.ToStringは雑誌用にフォーマットするだけです。引数やキャラクターのアクションはありません。
var value = UO.GetStr();
UO.Print("Strength: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後に別々の 1000 ミリ秒。 UO.Wait を例に追加しました。 change=after-before には、正、ゼロ、または負の値を指定できます。それ自体では、すべての中間更新とワールドからの終了を区別しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetStr();
    await Delay(1000);
    var after = UO.GetStr();
    var change = after - before;
    UO.Print("Change: " + Convert.ToString(change));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な要件検証機能 - スクリプト クラス

引数と実行の流れ:

  • minimum=80 は要件の一例であり、クライアントの制限ではありません。 AttributeAtLeast(最小) は欠落文字を拒否し、特性を 1 回読み取って bool: true または false (>= 最小の場合) を返します。論理的な意味は、特性自体ではなく、比較によって与えられます。
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()
    {
        if (Truth(Truth(AttributeAtLeast(80)) == true))
        {
            UO.Print("Requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic AttributeAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetStr();
        return value >= minimum;
    }

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

4。 serial とオブジェクト名で文字を選択 - 直接スクリプト

引数と実行の流れ:

  • id は UO.Self() の結果であり、type ではありません。 AddObjectは、第2引数が指定されているため、IDをスコープなしでstatSubjectとして格納します。どちらの呼び出しも同じ文字を選択しますが、読み取りはアトミックではありません。
var id = UO.Self();
if (Truth(id != 0))
{
    UO.AddObject("statSubject", id);
    var direct = UO.GetStr(id);
    var byName = UO.GetStr("statSubject");
    UO.Print("Direct: " + Convert.ToString(direct) + "; alias: " + Convert.ToString(byName));
}

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

UO.GetStrength

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

C# のシグネチャ

int UO.GetStrength();

キャラクターの現在のパワー(Strength、Convert.ToString)を読み取ります。

引数

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

戻り値

int — 現在のステータス ポイント、クライアント モデルの 0..65535。パーセンテージ、ID、スキル、ロックモード、bool ではありません。 0 は、欠落/削除された文字、またはアクセスできないオブジェクトも意味します。 == true ではなく、数値要件と比較してください。これはステータスの上限や修飾子のない保証された基本値ではありません。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • Player が存在し、破壊されていない場合は Player.Strength を読み取ります。それ以外の場合は、0。死んだキャラクターが存在しても、削除されたオブジェクトではありません。ステータスはHP、マナ、スタミナから計算されません。
  • GetStr/GetInt/GetDex は ObjID を受け入れます。 PlayerMobile データは self でのみ利用可能です。別の serial - 0、ロードされた mobile であっても。他人の特性を置き換えたり推測したりすることはありません。
  • スクリプトによって待機をキャンセルする機能を備えたゲーム ストリームの読み取りを呼び出します。ステータスを問い合わせたり、ターゲットをオープンしたり、パケットを送信したり、特性を変更したり、遅延を追加したりしません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • UO と同等の特性名。これがない場合は、大文字と小文字が区別されません: Convert.ToString Strength GetStr GetStrength。

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

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

簡単な例

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

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

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

1。ポイントの読み取りと表示 - 直接スクリプト

引数と実行の流れ:

  • value には数値結果が格納されます。 Convert.ToStringは雑誌用にフォーマットするだけです。引数やキャラクターのアクションはありません。
var value = UO.GetStrength();
UO.Print("Strength: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後に別々の 1000 ミリ秒。 UO.Wait を例に追加しました。 change=after-before には、正、ゼロ、または負の値を指定できます。それ自体では、すべての中間更新とワールドからの終了を区別しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetStrength();
    await Delay(1000);
    var after = UO.GetStrength();
    var change = after - before;
    UO.Print("Change: " + Convert.ToString(change));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な要件検証機能 - スクリプト クラス

引数と実行の流れ:

  • minimum=80 は要件の一例であり、クライアントの制限ではありません。 AttributeAtLeast(最小) は欠落文字を拒否し、特性を 1 回読み取って bool: true または false (>= 最小の場合) を返します。論理的な意味は、特性自体ではなく、比較によって与えられます。
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()
    {
        if (Truth(Truth(AttributeAtLeast(80)) == true))
        {
            UO.Print("Requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic AttributeAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.GetStrength();
        return value >= minimum;
    }

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

UO.GetTitle

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

C# のシグネチャ

dynamic UO.GetTitle(object? arg0);

クライアントが知っているキャラクターのタイトルを読み取ります。たとえば、名前の後の職業や署名などです。

引数

  • ObjID — type や cliloc ではなく、serial/ID オブジェクトが必須です。 int、10 進数/16 進数の文字列、self、backpack、lasttarget、finditem、または名前 AddObject を受け入れます。 0 はオブジェクトがないことを意味します。

戻り値

string — モバイルのタイトルフィールドのテキスト。タイトルが不明な場合、オブジェクトが文字ではない場合、または ID が欠落している場合は空の文字列。これは、serial、フルネーム、またはプロパティの配列ではありません。 GetAltName は GetTitle と同じフィールドを使用します。

動作

  • 呼び出し自体はローカル データを読み取り、サーバーを待機せず、シングル クリックも送信しません。名前/タイトルをリクエストするには、ClickOnObject を単独で使用します。応答は非同期で返されます。
  • 既存の文字には空の文字列も使用できます。 Exists チェックは、オブジェクトがロードされているかどうかという別の質問に答えます。
  • この実装では、代替名がキャラクターの Title フィールドにマップされます。

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

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

簡単な例

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

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

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

1。あなたのキャラクターのタイトル - 直接のスクリプト

引数と実行の流れ:

  • ObjID=self — 現在のクライアントの文字。
  • タイトルにはタイトルのみが含まれます。フィールドが空であっても、スクリプト エラーを意味するものではありません。
var title = UO.GetTitle("self");
UO.Print(title);

2。選択文字の確認 - スクリプト機能

引数と実行の流れ:

  • ObjID=id — 最後のターゲットの serial。 GetNameとタイトルは分けて読みます。
  • 項目ターゲットには Title フィールドがないため、空の文字列が返されます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var id = UO.GetSerial("lasttarget");
    if (Truth(UO.Exists(id)))
    {
        var title = UO.GetTitle(id);
        if (Truth(title != ""))
        {
            UO.Print(UO.GetName(id) + " " + title);
        }
    }

    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。読み取る前に名前の入力を求める - スクリプト クラス

引数と実行の流れ:

  • 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()
    {
        var id = UO.GetSerial("lasttarget");
        if (Truth(UO.Exists(id)))
        {
            UO.ClickOnObject(id);
            UO.Wait(350);
            UO.Print(UO.GetTitle(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;
}

UO.GetWeight

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

C# のシグネチャ

int UO.GetWeight();

キャラクターのステータスカウンター、つまり現在の石の重量を読み取ります。

引数

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

戻り値

int — 現在の石の重量、クライアント モデルの 0..65535。 0 は、実際の値である場合もあれば、データがない場合もあれば、紛失または破壊されたプレーヤーである場合もあります。これは数量であり、bool、ID、type ではありません。1 は 1 単位を意味し、成功ではありません。このコマンドはオブジェクトを反復処理せず、配列を返しません。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • 現在の Player が存在し、破棄されていない場合、ゲーム スレッドの読み取りには Player.Weight がかかります。それ以外の場合は、0。装備はソートされず、ボーナスは再計算されず、ステータスは要求されず、更新を待つこともありません。現在のゴーストは破壊されたプレイヤーと同等ではありません。
  • Weight は、サーバーによって報告された石単位の総重量を読み取ります。身体、装備品、同封されているバッグの重量が金額に含まれるかどうかは、シャードのルールによって決まります。チームはコンテナ内を調べたり、アイテムの重量を合計したり、閉じたバッグを更新したりすることはありません。これは、個々のアイテムの Weight プロパティでも、アイテムの数でもありません。
  • CharacterStatus は更新前に必要な本体をチェックします。 Weight は独自の拡張ステータス、スロット - type 3、Luck - type 4、サーバー WeightMax - type 5 で利用可能です。オプションのカウンターのないコンパクト/古いパッケージは、以前のキャッシュを残します。新しいプレーヤーは最初から始まります。この呼び出しは、新しいステータスの受信を証明するものではありません。
  • RegisterCharacterGetterAliases は、欠落している引数なしの関数とフィールドのインライン名を追加します。既存の互換性ブランチは同じブリッジ フィールドを読み取ります。名前の大文字と小文字は重要ではありません。括弧のない組み込み関数は、変数によってオーバーライドされない場合、再度読み取られます。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。

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

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

簡単な例

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

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

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

1。 Display saved counter - direct script

引数と実行の流れ:

  • value には、それ自体の文字に対する引数なしの呼び出しが 1 つ格納されます。 Convert.ToString は、意味を変えずにログの番号をフォーマットします。
var value = UO.GetWeight();
UO.Print("Weight: " + Convert.ToString(value));

2。変化の観察 - スクリプト関数

引数と実行の流れ:

  • UO.Wait(500) は前後を 500 ミリ秒で区切ります。差は正、ゼロ、負のいずれかになります。暫定的な更新やキャラクターの変更はスキップされる場合があります。一時停止はその一例です。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.GetWeight();
    await Delay(500);
    var after = UO.GetWeight();
    var difference = after - before;
    UO.Print("Counter change: " + Convert.ToString(difference));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

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

引数と実行の流れ:

  • CanCarry(追加) 石の重量が追加されます。 10 は一例であり、スタック数ではありません。マイナスのエクストラ、プレーヤーなし、または最大値 <= 0 を拒否し、現在の重量と制限を読み取り、エクストラ <= 最大値 - 現在の値で bool: true または false を返します。減算により、電流と余分なオーバーフローが回避されます。オーバーロードすると、extra=0であっても結果はfalseになります。これはローカルの評価であり、サーバーの解決策ではありません。読み取りはアトミックではないため、ゼロの重みが不明である可能性があります。
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()
    {
        if (Truth(Truth(CanCarry(10)) == true))
        {
            UO.Print("Local check passed");
        }
        else
        {
            UO.Print("Local check failed or data unavailable");
        }

        return null;
    }

    dynamic CanCarry(dynamic extra)
    {
        if (Truth(extra < 0) || Truth(UO.Self() == 0))
        {
            return false;
        }

        var current = UO.GetWeight();
        var maximum = UO.MaxWeight();
        if (Truth(maximum <= 0))
        {
            return false;
        }

        return extra <= maximum - current;
    }

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

UO.GetYellowBar

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

C# のシグネチャ

int UO.GetYellowBar(object? arg0);

黄色のヘルスバーフラグ mobile を確認します。

引数

  • id — 特定のオブジェクトの必須 serial/ID: int、16 進文字列またはエイリアス self、backpack、lasttarget、lastobject、lastcontainer、laststatus、finditem、lastcorpse または name AddObject。これはgraphic/typeではありません。指定されていない名前は 0 に解決されます。このコマンドは新しいターゲットを開きません。引数は必須です。あなた自身のために、self を渡してください。
  • ObjID — 特定のオブジェクトの必須 serial/ID: int、16 進文字列またはエイリアス self、backpack、lasttarget、lastobject、lastcontainer、laststatus、finditem、lastcorpse または name AddObject。これはgraphic/typeではありません。指定されていない名前は 0 に解決されます。このコマンドは新しいターゲットを開きません。引数は必須です。あなた自身のために、self を渡してください。
  • MobID — 特定のオブジェクトの必須 serial/ID: int、16 進文字列またはエイリアス self、backpack、lasttarget、lastobject、lastcontainer、laststatus、finditem、lastcorpse または name AddObject。これはgraphic/typeではありません。指定されていない名前は 0 に解決されます。このコマンドは新しいターゲットを開きません。引数は必須です。あなた自身のために、self を渡してください。

戻り値

int 1 - ロードされた mobile には属性 IsYellowHits があります。 int 0 - 属性が欠落しています。オブジェクトは mobile ではないか、不明または削除されています。これはサーバー/互換性フラグであり、テーマカラー IDE や数量 HP ではありません。フラグがないことは脆弱性を証明するものではありません。サーバーは保護を異なる方法で示す可能性があります。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • ローカル クライアント モデルが読み取られます。サーバーへのリクエストはなく、待機や移動もありません。
  • 結果は読書の瞬間を指します。 UO.Wait またはその他のアクションの後、オブジェクトとそのフラグが変更される場合があります。
  • これはサーバー/互換性フラグであり、テーマカラー IDE や数量 HP ではありません。フラグがないことは脆弱性を証明するものではありません。サーバーは保護を異なる方法で示す可能性があります。

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

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

簡単な例

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

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

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

1。自分の状態を確認する - 直接スクリプト

引数と実行の流れ:

  • self 引数はその文字を明示的に選択します。状態 - 1/0 のみ。
  • これはサーバー/互換性フラグであり、テーマカラー IDE や数量 HP ではありません。フラグがないことは脆弱性を証明するものではありません。サーバーは保護を異なる方法で示す可能性があります。
var state = UO.GetYellowBar("self");
var hp = UO.GetHP("self");
UO.Print("Yellow flag: " + Convert.ToString(state));
UO.Print("Known HP: " + Convert.ToString(hp));

2。選択されたチェックmobile - スクリプト関数

引数と実行の流れ:

  • IsNpc は被写体と未知のオブジェクトを除外します。 target は、変化する lasttarget へのライブ参照ではなく、単一の serial を保存します。
  • 結果はフィールド IsYellowHits を参照します。データは、クライアントが適切な状態を受け取った後にのみ更新されます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var target = UO.GetSerial("lasttarget");
    if (Truth(UO.IsNPC(target)))
    {
        var state = UO.GetYellowBar(target);
        UO.Print("Selected mobile state 1/0: " + Convert.ToString(state));
    }
    else
    {
        UO.Print("No loaded mobile selected");
    }

    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(500) — ミリ秒単位で一時停止します。その後、mobile がまだ存在するかどうかが別途確認されます。
  • 2 つの画像を比較します。中間の変更は見逃される可能性があり、これはサーバー イベントへの継続的なサブスクリプションではありません。
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()
    {
        var target = UO.GetSerial("lasttarget");
        if (Truth(UO.IsNPC(target)))
        {
            var before = UO.GetYellowBar(target);
            await Delay(500);
            if (Truth(UO.IsNPC(target)))
            {
                var after = UO.GetYellowBar(target);
                if (Truth(before != after))
                {
                    UO.Print("Flag changed: " + Convert.ToString(before) + " -> " + Convert.ToString(after));
                }
            }
            else
            {
                UO.Print("Mobile left the local world");
            }
        }

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

UO.Gold

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

C# のシグネチャ

dynamic UO.Gold();

現在のキャラクターのステータスからゴールドの量を読み取ります。

引数

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

戻り値

int/double は、負でない合計 0..4294967295 です。 double (Double) を超える 2147483647 int が返され、32 ビットの符号なし整数を正確に表します。 0 は、現在削除されていないプレーヤーまたは受け取った金額が存在しないことも意味します。 bool、ID、スタック数、バックパック/バンクバイパスではありません。

動作

  • パラメータはありません。 Player.Gold キャッシュを CharacterStatus (0x11) ​​から読み取ります。サーバーはカウンターにどのゴールドが含まれるかを決定します。チームは荷物を調べたり、銀行残高を尋ねたりしません。プレイヤーなし/破壊 - 0;存在するゴーストはステータス量を維持できます。
  • ReadGoldValue は、bridge.Gold を 1 回読み取ります。古い C# ブリッジは Int32 署名を保持し、UInt32 ビットを送信します。チェックされていない変換は、符号なしの合計を復元します。少量の場合は int に、多量の場合は double に変わります。最上位ビットによって残高がマイナスにならなくなりました。変換はローカルで行われ、パッケージはありません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。

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

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

簡単な例

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

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

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

1。受け取った金額を引き出す - 直接スクリプト

引数と実行の流れ:

  • amount には 1 つの結果が格納されます。 Convert.ToString は雑誌用にフォーマットします。金は求めたり、持ち運んだり、消費したりするものではありません。
var amount = UO.Gold();
UO.Print("Status gold: " + Convert.ToString(amount));

2。フル機能CanAfford、高額価格 - スクリプト機能

引数と実行の流れ:

  • Price=3000000000.0 は価格の一例であり、上限ではありません。 CanAfford(価格) はマイナスの価格またはプレイヤーを拒否し、金額を 1 回読み取り、金額 >= 価格の場合は bool: true または false を返します。金額自体はboolではありません。この関数は以下で完全に定義されています。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var price = 3000000000.0;
    if (Truth(Truth(CanAfford(price)) == true))
    {
        UO.Print("Local balance is sufficient");
    }
    else
    {
        UO.Print("Local check failed");
    }

    return null;
}

dynamic CanAfford(dynamic price)
{
    if (Truth(price < 0) || Truth(UO.Self() == 0))
    {
        return false;
    }

    var amount = UO.Gold();
    return amount >= price;
}

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(500) ミリ秒を区切ります。残高が減少すると、Difference=after-before がマイナスになることがあります。これは、固定の符号なしカウンター オーバーフローではありません。暫定的なアップデートやキャラクターの変更が見逃される可能性があります。
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()
    {
        var before = UO.Gold();
        await Delay(500);
        var after = UO.Gold();
        var difference = after - before;
        UO.Print("Balance change: " + Convert.ToString(difference));
        return null;
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

UO.HP

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

C# のシグネチャ

int UO.HP();

ローカル モデルから現在の健全性を読み取ります。

引数

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

戻り値

int は、パーセンテージや bool ではなく、Hits フィールドの値です。 0 は、実際の値または欠損データを示す可能性があります。ゼロ最大値を除数として使用することはできません。他人のmobileの場合は意味が分からない可能性があります。 HP/HitsMax には、正確なポイントではなく、相対的なサーバー スケールが含まれる場合があります。 HP=0 は死亡を証明するものではありません。これには Dead/IsDead があります。

動作

  • このコマンドはステータスをオープンせず、サーバーの更新も要求しません。クライアントは、すでにロードされているデータのみを読み取ります。特性を変更せず、パケットを送信しません。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。
  • オブジェクトを読み取るとき、World.Get は欠落しているものまたは IsDestroyed を拒否し、結果は 0 になります。 HP/HitsMax は、これらのフィールドを持つ項目を含めてエンティティから読み取られます。 Mana/Stamina - モバイル専用。引数なしでselfをお読みください。パラメーターのない同じ名前のバリアントには、必ずしも ID を持つバリアントがあるとは限りません: シグネチャを参照してください。
  • 引数なしで読み取ると、プレーヤーが見つからないか破壊された場合にも 0 が返されます。これは、World.Get 経由のフォームだけでなく、直接の Mana/Stamina とその最大値にも適用されます。死んだキャラクターが存在しても値を保持できます。

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

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

簡単な例

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

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

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

1。キャラクターの値を出力します - 直接スクリプト

引数と実行の流れ:

  • 引数なしの呼び出しは self となります。 value には 1 つの数値が格納されます。Convert.ToString はメッセージのみに変換されます。
var value = UO.HP();
UO.Print("HP: " + Convert.ToString(value));

2。チェックまたは計算に値を適用 - スクリプト関数

引数と実行の流れ:

  • このフィールドに適用されたしきい値または計算が表示されます。条件内の数値は設定例であり、サーバーの制限ではありません。最大値で割る前に、その正性がチェックされます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var value = UO.HP();
    var maximum = UO.GetMaxHP();
    if (Truth(maximum > 0) && Truth(value * 100 / maximum < 50))
    {
        UO.Print("Health below half of the known maximum");
    }

    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。完全なヘルパー関数 ReadValue - スクリプト クラス

引数と実行の流れ:

  • この名前には ID という形式はありません。パラメータなしの ReadValue は self を読み取ります。 2 つの呼び出しは UO.Wait(1000) によって区切られます。 2 つのスナップショットを比較すると、中間の変更が失われる可能性があります。
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()
    {
        var before = ReadValue();
        await Delay(1000);
        var after = ReadValue();
        UO.Print("Before: " + Convert.ToString(before) + "; after: " + Convert.ToString(after));
        return null;
    }

    dynamic ReadValue()
    {
        return UO.HP();
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

UO.Hidden

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

C# のシグネチャ

int UO.Hidden();
int UO.Hidden(object? arg0);

キャラクターのステルス性をテストします。

引数

  • idText — 次の形式のオプションのオブジェクト: 数値/16 進文字列による serial、self、lasttarget、または登録名 AddObject。これはtypeではありません。引数なしでselfをお読みください。フォームによっては不明なテキストがあると変換エラーが発生します。電話をかける前に名前を確認してください。
  • id — 次の形式のオプションのオブジェクト: 数値/16 進文字列による serial、self、lasttarget、または登録名 AddObject。これはtypeではありません。引数なしでselfをお読みください。フォームによっては不明なテキストがあると変換エラーが発生します。電話をかける前に名前を確認してください。

戻り値

数値フラグ int: 1 (条件が満たされた)、0 (条件が満たされていない)。これは数値フラグです: C# チェック結果 != 0 または結果 == 0。 int と true/false の直接比較、および if (結果) は許可されません。 1 - mobile には IsHidden があり、0 にはフラグがないか、mobile がありません。これはサーバーのフラグであり、壁の後ろの可視性ではありません。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • ローカル モデルを読み取ります。ターゲットを開いたり、ステータスを要求したり、フラグを変更したり、パケットを送信したりしません。破壊されたオブジェクトは、エントリが辞書から削除される前であっても、紛失したものとみなされます。
  • 結果は別の読み物になります。 Exists と次の挑戦の間に世界は変わるかもしれません。複数のクエリはアトミック スナップショットを形成しません。

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

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

簡単な例

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

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

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

1。自分の状態を確認する - 直接スクリプト

引数と実行の流れ:

  • 空の括弧は self となります。 active は結果を 1 回保存します。 true と false は 2 つのブランチを定義します。 Print はメッセージの例のみを表示します。
var active = UO.Hidden();
if (Truth(Truth(active) == true))
{
    UO.Print("State is active");
}
else
{
    UO.Print("State is inactive or unavailable");
}

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

2。選択されたオブジェクトと全機能 ReadState - スクリプト機能

引数と実行の流れ:

  • lasttarget - 以前に選択したオブジェクト。 Exists は、その存在をチェックします。 obj は唯一のパラメータ ReadState です。この関数はコマンドの結果を変更せずに返します。その定義はコピーされたコードに含まれています。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.Exists("lasttarget")))
    {
        var observed = ReadState("lasttarget");
        UO.Print("State 1/0: " + Convert.ToString(observed));
    }

    return null;
}

dynamic ReadState(dynamic obj)
{
    return UO.Hidden(obj);
}

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

3。 0.5 秒後の変化に注目してください - スクリプト クラス

引数と実行の流れ:

  • 引数なしの 2 つの呼び出しは、self を読み取り、UO.Wait(500) は 500 ミリ秒を設定します。 2 つの画像を比較します。中間の遷移はスキップされる場合があります。終わりのない待ち時間はありません。
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()
    {
        var before = UO.Hidden();
        await Delay(500);
        var after = UO.Hidden();
        if (Truth(before != after))
        {
            UO.Print("State changed: " + Convert.ToString(before) + " -> " + Convert.ToString(after));
        }

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

UO.Int

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

C# のシグネチャ

int UO.Int();

キャラクターの現在の知能 (Intelligence、INT) を読み取ります。

引数

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

戻り値

int — 現在のステータス ポイント、クライアント モデルの 0..65535。パーセンテージ、ID、スキル、ロックモード、bool ではありません。 0 は、欠落/削除された文字、またはアクセスできないオブジェクトも意味します。 == true ではなく、数値要件と比較してください。これはステータスの上限や修飾子のない保証された基本値ではありません。

動作

  • このコマンドには引数はかかりません。上記の正確な署名を使用してください。
  • Player が存在し、破壊されていない場合は Player.Intelligence を読み取ります。それ以外の場合は、0。死んだキャラクターが存在しても、削除されたオブジェクトではありません。ステータスはHP、マナ、スタミナから計算されません。
  • GetStr/GetInt/GetDex は ObjID を受け入れます。 PlayerMobile データは self でのみ利用可能です。別の serial - 0、ロードされた mobile であっても。他人の特性を置き換えたり推測したりすることはありません。
  • スクリプトによって待機をキャンセルする機能を備えたゲーム ストリームの読み取りを呼び出します。ステータスを問い合わせたり、ターゲットをオープンしたり、パケットを送信したり、特性を変更したり、遅延を追加したりしません。
  • 呼び出しごとに、ローカル データが新たに読み取られます。変数にはスナップショットが保存されます。個々の読み取りは異なるサーバー更新を受信する場合があります。ゼロ以外の結果は接続をテストしません。ゼロには値を指定することも、データを指定しないこともできます。
  • UO と同等の特性名。これがない場合は、大文字と小文字が区別されません: Int Intelligence GetInt GetIntelligence。

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

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

簡単な例

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

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

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

1。ポイントの読み取りと表示 - 直接スクリプト

引数と実行の流れ:

  • value には数値結果が格納されます。 Convert.ToStringは雑誌用にフォーマットするだけです。引数やキャラクターのアクションはありません。
var value = UO.Int();
UO.Print("Intelligence: " + Convert.ToString(value));

2。 2 つの画像を比較 - スクリプト関数

引数と実行の流れ:

  • 前後に別々の 1000 ミリ秒。 UO.Wait を例に追加しました。 change=after-before には、正、ゼロ、または負の値を指定できます。それ自体では、すべての中間更新とワールドからの終了を区別しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.Int();
    await Delay(1000);
    var after = UO.Int();
    var change = after - before;
    UO.Print("Change: " + Convert.ToString(change));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。完全な要件検証機能 - スクリプト クラス

引数と実行の流れ:

  • minimum=80 は要件の一例であり、クライアントの制限ではありません。 AttributeAtLeast(最小) は欠落文字を拒否し、特性を 1 回読み取って bool: true または false (>= 最小の場合) を返します。論理的な意味は、特性自体ではなく、比較によって与えられます。
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()
    {
        if (Truth(Truth(AttributeAtLeast(80)) == true))
        {
            UO.Print("Requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic AttributeAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.Int();
        return value >= minimum;
    }

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

Clone this wiki locally