Basic IDE Runtime - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Basic IDE Runtime

Навигация:

Age of Power:

Basic Runtime выполняет скрипты в синтаксисе Basic и связывает команды UO.* с игровыми механизмами ClassicUO.

Точка входа

Обычный запускаемый файл должен содержать:

SUB Main()
    UO.Print('Hello from Basic')
END SUB

При запуске файла Runtime сначала индексирует весь документ, регистрирует объявленные SUB и FUNCTION, а затем запускает SUB Main(). Положение Main в начале или в конце файла и текущая прокрутка редактора значения не имеют.

Инициализация файла

При открытии или изменении скрипта анализируется весь текст:

  • процедуры и функции;
  • параметры;
  • локальные и глобальные объявления;
  • вызовы API;
  • диагностические ошибки;
  • Outline и переходы по символам.

Запуск не зависит от того, прокручивал ли пользователь документ до конца.

Параллельные скрипты

Несколько скриптов могут выполняться одновременно. Каждый запуск имеет собственное состояние:

  • running — выполняется;
  • paused — приостановлен;
  • stopped — остановлен;
  • debugging — выполняется под управлением отладчика.

Выбор одного скрипта в Explorer не должен изменять состояние другого.

Оптимизация Runtime

  • подготовленный кэш исходного текста;
  • изолированные рабочие контексты скриптов;
  • кооперативная передача управления в длительных циклах;
  • ограниченная порция работы, передаваемая игровому потоку;
  • асинхронный запуск макросов и Basic Example.

Эти механизмы уменьшают зависание окна клиента во время выполнения команды. Однако бесконечный цикл без Wait или другой точки уступки всё равно является ошибкой скрипта.

Важные правила

  • не выполняйте длительное ожидание активным циклом;
  • добавляйте UO.Wait(...) в повторяющиеся циклы;
  • проверяйте результат поиска до использования serial;
  • используйте API Manual для фактических сигнатур текущей версии;
  • не считайте пользовательские SUB частью Runtime API.

См. быстрый старт, IDE и API Manual.

Навигация:

Age of Power: