API UO GetScriptState - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.GetScriptState
ClassicUO • Runtime API
Читает состояние выполнения по индексу.
Точный синтаксис
UO.GetScriptState(ScriptIndex:Any) -> Integer
Параметры
ScriptIndex— Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат. Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
Возвращает
Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно сравнивайте с 1 или 2.
Поведение
- Учитываются выполняющиеся и приостановленные запуски; завершённые и получившие запрос отмены исключаются. Работающий скрипт обычно учитывает и себя. Просто загруженная вкладка IDE запуском не считается.
- Индексы — текущие позиции в порядке запуска. Запуск/остановка скриптов могут сдвинуть позиции. Разные вызовы не образуют общий атомарный снимок; перед последующей командой управления перечитайте список.
- Закрытие Basic IDE не удаляет активные запуски. Команды относятся к этому клиенту, а не к другим клиентам или процессам Windows.
- GetScriptsList даёт индексы, GetScriptsCount — количество, GetScriptState — код из трёх состояний. Не подменяйте одно другим и не считайте любой ненулевой результат значением true.
- Учитывается ручная/отладочная пауза и настроенная пауза при отключении. Состояние 1 не гарантирует, что скрипт прямо сейчас расходует процессор или получает данные сервера.
Внутренние функции: от вызова до результата
Ниже указаны реальные методы клиента. В примерах Basic приведены полные вызываемые функции; имена внутренних методов C# не являются дополнительными командами скрипта.
1. ExecuteStealthCompatibility
Runtime вызывает зарегистрированную UO-команду и упаковывает ответ моста как Integer, String или Array.
Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно сравнивайте с 1 или 2.
Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция ExecuteStealthCompatibility.
2. GetScriptState
Мост обращается к менеджеру запусков именно этого клиента.
Учитывается ручная/отладочная пауза и настроенная пауза при отключении. Состояние 1 не гарантирует, что скрипт прямо сейчас расходует процессор или получает данные сервера.
Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция GetScriptState.
3. GetScriptState
script == null ? 0 : script.IsPaused ? 2 : 1
Индексы — текущие позиции в порядке запуска. Запуск/остановка скриптов могут сдвинуть позиции. Разные вызовы не образуют общий атомарный снимок; перед последующей командой управления перечитайте список.
Исходник проекта: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; функция GetScriptState.
Закрытие Basic IDE не удаляет активные запуски. Команды относятся к этому клиенту, а не к другим клиентам или процессам Windows.
Примеры
Первый вызов и результат
# Первый вызов и результат
#
# Читает состояние выполнения по индексу.
#
# Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно
# сравнивайте с 1 или 2.
SUB Main()
# Запускайте Sub Main. Число 0, где оно передано, обозначает индекс; пустые скобки означают
# отсутствие аргументов. Текст Print — только сообщение примера.
# Учитывается ручная/отладочная пауза и настроенная пауза при отключении. Состояние 1 не
# гарантирует, что скрипт прямо сейчас расходует процессор или получает данные сервера.
# Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно
# сравнивайте с 1 или 2.
# Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для
# отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат.
# Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
Dim state=UO.GetScriptState(0)
Select Case state
Case 1
UO.Print("running")
Case 2
UO.Print("paused")
Case Else
UO.Print("unknown")
End Select
END SUB
Разбор параметров и выполнения:
- Запускайте Sub Main. Число 0, где оно передано, обозначает индекс; пустые скобки означают отсутствие аргументов. Текст Print — только сообщение примера.
- Учитывается ручная/отладочная пауза и настроенная пауза при отключении. Состояние 1 не гарантирует, что скрипт прямо сейчас расходует процессор или получает данные сервера.
- Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно сравнивайте с 1 или 2.
- Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат. Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
Использование в цикле или условии
# Использование в цикле или условии
#
# Читает состояние выполнения по индексу.
#
# Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно
# сравнивайте с 1 или 2.
SUB Main()
# Это отдельный пример совместного использования команд. Индексация массива начинается с нуля;
# перед обращением проверяйте длину. Wait(250), где он используется, ждёт 250 миллисекунд.
# Учитывается ручная/отладочная пауза и настроенная пауза при отключении. Состояние 1 не
# гарантирует, что скрипт прямо сейчас расходует процессор или получает данные сервера.
# Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно
# сравнивайте с 1 или 2.
# Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для
# отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат.
# Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
Dim paused=0
Dim indices=UO.GetScriptsList()
For Each index In indices
If UO.GetScriptState(index)=2 Then
paused+=1
End If
Next
UO.Print(CStr(paused))
END SUB
Разбор параметров и выполнения:
- Это отдельный пример совместного использования команд. Индексация массива начинается с нуля; перед обращением проверяйте длину. Wait(250), где он используется, ждёт 250 миллисекунд.
- Учитывается ручная/отладочная пауза и настроенная пауза при отключении. Состояние 1 не гарантирует, что скрипт прямо сейчас расходует процессор или получает данные сервера.
- Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно сравнивайте с 1 или 2.
- Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат. Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
Полная вспомогательная функция
# Полная вспомогательная функция
#
# Читает состояние выполнения по индексу.
#
# Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно
# сравнивайте с 1 или 2.
SUB Main()
# Под Main приведена функция целиком. Её параметры и результат объясняются отдельно от
# API-команды, которую она вызывает.
# IsScriptActive преобразует 1 и 2 в true, а 0 в false. Сама GetScriptState по-прежнему
# возвращает числовой код состояния.
# Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно
# сравнивайте с 1 или 2.
# Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для
# отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат.
# Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
If IsScriptActive(0)=True Then
UO.Print("running or paused")
Else
UO.Print("not active")
End If
END SUB
Function IsScriptActive(index) As Boolean
Dim state=UO.GetScriptState(index)
Return state=1 OrElse state=2
End Function
Разбор параметров и выполнения:
- Под Main приведена функция целиком. Её параметры и результат объясняются отдельно от API-команды, которую она вызывает.
- IsScriptActive преобразует 1 и 2 в true, а 0 в false. Сама GetScriptState по-прежнему возвращает числовой код состояния.
- Integer — код состояния: 0 = нет/неизвестно, 1 = выполняется, 2 = пауза. Это не Boolean: явно сравнивайте с 1 или 2.
- Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат. Не передавайте serial предмета, имя процедуры или ID запуска из IDE.