Skip to content

API UO PetsMax de

Codex edited this page Sep 22, 2026 · 1 revision

UO.PetsMax

ClassicUO / Basic IDE

Home · Все команды · Каталоги

Prüft, ob Platz für ein weiteres gezähmtes oder beschworenes Wesen vorhanden ist. Followers zählt belegte Kontrollplätze, FollowersMax die Gesamtgrenze. Dies ist weder die Zahl naher Tiere noch der Bewegungsbefehl Follow.

Liest den Statuszähler des aktuellen Spielers: maximale Kontrollplätze für Begleiter.

Genaue Syntax

UO.PetsMax() -> Integer

Parameter

Keine Parameter.

Rückgabewert

Integer — maximale Kontrollplätze für Begleiter, 0..255 im Modell. 0 kann echt, unbekannt oder fehlender/zerstörter Player sein. Menge, kein Boolean, ID oder type: 1 bedeutet eine Einheit, keinen Erfolg. Keine Objektsuche und kein Array.

Verhalten

  • Bei 3 von 5 belegten Plätzen bleiben 2 frei. 4 kann vier Wesen mit je einem Platz oder eines mit vier Plätzen bedeuten. Für zwei Plätze gilt maximum - current >= 2. Kosten und Grenze bestimmt der Server; nicht pauschal 5 verwenden.
  • Null beweist keinen Verlust oder Tod: Statusdaten können fehlen oder veraltet sein. Ein Anstieg identifiziert kein bestimmtes gezähmtes Tier. Tier und Servermeldungen prüfen. Stallplätze sind ein anderer Wert.
  • Keine Argumente. Die angezeigten Signaturen beachten.
  • Liest Player.FollowersMax im Spielthread, sofern Player vorhanden und nicht zerstört ist; sonst 0. Keine Ausrüstungssuche, Bonusberechnung, Statusanforderung oder Wartezeit. Ein vorhandener Geist ist kein zerstörter Player.
  • PetsMax/FollowersMax liest ab Status type 3 die gesamte erlaubte Kontrollplatzgrenze, nicht freie Plätze. Die Belegung kann darüber liegen. Freie Kapazität als maximum - current berechnen und negative Ergebnisse auf 0 begrenzen. Kein Freilassen, Zähmen oder Beschwören.
  • CharacterStatus prüft den festen Körper vor Änderungen. Weight stammt aus eigenem erweitertem Status, Plätze ab Typ 3, Luck ab Typ 4, Server-WeightMax ab Typ 5. Kompakte/alte Pakete ohne optionalen Zähler behalten den Cache. Ein neuer Player startet bei null; kein Nachweis frischer Daten.
  • RegisterCharacterGetterAliases ergänzt fehlende parameterlose Funktionen und intrinsische Namen. Bestehende Zweige lesen dasselbe Feld. Namen sind unabhängig von Großschreibung; intrinsische Werte ohne Klammern werden neu gelesen, sofern keine Variable sie verdeckt.
  • Jeder Aufruf liest neu. Variablen speichern Momentaufnahmen; getrennte Aufrufe können verschiedene Serverupdates sehen. Ein Wert ungleich 0 prüft keine Verbindung; 0 kann ein Wert oder fehlende Daten sein.

Interne Funktionen: vom Aufruf zum Ergebnis

Native Schritte des Cachelesens. CanCarry, LuckAtLeast oder CanAddFollower im Beispiel ist eine vollständige BASIC-Hilfsfunktion, keine versteckte native Aktion. Inventar und Begleiter bleiben unverändert.

1. RegisterCharacterGetterAliases

RegisterCharacterGetterAliases ergänzt fehlende parameterlose Funktionen und intrinsische Namen. Bestehende Zweige lesen dasselbe Feld. Namen sind unabhängig von Großschreibung; intrinsische Werte ohne Klammern werden neu gelesen, sofern keine Variable sie verdeckt.

PetsMax FollowersMax GetPetsMax GetFollowersMax.

Projektquelle: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; Funktion RegisterCharacterGetterAliases.

2. Invoke

Liest Player.FollowersMax im Spielthread, sofern Player vorhanden und nicht zerstört ist; sonst 0. Keine Ausrüstungssuche, Bonusberechnung, Statusanforderung oder Wartezeit. Ein vorhandener Geist ist kein zerstörter Player.

Invoke liest auf dem Spielthread; Warten kann durch Skriptabbruch enden. Kein Paket, Statusabruf, Zielcursor, Ändern des Attributs oder eingebauter Wartezeitraum.

Projektquelle: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; Funktion Invoke.

3. CharacterStatus

CharacterStatus prüft den festen Körper vor Änderungen. Weight stammt aus eigenem erweitertem Status, Plätze ab Typ 3, Luck ab Typ 4, Server-WeightMax ab Typ 5. Kompakte/alte Pakete ohne optionalen Zähler behalten den Cache. Ein neuer Player startet bei null; kein Nachweis frischer Daten.

PetsMax/FollowersMax liest ab Status type 3 die gesamte erlaubte Kontrollplatzgrenze, nicht freie Plätze. Die Belegung kann darüber liegen. Freie Kapazität als maximum - current berechnen und negative Ergebnisse auf 0 begrenzen. Kein Freilassen, Zähmen oder Beschwören.

Projektquelle: src/ClassicUO.Client/Network/PacketHandlers.cs; Funktion CharacterStatus.

4. Clear

World.Clear entfernt Player. Bis Spieler und Daten wieder vorhanden sind, liefern Aufrufe 0. Ein gespeicherter Wert beweist nach Wiederverbindung keine erfüllte Anforderung.

Integer — maximale Kontrollplätze für Begleiter, 0..255 im Modell. 0 kann echt, unbekannt oder fehlender/zerstörter Player sein. Menge, kein Boolean, ID oder type: 1 bedeutet eine Einheit, keinen Erfolg. Keine Objektsuche und kein Array.

Projektquelle: src/ClassicUO.Client/Game/World.cs; Funktion Clear.

Jeder Aufruf liest neu. Variablen speichern Momentaufnahmen; getrennte Aufrufe können verschiedene Serverupdates sehen. Ein Wert ungleich 0 prüft keine Verbindung; 0 kann ein Wert oder fehlende Daten sein.

Beispiele

Freie Kontrollplätze berechnen

# Freie Kontrollplätze berechnen
#
# Prüft, ob Platz für ein weiteres gezähmtes oder beschworenes Wesen vorhanden ist. Followers
# zählt belegte Kontrollplätze, FollowersMax die Gesamtgrenze. Dies ist weder die Zahl naher
# Tiere noch der Bewegungsbefehl Follow.
#
# Liest den Statuszähler des aktuellen Spielers: maximale Kontrollplätze für Begleiter.
#
# Integermaximale Kontrollplätze für Begleiter, 0..255 im Modell. 0 kann echt, unbekannt oder
# fehlender/zerstörter Player sein. Menge, kein Boolean, ID oder type: 1 bedeutet eine Einheit,
# keinen Erfolg. Keine Objektsuche und kein Array.

SUB Main()
    # current ist belegt, maximum die Grenze, freeSlots die Differenz. Bei fehlender Grenze oder
    # widersprüchlichen Daten endet das Beispiel. Es liest gespeicherten Status ohne
    # Aktualisierungsanfrage.

    VAR current = UO.Followers()
    VAR maximum = UO.PetsMax()
    IF UO.Self() = 0 OR maximum <= 0 OR current > maximum THEN
        UO.Print("Follower status is unavailable or inconsistent")
        RETURN
    END IF
    VAR freeSlots = maximum - current
    UO.Print("Control slots: " + CStr(current) + "/" + CStr(maximum))
    UO.Print("Free slots: " + CStr(freeSlots))
END SUB

Erläuterung der Parameter und Ausführung:

  • current ist belegt, maximum die Grenze, freeSlots die Differenz. Bei fehlender Grenze oder widersprüchlichen Daten endet das Beispiel. Es liest gespeicherten Status ohne Aktualisierungsanfrage.

Kapazität vor Animal Taming prüfen

# Kapazität vor Animal Taming prüfen
#
# Prüft, ob Platz für ein weiteres gezähmtes oder beschworenes Wesen vorhanden ist. Followers
# zählt belegte Kontrollplätze, FollowersMax die Gesamtgrenze. Dies ist weder die Zahl naher
# Tiere noch der Bewegungsbefehl Follow.
#
# Liest den Statuszähler des aktuellen Spielers: maximale Kontrollplätze für Begleiter.
#
# Integermaximale Kontrollplätze für Begleiter, 0..255 im Modell. 0 kann echt, unbekannt oder
# fehlender/zerstörter Player sein. Menge, kein Boolean, ID oder type: 1 bedeutet eine Einheit,
# keinen Erfolg. Keine Objektsuche und kein Array.

SUB Main()
    # Zuerst das Tier für lasttarget auswählen. requiredSlots=2 durch dessen Serverkosten ersetzen.
    # Ohne Platz werden weder Ziel noch Fertigkeit gestartet. Das Ziel wird vor UseSkill("Animal
    # Taming") vorgemerkt; nur ein Argument. Erfolg hängt auch von Fertigkeit, Entfernung und Server
    # ab.

    VAR requiredSlots = 2
    VAR current = UO.Followers()
    VAR maximum = UO.PetsMax()
    IF UO.Self() = 0 OR maximum <= 0 OR maximum - current < requiredSlots THEN
        UO.Print("Not enough known control slots")
        RETURN
    END IF
    VAR animal = UO.LastTarget()
    IF animal = 0 THEN
        UO.Print("Select the animal first")
        RETURN
    END IF
    UO.WaitTargetObject(animal)
    UO.UseSkill("Animal Taming")
END SUB

Erläuterung der Parameter und Ausführung:

  • Zuerst das Tier für lasttarget auswählen. requiredSlots=2 durch dessen Serverkosten ersetzen. Ohne Platz werden weder Ziel noch Fertigkeit gestartet. Das Ziel wird vor UseSkill("Animal Taming") vorgemerkt; nur ein Argument. Erfolg hängt auch von Fertigkeit, Entfernung und Server ab.

Prüfung für verschiedene Kosten wiederverwenden

# Prüfung für verschiedene Kosten wiederverwenden
#
# Prüft, ob Platz für ein weiteres gezähmtes oder beschworenes Wesen vorhanden ist. Followers
# zählt belegte Kontrollplätze, FollowersMax die Gesamtgrenze. Dies ist weder die Zahl naher
# Tiere noch der Bewegungsbefehl Follow.
#
# Liest den Statuszähler des aktuellen Spielers: maximale Kontrollplätze für Begleiter.
#
# Integermaximale Kontrollplätze für Begleiter, 0..255 im Modell. 0 kann echt, unbekannt oder
# fehlender/zerstörter Player sein. Menge, kein Boolean, ID oder type: 1 bedeutet eine Einheit,
# keinen Erfolg. Keine Objektsuche und kein Array.

SUB Main()
    # CanAddFollower ist die vollständig definierte BASIC-Hilfsfunktion. extraSlots sind zusätzliche
    # Plätze, kein type/ID. 1/True bzw. 0/False prüft den gespeicherten Stand. Sie zähmt und
    # beschwört nichts; unmittelbar vor der Aktion erneut prüfen.

    IF CanAddFollower(2) THEN
        UO.Print("Capacity check passed; verify the creature cost before acting")
    ELSE
        UO.Print("Insufficient capacity or unavailable status")
    END IF
END SUB

SUB CanAddFollower(extraSlots)
    IF extraSlots < 0 OR UO.Self() = 0 THEN
        RETURN FALSE
    END IF
    VAR current = UO.PetsCurrent()
    VAR maximum = UO.PetsMax()
    IF maximum <= 0 THEN
        RETURN FALSE
    END IF
    RETURN extraSlots <= maximum - current
END SUB

Erläuterung der Parameter und Ausführung:

  • CanAddFollower ist die vollständig definierte BASIC-Hilfsfunktion. extraSlots sind zusätzliche Plätze, kein type/ID. 1/True bzw. 0/False prüft den gespeicherten Stand. Sie zähmt und beschwört nichts; unmittelbar vor der Aktion erneut prüfen.

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

Clone this wiki locally