Skip to content

ZH TW API UO Str

Codex edited this page Oct 12, 2026 · 4 revisions

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

UO.Str

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

C# 簽章

int UO.Str();

讀取角色目前的力量值(Strength)。

參數

沒有參數。

傳回值

int — 當前統計點,客戶端模型中的0..65535;不是百分比、ID、技能、鎖定模式或bool。 0 也意味著遺失/刪除的字元或無法存取的物件。與數值要求比較,不==true。這不是統計上限或沒有修飾符的保證基值。

行為

  • 此指令不帶參數。使用上面的確切簽名。
  • 如果 Player 存在且尚未被銷毀,則讀取 Player.Strength;否則0。存在的死亡角色並不是被移除的物體。此統計數據不是根據HP、法力或耐力計算的。
  • GetStr/GetInt/GetDex 接受 ObjID。 PlayerMobile数据仅适用于self;对于另一个serial - 0,甚至对于加载的mobile。別人的特徵不能被取代或猜測。
  • 呼叫遊戲流上的讀取,並能夠透過腳本取消等待。不查詢狀態、不開啟目標、不發送資料包、不改變特性、不新增延遲。
  • 每次呼叫都會重新讀取本地資料。變數儲存快照;各個讀取可能會收到不同的伺服器更新。非零結果不會測試連線。零可以是一個值,也可以沒有資料。
  • 請使用正確的 C# 名稱:UO.Str()、UO.Strength()、UO.GetStr() 或 UO.GetStrength()。C# 區分大小寫。

獨立的 C# 腳本

每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。

簡單範例

將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。

將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。

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

1。讀取並顯示點 - 直接腳本

參數與執行流程:

  • value 儲存數值結果;轉換。 ToString 只是將其格式化為雜誌。沒有爭論或角色動作。
var value = UO.Str();
UO.Print("Strength: " + Convert.ToString(value));

2。比較兩個圖像 - 腳本函數

參數與執行流程:

  • 前後分別1000 ms; UO.Wait 加入範例。 Change=after-before 可以是正數、零或負數。就其本身而言,它並不區分所有中間更新和退出世界。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.Str();
    await Delay(1000);
    var after = UO.Str();
    var change = after - before;
    UO.Print("Change: " + Convert.ToString(change));
    return null;
}

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

3。完整的需求驗證功能-腳本類

參數與執行流程:

  • 最小值 =80 是要求的範例,而不是客戶端限制。 AttributeAtLeast(最小值) 拒絕遺失的字符,讀取一次特徵並傳回 bool: true 或 false 如果 >= 最小值。邏輯意義是透過比較給出的,而不是特徵本身。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        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.Str();
        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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.Str() — UO.Str()

參數: 沒有參數。

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "str": return new InjectionValue(bridge.Strength);

Clone this wiki locally