OpenComputers/Computer API
Этот интерфейс предоставляет информацию о компьютере, на котором запущена программа, такую как его адрес или время работы. Кроме того — некоторые функции для управления пользователями.
computer.address(): string
Возвращает адрес компонента.
computer.romAddress(): string
Возвращает адрес файловой системы ROM (ПЗУ).
Внимание: эта функция устарела! Начиная с версии мода 1.3, компьютеры не имеют памяти ROM.
computer.tmpAddress(): string
Возвращает адрес временной файловой системы компьютера (если такая существует).
computer.freeMemory(): number
Возвращает объём свободной памяти компьютера, в байтах. Если это число близко к нулю, велика вероятность того, что компьютер скоро завершит работу с ошибкой переполнения памяти.
computer.totalMemory(): number
Возвращает общий объём памяти, установленной в компьютер.
computer.energy(): number
Возвращает количество энергии доступное в сети, в которой находится компьютер. Для робота — это количество его собственной энергии/топлива.
computer.maxEnergy(): number
Возвращает максимальное количество энергии, которое может хранить сеть, подключенная к компьютеру. Для робота — это объём его встроенного аккумулятора.
computer.isRobot(): boolean
Внимание: эта функция устарела! Используйте вместо неё component.isAvailable("robot")
.
Возвращает true
, если компьютер — робот и false
в противном случае.
computer.uptime(): number
Возвращает время работы компьютера в секундах. Время измеряется лишь в процессе игры. То есть когда игра стоит на паузе, время не считается.
computer.shutdown([reboot: boolean])
Выключает компьютер. Перезагружает, если параметр reboot
равен true
.
computer.users(): string, ...
Список всех пользователей, зарегистрированных на этом компьютере, в виде кортежа. Если вам необходимо использовать список с итератором используйте table.pack
.
Вне зависимости от списка зарегистрированных пользователей, доступом к компьютеру всегда обладают администраторы сервера.
computer.addUser(name: string): boolean or nil, string
Регистрирует нового пользователя. Возвращает true
, если пользователь был успешно добавлен, nil
и сообщение ошибки в противном случае.
Добавляемый пользователь (игрок), должен в этот момент находиться в игре. Он получает полные права доступа к компьютеру.
computer.removeUser(name: string): boolean
Удаляет учётную запись пользователя. Возвращает true
, если пользователь был успешно удален, false
если такой пользователь зарегистрирован не был.
Удаленный пользователь теряет право доступа к компьютеру. Если были удалены все пользователи компьютера, он становится доступен любому игроку.
computer.pushSignal(name: string[, ...])
Добавляет новый сигнал в очередь. Очередь обрабатывается по принципу FIFO («Первым пришел — первым ушел»). Сигнал должен как минимум иметь название (name
). Сопровождающие аргументы не обязательны. Обратите внимание, что сопровождающие аргументы ограничены базовыми типами данных: nil
, boolean
, number
и string
. Типы table
и function
не поддерживаются.
computer.pullSignal([timeout: number]): name, ...
Пытается получить сигнал из очереди. Ожидает заданное время, в случае неудачи отправляет nil
. Если время не было определено, продолжает ожидание.
Первое возвращаемое значение — название сигнала. Сопровождающие аргументы идут в том порядке, в каком были отправлены функцией computer.pushSignal
Важно: очень рекомендуется использовать функцию event.pull
для обработки сигналов, вместо получения напрямую. Это будет гарантировать, что другие сигналы сети будут обрабатываться как события («event»), что требуется для работы некоторых библиотек (например — Term API). Кроме того, станет более удобной фильтрация событий.
computer.beep([frequency:number, duration:number])
Звук «динамика материнской платы». Компьютер издает звук заданной частоты и длительности.
Частота (frequency
) звука задается в пределах 20-2000 Гц.
Продолжительность (duration
) — от 0.05 до 5 секунд.
По умолчанию функция воспроизводит звук частотой 440 Гц, в течение 0,1 сек.
Пример
Пример использования интерфейса Computer API — программа, которая перезагружает компьютер работающий более 5 минут (300 секунд):
local computer = require("computer") if computer.uptime() >= 300 then computer.shutdown(true) end