API UO FindDistance de - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.FindDistance

ClassicUO • Runtime API

Liest oder ändert den voreingestellten horizontalen Suchradius.

Genaue Syntax

UO.FindDistance() -> Integer
UO.FindDistance(value:Any) -> Unit

Parameter

  • value — Optionaler Integer. Ohne Argument wird gelesen; value setzt den Wert. Begrenzung auf 0..255; negative Werte werden 0, nicht unbegrenzt. Neuer Runtime: 18; wiederhergestellter Zustand kann abweichen. Dezimalzahlen werden gegen null abgeschnitten; numerische decimal/0x-Zeichenketten sind ebenfalls zulässig. Integer vermeidet implizite Konvertierung.

Rückgabewert

Ohne Argument: Integer, aktuelle Grenze (Entfernung in Feldern), keine Objekt-ID, Anzahl oder Boolean. 0 bedeutet eine Grenze von null, keinen Fehler. Mit value: Unit, kein Rückgabewert; weder TRUE/FALSE noch vorheriger Wert. Mit FindDistance() anschließend den gespeicherten Wert lesen.

Verhalten

  • Entfernung: max(abs(dx), abs(dy)) vom aktuellen Entfernungsursprung des Clients; diagonal zählt ein Feld. Grenze inklusive; 0 erlaubt nur dieselben X/Y. Bei bewegten Mobiles zählt die Endposition der Schrittwarteschlange.
  • Im aktuellen Skript-Runtime gespeichert und von dessen Prozeduren geteilt; unabhängige Runtimes besitzen eigene Werte. Lesen/Schreiben sucht nicht, löscht FindItem/FindCount/GetFoundItems nicht, sendet keine Pakete, bewegt niemanden und lädt keine entfernten Objekte.
  • FindTypeEx und FindTypesArrayEx nutzen die Grenzen am Boden, nicht im Behälter. Typ, Farbe, Ignore und geladene Objekte begrenzen weiterhin die Suche. FindAtCoord ignoriert beide Werte. Explizite distance/maxZ erweiterter Befehle können sie überschreiben; -1 dort nutzt den Standard, während -1 als Einstellung zu 0 wird. FindList filtert Z auch bei Behältern; die Behälterausnahme gilt dafür nicht.
  • Vor einer temporären Suche speichern und in Finally wiederherstellen; kein automatisches Zurücksetzen. Finally gilt bei normalem Ende und abfangbaren Skriptfehlern. Notabbruch ist kein Aufräumverfahren.
  • Referenz: Stealth FindDistance. Dieser Client behält eigene Standardwerte/Grenzen: FindDistance 18 / 0..255; FindVertical 2 / 0..120. Basic-Syntax und erweiterte Filter beschreiben dieses Projekt.

Interne Funktionen: vom Aufruf zum Ergebnis

Tatsächliche interne Schritte. CountGroundInRange ist eine vollständig definierte Benutzerfunktion, kein versteckter eingebauter Befehl.

1. ExecuteStealthCompatibility

Ohne Argument wird gelesen; mit einem Argument wird value konvertiert und geschrieben. Metadaten unterscheiden Integer und Unit.

Ohne Argument: Integer, aktuelle Grenze (Entfernung in Feldern), keine Objekt-ID, Anzahl oder Boolean. 0 bedeutet eine Grenze von null, keinen Fehler. Mit value: Unit, kein Rückgabewert; weder TRUE/FALSE noch vorheriger Wert. Mit FindDistance() anschließend den gespeicherten Wert lesen.

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

2. GetFindDistance

Die Bridge liest die Runtime-Einstellung oder begrenzt und speichert den Integer. Keine Weltsuche.

Ohne Argument: Integer, aktuelle Grenze (Entfernung in Feldern), keine Objekt-ID, Anzahl oder Boolean. 0 bedeutet eine Grenze von null, keinen Fehler. Mit value: Unit, kein Rückgabewert; weder TRUE/FALSE noch vorheriger Wert. Mit FindDistance() anschließend den gespeicherten Wert lesen.

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

3. SetFindDistance

Die Bridge liest die Runtime-Einstellung oder begrenzt und speichert den Integer. Keine Weltsuche.

Optionaler Integer. Ohne Argument wird gelesen; value setzt den Wert. Begrenzung auf 0..255; negative Werte werden 0, nicht unbegrenzt. Neuer Runtime: 18; wiederhergestellter Zustand kann abweichen. Dezimalzahlen werden gegen null abgeschnitten; numerische decimal/0x-Zeichenketten sind ebenfalls zulässig. Integer vermeidet implizite Konvertierung.

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

4. FindType

Eine spätere Suche liest die Einstellung ohne explizite Überschreibung. Boden-Items und Mobiles durchlaufen die entsprechenden Entfernungs- und Höhenfilter.

FindTypeEx und FindTypesArrayEx nutzen die Grenzen am Boden, nicht im Behälter. Typ, Farbe, Ignore und geladene Objekte begrenzen weiterhin die Suche. FindAtCoord ignoriert beide Werte. Explizite distance/maxZ erweiterter Befehle können sie überschreiben; -1 dort nutzt den Standard, während -1 als Einstellung zu 0 wird. FindList filtert Z auch bei Behältern; die Behälterausnahme gilt dafür nicht.

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

5. FindList

Eine spätere Suche liest die Einstellung ohne explizite Überschreibung. Boden-Items und Mobiles durchlaufen die entsprechenden Entfernungs- und Höhenfilter.

FindTypeEx und FindTypesArrayEx nutzen die Grenzen am Boden, nicht im Behälter. Typ, Farbe, Ignore und geladene Objekte begrenzen weiterhin die Suche. FindAtCoord ignoriert beide Werte. Explizite distance/maxZ erweiterter Befehle können sie überschreiben; -1 dort nutzt den Standard, während -1 als Einstellung zu 0 wird. FindList filtert Z auch bei Behältern; die Behälterausnahme gilt dafür nicht.

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

Im aktuellen Skript-Runtime gespeichert und von dessen Prozeduren geteilt; unabhängige Runtimes besitzen eigene Werte. Lesen/Schreiben sucht nicht, löscht FindItem/FindCount/GetFoundItems nicht, sendet keine Pakete, bewegt niemanden und lädt keine entfernten Objekte.

Beispiele

Lesen, setzen und Begrenzung prüfen

# Lesen, setzen und Begrenzung prüfen
#
# Liest oder ändert den voreingestellten horizontalen Suchradius.
#
# Ohne Argument: Integer, aktuelle Grenze (Entfernung in Feldern), keine Objekt-ID, Anzahl oder
# Boolean. 0 bedeutet eine Grenze von null, keinen Fehler. Mit value: Unit, kein Rückgabewert;
# weder TRUE/FALSE noch vorheriger Wert. Mit FindDistance() anschließend den gespeicherten Wert
# lesen.

SUB Main()
    # previous speichert den tatsächlichen Wert. value:=5 setzt eine normale Grenze; 1000 wird auf
    # 255 begrenzt. Print liest separat. Finally stellt previous wieder her.

    VAR previous = UO.FindDistance()
    TRY
        UO.FindDistance(value:=5)
        UO.Print(CStr(UO.FindDistance()))
        UO.FindDistance(1000)
        UO.Print(CStr(UO.FindDistance()))
    FINALLY
        UO.FindDistance(previous)
    END TRY
END SUB

Erläuterung der Parameter und Ausführung:

  • previous speichert den tatsächlichen Wert. value:=5 setzt eine normale Grenze; 1000 wird auf 255 begrenzt. Print liest separat. Finally stellt previous wieder her.

Temporäre Bodensuche

# Temporäre Bodensuche
#
# Liest oder ändert den voreingestellten horizontalen Suchradius.
#
# Ohne Argument: Integer, aktuelle Grenze (Entfernung in Feldern), keine Objekt-ID, Anzahl oder
# Boolean. 0 bedeutet eine Grenze von null, keinen Fehler. Mit value: Unit, kein Rückgabewert;
# weder TRUE/FALSE noch vorheriger Wert. Mit FindDistance() anschließend den gespeicherten Wert
# lesen.

SUB Main()
    # previous erhält den Wert des Aufrufers. 5 ändert nur FindDistance; die andere Grenze bleibt.
    # 0x0EED: Goldgrafik; -1: beliebige Farbe; Container=-1: Welt; FALSE: keine Behälterrekursion.
    # id ist eine Serial, <> 0 prüft Vorhandensein. FindCount zählt Objekte/Stapel. Finally stellt
    # die Einstellung, nicht die Ergebnisliste wieder her.

    VAR previous = UO.FindDistance()
    TRY
        UO.FindDistance(5)
        VAR id = UO.FindTypeEx(0x0EED, -1, -1, FALSE)
        IF id <> 0 THEN
            UO.Print(HEX(id) + ':' + CStr(UO.FindCount()))
        ELSE
            UO.Print('0')
        END IF
    FINALLY
        UO.FindDistance(previous)
    END TRY
END SUB

Erläuterung der Parameter und Ausführung:

  • previous erhält den Wert des Aufrufers. 5 ändert nur FindDistance; die andere Grenze bleibt. 0x0EED: Goldgrafik; -1: beliebige Farbe; Container=-1: Welt; FALSE: keine Behälterrekursion. id ist eine Serial, <> 0 prüft Vorhandensein. FindCount zählt Objekte/Stapel. Finally stellt die Einstellung, nicht die Ergebnisliste wieder her.

Vollständige Funktion CountGroundInRange

# Vollständige Funktion CountGroundInRange
#
# Liest oder ändert den voreingestellten horizontalen Suchradius.
#
# Ohne Argument: Integer, aktuelle Grenze (Entfernung in Feldern), keine Objekt-ID, Anzahl oder
# Boolean. 0 bedeutet eine Grenze von null, keinen Fehler. Mit value: Unit, kein Rückgabewert;
# weder TRUE/FALSE noch vorheriger Wert. Mit FindDistance() anschließend den gespeicherten Wert
# lesen.

SUB Main()
    # CountGroundInRange(graphic, radius, height) speichert beide Grenzen, setzt radius=5 und
    # height=10, sucht graphic=0x0EED und liefert FindCount(). Ein Stapel ist ein Objekt.
    # Vollständige Funktion unter Main. Finally stellt beide Grenzen auch bei Return wieder her;
    # Suchergebnisse bleiben verfügbar.

    VAR count = CountGroundInRange(0x0EED, 5, 10)
    UO.Print(CStr(count))
END SUB

FUNCTION CountGroundInRange(graphic, radius, height)
    VAR oldDistance = UO.FindDistance()
    VAR oldVertical = UO.FindVertical()
    TRY
        UO.FindDistance(radius)
        UO.FindVertical(height)
        UO.FindTypeEx(graphic, -1, -1, FALSE)
        RETURN UO.FindCount()
    FINALLY
        UO.FindDistance(oldDistance)
        UO.FindVertical(oldVertical)
    END TRY
END FUNCTION

Erläuterung der Parameter und Ausführung:

  • CountGroundInRange(graphic, radius, height) speichert beide Grenzen, setzt radius=5 und height=10, sucht graphic=0x0EED und liefert FindCount(). Ein Stapel ist ein Objekt. Vollständige Funktion unter Main. Finally stellt beide Grenzen auch bei Return wieder her; Suchergebnisse bleiben verfügbar.

en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic