Skip to content

API UO FunRunning de

Codex edited this page Oct 3, 2026 · 1 revision

UO.FunRunning

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

UO.CallSub · UO.FunRunning · UO.SubExists

ClassicUO • Runtime API

Prüft, ob die Prozedur eine aktive Ausführung besitzt, einschließlich einer pausierten. Verhindert unnötige Neustarts vorhandener Beobachter.

Genaue Syntax

UO.FunRunning(subrutineName:String) -> Integer

Parameter

  • subrutineName — Erforderlicher String subrutineName: Sub-/Function-Name im Katalog, z. B. WeightWatch. Kein Pfad, Dateiname, Laufindex, Quelltext oder durch SetScriptName geänderter Anzeigename. Groß-/Kleinschreibung wird ignoriert, Leerzeichen nicht entfernt. Prozedurargumente lassen sich nicht übergeben.

Rückgabewert

Integer: 1 (True) bei vorhandenem, nicht abgebrochenem Lauf, auch bei manueller oder Verbindungspause; 0 (False) bei unbekanntem, nicht gestarteten, beendeten oder abbrechenden Lauf. If UO.FunRunning(name), = 1 und = True sind gültig. GetScriptState unterscheidet läuft (1) und pausiert (2).

Verhalten

  • Nur der Katalog dieser Sitzung wird durchsucht. Bei gleichen Namen zählt der erste Treffer: eindeutige Namen verwenden. Diese Befehle laden keine unbekannte Datei und durchsuchen nicht den Datenträger.
  • CallSub übergibt null Argumente. Private, Syntaxfehler, Pflichtparameter, deaktiviertes Basic oder die Einzelprozedurregel können den Start ablehnen; IDE-Status/Fehler prüfen. Ein aktiver Lauf wird weder dupliziert noch fortgesetzt. Ein Start nach Abbruch kann auf Bereinigung warten. Der Controller wartet nicht auf das Aufgabenende.
  • FunRunning nutzt ursprünglichen Prozedurnamen und Schlüssel, keinen umbenannten Anzeigenamen. Pause behält den Lauf und ergibt 1. Abbruch ergibt bereits während der Bereinigung 0. Prüfung und Folgeaufruf sind nicht atomar; die Aufgabe kann dazwischen enden.
  • SubExists kann auch für Private oder fehlerhafte Definitionen 1 liefern. Stoppen oder Schließen des Editor-Tabs entfernt nicht zwingend den Katalogeintrag. Neuladen einer geänderten Datei entfernt überholte Definitionen. Eine nur in einer separaten Laufzeit geladene Funktion muss dem Manager nicht bekannt sein.

Interne Funktionen: vom Aufruf zum Ergebnis

Dies sind echte Implementierungsschritte; C#-Namen sind keine zusätzlichen UO-Befehle. Alle ausführbaren Basic-Hilfsfunktionen sind vollständig enthalten.

1. FunRunning

Erforderlicher String subrutineName: Sub-/Function-Name im Katalog, z. B. WeightWatch. Kein Pfad, Dateiname, Laufindex, Quelltext oder durch SetScriptName geänderter Anzeigename. Groß-/Kleinschreibung wird ignoriert, Leerzeichen nicht entfernt. Prozedurargumente lassen sich nicht übergeben.

Integer: 1 (True) bei vorhandenem, nicht abgebrochenem Lauf, auch bei manueller oder Verbindungspause; 0 (False) bei unbekanntem, nicht gestarteten, beendeten oder abbrechenden Lauf. If UO.FunRunning(name), = 1 und = True sind gültig. GetScriptState unterscheidet läuft (1) und pausiert (2).

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

2. FindProcedureByName

Nur der Katalog dieser Sitzung wird durchsucht. Bei gleichen Namen zählt der erste Treffer: eindeutige Namen verwenden. Diese Befehle laden keine unbekannte Datei und durchsuchen nicht den Datenträger.

SubExists kann auch für Private oder fehlerhafte Definitionen 1 liefern. Stoppen oder Schließen des Editor-Tabs entfernt nicht zwingend den Katalogeintrag. Neuladen einer geänderten Datei entfernt überholte Definitionen. Eine nur in einer separaten Laufzeit geladene Funktion muss dem Manager nicht bekannt sein.

Projektquelle: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; Funktion FindProcedureByName.

3. FunRunning

Prüft, ob die Prozedur eine aktive Ausführung besitzt, einschließlich einer pausierten. Verhindert unnötige Neustarts vorhandener Beobachter.

FunRunning nutzt ursprünglichen Prozedurnamen und Schlüssel, keinen umbenannten Anzeigenamen. Pause behält den Lauf und ergibt 1. Abbruch ergibt bereits während der Bereinigung 0. Prüfung und Folgeaufruf sind nicht atomar; die Aufgabe kann dazwischen enden.

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

Dies sind echte Implementierungsschritte; C#-Namen sind keine zusätzlichen UO-Befehle. Alle ausführbaren Basic-Hilfsfunktionen sind vollständig enthalten.

Beispiele

Nur ohne aktiven Lauf starten

# Nur ohne aktiven Lauf starten
#
# Prüft, ob die Prozedur eine aktive Ausführung besitzt, einschließlich einer pausierten.
# Verhindert unnötige Neustarts vorhandener Beobachter.
#
# Integer: 1 (True) bei vorhandenem, nicht abgebrochenem Lauf, auch bei manueller oder
# Verbindungspause; 0 (False) bei unbekanntem, nicht gestarteten, beendeten oder abbrechenden
# Lauf. If UO.FunRunning(name), = 1 und = True sind gültig. GetScriptState unterscheidet läuft
# (1) und pausiert (2).

SUB Main()
    # FunRunning = 0 erlaubt eine Anfrage. Pause liefert 1 und wird nicht aufgehoben.
    # Jedes Beispiel separat speichern, in IDE/Manager laden und Main starten, damit die Prozeduren
    # registriert sind. WeightWatch/ManaWatch sind vollständig definiert: drei
    # Gewichts-/Manamessungen, Wait(1000) = 1000 ms, Ausgabe nur in der Welt. Endliche Beobachtung;
    # Pausen verlängern die Dauer. Für zwei Aufgaben parallele Prozeduren erlauben.

    If Not UO.FunRunning("WeightWatch") Then
        UO.CallSub("WeightWatch")
    End If
END SUB

Sub WeightWatch()
    Dim sample
    For sample = 1 To 3
        If UO.Connected() Then
            UO.Print("Weight: " & CStr(UO.Weight()))
        End If
        UO.Wait(1000)
    Next
End Sub

Erläuterung der Parameter und Ausführung:

  • FunRunning = 0 erlaubt eine Anfrage. Pause liefert 1 und wird nicht aufgehoben.
  • Jedes Beispiel separat speichern, in IDE/Manager laden und Main starten, damit die Prozeduren registriert sind. WeightWatch/ManaWatch sind vollständig definiert: drei Gewichts-/Manamessungen, Wait(1000) = 1000 ms, Ausgabe nur in der Welt. Endliche Beobachtung; Pausen verlängern die Dauer. Für zwei Aufgaben parallele Prozeduren erlauben.

Lauf und Pause unterscheiden

# Lauf und Pause unterscheiden
#
# Prüft, ob die Prozedur eine aktive Ausführung besitzt, einschließlich einer pausierten.
# Verhindert unnötige Neustarts vorhandener Beobachter.
#
# Integer: 1 (True) bei vorhandenem, nicht abgebrochenem Lauf, auch bei manueller oder
# Verbindungspause; 0 (False) bei unbekanntem, nicht gestarteten, beendeten oder abbrechenden
# Lauf. If UO.FunRunning(name), = 1 und = True sind gültig. GetScriptState unterscheidet läuft
# (1) und pausiert (2).

SUB Main()
    # NamedRunState sucht den Anzeigenamen WeightWatch und liefert GetScriptState: 1, 2 oder 0.
    # Eindeutiger unveränderter Name und keine gleichzeitige Listenänderung vorausgesetzt. Nach
    # SetScriptName neuen Namen oder Pfad suchen; FunRunning nutzt weiterhin den Quellnamen.
    # Jedes Beispiel separat speichern, in IDE/Manager laden und Main starten, damit die Prozeduren
    # registriert sind. WeightWatch/ManaWatch sind vollständig definiert: drei
    # Gewichts-/Manamessungen, Wait(1000) = 1000 ms, Ausgabe nur in der Welt. Endliche Beobachtung;
    # Pausen verlängern die Dauer. Für zwei Aufgaben parallele Prozeduren erlauben.

    If UO.FunRunning("WeightWatch") Then
        Return NamedRunState("WeightWatch")
    End If
    Return 0
END SUB

Function NamedRunState(name) As Integer
    Dim indices = UO.GetScriptsList()
    For Each index In indices
        If UO.GetScriptName(index) = name Then
            Return UO.GetScriptState(index)
        End If
    Next
    Return 0
End Function

Sub WeightWatch()
    Dim sample
    For sample = 1 To 3
        If UO.Connected() Then
            UO.Print("Weight: " & CStr(UO.Weight()))
        End If
        UO.Wait(1000)
    Next
End Sub

Erläuterung der Parameter und Ausführung:

  • NamedRunState sucht den Anzeigenamen WeightWatch und liefert GetScriptState: 1, 2 oder 0. Eindeutiger unveränderter Name und keine gleichzeitige Listenänderung vorausgesetzt. Nach SetScriptName neuen Namen oder Pfad suchen; FunRunning nutzt weiterhin den Quellnamen.
  • Jedes Beispiel separat speichern, in IDE/Manager laden und Main starten, damit die Prozeduren registriert sind. WeightWatch/ManaWatch sind vollständig definiert: drei Gewichts-/Manamessungen, Wait(1000) = 1000 ms, Ausgabe nur in der Welt. Endliche Beobachtung; Pausen verlängern die Dauer. Für zwei Aufgaben parallele Prozeduren erlauben.

Nur einen Beobachter stoppen

# Nur einen Beobachter stoppen
#
# Prüft, ob die Prozedur eine aktive Ausführung besitzt, einschließlich einer pausierten.
# Verhindert unnötige Neustarts vorhandener Beobachter.
#
# Integer: 1 (True) bei vorhandenem, nicht abgebrochenem Lauf, auch bei manueller oder
# Verbindungspause; 0 (False) bei unbekanntem, nicht gestarteten, beendeten oder abbrechenden
# Lauf. If UO.FunRunning(name), = 1 und = True sind gültig. GetScriptState unterscheidet läuft
# (1) und pausiert (2).

SUB Main()
    # Terminate erhält den ursprünglichen Namen WeightWatch und bricht nur diese Aufgabe ab, auch
    # bei Pause. Main als separaten Controller starten.
    # Jedes Beispiel separat speichern, in IDE/Manager laden und Main starten, damit die Prozeduren
    # registriert sind. WeightWatch/ManaWatch sind vollständig definiert: drei
    # Gewichts-/Manamessungen, Wait(1000) = 1000 ms, Ausgabe nur in der Welt. Endliche Beobachtung;
    # Pausen verlängern die Dauer. Für zwei Aufgaben parallele Prozeduren erlauben.

    If UO.FunRunning("WeightWatch") Then
        UO.Terminate("WeightWatch")
    End If
END SUB

Sub WeightWatch()
    Dim sample
    For sample = 1 To 3
        If UO.Connected() Then
            UO.Print("Weight: " & CStr(UO.Weight()))
        End If
        UO.Wait(1000)
    Next
End Sub

Erläuterung der Parameter und Ausführung:

  • Terminate erhält den ursprünglichen Namen WeightWatch und bricht nur diese Aufgabe ab, auch bei Pause. Main als separaten Controller starten.
  • Jedes Beispiel separat speichern, in IDE/Manager laden und Main starten, damit die Prozeduren registriert sind. WeightWatch/ManaWatch sind vollständig definiert: drei Gewichts-/Manamessungen, Wait(1000) = 1000 ms, Ausgabe nur in der Welt. Endliche Beobachtung; Pausen verlängern die Dauer. Für zwei Aufgaben parallele Prozeduren erlauben.

Clone this wiki locally