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

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

スキル

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

スキルの適用、値の読み取り、スキルロックの管理。スキルの名前とアクションの可用性は、クライアント/サーバーがサポートするデータによって異なります。

スキル: 正確な名前と番号

完全なカタログとサンプルを開く

セクション

トピック コマンドと説明
UseSkill UO.UseSkill
Skill Value UO.GetSkillValue · UO.SkillVal
Skill Current Value UO.GetSkillCurrentValue
Skill Cap UO.GetSkillCap
Skill Locks UO.GetSkillLockState · UO.SetSkillLockState
Tracking UO.Track
Snooping UO.Snoop
Stealth UO.StealthCnt · UO.UseSkill

すべてのテーマコマンド

スキル

UO.UseSkill · UO.GetSkillCap · UO.GetSkillCurrentValue · UO.GetSkillValue · UO.GetSkillLockState · UO.SetSkillLockState · UO.SkillLockState · UO.SkillVal · UO.Track · UO.Snoop · UO.StealthCnt · UO.TicksSkill

このトピックに関する例

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

UO.UseSkill

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

if (!(Truth(UO.Connected())) || Truth(UO.Dead()) || Truth(UO.Hidden()))
{
    return null;
}
if (!(Truth(UO.UseSkill("Hiding"))))
{
    UO.Print("Hiding request rejected");
    return null;
}
await Delay(1000);
if (Truth(UO.Hidden()))
{
    UO.Print("Character is hidden");
}
else
{
    UO.Print("Not hidden yet; check the game journal");
}

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

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

var selector = "Mining";
var value = UO.GetSkillValue(selector);
UO.Print(Convert.ToString(value));

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


UO.GetSkillCap

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

C# のシグネチャ

double UO.GetSkillCap(object? skillName);

サーバーから受信したスキル制限を読み取ります。

引数

  • skillName - 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名のIDや1のインデックスではありません。数値文字列は常にインデックスを意味します。

戻り値

double (Double) - スキルポイントは0,1 単位で増加します。たとえば、951 ではなく、95,1 です。 CapFixed フィールドは 10 で直接 Double に分割されます。 0 は、スキルがゼロ、またはキャラクター/スキルがないことを意味します。結果はboolではありませんでした。レガシー SkillVal/BaseVal はスケールが異なります。これらのファミリーを混合しないでください。

動作

  • 読み取りは、すでに受信したデータに基づいてゲーム スレッドの Invoke を介して実行されます。ネットワークパケットは送信されません。スキルは使用または訓練されていません。 2 つのリクエスト - 2 つの別々のスナップショット。
  • 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名の ID や 1 のインデックスではありません。数値文字列は常にインデックスを意味します。
  • ExecuteClientApiCompatibility はコマンドブランチを選択します。 Text はスキル セレクターを読み取り、Arg は数値とモードを読み取ります。変換できない引数は、変換エラーで呼び出しに失敗する可能性があります。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

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

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

引数と実行の流れ:

  • しきい値 95.1 とモード 0/1/2 は例として示されています。 −1はモードを変更する前にチェックされます。書き込み後は、ローカル コピーのみが読み取られます。サーバーの応答を待っているわけではありません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetSkillLockState("Mining") >= 0))
    {
        var value = UO.GetSkillCap("Mining");
        if (Truth(value >= 95.1))
        {
            UO.Print("Value >= 95.1: " + Convert.ToString(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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • すべてのヘルパー コードは 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 = ReadValue("Animal_Lore");
        await Delay(1000);
        var after = ReadValue("Animal Lore");
        UO.Print(Convert.ToString(after - before));
        return null;
    }

    dynamic ReadValue(dynamic selector)
    {
        return UO.GetSkillCap(selector);
    }

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

コマンドの実装

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

UO.GetSkillCap(skillName) — UO.GetSkillCap(Any)

引数: skillName (Any)

結果: double / Decimal.

呼び出し時:

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

case "getskillcap": return new InjectionValue(bridge.GetSkillValue(Text(0), false, true));

UO.GetSkillCurrentValue

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

C# のシグネチャ

double UO.GetSkillCurrentValue(object? skillName);

修飾子付きのスキルの実効値を読み取ります。

引数

  • skillName - 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名のIDや1のインデックスではありません。数値文字列は常にインデックスを意味します。

戻り値

double (Double) - スキルポイントは0,1 単位で増加します。たとえば、951 ではなく、95,1 です。 ValueFixed フィールドは 10 で直接 Double に分割されます。 0 は、スキルがゼロ、またはキャラクター/スキルがないことを意味します。結果はboolではありませんでした。レガシー SkillVal/BaseVal はスケールが異なります。これらのファミリーを混合しないでください。

動作

  • 読み取りは、すでに受信したデータに基づいてゲーム スレッドの Invoke を介して実行されます。ネットワークパケットは送信されません。スキルは使用または訓練されていません。 2 つのリクエスト - 2 つの別々のスナップショット。
  • 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名の ID や 1 のインデックスではありません。数値文字列は常にインデックスを意味します。
  • ExecuteClientApiCompatibility はコマンドブランチを選択します。 Text はスキル セレクターを読み取り、Arg は数値とモードを読み取ります。変換できない引数は、変換エラーで呼び出しに失敗する可能性があります。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

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

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

引数と実行の流れ:

  • しきい値 95.1 とモード 0/1/2 は例として示されています。 −1はモードを変更する前にチェックされます。書き込み後は、ローカル コピーのみが読み取られます。サーバーの応答を待っているわけではありません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetSkillLockState("Mining") >= 0))
    {
        var value = UO.GetSkillCurrentValue("Mining");
        if (Truth(value >= 95.1))
        {
            UO.Print("Value >= 95.1: " + Convert.ToString(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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • すべてのヘルパー コードは 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 = ReadValue("Animal_Lore");
        await Delay(1000);
        var after = ReadValue("Animal Lore");
        UO.Print(Convert.ToString(after - before));
        return null;
    }

    dynamic ReadValue(dynamic selector)
    {
        return UO.GetSkillCurrentValue(selector);
    }

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

コマンドの実装

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

UO.GetSkillCurrentValue(skillName) — UO.GetSkillCurrentValue(Any)

引数: skillName (Any)

結果: double / Decimal.

呼び出し時:

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

case "getskillcurrentvalue": return new InjectionValue(bridge.GetSkillValue(Text(0), true, false));

UO.GetSkillLockState

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

C# のシグネチャ

int UO.GetSkillLockState(object? skillName);

ローカルスキルチェンジモードを読み込みます。

引数

  • skillName - 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名のIDや1のインデックスではありません。数値文字列は常にインデックスを意味します。

戻り値

int: 0 — 増加、1 — 減少、2 — ブロック。これはモード コードであり、true/false ではありません。不明なスキルまたは欠落している文字の場合は、−1 が返されます。

動作

  • 読み取りは、すでに受信したデータに基づいてゲーム スレッドの Invoke を介して実行されます。ネットワークパケットは送信されません。スキルは使用または訓練されていません。 2 つのリクエスト - 2 つの別々のスナップショット。
  • 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名の ID や 1 のインデックスではありません。数値文字列は常にインデックスを意味します。
  • ExecuteClientApiCompatibility はコマンドブランチを選択します。 Text はスキル セレクターを読み取り、Arg は数値とモードを読み取ります。変換できない引数は、変換エラーで呼び出しに失敗する可能性があります。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

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

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

引数と実行の流れ:

  • しきい値 95.1 とモード 0/1/2 は例として示されています。 −1はモードを変更する前にチェックされます。書き込み後は、ローカル コピーのみが読み取られます。サーバーの応答を待っているわけではありません。
return  RunScenario();
 object? RunScenario()
{
    var mode = UO.GetSkillLockState("Mining");
    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("Mining");
        await Delay(1000);
        var after = ReadMode("Mining");
        UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
        return null;
    }

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

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

コマンドの実装

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

UO.GetSkillLockState(skillName) — UO.GetSkillLockState(Any)

引数: skillName (Any)

結果: int / Integer.

呼び出し時:

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

case "getskilllockstate": return new InjectionValue(bridge.GetSkillLockState(Text(0)));

UO.GetSkillValue

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

C# のシグネチャ

double UO.GetSkillValue(object? skillName);

修飾子なしでスキルの基本値を読み取ります。

引数

  • skillName - 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名のIDや1のインデックスではありません。数値文字列は常にインデックスを意味します。

戻り値

double (Double) - スキルポイントは0,1 単位で増加します。たとえば、951 ではなく、95,1 です。 BaseFixed フィールドは 10 で直接 Double に分割されます。 0 は、スキルがゼロ、またはキャラクター/スキルがないことを意味します。結果はboolではありませんでした。レガシー SkillVal/BaseVal はスケールが異なります。これらのファミリーを混合しないでください。

動作

  • 読み取りは、すでに受信したデータに基づいてゲーム スレッドの Invoke を介して実行されます。ネットワークパケットは送信されません。スキルは使用または訓練されていません。 2 つのリクエスト - 2 つの別々のスナップショット。
  • 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名の ID や 1 のインデックスではありません。数値文字列は常にインデックスを意味します。
  • ExecuteClientApiCompatibility はコマンドブランチを選択します。 Text はスキル セレクターを読み取り、Arg は数値とモードを読み取ります。変換できない引数は、変換エラーで呼び出しに失敗する可能性があります。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

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

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

引数と実行の流れ:

  • しきい値 95.1 とモード 0/1/2 は例として示されています。 −1はモードを変更する前にチェックされます。書き込み後は、ローカル コピーのみが読み取られます。サーバーの応答を待っているわけではありません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetSkillLockState("Mining") >= 0))
    {
        var value = UO.GetSkillValue("Mining");
        if (Truth(value >= 95.1))
        {
            UO.Print("Value >= 95.1: " + Convert.ToString(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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • すべてのヘルパー コードは 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 = ReadValue("Animal_Lore");
        await Delay(1000);
        var after = ReadValue("Animal Lore");
        UO.Print(Convert.ToString(after - before));
        return null;
    }

    dynamic ReadValue(dynamic selector)
    {
        return UO.GetSkillValue(selector);
    }

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

コマンドの実装

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

UO.GetSkillValue(skillName) — UO.GetSkillValue(Any)

引数: skillName (Any)

結果: double / Decimal.

呼び出し時:

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

case "getskillvalue": return new InjectionValue(bridge.GetSkillValue(Text(0), false, false));

UO.SetSkillLockState

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

C# のシグネチャ

void UO.SetSkillLockState(object? skillName, object? skillState);

スキルモードへの変更を要求します。

引数

  • skillName - 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名のIDや1のインデックスではありません。数値文字列は常にインデックスを意味します。
  • skillState — 必須モード: 0 — 増加、1 — 減少、2 — ブロック。これらは 3 つのコードであり、bool ではありません。 true/false は、すべてのモードの名前を置き換えるわけではありません。

戻り値

void - 戻り値はありません。結果を成功/エラーとして使用したり、true と比較したりすることはできません。その後の読み取りでは、サーバーの確認ではなく、ローカル モデルが表示されます。

動作

  • 有効なリクエストは 1 つのパケットを GameActions 経由で送信し、すぐにローカル モードを変更します。サーバーは独自の制限を適用できます。スキルやステータスの上昇は保証されません。不明なスキル、無効なインデックス/モード、欠落文字はパッケージなしでは無視されます。
  • 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名の ID や 1 のインデックスではありません。数値文字列は常にインデックスを意味します。
  • ExecuteClientApiCompatibility はコマンドブランチを選択します。 Text はスキル セレクターを読み取り、Arg は数値とモードを読み取ります。変換できない引数は、変換エラーで呼び出しに失敗する可能性があります。

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

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

簡単な例

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

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

UO.Print("Calling UO.SetSkillLockState");
UO.SetSkillLockState("Mining", 2);

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

引数と実行の流れ:

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

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

引数と実行の流れ:

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

    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        ApplyMode("Mining", 2);
        return null;
    }

    void ApplyMode(dynamic selector, dynamic mode)
    {
        if (Truth(mode < 0) || Truth(mode > 2))
        {
            return;
        }

        if (Truth(UO.GetSkillLockState(selector) < 0))
        {
            return;
        }

        UO.SetSkillLockState(selector, mode);
    }

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

コマンドの実装

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

UO.SetSkillLockState(skillName, skillState) — UO.SetSkillLockState(Any,Any)

引数: skillName (Any), skillState (Any)

結果: void / Unit.

呼び出し時:

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

case "setskilllockstate":

                case "skilllockstate": bridge.SetSkillLockState(Text(0), Arg(1)); return InjectionValue.Unit;

UO.SkillLockState

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

C# のシグネチャ

void UO.SkillLockState(object? skillName, object? skillState);

スキルモードへの変更を要求します。

引数

  • skillName - 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名のIDや1のインデックスではありません。数値文字列は常にインデックスを意味します。
  • skillState — 必須モード: 0 — 増加、1 — 減少、2 — ブロック。これらは 3 つのコードであり、bool ではありません。 true/false は、すべてのモードの名前を置き換えるわけではありません。

戻り値

void - 戻り値はありません。結果を成功/エラーとして使用したり、true と比較したりすることはできません。その後の読み取りでは、サーバーの確認ではなく、ローカル モデルが表示されます。

動作

  • 有効なリクエストは 1 つのパケットを GameActions 経由で送信し、すぐにローカル モードを変更します。サーバーは独自の制限を適用できます。スキルやステータスの上昇は保証されません。不明なスキル、無効なインデックス/モード、欠落文字はパッケージなしでは無視されます。
  • 必要なスキル: "Mining" や "Animal Lore" などのクライアント データの名前、または 0 から Skills.Length − 1 までの 10 進数のインデックス、数値または文字列。名前の大文字と小文字は重要ではありません。末尾のスペースは削除され、_ はスペースに置き換えられます。インデックスは件名の ID や 1 のインデックスではありません。数値文字列は常にインデックスを意味します。
  • ExecuteClientApiCompatibility はコマンドブランチを選択します。 Text はスキル セレクターを読み取り、Arg は数値とモードを読み取ります。変換できない引数は、変換エラーで呼び出しに失敗する可能性があります。

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

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

簡単な例

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

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

UO.Print("Calling UO.SkillLockState");
UO.SkillLockState("Mining", 2);

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

引数と実行の流れ:

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

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

引数と実行の流れ:

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

    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        ApplyMode("Mining", 2);
        return null;
    }

    void ApplyMode(dynamic selector, dynamic mode)
    {
        if (Truth(mode < 0) || Truth(mode > 2))
        {
            return;
        }

        if (Truth(UO.GetSkillLockState(selector) < 0))
        {
            return;
        }

        UO.SkillLockState(selector, mode);
    }

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

コマンドの実装

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

UO.SkillLockState(skillName, skillState) — UO.SkillLockState(Any,Any)

引数: skillName (Any), skillState (Any)

結果: void / Unit.

呼び出し時:

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

case "setskilllockstate":

                case "skilllockstate": bridge.SetSkillLockState(Text(0), Arg(1)); return InjectionValue.Unit;

UO.SkillVal

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

C# のシグネチャ

int UO.SkillVal(object? skillName);
int UO.SkillVal(object? skill, object? variant);

スキルまたはそのモード/成長のレガシー値を読み取ります。

引数

  • variant - オプションの int: 0 - 有効値 (デフォルト)、1 - 基本値、2 - 実行時のこのスキルの最初の読み取りからの基本値の増加、3 - ブロッキング モード。
  • skillName — ランタイム辞書 skillNameToSkillId からの名前 (例: 「Mining」)。大文字と小文字は重要ではありませんが、スペースは削除されず、_ は置換されません。この従来の関数の数値テキストはインデックスではありません。不明な名前はメッセージを表示し、0 を与えます。
  • skill — ランタイム辞書 skillNameToSkillId からの名前 (例: 「Mining」)。大文字と小文字は重要ではありませんが、スペースは削除されず、_ は置換されません。この従来の関数の数値テキストはインデックスではありません。不明な名前はメッセージを表示し、0 を与えます。

戻り値

int: オプション 0/1/2 - スキルポイントの 10 分の 1 (951 = 95.1);オプション 3 - モード 0/1/2 またはプレーヤー/スキルがない場合は -1。不明な名前/変種は 0 を与えます。プレーヤーが存在せず、base=0 が存在しない場合を含め、base が保存されたベースライン ランタイムよりも低い場合、オプション 2 は負の値になる可能性があります。ここはboolではありません。

動作

  • バリアントを選択する前に SkillBaseVal が取得され、スキルが初めて読み取られる場合はベースラインが保存されます。したがって、variant=0/1/3 を読み取っても、将来の成長のバリアント =2 の開始点が設定されます。
  • 間違ったバリアントではメッセージが表示され、0 が表示されますが、ベースラインはすでに作成されている可能性があります。 GetSkillValue/GetSkillCurrentValue の値はdouble メガネで測定され、スケールが異なります。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • スキルまたはそのモード/成長のレガシー値を読み取ります。
UO.Print(UO.SkillVal("Mining"));
UO.Print(UO.SkillVal("Mining", 1));

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

引数と実行の流れ:

  • バリアントを選択する前に SkillBaseVal が取得され、スキルが初めて読み取られる場合はベースラインが保存されます。したがって、variant=0/1/3 を読み取っても、将来の成長のバリアント =2 の開始点が設定されます。
return  RunScenario();
 object? RunScenario()
{
    var baseline = UO.SkillVal("Mining", 2);
    UO.Wait(1000);
    UO.Print(UO.SkillVal("Mining", 2) - baseline);
    return null;
}

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

引数と実行の流れ:

  • 間違ったバリアントではメッセージが表示され、0 が表示されますが、ベースラインはすでに作成されている可能性があります。 GetSkillValue/GetSkillCurrentValue の値はdouble メガネで測定され、スケールが異なります。

スキル

スキル

return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var lockMode = UO.SkillVal("Mining", 3);
        if (Truth(lockMode == 2))
        {
            UO.Print("Skill locked");
        }

        return null;
    }

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

コマンドの実装

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

UO.SkillVal(skillName) — UO.SkillVal(String)

引数: skillName (String)

結果: int / Integer.

呼び出し時:

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

public int SkillVal(string skillName) => SkillVal(skillName, 0);

UO.SkillVal(skill, variant) — UO.SkillVal(Any,Any)

引数: skill (Any), variant (Any)

結果: int / Integer.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values => new InjectionValue(SkillVal(values[0].ToString(), NumberConversions.ToInt(values[1])))

UO.Snoop

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

C# のシグネチャ

void UO.Snoop();
void UO.Snoop(object? container);

コンテナ/オブジェクトを使用し、通常はそれを開くように要求します。

引数

  • container - オプションの serial/エイリアス。デフォルトはブリッジLastTargetです。このコマンドは、IsContainer または所属をチェックしません。

戻り値

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

動作

  • ExecuteLegacyManualAlias は、bridge.UseObject(Arg(0,bridge.LastTarget)) を呼び出します。これは通常の double クリック リクエストであり、スヌーピング スキル用の個別のクライアント アルゴリズムではありません。
  • Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • コンテナ/オブジェクトを使用し、通常はそれを開くように要求します。
UO.Snoop();

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

引数と実行の流れ:

  • ExecuteLegacyManualAlias は、bridge.UseObject(Arg(0,bridge.LastTarget)) を呼び出します。これは通常の double クリック リクエストであり、スヌーピング スキル用の個別のクライアント アルゴリズムではありません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsContainer("lasttarget")))
    {
        UO.Snoop("lasttarget");
    }

    return null;
}

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

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

引数と実行の流れ:

  • Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var id = UO.GetSerial("lasttarget");
        if (Truth(UO.Exists(id)))
        {
            UO.Snoop(id);
            UO.Wait(500);
            UO.Print(UO.GetContent(id));
        }

        return null;
    }

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

コマンドの実装

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

UO.Snoop() — UO.Snoop()

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

結果: void / Unit.

呼び出し時:

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

case "snoop": bridge.UseObject(Arg(0, bridge.LastTarget)); break;

UO.Snoop(container) — UO.Snoop(Any)

引数: container (Any)

結果: void / Unit.

呼び出し時:

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

case "snoop": bridge.UseObject(Arg(0, bridge.LastTarget)); break;

UO.StealthCnt

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

C# のシグネチャ

int UO.StealthCnt();

キャラクターのローカル ステルス オフセット カウンターを読み取ります。

引数

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

戻り値

int は、IsHidden での呼び出し間の累積合計 max(abs(deltaX),abs(deltaY)) です。これは、サーバー ステルス ステップの保証された数や残りの制限ではありません。

動作

  • Player がない場合、または Player が非表示になっていない場合、count=0 がリセットされ、現在の X/Y (または -1) ​​が保存されます。ステルス時、以前に保存された X/Y と比較し、オフセットを追加して座標を更新します。
  • カウンタは読み取られると変化します。通話間を行ったり来たりすることはスキップできます。 X/Y を使用せずに Z を変更しても、カウンターは増加しません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • キャラクターのローカル ステルス オフセット カウンターを読み取ります。
UO.Print(UO.StealthCnt());

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

引数と実行の流れ:

  • Player がない場合、または Player が非表示になっていない場合、count=0 がリセットされ、現在の X/Y (または -1) ​​が保存されます。ステルス時、以前に保存された X/Y と比較し、オフセットを追加して座標を更新します。
return  RunScenario();
 object? RunScenario()
{
    var before = UO.StealthCnt();
    UO.Wait(500);
    UO.Print(UO.StealthCnt() - before);
    return null;
}

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

引数と実行の流れ:

  • カウンタは読み取られると変化します。通話間を行ったり来たりすることはスキップできます。 X/Y を使用せずに Z を変更しても、カウンターは増加しません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.Hidden()))
        {
            UO.Print(UO.StealthCnt());
        }
        else
        {
            UO.Print(UO.StealthCnt());
        }

        return null;
    }

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

コマンドの実装

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

UO.StealthCnt() — UO.StealthCnt()

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

結果: int / Integer.

呼び出し時:

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

public int StealthCnt() => bridge.StealthCnt();

UO.TicksSkill

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

C# のシグネチャ

int UO.TicksSkill();

保存されたマークTicksSkillを読み取ります。

引数

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

戻り値

int — ランタイムの開始から 10 分の 1 秒で UO.Timer をマークします。 0 - マークがまだ設定されていない、またはイベントが最初の 10 分の 1 秒以内に発生しました。ミリ秒やカレンダー時間ではありません。

動作

  • フィールド ticksSkill を返します。正常に受け入れられた UseSkill/UseSkillAtTarget によって更新されます。すべての手動/サーバーアクティビティを自動的に監視するわけではありません。コマンド自体はマークを変更しません。
  • UO.Timer() - マークは年齢を 10 分の 1 秒単位で計算します。異なるランタイム間ではマークは比較されません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 保存されたマークTicksSkillを読み取ります。
var stamp = UO.TicksSkill();
UO.Print(stamp);

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

引数と実行の流れ:

  • フィールド ticksSkill を返します。正常に受け入れられた UseSkill/UseSkillAtTarget によって更新されます。すべての手動/サーバーアクティビティを自動的に監視するわけではありません。コマンド自体はマークを変更しません。
return  RunScenario();
 object? RunScenario()
{
    var stamp = UO.TicksSkill();
    var ageTenths = UO.Timer() - stamp;
    UO.Print(ageTenths);
    return null;
}

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

引数と実行の流れ:

  • UO.Timer() - マークは年齢を 10 分の 1 秒単位で計算します。異なるランタイム間ではマークは比較されません。

スキル

スキル

return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

コマンドの実装

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

UO.TicksSkill() — UO.TicksSkill()

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

結果: int / Integer.

呼び出し時:

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

public int TicksSkill() => ticksSkill;

UO.Track

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

C# のシグネチャ

void UO.Track();
void UO.Track(object? flag);
void UO.Track(object? flagRaw, object? x, object? y);

座標へのローカル矢印を作成または削除します。返却場所を示すのに役立ちます。追跡スキルをトリガーせず、クリーチャーを検索せず、キャラクターを動かしません。

引数

  • flag — 0 — ローカル矢印を削除します。他の全体 - ショー。 UO.Track() と UO.Track(1) は、キャラクターの現在の X/Y に配置します。 UO.Track(1, x, y) は、指定されたポイントにそれを配置します。 UO.Track(0, x, y) は座標を無視します。登録されているAPIには2パラメータフォームは含まれていません。
  • flagRaw — 0 — ローカル矢印を削除します。他の全体 - ショー。 UO.Track() と UO.Track(1) は、キャラクターの現在の X/Y に配置します。 UO.Track(1, x, y) は、指定されたポイントにそれを配置します。 UO.Track(0, x, y) は座標を無視します。登録されているAPIには2パラメータフォームは含まれていません。
  • x — ウィンドウのピクセルではなく、現在のマップ上のセル座標。 Z とカード番号は使用できません。マップ上の既存のポイントを選択します。チームは地形を確認したり、ルートを計画したり、移動する目標を追跡したりしません。
  • y — ウィンドウのピクセルではなく、現在のマップ上のセル座標。 Z とカード番号は使用できません。マップ上の既存のポイントを選択します。チームは地形を確認したり、ルートを計画したり、移動する目標を追跡したりしません。

戻り値

void - 値なし。コマンドは移動成功または bool を返しません。ローカルトークンのみが変更されます。

動作

  • サーバーとローカルの矢印は別々に保存されます。 Track(0) はサーバーの矢印を削除しません。グラフィックスがない場合、マーカーは保存され、ウィンドウを開いたときに表示されます。ゲーム ウィンドウを閉じてもマーカーは削除されません。接続を切断するとそれらはクリアされます。サーバーは矢印を移動または削除できます。座標は、目標が達成可能であることを証明するものではありません。
  • ウィンドウのピクセルではなく、現在のマップ上のセル座標。 Z およびカード番号は使用できません。マップ上の既存のポイントを選択します。チームは地形を確認したり、ルートを計画したり、移動する目標を追跡したりしません。
  • 0 — ローカル矢印を削除します。他の全体 - ショー。 UO.Track() と UO.Track(1) は、キャラクターの現在の X/Y に配置します。 UO.Track(1, x, y) はそれを指定された点に配置します。 UO.Track(0, x, y) は座標を無視します。登録されているAPIには2パラメータフォームは含まれていません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • UO.Track() は現在のポイントを記憶します。出発すると、矢印は戻ります。ポイントは文字に追従して自動的に更新されません。
UO.Track();

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

引数と実行の流れ:

  • 現在の地図上の1450,1690へのローカル矢印を表示します。すでに 1 マス以内にいる場合は、Track(0) でそれを除去します。座標を置き換えてください。
return  RunScenario();
 object? RunScenario()
{
    var x = 1450;
    var y = 1690;
    UO.Track(1, x, y);
    if (Truth(UO.GetDistance(x, y) <= 1))
    {
        UO.Track(0);
    }

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

引数と実行の流れ:

  • MarkIfDistant 関数は同じ X/Y と距離を使用します。ターゲットが 2 セルより遠い場合は矢印を置き、そうでない場合は矢印を削除します。関数全体を以下に示します。ここには何の動きも達成への期待もありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        MarkIfDistant(1450, 1690);
        return null;
    }

    void MarkIfDistant(dynamic x, dynamic y)
    {
        if (Truth(UO.GetDistance(x, y) > 2))
        {
            UO.Track(1, x, y);
        }
        else
        {
            UO.Track(0);
        }
    }

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

コマンドの実装

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

UO.Track() — UO.Track()

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

結果: void / Unit.

呼び出し時:

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

public void Track() => Track(1, GetX(), GetY());

UO.Track(flag) — UO.Track(Any)

引数: flag (Any)

結果: void / Unit.

呼び出し時:

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

public void Track(InjectionValue flag) => Track(NumberConversions.ToInt(flag), GetX(), GetY());

UO.Track(flagRaw, x, y) — UO.Track(Any,Any,Any)

引数: flagRaw (Any), x (Any), y (Any)

結果: void / Unit.

呼び出し時:

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

public void Track(InjectionValue flagRaw, InjectionValue x, InjectionValue y)

            => Track(NumberConversions.ToInt(flagRaw), NumberConversions.ToInt(x), NumberConversions.ToInt(y));

UO.UseSkill

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

C# のシグネチャ

int UO.UseSkill(object? skillName);

サーバーにスキルを名前で使用するように要求します。パラメーターは 1 つだけです: skillName。 UO.UseSkill("Hiding") は自分の性格を隠そうとします。スキルにターゲットが必要な場合は、ゲームの照準器でターゲットを選択するか、別のコマンド WaitTargetObject で事前に選択します。

引数

  • skillName - 必須行 - スキルの正確な英語名 (「隠れる」、「解剖学」、「瞑想」など)。大文字と小文字は重要ではありません。スペースとアンダースコアは自動的に修正されません。スキル番号、 serial, self、距離、知名度、 maxZ ここでは期待は伝わりません。 全員の名前.

戻り値

int: 1/true - クライアントはリクエストを受け入れました。 0/false - 不明な名前またはローカル障害。これはスキルの成功、スキルの成長、またはステルスの兆候ではありません。ステルスについては、Hidden() をお読みください。 if UO.UseSkill("Hiding") { ... } と書くか、1/true と比較することができます。引数が欠落しているか、余分な引数があると呼び出しエラーになります。

動作

  • 単一形式: UO.UseSkill(skillName)。 2 番目以降のパラメータはありません。検索、ターゲット、待機は他のコマンドによって実行されます。
  • 非表示と瞑想では、別のオブジェクトを選択する必要はありません。彼らのためにWaitTargetObjectを準備しないでください。残りのバーストが次の部外者の視界に反応する可能性があります。
  • 解剖学ではスコープを使用します。 UseSkill(「Anatomy」) を呼び出し、マウスでキャラクターを選択します。自動的に応答するには、まず WaitTargetObject を実行し、次に UseSkill を実行します。これにより、サーバーの迅速な応答を見逃すことがなくなります。
  • UseSkill は、ターゲット キューを作成またはクリアしません。応答を準備している場合は、失敗/タイムアウト時に応答をクリアします CancelWaitTarget。他の目撃シナリオを同時に実行しないでください。
  • ポイズニング、挑発、その他の複数ステップのスキルには、追加のターゲット/ツールを個別に処理する必要があります。事前に選択された 1 つのオブジェクトでは、スキルは完了しません。
  • 辞書に載っている名前は、ツールなしでの使用を保証するものではありません。マイニングにはツールが必要です。呪文は Cast によって唱えられます。ルールと成功はサーバーによって決定されます。
  • 受け入れられたリクエストは TicksSkill を更新します。チームはステルス、効果、スキルの増加、キューの消費などを期待していません。

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

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

簡単な例

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

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

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

1。非表示による非表示 - 直接スクリプト

引数と実行の流れ:

  • 非表示にすることが唯一の議論です。 UO.Wait(1000) は応答する時間を与えます。 Hiddenは受信したフラグを読み取ります。 UseSkill から 1 に戻っても、脱出したことにはなりません。
if (!(Truth(UO.Connected())) || Truth(UO.Dead()) || Truth(UO.Hidden()))
{
    return null;
}
if (!(Truth(UO.UseSkill("Hiding"))))
{
    UO.Print("Hiding request rejected");
    return null;
}
await Delay(1000);
if (Truth(UO.Hidden()))
{
    UO.Print("Character is hidden");
}
else
{
    UO.Print("Not hidden yet; check the game journal");
}

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;

2。別途用意したターゲットによる解剖 - スクリプト機能

引数と実行の流れ:

  • 解剖学は唯一のパラメーター UseSkill; mobile は WaitTargetObject を指します。 ASC は、範囲チェックのために 16 進文字列 GetSerial を数値に変換します。 1500 — この例では待機するミリ秒。最後に残りのキューをクリアします。ゲーム内の解剖学の結果を参照してください。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var mobile = Asc(UO.GetSerial("lasttarget"), 0);
    if (Truth(mobile <= 0) || Truth(mobile >= 0x40000000) || !(Truth(UO.Exists(mobile))))
    {
        return null;
    }

    UO.CancelWaitTarget();
    try
    {
        UO.WaitTargetObject(mobile);
        if (Truth(UO.UseSkill("Anatomy")))
        {
            await Delay(1500);
        }
    }
    finally
    {
        UO.CancelWaitTarget();
    }

    return null;
}

int Asc(object? value, int fallback = 0)
{
    string text = Convert.ToString(value) ?? "";
    if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
        return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
    return int.TryParse(text, out int number) ? number : fallback;
}

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;

3。瞑想と魔力の観察 - スクリプトクラス

引数と実行の流れ:

  • 瞑想は目的もなく呼び出されます。 before は前のマナを保存します。2000 は観察期間です。マナの成長には他の理由があるかもしれません。これは瞑想の証拠でも、一定の回復率を約束するものでもありません。

スキル

スキル

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.Connected())) || Truth(UO.Dead()))
        {
            return null;
        }

        var before = UO.Mana();
        if (!(Truth(UO.UseSkill("Meditation"))))
        {
            UO.Print("Meditation request rejected");
            return null;
        }

        await Delay(2000);
        if (Truth(UO.Mana() > before))
        {
            UO.Print("Mana increased");
        }
        else
        {
            UO.Print("No mana increase observed yet");
        }

        return null;
    }

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

コマンドの実装

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

UO.UseSkill(skillName) — UO.UseSkill(String)

引数: skillName (String)

結果: int / Integer.

呼び出し時:

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

public int UseSkill(string skillName)

        {

            return UseSkillCore(skillName) ? 1 : 0;

        }
⚠️ **GitHub.com Fallback** ⚠️