UO Topic scripts runtime - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Scripts & Runtime

Home · BASIC · UO API · A–Z · Examples · Languages

Запуск, пауза, остановка скриптов и процедур, сведения об экземплярах, события и ожидание. Terminate и StopScript работают на разных уровнях выполнения.

Разделы

Тема Команды и пояснения
StartScript UO.StartScript
StopScript UO.StopScript
StopAllScripts UO.StopAllScripts
PauseResumeScript UO.PauseResumeScript
Script State UO.GetScriptState
Script List UO.GetScriptsList · UO.GetScriptsCount
Script Name UO.GetScriptName · UO.SetScriptName
Script Path UO.GetScriptPath
CallSub UO.CallSub
SubExists UO.SubExists
Events UO.SetEvent · UO.SetEventProc
Timers UO.Timer · UO.Wait
Disconnect Behaviour UO.GetPauseScriptOnDisconnectStatus · UO.SetPauseScriptOnDisconnectStatus

Все команды темы

Script Lifecycle

UO.StartScript · UO.StopScript · UO.StopAllScripts · UO.PauseResumeScript · UO.GetScriptName · UO.SetScriptName · UO.GetScriptPath · UO.GetScriptsCount · UO.GetScriptsList · UO.GetScriptState · UO.Exec · UO.Launch

Procedures / Events

UO.CallSub · UO.SubExists · UO.FunRunning · UO.Terminate · UO.TerminateAll · UO.SetEvent · UO.SetEventProc

Timers / Waiting

UO.Wait · UO.Waiting · UO.Timer · UO.Time · UO.Date

Disconnect Behaviour

UO.GetPauseScriptOnDisconnectStatus · UO.SetPauseScriptOnDisconnectStatus

Примеры по теме

Параметры, требования к состоянию клиента и результат каждого вызова описаны в связанной карточке. Перед игровыми действиями замените демонстрационные serial, координаты и имена на свои.

UO.GetScriptsList

Полная карточка: параметры, возврат и разбор

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

UO.TerminateAll

Полная карточка: параметры, возврат и разбор

SUB Main()
    # У TerminateAll нет параметров. Условие UO.Dead() проверяет смерть персонажа перед очередной
    # итерацией.
    # При выполнении условия отменяются и текущий Main, и остальные запуски Basic. Сообщение Print
    # расположено до остановки, поскольку после неё код этой процедуры прекращается.
    # WAIT(250) задаёт паузу 250 миллисекунд между проверками в этом примере. Команда остановки не
    # меняет длительность обычных пауз скрипта.

    VAR cycle
    FOR cycle = 1 TO 10
        IF UO.Dead() THEN
            UO.Print('Character is dead: stopping all Basic scripts')
            UO.TerminateAll()
        END IF
        # Здесь выполняется одна безопасная итерация вашей работы.
        WAIT(250)
    NEXT
END SUB