API UO GetScriptName - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.GetScriptName
ClassicUO • Runtime API
Читает отображаемое имя активного запуска.
Точный синтаксис
UO.GetScriptName(ScriptIndex:Any) -> String
Параметры
ScriptIndex— Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат. Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
Возвращает
String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может быть явно установлено в пустую строку.
Поведение
- Учитываются выполняющиеся и приостановленные запуски; завершённые и получившие запрос отмены исключаются. Работающий скрипт обычно учитывает и себя. Просто загруженная вкладка IDE запуском не считается.
- Индексы — текущие позиции в порядке запуска. Запуск/остановка скриптов могут сдвинуть позиции. Разные вызовы не образуют общий атомарный снимок; перед последующей командой управления перечитайте список.
- Закрытие Basic IDE не удаляет активные запуски. Команды относятся к этому клиенту, а не к другим клиентам или процессам Windows.
- GetScriptsList даёт индексы, GetScriptsCount — количество, GetScriptState — код из трёх состояний. Не подменяйте одно другим и не считайте любой ненулевой результат значением true.
- ScriptIndex=0 — первый текущий запуск, не обязательно вызывающий скрипт. SetScriptName меняет отображаемое имя, не переименовывая файл.
Внутренние функции: от вызова до результата
Ниже указаны реальные методы клиента. В примерах Basic приведены полные вызываемые функции; имена внутренних методов C# не являются дополнительными командами скрипта.
1. ExecuteStealthCompatibility
Runtime вызывает зарегистрированную UO-команду и упаковывает ответ моста как Integer, String или Array.
String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может быть явно установлено в пустую строку.
Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция ExecuteStealthCompatibility.
2. GetScriptName
Мост обращается к менеджеру запусков именно этого клиента.
ScriptIndex=0 — первый текущий запуск, не обязательно вызывающий скрипт. SetScriptName меняет отображаемое имя, не переименовывая файл.
Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция GetScriptName.
3. GetScriptName
ElementAt(RunningScripts(), index)?.Name ?? string.Empty
Индексы — текущие позиции в порядке запуска. Запуск/остановка скриптов могут сдвинуть позиции. Разные вызовы не образуют общий атомарный снимок; перед последующей командой управления перечитайте список.
Исходник проекта: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; функция GetScriptName.
Закрытие Basic IDE не удаляет активные запуски. Команды относятся к этому клиенту, а не к другим клиентам или процессам Windows.
Примеры
Первый вызов и результат
# Первый вызов и результат
#
# Читает отображаемое имя активного запуска.
#
# String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может
# быть явно установлено в пустую строку.
SUB Main()
# Запускайте Sub Main. Число 0, где оно передано, обозначает индекс; пустые скобки означают
# отсутствие аргументов. Текст Print — только сообщение примера.
# ScriptIndex=0 — первый текущий запуск, не обязательно вызывающий скрипт. SetScriptName меняет
# отображаемое имя, не переименовывая файл.
# String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может
# быть явно установлено в пустую строку.
# Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для
# отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат.
# Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
Dim index=0
Dim name=UO.GetScriptName(index)
UO.Print(name)
END SUB
Разбор параметров и выполнения:
- Запускайте Sub Main. Число 0, где оно передано, обозначает индекс; пустые скобки означают отсутствие аргументов. Текст Print — только сообщение примера.
- ScriptIndex=0 — первый текущий запуск, не обязательно вызывающий скрипт. SetScriptName меняет отображаемое имя, не переименовывая файл.
- String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может быть явно установлено в пустую строку.
- Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат. Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
Использование в цикле или условии
# Использование в цикле или условии
#
# Читает отображаемое имя активного запуска.
#
# String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может
# быть явно установлено в пустую строку.
SUB Main()
# Это отдельный пример совместного использования команд. Индексация массива начинается с нуля;
# перед обращением проверяйте длину. Wait(250), где он используется, ждёт 250 миллисекунд.
# ScriptIndex=0 — первый текущий запуск, не обязательно вызывающий скрипт. SetScriptName меняет
# отображаемое имя, не переименовывая файл.
# String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может
# быть явно установлено в пустую строку.
# Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для
# отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат.
# Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
Dim indices=UO.GetScriptsList()
For Each index In indices
Dim name=UO.GetScriptName(index)
UO.Print(CStr(index) & " = " & name)
Next
END SUB
Разбор параметров и выполнения:
- Это отдельный пример совместного использования команд. Индексация массива начинается с нуля; перед обращением проверяйте длину. Wait(250), где он используется, ждёт 250 миллисекунд.
- ScriptIndex=0 — первый текущий запуск, не обязательно вызывающий скрипт. SetScriptName меняет отображаемое имя, не переименовывая файл.
- String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может быть явно установлено в пустую строку.
- Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат. Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
Полная вспомогательная функция
# Полная вспомогательная функция
#
# Читает отображаемое имя активного запуска.
#
# String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может
# быть явно установлено в пустую строку.
SUB Main()
# Под Main приведена функция целиком. Её параметры и результат объясняются отдельно от
# API-команды, которую она вызывает.
# DescribeScript проверяет состояние и объединяет имя с путём. Между вызовами возможна
# остановка; "missing" — значение нашей функции, а не результат GetScriptName.
# String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может
# быть явно установлено в пустую строку.
# Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для
# отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат.
# Не передавайте serial предмета, имя процедуры или ID запуска из IDE.
UO.Print(DescribeScript(0))
END SUB
Function DescribeScript(index) As String
If UO.GetScriptState(index)=0 Then
Return "missing"
End If
Return UO.GetScriptName(index) & " | " & UO.GetScriptPath(index)
End Function
Разбор параметров и выполнения:
- Под Main приведена функция целиком. Её параметры и результат объясняются отдельно от API-команды, которую она вызывает.
- DescribeScript проверяет состояние и объединяет имя с путём. Между вызовами возможна остановка; "missing" — значение нашей функции, а не результат GetScriptName.
- String: отображаемое имя либо "", если индекса нет. У существующего запуска имя тоже может быть явно установлено в пустую строку.
- Обязательный ScriptIndex — целое число, индекс с нуля из свежего GetScriptsList. Для отрицательного или отсутствующего индекса возвращается описанный пустой/неизвестный результат. Не передавайте serial предмета, имя процедуры или ID запуска из IDE.