Skip to content

API UO Exec uk

Codex edited this page Oct 3, 2026 · 1 revision

UO.Exec

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

UO.Exec · UO.Launch · UO.CallSub · UO.FunRunning · UO.SubExists

ClassicUO • Runtime API

Виконує одну команду в консольній формі, коли назву або аргументи складають у рядок. Для звичайного скрипта краще прямий виклик UO.UseSkill("Hiding"). Довільний код Basic не обчислюється.

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

UO.Exec(parameters:String) -> Unit

Параметри

  • parameters — Обов’язкова String: назва та аргументи через пробіл, наприклад useskill Hiding. Усередині рядка немає префікса UO., дужок виклику й ком; сам виклик Basic — UO.Exec(...). Порожній рядок нічого не робить.

Повертає

Unit — значення немає. Результат вкладеної команди чи локальної Function відкидається; щоб отримати його, викликайте функцію прямо. Повернення не підтверджує дію сервера.

Поведінка

  • Одинарні чи подвійні лапки об’єднують аргумент із пробілами. '' зберігає порожній аргумент; '00123' лишається String з нулями. Без лапок розпізнаються числа, решта лишається рядками. Вираз 2+3 не обчислюється.
  • Зворотні слеші Windows/UNC зберігаються. Кінцевий слеш перед закривальною лапкою подвойте або замініть на /. Лапку всередині аргументу подвойте чи екрануйте слешем. Незакриті лапки спричиняють помилку. Print/Msg/Say/ConsolePrint/TextPrint об’єднують решту як текст; ColorPrint/CharPrint відокремлюють початкові аргументи.
  • Спочатку шукається відповідна UO-команда, потім локальна Sub/Function поточного runtime з потрібною кількістю аргументів. Локальний виклик синхронний. Особлива форма exec НазваПроцедури передає менеджеру нуль аргументів і запускає окреме завдання; невідоме ім’я нічого не запускає. Це ім’я процедури, не шлях.
  • Невідома звичайна команда, неправильна кількість аргументів або лапки дають помилку Try/Catch. exec потребує рівно одного непорожнього імені. Повторний запуск не дублює активне завдання й не знімає паузу. Для файлу — startscript; для каталогу — SubExists/FunRunning. Аліаси: sayu→Say, closeuo→CloseHandle, CountOnGround→CountGround, clearignorelist→IgnoreReset, canceltarget→CancelTarget, cancelmove→MoveOff.

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

Це етапи реалізації клієнта, а не додаткові команди Basic. Допоміжні процедури наведено повністю.

1. Tokenize

Одинарні чи подвійні лапки об’єднують аргумент із пробілами. '' зберігає порожній аргумент; '00123' лишається String з нулями. Без лапок розпізнаються числа, решта лишається рядками. Вираз 2+3 не обчислюється.

Зворотні слеші Windows/UNC зберігаються. Кінцевий слеш перед закривальною лапкою подвойте або замініть на /. Лапку всередині аргументу подвойте чи екрануйте слешем. Незакриті лапки спричиняють помилку. Print/Msg/Say/ConsolePrint/TextPrint об’єднують решту як текст; ColorPrint/CharPrint відокремлюють початкові аргументи.

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

2. Exec / CallNativeSubrutine

Спочатку шукається відповідна UO-команда, потім локальна Sub/Function поточного runtime з потрібною кількістю аргументів. Локальний виклик синхронний. Особлива форма exec НазваПроцедури передає менеджеру нуль аргументів і запускає окреме завдання; невідоме ім’я нічого не запускає. Це ім’я процедури, не шлях.

Unit — значення немає. Результат вкладеної команди чи локальної Function відкидається; щоб отримати його, викликайте функцію прямо. Повернення не підтверджує дію сервера.

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

Це етапи реалізації клієнта, а не додаткові команди Basic. Допоміжні процедури наведено повністю.

Приклади

Використати навичку

# Використати навичку
#
# Виконує одну команду в консольній формі, коли назву або аргументи складають у рядок. Для
# звичайного скрипта краще прямий виклик UO.UseSkill("Hiding"). Довільний код Basic не
# обчислюється.
#
# Unit — значення немає. Результат вкладеної команди чи локальної Function відкидається; щоб
# отримати його, викликайте функцію прямо. Повернення не підтверджує дію сервера.

SUB Main()
    # Hiding — єдиний аргумент UseSkill. У світі надсилається запит; успіх визначає сервер. Прямий
    # відповідник: UO.UseSkill("Hiding").

    UO.Exec("useskill Hiding")
END SUB

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

  • Hiding — єдиний аргумент UseSkill. У світі надсилається запит; успіх визначає сервер. Прямий відповідник: UO.UseSkill("Hiding").

Передати назву локальній процедурі

# Передати назву локальній процедурі
#
# Виконує одну команду в консольній формі, коли назву або аргументи складають у рядок. Для
# звичайного скрипта краще прямий виклик UO.UseSkill("Hiding"). Довільний код Basic не
# обчислюється.
#
# Unit — значення немає. Результат вкладеної команди чи локальної Function відкидається; щоб
# отримати його, викликайте функцію прямо. Повернення не підтверджує дію сервера.

SUB Main()
    # SelectSavedRoute визначена нижче. Лапки зберігають 00123; Main повертає цей рядок після
    # синхронного виклику. Приклад зберігає назву маршруту, але не рухає персонажа.

    UO.Exec("SelectSavedRoute '00123'")
    Return UO.GetGlobal("manual", "savedRoute")
END SUB

Sub SelectSavedRoute(name)
    UO.SetGlobal("manual", "savedRoute", name)
End Sub

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

  • SelectSavedRoute визначена нижче. Лапки зберігають 00123; Main повертає цей рядок після синхронного виклику. Приклад зберігає назву маршруту, але не рухає персонажа.

Запустити окремий монітор

# Запустити окремий монітор
#
# Виконує одну команду в консольній формі, коли назву або аргументи складають у рядок. Для
# звичайного скрипта краще прямий виклик UO.UseSkill("Hiding"). Довільний код Basic не
# обчислюється.
#
# Unit — значення немає. Результат вкладеної команди чи локальної Function відкидається; щоб
# отримати його, викликайте функцію прямо. Повернення не підтверджує дію сервера.

SUB Main()
    # Завантажте весь файл у менеджер/IDE та запускайте Main. WeightWatch має бути в каталозі. Три
    # вимірювання ваги через 1000 мс виконуються незалежно; потрібен дозвіл одночасних процедур.
    # Повтор не знімає паузу.

    UO.Exec("exec WeightWatch")
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

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

  • Завантажте весь файл у менеджер/IDE та запускайте Main. WeightWatch має бути в каталозі. Три вимірювання ваги через 1000 мс виконуються незалежно; потрібен дозвіл одночасних процедур. Повтор не знімає паузу.

Шлях із пробілами

# Шлях із пробілами
#
# Виконує одну команду в консольній формі, коли назву або аргументи складають у рядок. Для
# звичайного скрипта краще прямий виклик UO.UseSkill("Hiding"). Довільний код Basic не
# обчислюється.
#
# Unit — значення немає. Результат вкладеної команди чи локальної Function відкидається; щоб
# отримати його, викликайте функцію прямо. Повернення не підтверджує дію сервера.

SUB Main()
    # Замініть шлях на наявний Basic-файл з Main. startscript завантажує файл і запитує запуск Main.
    # Внутрішні лапки належать консольній команді. Помилки дивіться в IDE: Exec не підтверджує
    # старт.

    UO.Exec("startscript 'C:\UO Scripts\Gather.bas'")
END SUB

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

  • Замініть шлях на наявний Basic-файл з Main. startscript завантажує файл і запитує запуск Main. Внутрішні лапки належать консольній команді. Помилки дивіться в IDE: Exec не підтверджує старт.

Clone this wiki locally