Opencomputers как создать файл

Обновлено: 06.07.2024

Всем привет!
Сегодня я поведаю вам о прекрасном моде - OpenComputers (OC)

Если вы достаточно прокачались, что бы спокойно вырабатывать 100 RF/tick без перебоя, то вам пора заняться этим модом. "Но что же мне делать за компом, если я не знаю программирования?" © Типичный игрок.
Легко и просто! За вас уже все сделали и можно спокойно пользоваться компьютерами и получать пользу от сего действа. А, собственно, зачем они нам?

  • Возможность делать собственный интерьер. Т.е. в одном блоке можно поместить 16x16x16(256) маленьких блоков.
  • Создание роботов, работающих за нас. Они могут строить, расфасовывать предметы, управлять фермой и многое другое. А ещё они няшки.
  • Создание квадрокопетров

Часть I - Начало пользования.

Далее ставим монитор на системник с помощью Shift+ПКМ'а. Так же ставим клавиатуру на монитор. Где угодно. Теперь у нас должно быть так:

Теперь подключаем источник RF, а если нет такового используем EU через переходник.

Скрин 3

Рядом с преобразователем ставим источник EU впритык и не паримся далее.

Скрин 4

Теперь залезем в системник и офигеем.

Теперь нам надо сделать: EEPROM (Lua BIOS), Видеокарту 3 уровня, Жесткий диск 3 уровня, Оперативная память 3.5 уровня (желательно) x2, Дискета (делаем обычную и соединям с книгой OpenComputers), ЦП 3 уровня, Интернет-карта.

Скрин 6

Теперь можно включать наш компьютер с помощью кнопочки рядом с элементами. И клацаем ПКМ по монитору. Вот тут и будет твориться магия. Теперь пишем следующее:


Так мы сделаем нормальный размер экран, что бы можно было нормально читать текст.
Теперь установим на наш Жесткий диск (Далее HDD, хард) OpenOS. Стартовая Оперативная Система (Далее ОPа).

Пишем Y и жмем Enter. После срача нас спросят ещё раз, где мы так же пишем Y и жмем Enter. После рестарта (далее ребут) мы опять ставим размер экрана. Теперь нам надо установить MineOS, от ECS. Для этого нам и нужна была интернет карта. Пишем следующее:
Кстати, если вам впадлу выписывать код, можно просто выделить код, нажать Ctrl+C, а затем в системе нажать Insert. Если всё сделали правильно, всё должно выглядить так:
Скрин 7
После начнется скачивание файлов и вылезет это:
Скрин 8
Теперь жмем по кнопке "Select language". Тут выбираем Russian (что бы было удобнее), вместо "Full Instalation" выбираем "Install only must-have apps", дабы не засирать и так не большой хард (всего 4 мегабайта). Следующие 2 ползунка двигаем по желанию: Первая кнопка - скачать обои для рабочего стола, вторая кнопка - показывать подсказки на Английском. И жмем ОК. Далее клацаем ">", если интересно - читаем лицензионное соглашение

и клацаем "Принимаю". После установки следует перезагрузить компьютер, нажав "Перезагрузить". Теперь загружается ОРа и нам предлагают поставить защиту компьютера, что бы никто не могу загрузить вам вирус. Если пользоваться компьютером будете только вы, ставьте биометрическую, если вы и друг, то защиту паролем и сообщите пароль другу, а если вам плевать кто будет запускать комп, то без пароля. Если вы выбрали биометрическую - жмите ОК, а потом по отпечатку пальца, так компьютер запомнит что нужен именно ваш отпечаток руки. Если пароль, выберете пароль с другом и сообщите его другу.
Теперь у нас стоит ОРа и мы можем её настроить под себя. Для начала жмем на "Настройки", и выбираем "Разрешение экрана" и подбираем нужный нам размер. Всё зависит от кол-ва мониторов у вас, которые, кстати, можно соединять в один большой. Так же время от времени у нас на экране начнётся что-то такое:
Скрин 9
Не переживайте, это всего-навсего заставка, когда компьютер какое-то время бездействует. Что бы её закрыть, просто нажмите на неё.
Далее мы все настраиваем, как нам удобно с помощью верхнего меню. И продолжаем меня слушать.
Теперь нас интересует кнопка справа вверху "MineOS" так как мы будем её использовать постоянно. Одна из самых важных "Вернуться в shell" - это означает открыть командную строку, которая нас встретила в начале гайда. Далее из не понятных - разлогиниться, предположим что комп вам вырубать впадлу, но вы не хотите что бы кто-то трогал комп, для этого жмем по ней и нас будут просить ввести пароль и приложить пальчик к экрану, всё зависит от вашей системы защиты. Теперь заценим рабочий стол. Помимо клиента VK (реального) тут есть AppMarket в котором можно накачать приложения и обновить уже имеющиеся. Для начала скачаем 3DPrint для создания 3D моделей и их печати. Кстати, для экстренного завершения программы (или если нет кнопки выхода) нам надо зажать Ctrl+Alt+C.
Теперь ждите больше новых, маленьких гайдов!
!Всем пока!

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Loading

Copy raw contents

Copy raw contents

GUI - многофункциональная графическая библиотека, отлаженная под использование маломощными компьютерами с максимально возможной производительностью. Она поддерживает множество элементов интерфейса: от привычных кнопок, слайдеров, текстовых полей и картинок до графиков и инструментов работы с цветовыми режимами. Быстродействие достигается за счет использования двойной буферизации и сложных группировочных алгоритмов.

К примеру, моя операционная система и среда разработки полностью реализованы методами данной библиотеки:

Imgur

Imgur

Пусть синтаксис и обилие текста вас не пугают, в документации имеется множество наглядных иллюстрированных примеров и практических задач.

Вы можете использовать имеющиеся выше ссылки для установки зависимостей вручную или запустить автоматический установщик, загружающий все необходимые файлы за вас:

Библиотека имеет несколько полезных независимых методов, упрощающих разработку программ. К таковым относятся, к примеру, контекстное меню и информационное alert-окно.

GUI.contextMenu( x, y ): table contextMenu

Тип Аргумент Описание
int x Координата меню по оси x
int y Координата меню по оси y

Открыть по указанным координатам контекстное меню и ожидать выбора пользователя. При выборе какого-либо элемента будет вызван его callback-метод .onTouch, если таковой имеется.

Тип свойства Свойство Описание
function :addItem( string text, boolean disabled, string shortcut, int color ) Добавить в контекстное меню элемент с указанными параметрами. При параметре disabled элемент не будет реагировать на клики мышью. Каждый элемент может иметь собственный callback-метод .onTouch для последующей обработки данных
function :addSeparator() Добавить в контекстное меню визуальный разделитель

Пример реализации контекстного меню:

Imgur

GUI.error( text )

Тип Аргумент Описание
string text Текст информационного окна

Показать отладочное окно с текстовой информацией. Слишком длинная строка будет автоматически перенесена. Для закрытия окна необходимо использовать клавишу return или нажать на кнопку "ОК".

Imgur

Методы для создания контейнеров

Вся библиотека делится на две основные кострукции: контейнеры и виджеты. Контейнер предназначен для группировки нескольких виджетов и их конвеерной обработки, поэтому в первую очередь необходимо изучить особенности работы с контейнерами.

GUI.container( x, y, width, height ): table container

Тип Аргумент Описание
int x Координата контейнера по оси x
int y Координата контейнера по оси y
int width Ширина контейнера
int height Высота контейнера

Каждый контейнер - это группировщик для других объектов, его поведение очень похоже на папку, содержащую множество вложенных файлов и других папок. Для создания контейнера по размеру экрана используйте метод GUI.fullScreenContainer().

Все дочерние элементы контейнера имеют свою localPosition в контейнере (к примеру, ). После добавления дочернего элемента в контейнер для дальнейших рассчетов используется именно его локальная позиция. Для получения глобальных (экранных) координат дочернего элемента необходимо обращаться к element.x и element.y. Глобальная (экранная) позиция дочерних элементов рассчитывается при каждой отрисовке содержимого контейнера. Таким образом, изменяя глобальные координаты дочернего элемента вручную, вы, в сущности, ничего не добьётесь.

Наглядно система иерархии и позиционирования контейнеров и дочерних элементов представлена на следущем изображении:

Imgur

У контейнеров имеется немаловажная особенность: любой дочерний элемент, выступающий за границы контейнера, будет отрисован только в рамках размера этого контейнера:

Imgur

Для добавления в контейнер дочернего элемента используйте синтаксическую конструкцию :addChild(<Объект>). При этом глобальные координаты объекта становятся локальными. К примеру, для добавления кнопки на локальную позицию x = 5, y = 10 используйте :addChild(GUI.button(5, 10, . )). В контейнер можно добавлять другие контейнеры, а в добавленные - еще одни, создавая сложные иерархические цепочки и группируя дочерние объекты по своему усмотрению.

Наконец, самая важная особенность контейнеров - это автоматизированная обработка системных событий. Для запуска обработки событий необходимо вызвать метод :startEventHandling. После этого при каждом событии текущий контейнер и всего его вложенные объекты будут рекурсивно проанализированы на наличие метода-обработчика .eventHandler.

Если метод-обработчик имеется, то он будет вызван со следующими аргументами: container mainContainer, object object, table eventData, где первым аргументом является контейнер, обрабатывающий события, вторым является текущий рассматриваемый объект обработчика событий, а третьим - таблица с данными события. Многие объекты, перечисленные ниже, уже имеют собственный .eventHandler - к примеру, кнопка автоматически нажимается, слайдер перемещается влево-вправо, а селектор цвета открывает палитру для выбора желаемого оттенка. Все это реализовано именно на методе-обработчике.

В качестве примера ниже приведен исходный код обработчика событий GUI.button. Как видите, в начале событие анализируется на соответствие "touch", затем кнопка визуально "нажимается", а в конце вызывается метод кнопки .onTouch, если он вообще имеется.

Ключевая деталь обработчика событий в том, что если событие "экранное", то есть относящееся к клику пользователя на монитор (touch, drag, drop, scroll), то метод-обработчик объекта будет вызван только в том случае, если на пути прослеживания клика не имеется никаких других объектов, после чего обработка событий для оставшихся необработанных дочерних элементов завершится. Если событие не относится к экрану (key_down, clipboard и т.д.), или же объект не имеет метода-обработчика, то обработка оставшихся дочерних элементов продолжится в прежнем виде.

Если необходимо прекратить обработку событий, то необходимо вызвать метод :stopEventHandling.

Тип свойства Свойство Описание
function :addChild( table child ): table child Добавить произвольный объект в контейнер в качестве дочернего - таким образом вы способны создавать собственные виджеты с индивидуальными особенностями. Уточняю, что у добавляемого объекта обязательно должен иметься метод :draw (подробнее см. ниже). При добавлении объекта его глобальные координаты становятся локальными
function :deleteChildren(): table container Удалить все дочерние элементы контейнера
function :draw(): table container Рекурсивная отрисовка содержимого контейнера в порядке очереди его дочерних элементов. Обращаю внимание на то, что данный метод осуществляет отрисовку только в экранный буфер. Для отображения изменений на экране необходимо использовать метод библиотеки двойного буфера .draw()
function :startEventHandling([float delay]): table container Запуск обработчика событий для данного контейнера и всех вложенных в него дочерних элементов. Параметр delay аналогичен таковому в computer.pullSignal
function :stopEventHandling(): table container Остановка обработчика событий для данного контейнера

GUI.layout( x, y, width, height, columns, rows ): table container

Тип Аргумент Описание
int x Координата объекта по оси x
int y Координата объекта по оси y
int width Ширина объекта
int height Высота объекта
int columnCount Количество рядов сетки
int rowCount Количество строк сетки

Layout является наследником GUI.container, автоматически располагающим дочерние объекты внутри себя. К примеру, если вам хочется визуально красиво отобразить множество объектов, не тратя время на ручной расчет координат, то layout создан для вас. На картинке ниже подробно показана структура layout размером 4x3:

Imgur

Видно, что имеется 12 ячеек, каждая из которых может иметь собственную ориентацию объектов, расстояние между ними, а также выравнивание по границам. Границы ячеек условны, так что дочерние объекты могут без проблем выходить за них, если это допускает указанный alignment. Каждому столбцу и каждому ряду можно задать свой индивидуальный размер либо в пикселях, либо в процентном отношении, так что работа с layout фантастически удобна.

Тип свойства Свойство Описание
function :setGridSize(int columnCount, int columnCount): layout layout Установить размер сетки. Все объекты, находящиеся вне диапазона нового размера, должны быть размещены в сетке заново через :setCellPosition()
function :setColumnWidth(int column, enum sizePolicy, float size): layout layout Установить ширину указанного столбца. Ширина может быть двух типов: GUI.sizePolicies.absolute или GUI.sizePolicies.percentage. В первом случае ширина выражена в пикселях, и не меняется при изменении размеров layout, а во втором она выражена дробным числом в промежутке [0; 1], обозначающим процентную ширину столбца. Если указана процентная ширина, и справа от выбранного столбца имеются другие, то их процентная ширина будет автоматически перерассчитана до нужных процентных значений.
function :setRowHeight(int row, enum sizePolicy, float size): layout layout Установить высоту указанного ряда. Поведение метода аналогично :setColumnWidth
function :addColumn(enum sizePolicy, float size): layout layout Добавить в сетку layout пустой столбец с указанным размером
function :addRow(enum sizePolicy, float size): layout layout Добавить в сетку layout пустой ряд с указанным размером
function :removeColumn(int column): layout layout Удалить из сетки layout указанный столбец
function :removeRow(int row): layout layout Удалить из сетки layout указанный ряд
function :setCellPosition(int column, int row, object child): object child Назначить дочернему объекту layout конкретную ячейку сетки. В одной ячейке может располагаться сколь угодно много объектов.
function :setCellDirection(int column, int row, enum direction): layout layout Назначить ячейке сетки ориентацию дочерних объектов. Поддерживаются GUI.directions.horizontal и GUI.directions.vertical
function :setCellAlignment(int column, int row, enum GUI.alignment.vertical, enum GUI.alignment.horizontal): layout layout Назначить ячейке сетки метод выравнивания дочерних объектов. Поддерживаются все 9 вариантов
function :setCellSpacing(int column, int row, int spacing): layout layout Назначить ячейке сетки расстояние в пикселях между объектами. По умолчанию оно равняется 1
function :setCellMargin(int column, int row, int horizontalMargin, int verticalMargin): layout layout Назначить ячейке сетки отступы в пикселях в зависимости от текущего alignment этой ячейки

Пример реализации layout:

Imgur

Как видите, 9 кнопок автоматически сгруппировались по 5 ячейкам сетки. Визуально структура созданного layout выглядит так:

Imgur

Также мы можем модифицировать код, чтобы кнопки группировались в 3 колонки, а расстояние между ними было равным 4 пикселям:

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

Oreshka23

Известный

Grid_%D0%9A%D0%BE%D1%80%D0%BF%D1%83%D1%81_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B0_%28%D0%A3%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C_3%29_%28OpenComputers%29.jpg

Корпус компьютера.
Базовый блок компьютера. Содержит слоты для остальных деталей: процессора, видеокарт, сетевых плат, памяти и жёстких дисков.
Корпус уровнем выше содержит дополнительные слоты.

Grid_%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80_%28%D0%A3%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C_3%29_%28OpenComputers%29.jpg

Монитор
Отображает текст. Экран получает изображение с видеокарты в корпусе компьютера.
В зависимости от уровня имеет разное разрешение (50x16/80x25/160x50) и глубину цвета (1/4/8). Мониторы уровня 2 и 3 имеют возможность взаимодействовать непосредственно мышью (без клавиатуры).

Grid_%D0%9A%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D0%B0_%28OpenComputers%29.jpg

Клавиатура
Присоединяется к монитору.
Монитор сам по себе не дает возможности набирать текст. Он только отображает информацию.

Grid_%D0%9A%D0%B0%D0%B1%D0%B5%D0%BB%D1%8C_%28OpenComputers%29.jpg

Кабель
Связывает вместе компоненты и блоки, а также проводит энергию.

Grid_%D0%94%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4_%28OpenComputers%29.jpg

Grid_%D0%A6%D0%9F%D0%A3_%28%D0%A3%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C_3%29_%28OpenComputers%29.jpg

Центральный процессор
Основная комплектующая компьютера.

Grid_EEPROM_%28OpenComputers%29.jpg

EEPROM
Содержит в себе код загрузки компьютера (BIOS). Стандартный Lua BIOS при старте компьютера ищет файл init.lua и запускает его.

Grid_%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%D0%BA%D0%B0%D1%80%D1%82%D0%B0_%28%D0%A3%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C_3%29_%28OpenComputers%29.jpg

Видеокарта
Через видеокарту компьютер выводит изображение на монитор.

Grid_APU_%28%D0%A3%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C_3%29_%28OpenComputers%29.jpg

APU
APU (гибридный процессор) совмещает в себе функции центрального процессора и видеокарты, что позволяет освободить один слот для плат.

Grid_%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C_%28%D0%A3%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C_3.5%29_%28OpenComputers%29.jpg

Оперативная память
Планки оперативной памяти имеют шесть поколений. Устанавливается в компьютер, что позволяет запускать более сложные программы.

Grid_%D0%96%D1%91%D1%81%D1%82%D0%BA%D0%B8%D0%B9_%D0%B4%D0%B8%D1%81%D0%BA_%28%D0%A3%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C_3%29_%28OpenComputers%29.jpg

800px-Simple_computer_%28OpenComputers%29.jpg

800px-Tutorial_HardDrives_0_%28OpenComputers%29.jpg

Анфиса Артемьева

Даниил, команда утратила свою актуальность. В связи с этим вам необходимо создать новый файл и уже в нем написать установщик.
1. Необходимо написать install.lua
2. Установить его.
3. Создать новый файл edit mineos.lua
4. В нем прописать код установщика:

while true do
chunk = handle.read(math.huge)
if chunk then
data = data .. chunk
else
break
end
end

5. Сохранить файл, выйти из него.
6. Написать mineos.lua
Готово. Теперь у вас есть mineos, только потом будьте готовы бороться с недостатком RAM)

Ваня Особов

Дмитрий Менделеев

Владислав Новосельский

OpenComputers

Владислав, вполне возможно. Если играете на сервере, то просто установите к себе на компьютер dropbox в общей папке редактируйте код, а на сервере запускайте загрузку и выполнение кода wget . && test.lua

Максим Кашко

Всем привет, как через OpenComputers, а точнее через "адаптер" чиаттб определённые предметы в мэ, есть вот такой код:
так как ты в Майн играешь, думаю поймёшь.
вот код. Он выводит абсолютно ВСЕ предметы хранящиеся в МЭ, но нужно определённые( local filter = <>) . Как это можно сделать?

Читайте также: