Repository navigation
API UO SubExists uk
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
UO.CallSub · UO.FunRunning · UO.SubExists
ClassicUO • Runtime API
Шукає визначення процедури в каталозі менеджера перед запуском необов’язкового модуля. Наявність не означає виконання чи можливість запуску без аргументів.
UO.SubExists(subrutineName:String) -> Integer
-
subrutineName— Обов’язковий String subrutineName — ім’я Sub/Function у каталозі, наприклад WeightWatch. Не шлях, файл, індекс, текст програми або підпис SetScriptName. Регістр ігнорується, пробіли не обрізаються. Аргументи процедури передати неможливо.
Integer: 1 (True) — визначення знайдено; 0 (False) — ні. Дозволені If UO.SubExists(name), = 1, = True; 0 відповідає False. Це не перевірка файла, правильності чи активного запуску.
- За однакових імен пріоритет має вибраний Autoload. Кілька визначень у ньому неоднозначні; окремо завантажений помічник повинен мати унікальне ім’я. Резервна копія не обирається за порядком файлів. SubExists і FunRunning використовують каталог оголошень сеансу, зокрема свіжий знімок після Load/Reload; вони не читають диск щоразу. Наявність оголошення не доводить наявності файла або можливості запуску після видалення. FunRunning додатково перевіряє активний запуск знайденої процедури.
- CallSub передає нуль аргументів. Private, синтаксична помилка, обов’язкові параметри, вимкнений Basic чи заборона одночасних процедур можуть відхилити старт; дивіться стан/помилки IDE. Повторний виклик не дублює активного запуску і не знімає паузу. Після скасування новий старт може чекати очищення. Контролер не чекає завершення задачі.
- FunRunning використовує початкове ім’я/ключ процедури, не змінений підпис. Пауза зберігає запуск і відповідь 1. Скасування дає 0, навіть якщо очищення триває. Перевірка та наступний виклик не атомарні: задача може завершитися між ними.
- SubExists може дати 1 для Private чи помилкового визначення. Зупинка або закриття вкладки не обов’язково видаляє запис каталогу. Перезавантаження зміненого файла видаляє застарілі визначення. Функція лише в окремому runtime може бути відсутня в менеджері.
Нижче справжні етапи реалізації; назви C# не є додатковими UO-командами. Увесь код допоміжних функцій Basic наведено у прикладах.
Обов’язковий String subrutineName — ім’я Sub/Function у каталозі, наприклад WeightWatch. Не шлях, файл, індекс, текст програми або підпис SetScriptName. Регістр ігнорується, пробіли не обрізаються. Аргументи процедури передати неможливо.
Integer: 1 (True) — визначення знайдено; 0 (False) — ні. Дозволені If UO.SubExists(name), = 1, = True; 0 відповідає False. Це не перевірка файла, правильності чи активного запуску.
Код проєкту: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функція SubExists.
За однакових імен пріоритет має вибраний Autoload. Кілька визначень у ньому неоднозначні; окремо завантажений помічник повинен мати унікальне ім’я. Резервна копія не обирається за порядком файлів. SubExists і FunRunning використовують каталог оголошень сеансу, зокрема свіжий знімок після Load/Reload; вони не читають диск щоразу. Наявність оголошення не доводить наявності файла або можливості запуску після видалення. FunRunning додатково перевіряє активний запуск знайденої процедури.
SubExists може дати 1 для Private чи помилкового визначення. Зупинка або закриття вкладки не обов’язково видаляє запис каталогу. Перезавантаження зміненого файла видаляє застарілі визначення. Функція лише в окремому runtime може бути відсутня в менеджері.
Код проєкту: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; функція FindProcedureByName.
Шукає визначення процедури в каталозі менеджера перед запуском необов’язкового модуля. Наявність не означає виконання чи можливість запуску без аргументів.
SubExists може дати 1 для Private чи помилкового визначення. Зупинка або закриття вкладки не обов’язково видаляє запис каталогу. Перезавантаження зміненого файла видаляє застарілі визначення. Функція лише в окремому runtime може бути відсутня в менеджері.
Код проєкту: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функція SubExists.
Нижче справжні етапи реалізації; назви C# не є додатковими UO-командами. Увесь код допоміжних функцій Basic наведено у прикладах.
# Запустити доступну процедуру
#
# Шукає визначення процедури в каталозі менеджера перед запуском необов’язкового модуля.
# Наявність не означає виконання чи можливість запуску без аргументів.
#
# Integer: 1 (True) — визначення знайдено; 0 (False) — ні. Дозволені If UO.SubExists(name), = 1,
# = True; 0 відповідає False. Це не перевірка файла, правильності чи активного запуску.
SUB Main()
# Для цього логічного результату = True відповідає = 1. Визначення WeightWatch нижче
# реєструється завантаженням файла.
# Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для
# реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани,
# Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для
# двох задач дозвольте одночасні процедури.
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Пояснення параметрів і виконання:
- Для цього логічного результату = True відповідає = 1. Визначення WeightWatch нижче реєструється завантаженням файла.
- Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани, Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для двох задач дозвольте одночасні процедури.
# Запасний обробник
#
# Шукає визначення процедури в каталозі менеджера перед запуском необов’язкового модуля.
# Наявність не означає виконання чи можливість запуску без аргументів.
#
# Integer: 1 (True) — визначення знайдено; 0 (False) — ні. Дозволені If UO.SubExists(name), = 1,
# = True; 0 відповідає False. Це не перевірка файла, правильності чи активного запуску.
SUB Main()
# WeightWatch може бути з іншого файла. За його відсутності обирається локальний ManaWatch.
# Відмова старту знайденого основного не перемикає на запасний.
# Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для
# реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани,
# Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для
# двох задач дозвольте одночасні процедури.
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Пояснення параметрів і виконання:
- WeightWatch може бути з іншого файла. За його відсутності обирається локальний ManaWatch. Відмова старту знайденого основного не перемикає на запасний.
- Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани, Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для двох задач дозвольте одночасні процедури.
# Перевірити обидва визначення
#
# Шукає визначення процедури в каталозі менеджера перед запуском необов’язкового модуля.
# Наявність не означає виконання чи можливість запуску без аргументів.
#
# Integer: 1 (True) — визначення знайдено; 0 (False) — ні. Дозволені If UO.SubExists(name), = 1,
# = True; 0 відповідає False. Це не перевірка файла, правильності чи активного запуску.
SUB Main()
# HaveMonitors перевіряє імена через AndAlso. Якщо одного немає, Main не запускає жодного. Це не
# гарантія успішного одночасного виконання.
# Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для
# реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани,
# Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для
# двох задач дозвольте одночасні процедури.
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Пояснення параметрів і виконання:
- HaveMonitors перевіряє імена через AndAlso. Якщо одного немає, Main не запускає жодного. Це не гарантія успішного одночасного виконання.
- Збережіть кожен приклад окремим файлом, завантажте в IDE/менеджер і запускайте Main для реєстрації процедур. WeightWatch/ManaWatch повністю визначені: три виміри ваги/мани, Wait(1000) — 1000 мс, виведення лише у світі. Спостереження скінченне; пауза подовжує час. Для двох задач дозвольте одночасні процедури.
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь