Устарело [1.7.10] ComputerCraft

Статус
В этой теме нельзя размещать новые ответы.

Hel_ISR

妖怪
Команда форума
Лорд-Инквизитор
Adeptus Mechanicus
Куратор проекта
Регистрация
24.03.2011
Сообщения
18 392
Minecraft
nope
Этот гайд может быть устаревшим, если что-то нужно изменить - пишите на форум.

Гайд взят с ресурса Русское официальное майнкрафт сообщество
Авторство: Apokalypsys

cropped-Screen-shot-2012-07-16-at-23.png


Описание:

Этот мод добавляет в игру компьютеры, роботов-черепах и, самое главное, программирование!
На каждом компьютере есть операционная система CraftOS, файловая система, набор встроенных программ (включая текстовый редактор, две игры ("adventure" - текстовый вариант Minecraft и "worm" - старая добрая змейка) и т.д.). Каждый компьютер может быть запрограммирован делать то, что вам угодно на лёгком в использовании реально существующем языке программирования Lua. Более подробную информацию по программированию на языке Lua можно получить на этих сайтах: lua-users.org, lua.ru.

Компьютеры могут взаимодействовать с редстоуном и связками проводов из мода RedPower 2, что означает возможность полностью автоматизировать ваши фермы и заводы. Так же есть подключаемые устройства, а именно: Дисковод, который позволяет передавать информацию между компьютерами при помощи дисков и проигрывать пластинки, Модем, который позволяет создавать проводную/беспроводную сеть между компьютерами, а так же, проводные модемы позволяют контролировать несколько устройств на расстоянии, Монитор, который позволяет делать большие внешние дисплеи и Принтер, который при помощи краски печатает текст на бумаге, а из распечатанных листов можно будет сделать книгу.


Крафт:

[Ссылка: ГАЙД - [1.7.10] ComputerCraft | Guild Black Templars (https://guild-bt.ru/community/threads/1-7-10-computercraft.5052/#post-30888)]

Программирование на языке Lua:

КрафтОс
Краткий курс LUA
API
Приложения


Внимание: перед прочтением основного гайда загляните в раздел "Прочее" - "Справочник обозначений"!
Гайд не предназначен для обучения программированию с нуля, только ознакомление с языком Lua и командами ComputerCraft'а.
 

Hel_ISR

妖怪
Команда форума
Лорд-Инквизитор
Adeptus Mechanicus
Куратор проекта
Регистрация
24.03.2011
Сообщения
18 392
Minecraft
nope
Крафты

Компьютеры
2540446.gif
2546590.gif

Обычный компьютер
2528213.gif

Компьютер эконом класса.

Продвинутый компьютер
2515925.gif

Точно такой же, только совершенно другой! Имеет цветной сенсорный дисплей, а так же программу paint, которая наглядно продемонстрирует обе функции.

Дисковод
20130109153656.png
20130109153707.png

s7g5.png

Использует гибкие диски для хранения данных и проигрывает пластинки. Можно вставить диск просто сделав ПКМ с диском в руке. Для проигрывания пластинки запустите программу dj.

Гибкий диск
20130110125034.png

На него можно записывать любую информацию. А ещё его можно покрасить, даже несколькими красками, как кожаную броню:
2538415.gif

Модем
20130316203409.png
20130316203405.png
20130109153626.png

Проводной модем
20130316153839.png

При помощи этого устройства можно подключать проводами несколько устройств на одну сторону компа. Команда peripheral.getNames() возвращает названия всех устройств, которые подключены через модем и напрямую. Таким образом можно узнать имя каждого устройства. Устройства, подключённые напрямую, будут называться left, right и т.д., а через провода: monitor_0, monitor_1 и т.д.
Чтобы включить модем, подключённый к устройству, надо нажать на него ПКМ, после чего в чате появится сообщение типа "monitor_0 enabled". На модеме, подключённом к компу этого делать не надо, если вы не хотите управлять им с другого компа.

Провод
20130316153843.png

При помощи этого провода можно подключать устройства на расстоянии.


Беспроводной модем
20130316153857.png

Подсоедините модем к своему компьютеру (сделать правый клик зажав Shift) и вы сможете использовать "rednet" API для беспроводной передачи сообщений между компьютерами и "Черепахами" (о них ниже).

Монитор
20130109153646.png
20130109153649.png

Обычный монитор
monitoro.png

Поставьте монитор рядом с компьютером, напишите "monitor сторона программа" и указанная программа будет запущена на этом мониторе. Например: monitor left adventure. Можно ставить несколько блоков монитора рядом и, тем самым, делать его больше. Максимальный размер 8х6.
В 1.53 появилась возможность ставить мониторы на пол и потолок.

Продвинутый монитор
20130101141348.png

Аналогичные свойства.

Принтер
20130109153653.png
20130109153659.png
20130109153702.png
20130109153704.png

20120923143000.png

Для работы нужна краска(любая) и бумага. Поставьте рядом с компьютером и положите необходимые предметы в принтер.
3455894.gif

1. Слот для краски.
2. Слоты для бумаги.
3. Слоты для распечатанных листов.
Затем откройте любой файл командой edit, нажмите Ctrl и выберите Print.
Распечатанные листы можно сложить в Стопку распечатанных листов. Для этого нам потребуется нить:
20121027192438.png

Можно складывать вместе сразу до 8 страниц, а максимум в одной стопке - 16. Так же, к уже сделанной стопке можно добавить другие листы и стопки:
20121027192450.png

А если ещё и сделать обложку из кожи, получится Распечатанная книга:
20121027192512.png

Черепаха
20130109153616.png
20130109153620.png
20130109153622.png

20120226124912.png

Черепахи запускают программы так же, как и компьютеры, но ещё они умеют передвигаться, ставить и убирать блоки, а так же взаимодействовать с сундуками. Для передвижения нужно топливо.
Черепах можно улучшать, добавив к ним любой алмазный инструмент (чтобы они могли совершать соответствующие действия), а так же модем и верстак.
3191857.gif
3171377m.gif

Спасибо Dimach за скриншоты
Можно прикрепить сразу два устройства, но нельзя использовать два инструмента.
 

Hel_ISR

妖怪
Команда форума
Лорд-Инквизитор
Adeptus Mechanicus
Куратор проекта
Регистрация
24.03.2011
Сообщения
18 392
Minecraft
nope
Программирование на языке Lua

Внимание: перед прочтением основного гайда загляните в раздел "Прочее" - "Справочник обозначений"!
Гайд не предназначен для обучения программированию с нуля, только ознакомление с языком Lua и командами ComputerCraft'а.


CraftOS
Основные функции ОС
Сочетания клавиш (удерживать дольше секунды)
Ctrl+T - завершить программу.
Ctrl+S - выключить компьютер.
Ctrl+R - перезагрузить компьютер.

Программы
clear - отчистить экран.
dj - проиграть пластинку (нужен дисковод).
id - узнать id компьютера.
id side - узнать id и название папки диска, подключенного в указанной стороне. Например id left.
lua - запустить эмулятор Lua. Можно прямо в нём писать команды и он будет их выполнять. exit() для выхода.
type - возвращает тип указанного файла/папки. Если это файл, то он напишет file, если папка, соответственно, directory. Ваш Кэп.

Создание и редактирование файлов
Создаются и редактируются файлы при помощи программы edit - стандартного текстового редактора. Используется она так: edit <имя_программы>. Например: edit lock - будет редактироваться файл с названием lock. Или же: edit folder\lock - файл lock в папке folder. Если файла не существует, будет создан новый. У программы есть меню, вызывается оно кнопкой Ctrl. Там есть три опции: Save - сохранить, Exit - закончить редактирование, Print - распечатать файл. Так же можно просто нажать первую букву нужного пункта, например жмём Ctrl, а затем S, так мы сохраним файл. Если создать файл с названием системной программы, тот же edit, то эта программа будет заменена, и восстановить системную программу можно будет лишь удалив созданный вами файл. Файл с именем startup будет запускаться при включении компьютера. Файл startup, сохранённый на диске, будет запускаться вместо того, что лежит на компе.

Операции над файлами
Перемещение по папкам
list - посмотреть список файлов и папок в выбранной папке.
drive - посмотреть список дисков.
mkdir <имя_папки> - создать папку.
cd <имя_папки> - перейти в указанную папку.
cd .. - подняться на папку выше.
cd \ - открыть корневую папку.

Копирование файла
copy <имя файла> <имя нового файла>. Так же можно использовать сокращённый вариант - cp.

Перемещение и переименование файла
move <имя файла> <имя нового файла>. Сокращённый вариант - mv.

Удаление файла
delete <имя файла>. Сокращённый вариант - rm.


Символы-джокеры

При указании пути вы можете использовать символы * и **. * означает любое количество (даже 0) любых символов, а ** - все подпапки.

То есть rm **/* удалит все файлы и папки во всех текущих подпапках.


Работа с дисками
При подключении диска, появляется папка disk. Если дисков несколько, то будут создаваться папки disk2,disk3,... Для перенесения файлов на диски и всего остального используются вышеуказанные команды. Просто считайте диск очередной папкой, и всё будет в ажуре.

Программа label
При помощи этой программы можно пометить компьютер или диск и даже дать ему имя. Если помеченный кмпьютер разбить, то вся инфа на нём останется, а в черепахе останется ещё и топливо. Так же, к помеченной черепахе можно приделать устройства, и всё останется на месте. В инвентаре, при наведении мыши, помеченные компы и диски отображают своё имя.


label get - узнать метку компа.
label set <имя> - установить метку компа.
label get <сторона> - узнать метку диска, подключенного в указанной стороне.
label set <сторона> <имя> - установить метку диска.
label clear <сторона> - стереть метку диска.
 

Hel_ISR

妖怪
Команда форума
Лорд-Инквизитор
Adeptus Mechanicus
Куратор проекта
Регистрация
24.03.2011
Сообщения
18 392
Minecraft
nope
Краткий курс Lua

Типы переменных
Численный (Number) - таким переменным присваиваются числа, например: 1, 2, 45. Такие переменные могут быть использованы в вычислениях. Лучший способ описать переменную: a=0.
Строковый (String) - таким переменным присваиваются слова, например "minecraft v1.0.0". Лучший способ описать переменную: a="".
Логический (Boolean) - таким переменным можно присвоить всего два значения: True (Истина) или False (Ложь). Применяются в логических вычислениях. Часто эти переменные используются для включения/выключения чего либо.
Табличный (Table) - это массив, ему можно присваивать множество значений любого типа. Массив состоит из элементов, которые и будут содержать в себе значения. У каждого элемента есть "имя", а точнее, его индекс. Индексом может быть как число, так и слово. Если индексом является слово, то вызывать этот элемент можно так: массив.индекс, вместо массив[индекс]. Лучший способ описать переменную: a={}.

Код:
> ={,,...}
> a[1]="mi" --первому элементу массива a присваивается строка "mi"
> a[2]="ne"
> i=3
> a[i]="craft"
> print(a[1]..a[2]..a[3])
minecraft
> for i=1,3 do
>> print(a[i])
> end
mi
ne
craft
> a["bc"]=123
>> print(a.bc)
123
Функция (Function) - смотреть раздел "Функция". Способ описать переменную: a=function() end
Первоначальное значение переменной (то есть если мы ещё не указали её значение) пустое, обозначается nil.


Операторы
Математические операторы
+, -, *, / - операторы сложения, вычитания, умножения, деления соответственно.
^ - оператор возведения в степень (3^2=9)
% - оператор деления с остатком (выводит ответом остаток от деления: 115%10=5)
Операторы сравнения (необходимы для "условий")
== - равно
~= - неравно
> - больше
< - меньше
>= - больше или равно
<= - меньше или равно
Логические операторы
not - не
and - и (оба условия должны быть верны)
or - или (хотя бы одно условие должно быть равно)
Подробнее о применении логических операторов и операторов сравнения читайте в разделе "Условие"
Прочие операторы
= - оператор присваивания. Присваивает значение переменной. Можно нескольким переменным присвоить каждому своё значение.
Пример:

Код:
>a=4
> print(a)
4
> print(a*2)
8
> a=а+3
> print(a)
7
> b="craft"
> print(b)
craft
> a,b=5,"hello" --присваиваем значения сразу двум переменным.
> print(a,b) --вывод двух переменных
5hello

.. - оператор конкатенации (объединения) двух строк.


Основные команды и функции
print(word) - эта команда выводит на экран то, что мы ввели в поле ''. Это может быть слово, число или переменная. Если мы пишем слово, то оно берётся в кавычки "", если число или переменную, то пишем без кавычек. Переменная, это область памяти, в которую мы можем записать значение (присвоить значение). Заметьте, что "123" это слово, а не число, так же как и "123абв", и если мы присвоим переменной слово, то её тип будет "строковый". А если мы запишем 123 без кавычек, то тип переменной будет "численный", и только такой тип переменной мы можем использовать в вычислениях. Если мы запишем буквы без кавычек, то программа выдаст ошибку. Так же, можно выводить две и более переменных
Пример:
Код:
> print(4)
4
> print(2+3)
5
> print("hello")
hello


=read() - эта команда присвоит значение к переменной, переменная указывается в поле ''. Значение введёт пользователь программы, то есть это значение программа запросит у пользователя. Так же можно запросить сразу несколько переменных. PS можно писать read(), но только если переменная уже описана.
Пример:
Код:
> a=read() --присваиваем значение переменной 'a'
> a,b=read(),read() --присваиваем значение переменной 'a', затем переменной 'b'

type(variable) - возвращает тип переменной
timer(variable:number)*
alarm(variable:number)*


Условие
Для создания программ с ветвлением нам необходим набор команд: if then else end. Что всё это значит? переведём на русский: если <условие> то <тело> иначе <тело> конец. В поле <условие> мы указываем, как ни странно, условие. Например чтобы проверить, равна ли переменная 'а' числу 5, мы запишем if a==5 then ... . Если условие будет верно, то то, что мы указали после слова then будет выполнено, если нет, то будет выполнено то, что указано после слова else. При этом, если в команде else нет необходимости, то мы сразу можем завершить ветвление командой end.
Важно! Запомните операторы сравнения и логические операторы, они и используются в условии (см. раздел "Опетароры").
Пример:
Код:
> if 10>2 then print("bigger") end
bigger
> if 1>10 then print("bigger") else print("smaller") end
smaller
--примеры логических операторов:
> print(not true)
false
> print(true, false, not true, not false)
true false false true
> if 10>2 and 3<4 then print("true") end --если 10>2 и 3<4 то... (оба условия верны)
true
> if 10>2 and 3>4 then print("true") else print("false") end --если 10>2 и 3>4 то... (условие 3>4 неверно)
false
> if 10>2 or 2>5 then print("true") else print("false") end --если 10>2 или 2>5 то... (хоть и 2>5 неверное условие, нам достаточно что 10>2 верно)
true


Цикл
Вообще цикл это такая штука, которая организует многократное повторение указанных действий.
Существует 3 вида циклов: цикл с предусловием (while), цикл с постусловием (repeat) и цикл с параметром (for).
Цикл с предусловием: while do end. Тут всё так же как и в "ветвлении": это условие, и пока оно верно, будет выполняться "тело цикла" - , до тех пор, пока условие не окажется неверным.
Пример:
Код:
> i = 3
> while i>0 do
>> print(i)
>> i = i-1
>> end
3
2
1

Цикл с постусловием: repeat until . Этот вид цикла отличается от первого тем, что в первом цикле сначала проверяется условие, затем выполняется тело цикла, а в цикле с постусловием сначала выполняется тело цикла, затем проверяется условие. Второе его отличие от цикла с предусловием - тело цикла будет выполняться до тех пор, пока условие не станет верно, то есть если условие становится верным, то происходит выход из цикла.
Пример:
Код:
> i = 3
> repeat
>> print(i)
>> i = i-1
>> until i==0
3
2
1

Цикл с параметром: for =, , do end. Этот вид цикла не похож на предыдущие. Здесь вместо условия используется так называемый счётчик. В качестве счётчика используется переменная , которая изменяет своё значение от заданного начального значения до конечного , с некоторым шагом . При этом, если шаг не указан, то в качестве шага автоматически берётся значение 1.
Пример:
Код:
> for i = 1,3 do print(i) end --считаем от 1 до 3
1
2
3
> for i = 3,1 do print(i) end --считаем от 3 до 1 с шагом +1: цикл не сработает
> for i = 3,1,-1 do print(i) end --считаем от 3 до 1
3
2
1
> for i=1,0,-0.25 do print(i) end --мы не ограничены целыми числами и можем использовать дробные
1
0.75
0.5
0.25
0


Функция (процедура)
Функция, это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо.
Функции применяются для упрощения "жизни" программиста. Например вам надо несколько раз выполнить один и тот же набор действий, но он занимает строк 10.
Функции описываются командой function. Так же, она может возвращать значения некоторых переменных, для этого используется команда return, которая пишется в "теле" функции.
Структура функции: function function_name (,,...) body end. Function_name это имя функции, которое будет использоваться для её вызова. ,,... это аргументы функции, то есть входящие данные, основываясь на которых будет работать функция. Body это тело функции, то есть набор действий, из которых она состоит.
Код:
> function foo(n) return n*2 end
> print(foo(8))
16
> function foo1() a=a+2 end -- Здесь будет показано как функция влияет на внешние переменные.
> a=5
> foo1()
> print(a)
7


События
Обработчик событий помогает написать программу, которая будет реагировать на некоторые события.
os.pullEvent()
Возвращает название события, а затем его аргументы в указанном ниже порядке.
это фильтр, который позволяет реагировать на конкретное событие, а не на любое.
Виды событий:
"char" - если набирается текст на клавиатуре. Аргумент - символ.
"key" - если нажимается клавиша на клавиатуре. Аргумент - код клавиши.
"timer"*
"alarm"*
"redstone" - если статус любого из входящих/исходящих сигналов редстоуна изменяется. Аргумент - отсутствует.
"rednet_message" - если получено сообщение через API rednet. Аргументы - id, сообщение, расстояние до компа-отправителя.
"peripheral", "peripheral_detach" - если устройство подключается или отключается. Аргумент - сторона.
"disk", "dist_eject" - если диск вставляется или извлекается. Аргумент - сторона.
"mouse_click" - клик мышью. Аргументы - кнопка мыши (1 - левая, 2 - правая, 3 - колёсико (на дополнительные не реагирует)), координаты x, y.
"mouse_drag" - "перетаскивание" мышью. Аргументы - см. "mouse_click".
"mouse_scroll" - кручение колёсика. Аргументы - направление (1 - вниз, -1 - вверх), координаты x, y.
Например, переключение сигнала редстоуна сзади по кнопке "enter":
Код:
while true do --Бесконечный цикл
local e, p1 = os.pullEvent() --Ждём ивент
if e == "key" and p1 == 28 then --Фильтруем
rs.setOutput("back", not rs.getInput("back")) --Переключаем сигнал
end
end
 

Hel_ISR

妖怪
Команда форума
Лорд-Инквизитор
Adeptus Mechanicus
Куратор проекта
Регистрация
24.03.2011
Сообщения
18 392
Minecraft
nope
API

API "redstone"
rs.getSides()
Возвращает массив со сторонами.

rs.getInput(side:string)
Возвращает состояние входного сигнала со стороны side.

rs.setOutput(side:string, value:boolean)
Устанавиливает на выходе side при value = true и убирает при value = false.

rs.getOutput(side:string)
Возвращает состояние выхода со стороны side.

rs.getAnalogInput(side:string)
Возвращает мощность входного сигнала на стороне side.

rs.setAnalogOutput(side:string, strength:number)
Устанавливает сигнал с мощностью strngth на стороне side.

rs.getAnalogOutput(side:string)
Возвращает мощность выходного сигнала со стороны side.

rs.getBundledInput(side:string)
Возвращает число от 0 до 65535 с суммой ID входящих активированных проводов RedPower 2 со стороны side.

rs.getBundledOutput(side:string)
Возвращает число от 0 до 65535 с суммой ID исходящих активированных проводов RedPower 2 со стороны side.

rs.setBundledOutput(side:string, colors:number)
Устанавливает на стороне side сигнал с суммой ID colors.

rs.testBundledInput(side:string, color:number)
Проверяет активирован ли провод с ID color со стороны side.

Работа с сетью API "rednet"
Сеть можно создать при помощи связок проводов из RedPower или при помощи модемов.
rednet.open() - открывает порт в указанной стороне.
rednet.close() - закрывает порт в указанной стороне.
rednet.isOpen() - проверяет статус вкл/выкл порта в указанной стороне (true/nil).
rednet.announce() - передаёт пустое сообщение всем компьютерам в сети.
rednet.send(,) - отправляет сообщение с текстом на компьютер с указанным ID.
rednet.broadcast() - отправляет сообщение с текстом всем компьютерам в сети.
rednet.receive() - принимает сообщения в течении указанного времени , возвращает ID, сообщение и расстояние до компьютера-источника(только для модемов).
Пример:
Код:
--допустим что мы передаём сообщение "привет" с компьютера с ID 5, который находится на расстоянии 5,25 блоков.
> a,b,c=rednet.receive(5)
> print(a)
5
> print(b)
привет
> print(c)
5,25
API "textutils"
textutils.slowWrite(text:string, rate:int)
Медленно печатае text буква-за-буквой со скоростью rate. Чем больше rate, тем быстрее печать. rate 1 - 1 буква в секунду. По умолчанию rate = 20.

textutils.slowPrint(text:string, rate:int)
Тоже, что и textutils.slowWrite, но с переводом каретки на новую строку после печати.

textutils.formatTime(time:int, TwentyFourHour:boolean)
Переводит время вида часы.миллиминуты в вид часы:минуты. Второй параметр выставляет формат времени 12- и 24-часовой.

textutils.tabualte(...:table)
Принимает таблицы и распечатывает их по строкам.
Пример:
Код:
textutils.tabulate({1, 2, 3}, {"a", "b", "c"})
>1.0 2.0 3.0
>a b c

textutils.pagedTabulate(...:table)
Аналогично textutils.tabulate, но перед листанием экрана, при его заполнении, требует разрешения.

textutils.pagedPrint(text:string, confirmation_lines:string)
Печатает на экране text, и при его заполнении, перед пролистыванием, требует разрешения выводя confirmation_lines.

textutils.serialize(table:table)
Превращает таблицу в строку, которую можно превратить в таблицу с помощью textutils.unserialize. Полезно для передачи таблиц по реднет.
Пример:
Код:
s = textutils.serialize({1, a = 3, 2, 0.5}) print(s)
>{[1]=1,[2]=2,[3]=0.5,["a"]=3}

textutils.unserialize(text:string)
Превращает строку, сгенерированную textutils.serialize, в таблицу и возвращает её.

textutils.urlEncode(text:string)
Возвращает строку, в кодировочной таблице ASCII.


API "parallel"
Суть:
В апи всего 2 функции. Они принимают адресса функций и запуска.т их в псевдопараллельном режиме, прерывая и запуская все поочередно. Используют апи coroutine из стандартной библиотеки Lua.
Но между ними есть одно отличие:

parallel.waitForAll(...:function)
Ждёт завершения всех функций.

parallel.waitForAny(...:function)
Ждёт завершения одной функции (любой).

API "coroutine"
coroutine.create(foo:function)
Создает сопрограмму. Возвращаемое значение типа "thread".

coroutine.yield(...)
Вызывется внутри подпрограммы и ставит ее на паузу, при этом она будет возобновленна с этого места
при выполнении coroutine.resume. Возвращает "...".

coroutine.resume(co:thread, ...)
Возобновляет подпрограмму, и передаёт ей аргументы "...".

coroutine.running()
Возвращает выполняемую подпрограмму. Вызывается из сопрограммы. Если из главного thread - возвращает nil.

coroutine.status(co:thread)
Возвращает статус нити co: "running" - выполняется, "suspended" - приостановлена, "normal" - активна, но не запущена на выполнение, "dead" - неактивна (выполнилась или вылетела с ошибкой).

coroutine.wrap(foo:function)
Возвращает функцию-итератор, запуск которой идентичен запуску coroutine.resume.

Примеры
Код:
co = coroutine.wrap(
function(...)
print(...)
end
)
co(1, 2, 3, "abc", "cba")
>1 2 3 abc cba
Код:
co = coroutine.create(
function(...)
print(...)
end
)
coroutine.resume(1, 2, 3, "abc", "cba")
>1 2 3 abc cba

API "fs"
fs.list(path:string)
Возвращает индексированую таблицу, содержащую имена папок и файлов в path.

fs.exists(path:string)
Проверят, существует ли папка или файла по указанному пути. Если да - возвращает true, иначе - false

fs.isDir(path:string)
Проверяет, папка ли указанный путь. Если да - true, иначе - false.

fs.isReadOnly(path:string)
Если в файл нельзя писать возвращает true, иначе - false.

fs.getName(path:string)
Возвращает конечное имя папки или файла по указанному пути.

fs.getDrive(path:string)
Возвращает true, если в пути присутствует путь к съемному накопителю.

fs.getSize(path:string)
Возвращает размер в байтах, занимаемый файлом.

fs.getFreeSpace(path:string)
Возвращает доступный обьем данных, который может быть размещен в папке.

fs.makeDir(path:string)
Создает папку по указанному пути.

fs.move(from:string, to:string)
Перемещает файл или папки из from в to.

fs.copy(from:string, to:string)
Копирует из from в to.

fs.delete(path:string)
Удаляет файл или папку path.

fs.combine(basePath:string, localPath:string)
Возвращает путь, localPath, вложенный в basePath.

fs.open(path:string, mode:string)
Открывает файл path в режиме mode.
Режимы: "r" - чтение, "w" - запись, "a" - запись в конец(старая информация не стирается). "rb", "wb", "ab" - аналогично, но байтовый режим (работает с числовыми кодами символов).

file.readLine()
Читает строку из file до символа "\n".
Режим - "r".

file.writeLine(text:string)
Добавляет в файл file строку text и символ "\n".
Режим - "w".

file.readAll()
Режим - "r".
Читает все содержимое файла file.

file.read()
Режим - "rb".
Читает символ из файла file и возвращает его код.

file.write(num:number)
Режим - "wb".
Добавляет в файл file символ с кодом num.

file.flush()
Режим - "wb".
Очищает поток вывода file.

file.close()
Закрывает потоки ввода-вывода file.


API "term"
term.redirect(obj:table)
Все функции которые вы вызываете передаются терминалу obj.

term.restore()
Возвращает управление родному терминалу.

Также присутствуют функции, которые при запуске импортируются из term.native. Эту таблицу можно редактировать.

term.write(text:string)
Выводит text на экран.

term.setBackgroundColor(num:number)
Устанавливает цвет фона num, цветовые коды есть в приложениях.

term.getCursorPos()
Возвращает 2 значения: позиции курсора x и y. Сначала колонка, потом строка.

term.clear()
Заполняет терминал символами " ". При этом фон будет таким, который вы выставили.

term.getSize()
Возвращает 2 значения: количество колонок и строк.

term.setBackgroundColour(num:number)
См. term.setBackgroundColor(num:number).

term.setTextColor(num:number)
Устанавливает цвет шрифта num, цветовые коды есть в приложениях.

term.scroll(num:number)
"пролистывает" экран вниз на num строк.

term.setCursorPos(x:number, y:number)
Устанавливает курсор в x столбце, y строки.

term.isColor()
Возвращает true, если терминал поддерживает цветные шрифты и фоны, иначе - false.

term.setTextColour(num:number)
См. term.setTextColor(num:number)

term.setBlink(b:boolean)
Включает и выключает мигание курсора.

term.isColour()
См. term.isColor()

term.clearLine()
Заполняет текущую строку символами " ".


API "io"
io.close(file:table)

Закрывает file.

io.flush()

Очищает поток стандартного вывода.

io.input(file:table)

Создает файл file и устанавливает его в качестве стандартного файла ввода. Без операндов - возвращает текущий стандартный файл ввода.
При ошибке - перехватывает и возвращает код.

io.lines(file:table)
Открывает файл file в режиме чтения и возвращает функцию-итератор, которая будучи вызвана, каждый раз возвращает строку из файла file.Вызов без аргумент эквивалентен io.input():lines(); Итерирует стандартный файл ввода, не закрывает его.

io.open(file:table [, mode:string])
Открывает файл в режиме mode.

Режимы:

"r": чтение (по умолчанию);
"w": запись;
"a": добавление;
Режим с "b" в конце открывает файл в том же режиме, но бинарном.

io.output(file:table)
Аналогично io.input(file:table), но работает с файлом вывода.

io.read(···)

Читает строку из стандартного файла ввода.

io.write(···:string)

Пишет строку в стандартный файл вывода.

API "bit"
bit.blshift(num:number, n:number)
Арифметический сдвиг влево на n бит.

bit.brshift(num:number, n:number)
Арифметический сдвиг вправо на n бит.

bit.blogic_rshift(num: number, n:number)
Логический сдвиг вправо на n бит.

bit.bxor(num:number, num1:number)
Исключающее логическое ИЛИ num и num1.

bit.bor(num:number, num1:number)
Логическое ИЛИ num и num1.

bit.band(num:number, num1:number)
Логическое И num и num1.

bit.bnot(num:number)
Логическое НЕ num.

Объяснение:
Арифметический сдвиг:
Допустим у нас есть число 1010 (10). Если применить к нему побитовый сдвиг вправо на 1 бит, получим число 101 (5).
Если сдвинуть ранее полученное число 101 (5) на 1 бит вправо - 10 (2), а затем влево - наша 1 не вернется. В итоге получим число 100 (4).

Логический сдвиг: при сдвиге числа 1000 0001 (129) вправо - получим 1100 0000 (172).
То есть старший бит и сдвигается и остается на своем месте.

ИЛИ:
Попарно выполняет логическое ИЛИ на каждых битах двоичного представления чисел.
То есть в результирующем числе на месте каждого бита будет стоять логическое И битов, которые стояли на его позиции в данных числах.
1100 и 1010 дадут 1110.

Исключающее ИЛИ:
Аналогично обычному, но возвращает 0, если оба бита равны 1... Есть числа 1100 и 1010. Искл. ИЛИ вернет число 0110. Так как четвертые биты равны 1.

И:
Попарно выполняет логическое И на каждых битах двоичного представления чисел.
1100 и 1010 дадут 1000.

НЕ:
Ивертирует каждый бит данного числа.
0000 1111 даст 1111 0000.
 

Hel_ISR

妖怪
Команда форума
Лорд-Инквизитор
Adeptus Mechanicus
Куратор проекта
Регистрация
24.03.2011
Сообщения
18 392
Minecraft
nope
Прочее

Приложения
Приложение 1. Стороны.
Left Левая
Right Правая
Front Лицевая
Back Задняя
Top Верхняя
Bottom Нижняя


Приложение 2. Таблица id цветов.
white белый 1
orange оранжевый 2
magenta пурпурный 4
lightBlue голубой 8
yellow жёлтый 16
lime салатовый 32
pink розовый 64
gray серый 128
lightGray светло-серый 256
cyan бирюзовый 512
purple фиолетовый 1024
blue синий 2048
brown коричневый 4096
green зелёный 8192
red красный 16384
black чёрный 32768
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху