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