Opencomputers как создать файл
Всем привет!
Сегодня я поведаю вам о прекрасном моде - 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 - многофункциональная графическая библиотека, отлаженная под использование маломощными компьютерами с максимально возможной производительностью. Она поддерживает множество элементов интерфейса: от привычных кнопок, слайдеров, текстовых полей и картинок до графиков и инструментов работы с цветовыми режимами. Быстродействие достигается за счет использования двойной буферизации и сложных группировочных алгоритмов.
К примеру, моя операционная система и среда разработки полностью реализованы методами данной библиотеки:
Пусть синтаксис и обилие текста вас не пугают, в документации имеется множество наглядных иллюстрированных примеров и практических задач.
Вы можете использовать имеющиеся выше ссылки для установки зависимостей вручную или запустить автоматический установщик, загружающий все необходимые файлы за вас:
Библиотека имеет несколько полезных независимых методов, упрощающих разработку программ. К таковым относятся, к примеру, контекстное меню и информационное 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() | Добавить в контекстное меню визуальный разделитель |
Пример реализации контекстного меню:
GUI.error( text )
Тип | Аргумент | Описание |
---|---|---|
string | text | Текст информационного окна |
Показать отладочное окно с текстовой информацией. Слишком длинная строка будет автоматически перенесена. Для закрытия окна необходимо использовать клавишу return или нажать на кнопку "ОК".
Методы для создания контейнеров
Вся библиотека делится на две основные кострукции: контейнеры и виджеты. Контейнер предназначен для группировки нескольких виджетов и их конвеерной обработки, поэтому в первую очередь необходимо изучить особенности работы с контейнерами.
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. Глобальная (экранная) позиция дочерних элементов рассчитывается при каждой отрисовке содержимого контейнера. Таким образом, изменяя глобальные координаты дочернего элемента вручную, вы, в сущности, ничего не добьётесь.
Наглядно система иерархии и позиционирования контейнеров и дочерних элементов представлена на следущем изображении:
У контейнеров имеется немаловажная особенность: любой дочерний элемент, выступающий за границы контейнера, будет отрисован только в рамках размера этого контейнера:
Для добавления в контейнер дочернего элемента используйте синтаксическую конструкцию :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:
Видно, что имеется 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:
Как видите, 9 кнопок автоматически сгруппировались по 5 ячейкам сетки. Визуально структура созданного layout выглядит так:
Также мы можем модифицировать код, чтобы кнопки группировались в 3 колонки, а расстояние между ними было равным 4 пикселям:
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
Oreshka23
Известный
Корпус компьютера.
Базовый блок компьютера. Содержит слоты для остальных деталей: процессора, видеокарт, сетевых плат, памяти и жёстких дисков.
Корпус уровнем выше содержит дополнительные слоты.
Монитор
Отображает текст. Экран получает изображение с видеокарты в корпусе компьютера.
В зависимости от уровня имеет разное разрешение (50x16/80x25/160x50) и глубину цвета (1/4/8). Мониторы уровня 2 и 3 имеют возможность взаимодействовать непосредственно мышью (без клавиатуры).
Клавиатура
Присоединяется к монитору.
Монитор сам по себе не дает возможности набирать текст. Он только отображает информацию.
Кабель
Связывает вместе компоненты и блоки, а также проводит энергию.
Центральный процессор
Основная комплектующая компьютера.
EEPROM
Содержит в себе код загрузки компьютера (BIOS). Стандартный Lua BIOS при старте компьютера ищет файл init.lua и запускает его.
Видеокарта
Через видеокарту компьютер выводит изображение на монитор.
APU
APU (гибридный процессор) совмещает в себе функции центрального процессора и видеокарты, что позволяет освободить один слот для плат.
Оперативная память
Планки оперативной памяти имеют шесть поколений. Устанавливается в компьютер, что позволяет запускать более сложные программы.
Даниил, команда утратила свою актуальность. В связи с этим вам необходимо создать новый файл и уже в нем написать установщик.
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, а точнее через "адаптер" чиаттб определённые предметы в мэ, есть вот такой код:
так как ты в Майн играешь, думаю поймёшь.
вот код. Он выводит абсолютно ВСЕ предметы хранящиеся в МЭ, но нужно определённые( local filter = <>) . Как это можно сделать?
Читайте также: