API UO GetScriptsList - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.GetScriptsList
ClassicUO • Runtime API
Возвращает текущие числовые индексы скриптов.
Точный синтаксис
UO.GetScriptsList() -> Array
Параметры
Параметров нет.
Возвращает
Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не текстовые записи.
Поведение
- Учитываются выполняющиеся и приостановленные запуски; завершённые и получившие запрос отмены исключаются. Работающий скрипт обычно учитывает и себя. Просто загруженная вкладка IDE запуском не считается.
- Индексы — текущие позиции в порядке запуска. Запуск/остановка скриптов могут сдвинуть позиции. Разные вызовы не образуют общий атомарный снимок; перед последующей командой управления перечитайте список.
- Закрытие Basic IDE не удаляет активные запуски. Команды относятся к этому клиенту, а не к другим клиентам или процессам Windows.
- GetScriptsList даёт индексы, GetScriptsCount — количество, GetScriptState — код из трёх состояний. Не подменяйте одно другим и не считайте любой ненулевой результат значением true.
- Аргументов нет. Каждое число передавайте в соответствующий getter имени, пути или состояния. Полученный массив — отдельный снимок; его изменение не управляет скриптами.
Внутренние функции: от вызова до результата
Ниже указаны реальные методы клиента. В примерах Basic приведены полные вызываемые функции; имена внутренних методов C# не являются дополнительными командами скрипта.
1. ExecuteStealthCompatibility
Runtime вызывает зарегистрированную UO-команду и упаковывает ответ моста как Integer, String или Array.
Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не текстовые записи.
Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция ExecuteStealthCompatibility.
2. GetScriptsList
Мост обращается к менеджеру запусков именно этого клиента.
Аргументов нет. Каждое число передавайте в соответствующий getter имени, пути или состояния. Полученный массив — отдельный снимок; его изменение не управляет скриптами.
Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция GetScriptsList.
3. GetScriptsList
Enumerable.Range(0, GetScriptsCount()).ToArray()
Индексы — текущие позиции в порядке запуска. Запуск/остановка скриптов могут сдвинуть позиции. Разные вызовы не образуют общий атомарный снимок; перед последующей командой управления перечитайте список.
Исходник проекта: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; функция GetScriptsList.
Закрытие Basic IDE не удаляет активные запуски. Команды относятся к этому клиенту, а не к другим клиентам или процессам Windows.
Примеры
Первый вызов и результат
# Первый вызов и результат
#
# Возвращает текущие числовые индексы скриптов.
#
# Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не
# текстовые записи.
SUB Main()
# Запускайте Sub Main. Число 0, где оно передано, обозначает индекс; пустые скобки означают
# отсутствие аргументов. Текст Print — только сообщение примера.
# Аргументов нет. Каждое число передавайте в соответствующий getter имени, пути или состояния.
# Полученный массив — отдельный снимок; его изменение не управляет скриптами.
# Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не
# текстовые записи.
Dim indices=UO.GetScriptsList()
For Each index In indices
UO.Print(CStr(index) & ": " & UO.GetScriptName(index))
Next
END SUB
Разбор параметров и выполнения:
- Запускайте Sub Main. Число 0, где оно передано, обозначает индекс; пустые скобки означают отсутствие аргументов. Текст Print — только сообщение примера.
- Аргументов нет. Каждое число передавайте в соответствующий getter имени, пути или состояния. Полученный массив — отдельный снимок; его изменение не управляет скриптами.
- Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не текстовые записи.
Использование в цикле или условии
# Использование в цикле или условии
#
# Возвращает текущие числовые индексы скриптов.
#
# Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не
# текстовые записи.
SUB Main()
# Это отдельный пример совместного использования команд. Индексация массива начинается с нуля;
# перед обращением проверяйте длину. Wait(250), где он используется, ждёт 250 миллисекунд.
# Аргументов нет. Каждое число передавайте в соответствующий getter имени, пути или состояния.
# Полученный массив — отдельный снимок; его изменение не управляет скриптами.
# Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не
# текстовые записи.
Dim indices=UO.GetScriptsList()
If GetArrayLength(indices)>0 Then
Dim firstIndex=indices[0]
UO.Print(UO.GetScriptPath(firstIndex))
End If
END SUB
Разбор параметров и выполнения:
- Это отдельный пример совместного использования команд. Индексация массива начинается с нуля; перед обращением проверяйте длину. Wait(250), где он используется, ждёт 250 миллисекунд.
- Аргументов нет. Каждое число передавайте в соответствующий getter имени, пути или состояния. Полученный массив — отдельный снимок; его изменение не управляет скриптами.
- Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не текстовые записи.
Полная вспомогательная функция
# Полная вспомогательная функция
#
# Возвращает текущие числовые индексы скриптов.
#
# Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не
# текстовые записи.
SUB Main()
# Под Main приведена функция целиком. Её параметры и результат объясняются отдельно от
# API-команды, которую она вызывает.
# FindNamedScript перебирает текущие индексы и возвращает первое точное совпадение отображаемого
# имени либо -1. Имена могут повторяться, индексы могут позже сдвинуться.
# Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не
# текстовые записи.
Dim index=FindNamedScript("Mining")
If index>=0 Then
UO.Print(CStr(index))
Else
UO.Print("Name not found")
End If
END SUB
Function FindNamedScript(wanted) As Integer
Dim indices=UO.GetScriptsList()
For Each index In indices
If UO.GetScriptName(index)=wanted Then
Return index
End If
Next
Return -1
End Function
Разбор параметров и выполнения:
- Под Main приведена функция целиком. Её параметры и результат объясняются отдельно от API-команды, которую она вызывает.
- FindNamedScript перебирает текущие индексы и возвращает первое точное совпадение отображаемого имени либо -1. Имена могут повторяться, индексы могут позже сдвинуться.
- Array из Integer: индексы 0..N-1 либо пустой массив. Элементы — числа, а не имена и не текстовые записи.