В OpenComputers доступны многие функции стандартных библиотек Lua. Однако некоторые из них могут быть ограничены, или переопределены.
Подробнее о стандартных библиотеках Lua вы можете узнать в официальной документации здесь.
Функции базовой библиотеки Lua:
collectgarbage
— Не доступна.dofile
и loadfile
— Переопределены для загрузки из файловой системы OpenComputers (см. Filesystem API).load
— Может использоваться только для загрузки текста. Загрузка байткода может быть разрешена в настройках мода, однако не рекомендуется, так как представляет собой большую угрозу безопасности.print
— Переопределена для вывода на консоль (см. Term API)
Набор функций по управлению сопрограммами coroutine
доступен в моде без особенных изменений.
Примечание: функции coroutine.resume
и coroutine.yield
переопределены в моде с учетом того, что программа прерывает свое выполнение, если она не отвечает долгое время (точное значение смотрите в настройках мода).
Функции работы с модулями package
переопределены в моде OpenComputer. Однако должны работать аналогично, за исключением следующих функций:
package.config
— не используетсяpackage.cpath
— не используетсяpackage.loadlib
— не переопределенаПоследние две не используются в связи с тем, что невозможна загрузка кода C из OpenComputers.
Оригинальная библиотека для работы со строками string
доступна без изменений.
Примечание: функции GPU API (а также term.write
и print
) полностью совместимы со строками в формате UTF-8. Кроме того, для облегчения работы с форматом Unicode, OpenComputers предоставляет библиотеку Unicode API.
Оригинальная библиотека для работы с таблицами table
доступна без изменений.
Оригинальная библиотека математических функций math
доступна с незначительными изменениями:
math.random
использует отдельный экземпляр класса java.util.Random
для каждого потока Lua.math.randomseed
применяется к своему экземпляру java.util.Random
соответственно.
Оригинальная библиотека битовых операций bit32
доступна без изменений.
Функции библиотеки io
переопределены для работы с консолью и файловой системой OpenComputers.
Для стандартного ввода/вывода используются функции term.read
/ term.write
.
Функции по большей части функционально эквивалентны оригинальным. Они могут возвращать отличающиеся сообщения ошибки.
io.popen
— не доступна.io.open
— не поддерживает режим +
. Поддерживаемые режимы: r
, w
, a
, rb
, wb
и ab
. Побитовый режим чтения файлов поддерживает загрузку строк в формате UTF-8.io.stdin
— читает данные с помощью term.read
.io.stdout
— пишет используя term.write
.io.stderr
— также пишет используя term.write
, однако делает это красным цветом (если цвета поддерживаются монитором/видеокартой компьютера).io.read
— поддерживает режим "n"
для ввода данных типа number вместо string. Для этого "n"
должен передаваться в функцию io.read как аргумент.
Функции библиотеки os
частично переопределены.
os.clock
— возвращает приблизительное время работы CPU. Это не то же самое, что время работы компьютера (см. функцию computer.uptime
из Computer API).os.date
— использует внутриигровую дату. Поддерживает различные форматы.os.execute
— переопределена для запуска программ с помощью shell.execute
. См. Shell APIos.exit
— создает событие ошибки, для того чтобы закрыть текущую сопрограмму.os.setenv
— добавляет переменные окружения шелла.os.remove
— алиас к filesystem.remove
.os.rename
— алиас к filesystem.rename
.os.setlocale
— не доступна.os.time
— переопределена, выводит внутриигровое время, начиная с создания мира. Учтите, что время указывается во внутриигровых "секундах". Чтобы получить число тактов домножте это значение на 1000/60/60
(в одном дне 24000 тактов) и вычтите 6000. Это число (6000) взято не случайным образом. Новая игра в Minecraft начинается в "полдень", который и считается точкой отсчета времени (ноль).os.tmpname
переопределена для генерации нового (неиспользуемого) имени в каталоге /tmp
.
Кроме того добавлена одна новая функция:
os.sleep(seconds: number)
— приостанавливает скрипт на указанный промежуток времени. При этом сигналы (и события) по прежнему обрабатываются, когда компьютер приостановлен. События "копятся" в очереди событий и будут обработаны, когда компьютер возобновит работу.См. также функции Computer API.
Доступна только функция debug.traceback
.