Skip to content

DE API UO Str

Codex edited this page Oct 12, 2026 · 4 revisions

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

UO.Str

Home · C# · IDE · UO API · A–Z · Beispiele · Sprachen

C#-Signaturen

int UO.Str();

Liest den aktuellen Stärkewert (Strength) der Spielfigur.

Parameter

Es gibt keine Parameter.

Rückgabewert

int – aktuelle Statistikpunkte, 0..65535 im Client-Modell; nicht Prozentsatz, ID, Fähigkeit, Sperrmodus oder bool. 0 bedeutet auch fehlendes/gelöschtes Zeichen oder unzugängliches Objekt. Vergleichen Sie mit der numerischen Anforderung, nicht == true. Dies ist keine statistische Obergrenze oder ein garantierter Basiswert ohne Modifikatoren.

Verhalten

  • Der Befehl akzeptiert keine Argumente. Verwenden Sie die genauen Signaturen oben.
  • Liest Player.Strength, wenn Player existiert und nicht zerstört wurde; andernfalls 0. Ein vorhandener toter Charakter ist kein entferntes Objekt. Der Wert wird nicht aus HP, Mana oder Ausdauer berechnet.
  • GetStr/GetInt/GetDex akzeptieren ObjID. PlayerMobile-Daten sind nur für self verfügbar; für ein weiteres serial - 0, auch für geladenes mobile. Die Eigenschaften einer anderen Person werden nicht ersetzt oder erraten.
  • Aufrufen von Lesevorgängen im Spielstream mit der Möglichkeit, das Warten per Skript abzubrechen. Fragt den Status nicht ab, öffnet kein Ziel, sendet kein Paket, ändert die Eigenschaften nicht und fügt keine Verzögerung hinzu.
  • Bei jedem Aufruf werden die lokalen Daten neu gelesen. Die Variable speichert den Snapshot; Einzelne Lesevorgänge können unterschiedliche Serveraktualisierungen erhalten. Bei einem Ergebnis ungleich Null wird die Verbindung nicht getestet. Null kann ein Wert oder keine Daten sein.
  • Verwenden Sie die genauen C# Namen: UO.Str(), UO.Strength(), UO.GetStr() oder UO.GetStrength(). C# unterscheidet Groß- und Kleinschreibung.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

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

1. Punkte lesen und anzeigen - direktes Skript

Parameter und Ablauf:

  • value speichert das numerische Ergebnis; Convert.ToString formatiert es nur für das Magazin. Es gibt keine Argumente oder Charakteraktionen.
var value = UO.Str();
UO.Print("Strength: " + Convert.ToString(value));

2. Vergleichen Sie zwei Bilder – Skriptfunktion

Parameter und Ablauf:

  • vor und nach separaten 1000 ms; UO.Wait zum Beispiel hinzugefügt. change=after-before kann positiv, null oder negativ sein. An sich unterscheidet es nicht zwischen allen Zwischenaktualisierungen und dem Verlassen der Welt.
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. Vollständige Anforderungsvalidierungsfunktion – Skriptklasse

Parameter und Ablauf:

  • Minimum=80 ist ein Beispiel für eine Anforderung, kein Client-Limit. AttributeAtLeast(Minimum) lehnt das fehlende Zeichen ab, liest das Merkmal einmal und gibt bool zurück: true oder false, wenn >= Minimum. Die logische Bedeutung ergibt sich aus dem Vergleich, nicht aus dem Merkmal selbst.
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;
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.Str() — UO.Str()

Parameter: Keine Parameter.

Ergebnis: int / Integer.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

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

Clone this wiki locally