🚀Сервисы

Информация

Сервисы — это особый тип системных объектов в bLua, предоставляющих доступ к внутренним возможностям движка.

Каждый сервис является уникальным экземпляром, который нужно запросить у системного ядра с помощью метода system:GetService()

Получение сервиса

Для работы с сервисами используется системный метод:

local service = system:GetService("ServiceName")

После этого переменная service хранит ссылку на уникальный объект, который можно использовать для вызова его методов.

⚠️ Каждый сервис существует в единственном экземпляре. Получение сервиса не создаёт новый объект - возвращается общий доступ к уже существующему.

Пример использования

Пример обращения к сервису VariableManager:

local vm = system:GetService("VariableManager")

local result = vm:save("key", "value")
  • system:GetService("VariableManager") — получает сервис управления переменными.

  • :save("key", "value") — вызывает метод save, передавая self (сервисный контекст).

Принцип "уникального доступа"

bLua не допускает "мгновенных" вызовов сервисов без сохранения ссылки:

Это предотвращает создание временных ссылок, которые не контролируются системой. Перед использованием всегда сохраняйте сервис в переменную:

Правила синтаксиса

  1. Методы сервисов вызываются только через двоеточие (:)

  2. Вызов через точку (.) запрещён:

  3. Ссылку на сервис нужно обязательно сохранить в переменную:

    - вызов методов непосредственно у результата GetService недопустим.

  4. Результат вызова метода сервиса должен присваиваться — вызов как выражение без присваивания считается синтаксической ошибкой в bLua. То есть:

    Это правило распространяется на все методы сервисов: вызов должен быть в контексте присваивания (или использоваться там, где результат явно нужен — например, в выражении присвоения/условии).

  5. Нельзя перезаписывать переменную-ссылку на сервис другим типом:

Почему вызов должен быть сохранён в переменной?

  • bLua намеренно запрещает «мгновенные» вызовы ради безопасности и явного управления результатами: язык требует, чтобы разработчик явно обработал и/или сохранил результат (local result = ...), а не проигнорировал возможную ошибку или данные.

  • Передача self через : требует, чтобы инструкция имела корректный операнд-объект; явное сохранение ссылки уменьшает шанс ошибок и делает код читабельнее.

  • Запрет вызовов в стиле system:GetService(...):method() и вызовов без присваивания упрощает анализ кода и статическую проверку (lint).

Сервисы

VariableManager

Добавляет расширинное взаимодействие с переменными.

circle-info

Максимальное количество сохраненных переменных - 48 штук.

Сохраняет переменную на сервер вышки.

Если duration не указан, значение сохранится навсегда. Указывать в виде 1s или 124m. Несколько букв запрещено: 1m30s не будет работать

Возвращает true при успешном сохранении.

Last updated