Skip to content

API UO FunRunning uk

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

Перевіряє наявність активного виконання процедури, включно з паузою. Допомагає не запускати наявного спостерігача повторно.

Точний синтаксис

UO.FunRunning(subrutineName:String) -> Integer

Параметри

  • subrutineName — Обов’язковий String subrutineName — ім’я Sub/Function у каталозі, наприклад WeightWatch. Не шлях, файл, індекс, текст програми або підпис SetScriptName. Регістр ігнорується, пробіли не обрізаються. Аргументи процедури передати неможливо.

Повертає

Integer: 1 (True) — запуск існує та не скасований, зокрема під час ручної паузи або втрати зв’язку; 0 (False) — відсутній, не розпочатий, завершений чи скасовується. Дозволені If UO.FunRunning(name), = 1, = True. GetScriptState розрізняє роботу (1) і паузу (2).

Поведінка

  • Пошук лише в каталозі цього сеансу. Однакові імена обирають перший збіг: використовуйте унікальні назви. Ці команди не завантажують невідомі файли та не шукають на диску.
  • CallSub передає нуль аргументів. Private, синтаксична помилка, обов’язкові параметри, вимкнений Basic чи заборона одночасних процедур можуть відхилити старт; дивіться стан/помилки IDE. Повторний виклик не дублює активного запуску і не знімає паузу. Після скасування новий старт може чекати очищення. Контролер не чекає завершення задачі.
  • FunRunning використовує початкове ім’я/ключ процедури, не змінений підпис. Пауза зберігає запуск і відповідь 1. Скасування дає 0, навіть якщо очищення триває. Перевірка та наступний виклик не атомарні: задача може завершитися між ними.
  • SubExists може дати 1 для Private чи помилкового визначення. Зупинка або закриття вкладки не обов’язково видаляє запис каталогу. Перезавантаження зміненого файла видаляє застарілі визначення. Функція лише в окремому runtime може бути відсутня в менеджері.

Внутрішні функції: від виклику до результату

Нижче справжні етапи реалізації; назви C# не є додатковими UO-командами. Увесь код допоміжних функцій Basic наведено у прикладах.

1. FunRunning

Обов’язковий String subrutineName — ім’я Sub/Function у каталозі, наприклад WeightWatch. Не шлях, файл, індекс, текст програми або підпис SetScriptName. Регістр ігнорується, пробіли не обрізаються. Аргументи процедури передати неможливо.

Integer: 1 (True) — запуск існує та не скасований, зокрема під час ручної паузи або втрати зв’язку; 0 (False) — відсутній, не розпочатий, завершений чи скасовується. Дозволені If UO.FunRunning(name), = 1, = True. GetScriptState розрізняє роботу (1) і паузу (2).

Код проєкту: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функція FunRunning.

2. FindProcedureByName

Пошук лише в каталозі цього сеансу. Однакові імена обирають перший збіг: використовуйте унікальні назви. Ці команди не завантажують невідомі файли та не шукають на диску.

SubExists може дати 1 для Private чи помилкового визначення. Зупинка або закриття вкладки не обов’язково видаляє запис каталогу. Перезавантаження зміненого файла видаляє застарілі визначення. Функція лише в окремому runtime може бути відсутня в менеджері.

Код проєкту: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; функція FindProcedureByName.

3. FunRunning

Перевіряє наявність активного виконання процедури, включно з паузою. Допомагає не запускати наявного спостерігача повторно.

FunRunning використовує початкове ім’я/ключ процедури, не змінений підпис. Пауза зберігає запуск і відповідь 1. Скасування дає 0, навіть якщо очищення триває. Перевірка та наступний виклик не атомарні: задача може завершитися між ними.

Код проєкту: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функція FunRunning.

Нижче справжні етапи реалізації; назви C# не є додатковими UO-командами. Увесь код допоміжних функцій Basic наведено у прикладах.

Приклади

Старт за відсутності запуску

# Старт за відсутності запуску
#
# Перевіряє наявність активного виконання процедури, включно з паузою. Допомагає не запускати
# наявного спостерігача повторно.
#
# Integer: 1 (True) — запуск існує та не скасований, зокрема під час ручної паузи або втрати
# зв’язку; 0 (False) — відсутній, не розпочатий, завершений чи скасовується. Дозволені If
# UO.FunRunning(name), = 1, = True. GetScriptState розрізняє роботу (1) і паузу (2).

SUB Main()
    # FunRunning = 0 дозволяє запит. Пауза дає 1, тому приклад її не знімає.
    # Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для
    # реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани,
    # Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для
    # двох задач дозвольте одночасні процедури.

    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

Пояснення параметрів і виконання:

  • FunRunning = 0 дозволяє запит. Пауза дає 1, тому приклад її не знімає.
  • Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани, Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для двох задач дозвольте одночасні процедури.

Розрізнити роботу і паузу

# Розрізнити роботу і паузу
#
# Перевіряє наявність активного виконання процедури, включно з паузою. Допомагає не запускати
# наявного спостерігача повторно.
#
# Integer: 1 (True) — запуск існує та не скасований, зокрема під час ручної паузи або втрати
# зв’язку; 0 (False) — відсутній, не розпочатий, завершений чи скасовується. Дозволені If
# UO.FunRunning(name), = 1, = True. GetScriptState розрізняє роботу (1) і паузу (2).

SUB Main()
    # NamedRunState шукає підпис WeightWatch і повертає GetScriptState: 1, 2 або 0. Потрібні
    # унікальний незмінений підпис і незмінний під час пошуку список. Після SetScriptName шукайте
    # новий підпис або шлях; FunRunning приймає початкове ім’я.
    # Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для
    # реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани,
    # Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для
    # двох задач дозвольте одночасні процедури.

    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

Пояснення параметрів і виконання:

  • NamedRunState шукає підпис WeightWatch і повертає GetScriptState: 1, 2 або 0. Потрібні унікальний незмінений підпис і незмінний під час пошуку список. Після SetScriptName шукайте новий підпис або шлях; FunRunning приймає початкове ім’я.
  • Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани, Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для двох задач дозвольте одночасні процедури.

Зупинити одного спостерігача

# Зупинити одного спостерігача
#
# Перевіряє наявність активного виконання процедури, включно з паузою. Допомагає не запускати
# наявного спостерігача повторно.
#
# Integer: 1 (True) — запуск існує та не скасований, зокрема під час ручної паузи або втрати
# зв’язку; 0 (False) — відсутній, не розпочатий, завершений чи скасовується. Дозволені If
# UO.FunRunning(name), = 1, = True. GetScriptState розрізняє роботу (1) і паузу (2).

SUB Main()
    # Terminate отримує початкове ім’я WeightWatch і скасовує цю задачу, навіть на паузі. Інші
    # тривають. Main — окремий контролер.
    # Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для
    # реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани,
    # Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для
    # двох задач дозвольте одночасні процедури.

    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

Пояснення параметрів і виконання:

  • Terminate отримує початкове ім’я WeightWatch і скасовує цю задачу, навіть на паузі. Інші тривають. Main — окремий контролер.
  • Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани, Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для двох задач дозвольте одночасні процедури.

Clone this wiki locally