Skip to content

API UO SubExists it

Codex edited this page Oct 4, 2026 · 2 revisions

UO.SubExists

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

UO.CallSub · UO.FunRunning · UO.SubExists

ClassicUO • Runtime API

Cerca una definizione nel catalogo del gestore prima di avviare un modulo facoltativo. La presenza non implica esecuzione né avviabilità senza argomenti.

Sintassi esatta

UO.SubExists(subrutineName:String) -> Integer

Parametri

  • subrutineName — String subrutineName obbligatorio: nome Sub/Function del catalogo, per esempio WeightWatch. Non percorso, file, indice, codice o etichetta modificata con SetScriptName. Ignora maiuscole/minuscole ma non elimina spazi. Non può passare argomenti alla procedura.

Restituisce

Integer: 1 (True) se la definizione esiste, altrimenti 0 (False). Validi If UO.SubExists(name), = 1 e = True; 0 corrisponde a False. Non controlla file, validità o esecuzione attiva.

Comportamento

  • L’Autoload selezionato ha priorità per nomi uguali. Più definizioni nello stesso file sono ambigue; un helper caricato separatamente deve avere un nome univoco. Le copie di riserva non vengono scelte in ordine di file. SubExists e FunRunning usano il catalogo delle dichiarazioni della sessione, compresa la nuova istantanea dopo Load/Reload; non rileggono il disco a ogni chiamata. Una dichiarazione non prova che il file esista ancora o sia avviabile dopo l’eliminazione. FunRunning verifica anche l’esecuzione attiva della procedura trovata.
  • CallSub fornisce zero argomenti. Private, errori di sintassi, parametri obbligatori, Basic disattivato o regola della singola procedura possono impedire l’avvio; controllare stato/errori IDE. Una nuova chiamata non duplica né riprende un’esecuzione attiva. Dopo annullamento può attendere la pulizia. Il controllore non attende la fine dell’attività.
  • FunRunning usa nome originale e chiave della procedura, non un’etichetta rinominata. La pausa conserva l’esecuzione e restituisce 1. L’annullamento restituisce 0 anche durante la pulizia. Controllo e chiamata successiva non sono atomici: l’attività può finire nel frattempo.
  • SubExists può dare 1 anche per definizioni Private o errate. Fermare l’attività o chiudere la scheda non elimina necessariamente la voce del catalogo. Ricaricare un file modificato rimuove le definizioni obsolete. Una funzione caricata solo in un runtime separato può non essere registrata nel gestore.

Funzioni interne: dalla chiamata al risultato

Sono passaggi reali dell’implementazione; i nomi C# non sono comandi UO aggiuntivi. Tutte le funzioni ausiliarie Basic eseguibili sono definite negli esempi.

1. SubExists

String subrutineName obbligatorio: nome Sub/Function del catalogo, per esempio WeightWatch. Non percorso, file, indice, codice o etichetta modificata con SetScriptName. Ignora maiuscole/minuscole ma non elimina spazi. Non può passare argomenti alla procedura.

Integer: 1 (True) se la definizione esiste, altrimenti 0 (False). Validi If UO.SubExists(name), = 1 e = True; 0 corrisponde a False. Non controlla file, validità o esecuzione attiva.

Sorgente del progetto: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; funzione SubExists.

2. FindProcedureByName

L’Autoload selezionato ha priorità per nomi uguali. Più definizioni nello stesso file sono ambigue; un helper caricato separatamente deve avere un nome univoco. Le copie di riserva non vengono scelte in ordine di file. SubExists e FunRunning usano il catalogo delle dichiarazioni della sessione, compresa la nuova istantanea dopo Load/Reload; non rileggono il disco a ogni chiamata. Una dichiarazione non prova che il file esista ancora o sia avviabile dopo l’eliminazione. FunRunning verifica anche l’esecuzione attiva della procedura trovata.

SubExists può dare 1 anche per definizioni Private o errate. Fermare l’attività o chiudere la scheda non elimina necessariamente la voce del catalogo. Ricaricare un file modificato rimuove le definizioni obsolete. Una funzione caricata solo in un runtime separato può non essere registrata nel gestore.

Sorgente del progetto: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; funzione FindProcedureByName.

3. SubExists

Cerca una definizione nel catalogo del gestore prima di avviare un modulo facoltativo. La presenza non implica esecuzione né avviabilità senza argomenti.

SubExists può dare 1 anche per definizioni Private o errate. Fermare l’attività o chiudere la scheda non elimina necessariamente la voce del catalogo. Ricaricare un file modificato rimuove le definizioni obsolete. Una funzione caricata solo in un runtime separato può non essere registrata nel gestore.

Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione SubExists.

Sono passaggi reali dell’implementazione; i nomi C# non sono comandi UO aggiuntivi. Tutte le funzioni ausiliarie Basic eseguibili sono definite negli esempi.

Esempi

Avviare una procedura disponibile

# Avviare una procedura disponibile
#
# Cerca una definizione nel catalogo del gestore prima di avviare un modulo facoltativo. La
# presenza non implica esecuzione né avviabilità senza argomenti.
#
# Integer: 1 (True) se la definizione esiste, altrimenti 0 (False). Validi If
# UO.SubExists(name), = 1 e = True; 0 corrisponde a False. Non controlla file, validità o
# esecuzione attiva.

SUB Main()
    # Per questo risultato logico = True equivale a = 1. Registrare WeightWatch sottostante
    # caricando il file.
    # Salvare ogni esempio separatamente, caricarlo in IDE/gestore e avviare Main per registrare le
    # procedure. WeightWatch/ManaWatch sono definite completamente: tre misure di peso/mana,
    # Wait(1000) = 1000 ms, output solo nel mondo. Monitor finiti; le pause allungano il tempo.
    # Consentire procedure simultanee per le due attività.

    If UO.SubExists("WeightWatch") = True 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

Spiegazione dei parametri e dell’esecuzione:

  • Per questo risultato logico = True equivale a = 1. Registrare WeightWatch sottostante caricando il file.
  • Salvare ogni esempio separatamente, caricarlo in IDE/gestore e avviare Main per registrare le procedure. WeightWatch/ManaWatch sono definite completamente: tre misure di peso/mana, Wait(1000) = 1000 ms, output solo nel mondo. Monitor finiti; le pause allungano il tempo. Consentire procedure simultanee per le due attività.

Scegliere un’alternativa

# Scegliere un’alternativa
#
# Cerca una definizione nel catalogo del gestore prima di avviare un modulo facoltativo. La
# presenza non implica esecuzione né avviabilità senza argomenti.
#
# Integer: 1 (True) se la definizione esiste, altrimenti 0 (False). Validi If
# UO.SubExists(name), = 1 e = True; 0 corrisponde a False. Non controlla file, validità o
# esecuzione attiva.

SUB Main()
    # WeightWatch può provenire da un altro file. Se assente, viene scelta ManaWatch locale. Un
    # avvio rifiutato della principale trovata non attiva l’alternativa.
    # Salvare ogni esempio separatamente, caricarlo in IDE/gestore e avviare Main per registrare le
    # procedure. WeightWatch/ManaWatch sono definite completamente: tre misure di peso/mana,
    # Wait(1000) = 1000 ms, output solo nel mondo. Monitor finiti; le pause allungano il tempo.
    # Consentire procedure simultanee per le due attività.

    If UO.SubExists("WeightWatch") = 1 Then
        UO.CallSub("WeightWatch")
    ElseIf UO.SubExists("ManaWatch") Then
        UO.CallSub("ManaWatch")
    End If
END SUB

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

Spiegazione dei parametri e dell’esecuzione:

  • WeightWatch può provenire da un altro file. Se assente, viene scelta ManaWatch locale. Un avvio rifiutato della principale trovata non attiva l’alternativa.
  • Salvare ogni esempio separatamente, caricarlo in IDE/gestore e avviare Main per registrare le procedure. WeightWatch/ManaWatch sono definite completamente: tre misure di peso/mana, Wait(1000) = 1000 ms, output solo nel mondo. Monitor finiti; le pause allungano il tempo. Consentire procedure simultanee per le due attività.

Verificare entrambe le definizioni

# Verificare entrambe le definizioni
#
# Cerca una definizione nel catalogo del gestore prima di avviare un modulo facoltativo. La
# presenza non implica esecuzione né avviabilità senza argomenti.
#
# Integer: 1 (True) se la definizione esiste, altrimenti 0 (False). Validi If
# UO.SubExists(name), = 1 e = True; 0 corrisponde a False. Non controlla file, validità o
# esecuzione attiva.

SUB Main()
    # HaveMonitors usa AndAlso; se un nome manca, Main non avvia nessuno. Non garantisce
    # l’esecuzione simultanea riuscita.
    # Salvare ogni esempio separatamente, caricarlo in IDE/gestore e avviare Main per registrare le
    # procedure. WeightWatch/ManaWatch sono definite completamente: tre misure di peso/mana,
    # Wait(1000) = 1000 ms, output solo nel mondo. Monitor finiti; le pause allungano il tempo.
    # Consentire procedure simultanee per le due attività.

    If HaveMonitors() Then
        UO.CallSub("WeightWatch")
        UO.CallSub("ManaWatch")
    End If
END SUB

Function HaveMonitors() As Boolean
    Return UO.SubExists("WeightWatch") AndAlso UO.SubExists("ManaWatch")
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

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

Spiegazione dei parametri e dell’esecuzione:

  • HaveMonitors usa AndAlso; se un nome manca, Main non avvia nessuno. Non garantisce l’esecuzione simultanea riuscita.
  • Salvare ogni esempio separatamente, caricarlo in IDE/gestore e avviare Main per registrare le procedure. WeightWatch/ManaWatch sono definite completamente: tre misure di peso/mana, Wait(1000) = 1000 ms, output solo nel mondo. Monitor finiti; le pause allungano il tempo. Consentire procedure simultanee per le due attività.

Clone this wiki locally