API UO StartScript uk - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.StartScript

ClassicUO • Runtime API

Завантажує файл Basic і запитує запуск його відкритої процедури Sub Main.

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

UO.StartScript(ScriptPath:Any) -> Integer

Параметри

  • ScriptPath — Обов’язковий ScriptPath — рядок. Відносний шлях починається в папці AutoLoad цього клієнта; абсолютний дозволений. Шлях із пробілами беріть у лапки. Файл має містити підтримуваний Basic і відкриту Sub Main без обов’язкових аргументів.

Повертає

Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.

Поведінка

  • Враховуються виконувані й призупинені запуски; завершені та ті, що отримали скасування, виключаються. Скрипт зазвичай враховує себе. Просто завантажена вкладка IDE запуском не є.
  • Індекси — поточні позиції в порядку запуску. Запуск/зупинка можуть їх зсунути. Окремі виклики не утворюють атомарний знімок; перед наступною командою керування перечитайте список.
  • Закриття Basic IDE не видаляє активних запусків. Команди стосуються цього клієнта, а не інших клієнтів чи процесів Windows.
  • GetScriptsList дає індекси, GetScriptsCount — кількість, GetScriptState — код із трьох станів. Не підміняйте ці значення й не вважайте будь-яке ненульове число значенням true.
  • Перед прикладами окремо створіть зазначені файли Worker.bas. Хибний/недоступний шлях, непридатна Main, вимкнений Basic чи заборона паралельного запуску дають відмову. Якщо попередній запуск ще зупиняється, можливий відкладений повтор; прийняття запуску не означає завершення. Короткий скрипт може завершитися до читання поверненої кількості.

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

Нижче наведено справжні методи клієнта. Приклади Basic вище містять повні допоміжні функції; назви внутрішніх методів C# не є додатковими командами скрипта.

1. ExecuteStealthCompatibility

Runtime викликає зареєстровану UO-команду й обгортає результат моста як Integer, String або Array.

Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.

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

2. StartScript

Міст звертається до менеджера запусків саме цього клієнта.

Перед прикладами окремо створіть зазначені файли Worker.bas. Хибний/недоступний шлях, непридатна Main, вимкнений Basic чи заборона паралельного запуску дають відмову. Якщо попередній запуск ще зупиняється, можливий відкладений повтор; прийняття запуску не означає завершення. Короткий скрипт може завершитися до читання поверненої кількості.

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

3. StartScript

Path.GetFullPath -> File.ReadAllText -> DiscoverProcedures -> SelectFileEntryPoint -> RunProcedure -> GetScriptsCount

Індекси — поточні позиції в порядку запуску. Запуск/зупинка можуть їх зсунути. Окремі виклики не утворюють атомарний знімок; перед наступною командою керування перечитайте список.

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

Закриття Basic IDE не видаляє активних запусків. Команди стосуються цього клієнта, а не інших клієнтів чи процесів Windows.

Приклади

Перший виклик і результат

# Перший виклик і результат
#
# Завантажує файл Basic і запитує запуск його відкритої процедури Sub Main.
#
# Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка
# запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.

SUB Main()
    # Запускайте Sub Main. Передане число 0 означає індекс; порожні дужки — відсутність аргументів.
    # Текст Print є лише повідомленням прикладу.
    # Перед прикладами окремо створіть зазначені файли Worker.bas. Хибний/недоступний шлях,
    # непридатна Main, вимкнений Basic чи заборона паралельного запуску дають відмову. Якщо
    # попередній запуск ще зупиняється, можливий відкладений повтор; прийняття запуску не означає
    # завершення. Короткий скрипт може завершитися до читання поверненої кількості.
    # Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка
    # запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.
    # Обов’язковий ScriptPath — рядок. Відносний шлях починається в папці AutoLoad цього клієнта;
    # абсолютний дозволений. Шлях із пробілами беріть у лапки. Файл має містити підтримуваний Basic
    # і відкриту Sub Main без обов’язкових аргументів.

    Dim count=UO.StartScript("Scripts/Worker.bas")
    If count=65535 Then
        UO.Print("launch failed")
    Else
        UO.Print("Active executions: " & CStr(count))
    End If
END SUB

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

  • Запускайте Sub Main. Передане число 0 означає індекс; порожні дужки — відсутність аргументів. Текст Print є лише повідомленням прикладу.
  • Перед прикладами окремо створіть зазначені файли Worker.bas. Хибний/недоступний шлях, непридатна Main, вимкнений Basic чи заборона паралельного запуску дають відмову. Якщо попередній запуск ще зупиняється, можливий відкладений повтор; прийняття запуску не означає завершення. Короткий скрипт може завершитися до читання поверненої кількості.
  • Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.
  • Обов’язковий ScriptPath — рядок. Відносний шлях починається в папці AutoLoad цього клієнта; абсолютний дозволений. Шлях із пробілами беріть у лапки. Файл має містити підтримуваний Basic і відкриту Sub Main без обов’язкових аргументів.

Використання в циклі чи умові

# Використання в циклі чи умові
#
# Завантажує файл Basic і запитує запуск його відкритої процедури Sub Main.
#
# Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка
# запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.

SUB Main()
    # Це окремий приклад спільного використання команд. Індекси масиву починаються з нуля;
    # перевіряйте довжину перед зверненням. Wait(250), де він використаний, чекає 250 мілісекунд.
    # Перед прикладами окремо створіть зазначені файли Worker.bas. Хибний/недоступний шлях,
    # непридатна Main, вимкнений Basic чи заборона паралельного запуску дають відмову. Якщо
    # попередній запуск ще зупиняється, можливий відкладений повтор; прийняття запуску не означає
    # завершення. Короткий скрипт може завершитися до читання поверненої кількості.
    # Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка
    # запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.
    # Обов’язковий ScriptPath — рядок. Відносний шлях починається в папці AutoLoad цього клієнта;
    # абсолютний дозволений. Шлях із пробілами беріть у лапки. Файл має містити підтримуваний Basic
    # і відкриту Sub Main без обов’язкових аргументів.

    Dim count=UO.StartScript("Scripts/My Worker.bas")
    If count<>65535 Then
        Dim indices=UO.GetScriptsList()
        For Each index In indices
            UO.Print(CStr(index) & ": " & UO.GetScriptPath(index))
        Next
    End If
END SUB

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

  • Це окремий приклад спільного використання команд. Індекси масиву починаються з нуля; перевіряйте довжину перед зверненням. Wait(250), де він використаний, чекає 250 мілісекунд.
  • Перед прикладами окремо створіть зазначені файли Worker.bas. Хибний/недоступний шлях, непридатна Main, вимкнений Basic чи заборона паралельного запуску дають відмову. Якщо попередній запуск ще зупиняється, можливий відкладений повтор; прийняття запуску не означає завершення. Короткий скрипт може завершитися до читання поверненої кількості.
  • Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.
  • Обов’язковий ScriptPath — рядок. Відносний шлях починається в папці AutoLoad цього клієнта; абсолютний дозволений. Шлях із пробілами беріть у лапки. Файл має містити підтримуваний Basic і відкриту Sub Main без обов’язкових аргументів.

Повна допоміжна функція

# Повна допоміжна функція
#
# Завантажує файл Basic і запитує запуск його відкритої процедури Sub Main.
#
# Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка
# запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.

SUB Main()
    # Під Main наведено функцію повністю. Її параметри та результат пояснено окремо від API-команди,
    # яку вона викликає.
    # TryStartBasic порівнює результат із 65535 та повертає true/false. Вона не чекає завершення й
    # не перетворює кількість на індекс.
    # Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка
    # запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.
    # Обов’язковий ScriptPath — рядок. Відносний шлях починається в папці AutoLoad цього клієнта;
    # абсолютний дозволений. Шлях із пробілами беріть у лапки. Файл має містити підтримуваний Basic
    # і відкриту Sub Main без обов’язкових аргументів.

    If TryStartBasic("Scripts/Worker.bas") Then
        UO.Print("launch accepted")
    Else
        UO.Print("check file, Main and execution settings")
    End If
END SUB

Function TryStartBasic(fileName) As Boolean
    Dim count=UO.StartScript(fileName)
    Return count<>65535
End Function

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

  • Під Main наведено функцію повністю. Її параметри та результат пояснено окремо від API-команди, яку вона викликає.
  • TryStartBasic порівнює результат із 65535 та повертає true/false. Вона не чекає завершення й не перетворює кількість на індекс.
  • Integer: кількість активних запусків після прийнятого запуску; 65535 (0xFFFF) = помилка запуску. Це не індекс нового скрипта, не Boolean і не результат завершення.
  • Обов’язковий ScriptPath — рядок. Відносний шлях починається в папці AutoLoad цього клієнта; абсолютний дозволений. Шлях із пробілами беріть у лапки. Файл має містити підтримуваний Basic і відкриту Sub Main без обов’язкових аргументів.

en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic