-
Notifications
You must be signed in to change notification settings - Fork 0
API UO CallSub uk
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
UO.CallSub · UO.FunRunning · UO.SubExists
ClassicUO • Runtime API
Просить менеджер запустити відому процедуру окремою задачею. Підходить для незалежного спостерігача; це асинхронний запуск, а не звичайний виклик Basic з очікуванням результату.
UO.CallSub(subrutineName:String) -> Unit
-
subrutineName— Обов’язковий String subrutineName — ім’я Sub/Function у каталозі, наприклад WeightWatch. Не шлях, файл, індекс, текст програми або підпис SetScriptName. Регістр ігнорується, пробіли не обрізаються. Аргументи процедури передати неможливо.
Unit: немає значення, результату функції чи підтвердження запуску. Невідоме ім’я нічого не запускає. Для синхронного виконання використовуйте звичайний виклик Basic MyFunction(...).
- Пошук лише в каталозі цього сеансу. Однакові імена обирають перший збіг: використовуйте унікальні назви. Ці команди не завантажують невідомі файли та не шукають на диску.
- CallSub передає нуль аргументів. Private, синтаксична помилка, обов’язкові параметри, вимкнений Basic чи заборона одночасних процедур можуть відхилити старт; дивіться стан/помилки IDE. Повторний виклик не дублює активного запуску і не знімає паузу. Після скасування новий старт може чекати очищення. Контролер не чекає завершення задачі.
- FunRunning використовує початкове ім’я/ключ процедури, не змінений підпис. Пауза зберігає запуск і відповідь 1. Скасування дає 0, навіть якщо очищення триває. Перевірка та наступний виклик не атомарні: задача може завершитися між ними.
- SubExists може дати 1 для Private чи помилкового визначення. Зупинка або закриття вкладки не обов’язково видаляє запис каталогу. Перезавантаження зміненого файла видаляє застарілі визначення. Функція лише в окремому runtime може бути відсутня в менеджері.
Нижче справжні етапи реалізації; назви C# не є додатковими UO-командами. Увесь код допоміжних функцій Basic наведено у прикладах.
Обов’язковий String subrutineName — ім’я Sub/Function у каталозі, наприклад WeightWatch. Не шлях, файл, індекс, текст програми або підпис SetScriptName. Регістр ігнорується, пробіли не обрізаються. Аргументи процедури передати неможливо.
Unit: немає значення, результату функції чи підтвердження запуску. Невідоме ім’я нічого не запускає. Для синхронного виконання використовуйте звичайний виклик Basic MyFunction(...).
Код проєкту: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функція CallSub.
Пошук лише в каталозі цього сеансу. Однакові імена обирають перший збіг: використовуйте унікальні назви. Ці команди не завантажують невідомі файли та не шукають на диску.
SubExists може дати 1 для Private чи помилкового визначення. Зупинка або закриття вкладки не обов’язково видаляє запис каталогу. Перезавантаження зміненого файла видаляє застарілі визначення. Функція лише в окремому runtime може бути відсутня в менеджері.
Код проєкту: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; функція FindProcedureByName.
Просить менеджер запустити відому процедуру окремою задачею. Підходить для незалежного спостерігача; це асинхронний запуск, а не звичайний виклик Basic з очікуванням результату.
CallSub передає нуль аргументів. Private, синтаксична помилка, обов’язкові параметри, вимкнений Basic чи заборона одночасних процедур можуть відхилити старт; дивіться стан/помилки IDE. Повторний виклик не дублює активного запуску і не знімає паузу. Після скасування новий старт може чекати очищення. Контролер не чекає завершення задачі.
Код проєкту: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функція Exec.
Нижче справжні етапи реалізації; назви C# не є додатковими UO-командами. Увесь код допоміжних функцій Basic наведено у прикладах.
# Запуск і продовження Main
#
# Просить менеджер запустити відому процедуру окремою задачею. Підходить для незалежного
# спостерігача; це асинхронний запуск, а не звичайний виклик Basic з очікуванням результату.
#
# Unit: немає значення, результату функції чи підтвердження запуску. Невідоме ім’я нічого не
# запускає. Для синхронного виконання використовуйте звичайний виклик Basic MyFunction(...).
SUB Main()
# WeightWatch визначено нижче. Main повертає 77 без очікування трьох вимірів; це результат Main,
# не CallSub.
# Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для
# реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани,
# Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для
# двох задач дозвольте одночасні процедури.
UO.CallSub("WeightWatch")
Return 77
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Пояснення параметрів і виконання:
- WeightWatch визначено нижче. Main повертає 77 без очікування трьох вимірів; це результат Main, не CallSub.
- Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани, Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для двох задач дозвольте одночасні процедури.
# Не перезапускати активну задачу
#
# Просить менеджер запустити відому процедуру окремою задачею. Підходить для незалежного
# спостерігача; це асинхронний запуск, а не звичайний виклик Basic з очікуванням результату.
#
# Unit: немає значення, результату функції чи підтвердження запуску. Невідоме ім’я нічого не
# запускає. Для синхронного виконання використовуйте звичайний виклик Basic MyFunction(...).
SUB Main()
# StartIfIdle перевіряє визначення й активність. False — запит не надіслано; True — лише
# надіслано CallSub, не підтверджено старт чи завершення.
# Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для
# реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани,
# Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для
# двох задач дозвольте одночасні процедури.
Return StartIfIdle("WeightWatch")
END SUB
Function StartIfIdle(name) As Boolean
If Not UO.SubExists(name) Then
Return False
End If
If UO.FunRunning(name) Then
Return False
End If
UO.CallSub(name)
Return True
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Пояснення параметрів і виконання:
- StartIfIdle перевіряє визначення й активність. False — запит не надіслано; True — лише надіслано CallSub, не підтверджено старт чи завершення.
- Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани, Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для двох задач дозвольте одночасні процедури.
# Два незалежні спостерігачі
#
# Просить менеджер запустити відому процедуру окремою задачею. Підходить для незалежного
# спостерігача; це асинхронний запуск, а не звичайний виклик Basic з очікуванням результату.
#
# Unit: немає значення, результату функції чи підтвердження запуску. Невідоме ім’я нічого не
# запускає. Для синхронного виконання використовуйте звичайний виклик Basic MyFunction(...).
SUB Main()
# Виклики запускають WeightWatch та ManaWatch окремо. Локальні змінні не спільні; порядок
# повідомлень не гарантований.
# Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для
# реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани,
# Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для
# двох задач дозвольте одночасні процедури.
UO.CallSub("WeightWatch")
UO.CallSub("ManaWatch")
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
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Пояснення параметрів і виконання:
- Виклики запускають WeightWatch та ManaWatch окремо. Локальні змінні не спільні; порядок повідомлень не гарантований.
- Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани, Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для двох задач дозвольте одночасні процедури.
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь