DE UO Topic buffs effects - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

Buffs und Effekte

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

Bedienfeld für Effekte und Statusprüfung. Eine negative Statusprüfung bedeutet nicht, dass alle möglichen Auswirkungen fehlen.

Abschnitte

Thema Befehle und Erklärungen
Buff Bar UO.GetBuffBarInfo
Poison UO.Poisoned
Paralyze UO.Paralyzed
Frozen UO.Frozen
Flying UO.Flying
Widerstand UO.GetResist · UO.GetPhysicalResist · UO.GetFireResist · UO.GetColdResist · UO.GetPoisonResist · UO.GetEnergyResist

Alle Theme-Befehle

Buff-Bar

UO.GetBuffBarInfo

Beispiele zum Thema

Jede Befehlskarte verfügt über mehrere unabhängige Szenarien: Direktcode, Funktionen und Klassen. Nachfolgend finden Sie ausgewählte kurze Szenarien; Einschränkungen und eine vollständige Analyse sind geplant.

UO.GetBuffBarInfo

Parameter, Ergebnis und alle Szenarien

var buffs = UO.GetBuffBarInfo();
for (int i = (int)(0); i <= ArrayLength(buffs)-1; i += (int)(1))
{
    UO.Print(buffs[i]);
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

UO.Paralyzed

Parameter, Ergebnis und alle Szenarien

var state = UO.Paralyzed();
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;

Vollständige Befehlsreferenz


UO.GetBuffBarInfo

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

C#-Signaturen

dynamic UO.GetBuffBarInfo();

Gibt einen Schnappschuss der Buff-Symbole des aktuellen Charakters zurück.

Parameter

Es gibt keine Parameter.

Rückgabewert

Array von Zeilen im Format type|graphic|remainingMilliseconds|text. remainingMilliseconds=-1 für Timer=uint.MaxValue; sonst max(0,Timer-Time.Ticks). Keine Zeichen/Symbole – leeres Array.

Verhalten

  • Die Daten werden von Player.BuffIcons.Values ​​übernommen, ohne dass eine Anfrage an den Server gestellt wird. Der Wert remainingMilliseconds bezieht sich auf den Client-Timer und ist möglicherweise veraltet; -1 bezeichnet einen unbegrenzten Timer, keinen Fehler. Text kann | enthalten Es wird also nicht erwartet, dass es genau vier einfache Wörter enthält.

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.

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

1. Zeigen Sie einen Schnappschuss der Buff-Leiste an – direktes Skript

Parameter und Ablauf:

  • Jede Zeile enthält type, graphic, Timer-Rest und Text.
var buffs = UO.GetBuffBarInfo();
for (int i = (int)(0); i <= ArrayLength(buffs)-1; i += (int)(1))
{
    UO.Print(buffs[i]);
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

2. Anzahl bekannter Buffs – Skriptfunktion

Parameter und Ablauf:

  • Die Größe spiegelt die aktuellen Client-Symbole wider.
return  RunScenario();
 object? RunScenario()
{
    var buffs = UO.GetBuffBarInfo();
    UO.Print(Convert.ToString(ArrayLength(buffs)));
    return null;
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

3. Frischer Schuss nach einer Pause – Drehbuchunterricht

Parameter und Ablauf:

  • Der neue Aufruf liest den aktuellen Satz erneut; Das alte Array bleibt eine Momentaufnahme.
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.GetBuffBarInfo();
        await Delay(1000);
        var after = UO.GetBuffBarInfo();
        UO.Print(Convert.ToString(ArrayLength(before)) + " " + Convert.ToString(ArrayLength(after)));
        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

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.GetBuffBarInfo() — UO.GetBuffBarInfo()

Parameter: Keine Parameter.

Ergebnis: dynamic / Any.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

case "getbuffbarinfo": return StringArray(bridge.GetBuffBarInfo());
⚠️ **GitHub.com Fallback** ⚠️