2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -5,4 +5,4 @@ src/generated/**/.cache/cache text eol=lf
|
||||
src/generated/**/*.json text eol=lf
|
||||
|
||||
# Files provided to VM.
|
||||
src/main/resources/data/oc2/file_systems/**/*.lua text eol=lf
|
||||
src/main/scripts/**/*.lua text eol=lf
|
||||
|
||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -31,4 +31,7 @@ forge*changelog.txt
|
||||
/src/generated/
|
||||
|
||||
#vscode
|
||||
.vscode
|
||||
.vscode
|
||||
|
||||
# Don't ignore bin from scripts
|
||||
!/src/main/scripts/bin/
|
||||
|
||||
@@ -14,13 +14,13 @@ This is a high level device. It must be controlled using the high level device A
|
||||
Device name: `redstone`
|
||||
|
||||
### Sides
|
||||
The side parameter in the following methods represents a side local to the device block. Valid values are: `up`, `down`, `left`, `right`, `front` and `back`.
|
||||
The side parameter in the following methods represents a side local to the device block. Valid values are: `up`, `down`, `left`, `right`, `front`, `back`, `north`, `south`, `west` and `east`.
|
||||
|
||||
Each face of the block has an indicator for convenience. Side names represent the names with the block seen from the primary face (indicated by a single marking). When looking at the primary face:
|
||||
- `front` is the face we are looking at.
|
||||
- `back` is the face behind the block.
|
||||
- `left` is the face to our left.
|
||||
- `right` is the face to our right.
|
||||
- `front` and `south` is the face we are looking at.
|
||||
- `back` and `north` is the face behind the block.
|
||||
- `left` and `west` is the face to our left.
|
||||
- `right` and `east` is the face to our right.
|
||||
- `up` and `down` are the top and bottom faces.
|
||||
|
||||
### Methods
|
||||
|
||||
27
src/main/resources/assets/oc2/doc/ru_ru/basics.md
Normal file
27
src/main/resources/assets/oc2/doc/ru_ru/basics.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Основы
|
||||
Данный документ содержит основную информацию о том, как работают [компьютеры](block/computer.md). Но это не значит, что данную информацию будет легко понять. Под основами здесь имеются ввиду основные концепты, применяемые в моде.
|
||||
|
||||
## Архитектура
|
||||
Компьютеры работают на одноядерной RISC-V архитектуре общего назначения. Она имеет 64-битные регистры и поддержку операций с плавающей запятой. Это позволяет запускать на компьютерах современное Linux ядро.
|
||||
|
||||
### Нативные устройства
|
||||
Подключенные к компьютеру нативные устройства являются прикрепленными к памяти. Это означает, что они прикреплены к определенной области физической памяти. Для взаимодействия с ними используются стандартные драйвера Linux.
|
||||
|
||||
Информация о том, какие устройства доступны и где они находятся, передается в программное обеспечение с помощью плоского дерева устройств. Эта структура данных может содержать дополнительную информацию о системе в целом. В частности, он также содержит размер установленной [памяти](item/memory.md). Поскольку эта структура создается во время загрузки, она не обновляется. Именно поэтому компьютеры необходимо перезагружать при смене нативных устройств, таких как [сетевая интерфейсная карта](item/network_interface_card.md). Данный тип устройств имеет в подсказке строчку, сообщающую о необходимости перезагрузки компьютера для их определения.
|
||||
|
||||
### Устройства HLAPI
|
||||
Другим типом устройств являются устройства с высокоуровневым API, иногда называемыми устройствами RPC. Данные устройства используют общий контроллер, который связывается с компьютером через последовательное устройство. Данный контроллер имеется во всех компьютерах и отвечает за сбор сообщений с нескольких устройств и отправку сообщений на них. Протокол этих контроллеров использует простые сообщения со структурой JSON. Lua библиотека `devices`, поставляемая со стандартными библиотеками Lua, является оберткой последовательного устройства, используемого для подключения к контроллеру. Поэтому *настоятельно* рекомендуется использовать эту библиотеку для работы с HLAPI устройствами, такими как [красный интерфейсный блок](block/redstone_interface.md).
|
||||
|
||||
Из-за особенностей используемого протокола скорость передачи данных серьезно ограничена. Поэтому большинство устройств предоставляют несложные API, которые обычно не требуют отправки больших объемов данных.
|
||||
|
||||
## Конфигурация
|
||||
Компьютеры можно конфигурировать на свое усмотрение. Количество ОЗУ, дополнительные хранилища в виде [жестких дисков](item/hard_drive.md), и что более важно, вы можете сами выбирать, какие карты стоит установить. Не забывайте, что стандартная конфигурация Linux требует не менее 20Мб ОЗУ, а лучше поставить 24Мб.
|
||||
|
||||
Большинство компонентов увеличивают потребление энергии компьютером. Для экономии рекомендуется устанавливать только необходимые компоненты.
|
||||
|
||||
## Linux
|
||||
Стандартная конфигурация Linux включает некоторые базовые команды, а также возможность написания и запуска программ на Lua. Для ознакомления с примером работы с устройствами HLAPI в Lua, загляните в раздел [скрипты](scripting.md).
|
||||
|
||||
Нативные устройства используют стандартные драйвера Linux. Например, жесткие диски отображаются как устройства `/dev/vdaX`, поэтому их можно форматировать и монтировать как обычно.
|
||||
|
||||
Компьютеры имеют два аппаратных модуля часов (RTC). Первый считает время, соответствующее реальному. Он используется по умолчанию, например с командами `date` и `time`. Второй считает время игрового мира, в котором находится компьютер. Чтобы посмотреть его, воспользуйтесь командой `hwclock -f /dev/rtc1`.
|
||||
@@ -0,0 +1,6 @@
|
||||
# Интерфейсный кабель
|
||||

|
||||
|
||||
Интерфейсный кабель соединяет [интерфейсные шины](bus_interface.md) других устройств с интерфейсной шиной компьютера.
|
||||
|
||||
Кабели могут быть замаскированы, если кликнуть по ним любым декоративным блоком. Удаление блока производится [ключом](../item/wrench.md).
|
||||
@@ -0,0 +1,8 @@
|
||||
# Интерфейсная шина
|
||||

|
||||
|
||||
Интерфейсные шины позволяют соединять внешние устройства с [компьютерами](computer.md). Помимо компьютеров, шина присоединяется и к блокам-устройствам, вроде [красного интерфейса](redstone_interface.md).
|
||||
|
||||
С помощью [ключа](../item/wrench.md) можно присвоить шине свое название. Это полезно, если у вас много однотипных устройств: поиск нужного можно выполнять по названию присоединенной к нему шины.
|
||||
|
||||
Не забывайте, что [компьютеры](computer.md) подключаются к [кабелю](bus_cable.md) исключительно через шину.
|
||||
8
src/main/resources/assets/oc2/doc/ru_ru/block/charger.md
Normal file
8
src/main/resources/assets/oc2/doc/ru_ru/block/charger.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# Зарядное устройство
|
||||

|
||||
|
||||
Зарядное устройство передает энергию от подключенного источника питания к потребителю, установленному сверху.
|
||||
|
||||
Установленная система беспроводной передачи энергии поддерживает любые источники RF энергии. Устройство заряжает блоки и сущности, установленные непосредственно на него или находящиеся в контейнере на зарядном устройстве.
|
||||
|
||||
Устройство особенно необходимо для зарядки [роботов](../item/robot.md) или иных потребителей энергии в вашем инвентаре.
|
||||
15
src/main/resources/assets/oc2/doc/ru_ru/block/computer.md
Normal file
15
src/main/resources/assets/oc2/doc/ru_ru/block/computer.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Компьютер
|
||||

|
||||
|
||||
Компьютер является основой для аппаратного обеспечения, необходимого для запуска операционной системы и низкоуровневых программ.
|
||||
|
||||
Прочитайте [руководство для начинающих](../getting_started.md), чтобы понять, как настраивать компьютер.
|
||||
|
||||
### Конфигурация
|
||||
Компоненты компьютера устанавливаются и снимаются в окне инвентаря. Для доступа к этому экрану нажмите на компьютер [ключом](../item/wrench.md), или переключитесь на окно нажатием кнопки инвентаря в левой части терминала.
|
||||
|
||||
### Подключение
|
||||
Для подключения внешних устройств к компьютеру воспользуйтесь [интерфейсными шинами](bus_interface.md) и [интерфейсным кабелем](bus_cable.md). Обратите внимание, что компьютеры нужно подключать к кабелю интерфейсной шиной.
|
||||
|
||||
### Энергия
|
||||
Обычно компьютеры требуют энергию для запуска. Современные генераторы, производящие RF энергию, должны подойти. Компьютеры имеют маленькое встроенное энергохранилище. Однако, его не хватает даже на небольшой срок работы.
|
||||
13
src/main/resources/assets/oc2/doc/ru_ru/block/disk_drive.md
Normal file
13
src/main/resources/assets/oc2/doc/ru_ru/block/disk_drive.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Дисковод
|
||||

|
||||
|
||||
Дисковод предоставляет функцию быстрого обмена файлами на носителях. [Дискеты](../item/floppy.md) можно вставлять и извлекать в любое время, в отличие от [жестких дисков](../item/hard_drive.md).
|
||||
|
||||
Во избежание потери данных рекомендуется демонтировать дискету перед ее извлечением.
|
||||
|
||||
В Linux дисководы обычно определяются как блочные устройства `/dev/vdX` , подобно установленным жестким дискам. В стандартном дистрибутиве Linux используются следующие команды:
|
||||
- `mke2fs /dev/vdX` для форматирования дискеты.
|
||||
- `mount /dev/vdX <mount directory>` для монтирования дискеты.
|
||||
- `umount <mount directory>` для демонтирования дискеты.
|
||||
|
||||
Компьютеры *необходимо отключать* перед установкой или снятием этого компонента. Установка при работающем компьютере не даст ничего (определение происходит только при загрузке), удаление может повлечь за собой сбой системы.
|
||||
13
src/main/resources/assets/oc2/doc/ru_ru/block/index.md
Normal file
13
src/main/resources/assets/oc2/doc/ru_ru/block/index.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Блоки
|
||||
Здесь представлены ссылки на документации для всех блоков мода. Если вас интересуют предметы - перейдите на страницу [списка предметов](../item/index.md).
|
||||
|
||||
Для быстрого доступа к разделу нужного установленного блока, просто кликните по нему [справочником](../item/manual.md).
|
||||
|
||||
- [Интерфейсный кабель](bus_cable.md)
|
||||
- [Интерфейсная шина](bus_interface.md)
|
||||
- [Зарядное устройство](charger.md)
|
||||
- [Компьютер](computer.md)
|
||||
- [Дисковод](disk_drive.md)
|
||||
- [Сетевой разъем](network_connector.md)
|
||||
- [Сетевой концентратор](network_hub.md)
|
||||
- [Красный интерфейс](redstone_interface.md)
|
||||
@@ -0,0 +1,10 @@
|
||||
# Сетевой разъем
|
||||

|
||||
|
||||
Сетевой разъем является одним из основных деталей для [компьютерных](computer.md) сетей. Используйте [сетевые кабели](../item/network_cable.md) для соединения разъемов между собой.
|
||||
|
||||
Каждый разъем требует один "прыжок" для передачи пакета. Пакеты могут делать ограниченное количество прыжков, после чего они исчезнут.
|
||||
|
||||
К одному разъему можно подключить не больше двух кабелей, но вы можете сделать цепочку из разъемов для преодоления этого ограничения.
|
||||
|
||||
Создайте простую сеть, присоединив разъемы к компьютерам. Для создания сложных сетей воспользуйтесь [сетевым концентратором](network_hub.md). Концентратор соединяет все подключенные к нему разъемы между собой.
|
||||
@@ -0,0 +1,4 @@
|
||||
# Сетевой концентратор
|
||||

|
||||
|
||||
Сетевой концентратор соединяет между собой несколько [сетевых разъемов](network_connector.md). Он рассылает пакет, пришедший с одного разъема, на остальные. Операция рассылки занимает один прыжок, снижая время жизни пакета.
|
||||
@@ -0,0 +1,37 @@
|
||||
# Красный интерфейс
|
||||

|
||||
|
||||
Красный интерфейс предоставляет двунаправленную шину для получения и излучения красного сигнала.
|
||||
|
||||
Используйте его для взаимодействия с примитивными устройствами, такими как двери, лампы и другие устройства, работающие с красным камнем.
|
||||
|
||||
Это высокоуровневое устройство, поэтому оно контролируется через высокоуровневое API (HLAPI). В дистрибутив Linux включена Lua библиотека для работы с данным API. Например:
|
||||
`local d = require("devices")`
|
||||
`local r = d:find("redstone")`
|
||||
`r:setRedstoneOutput("up", 15)`
|
||||
|
||||
## API
|
||||
Название устройства: `redstone`
|
||||
|
||||
### Стороны
|
||||
В вышеуказанном методе первый параметр указывает, с какой стороны подавать или снимать красный сигнал. Допускаются значения: `up`, `down`, `left`, `right`, `front`, `back`, `north`, `south`, `west` и `east`.
|
||||
|
||||
Каждая сторона блока имеет метку для удобства опознавания. Названия сторон даны относительно лицевой стороны блока (помечен одной точкой). Если смотреть на лицевую сторону, то:
|
||||
- `front` и `south` - сторона, на которую мы смотрим.
|
||||
- `back` и `north` - задняя сторона блока.
|
||||
- `left` и `west` - сторона слева от нас.
|
||||
- `right` и `east` - сторона справа от нас.
|
||||
- `up` и `down` - верхняя и нижняя сторона соответственно.
|
||||
|
||||
### Методы
|
||||
`getRedstoneInput(side):number` возвращает уровень красного сигнала, полученного с указанной стороны.
|
||||
- `side` - строка, указывающая на сторону, сигнал с которой нужно получить. Смотрите в раздел "Стороны".
|
||||
- Возвращает числовой уровень текущего сигнала на входе.
|
||||
|
||||
`setRedstoneOutput(side, value:number)` задает уровень сигнала, излучаемый с указанной стороны.
|
||||
- `side` - строка, указывающая на сторону, куда нужно подать сигнал. Смотрите в раздел "Стороны".
|
||||
- `value` - числовой уровень сигнала, который нужно подать. Лежит в пределах [0, 15].
|
||||
|
||||
`getRedstoneOutput(side):number` возвращает уровень красного сигнала, излучаемого с указанной стороны.
|
||||
- `side` - строка, указывающая на сторону, сигнал с которой нужно получить. Смотрите в раздел "Стороны".
|
||||
- Возвращает числовой уровень текущего сигнала на выходе.
|
||||
29
src/main/resources/assets/oc2/doc/ru_ru/getting_started.md
Normal file
29
src/main/resources/assets/oc2/doc/ru_ru/getting_started.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Руководство для начинающих
|
||||
Данный раздел описывает шаги, необходимые для настройки и запуска [компьютера](block/computer.md), а также показывает, как взаимодействовать с устройствами.
|
||||
|
||||
## Сборка
|
||||
Прежде всего вам нужен сам компьютер и кучка компонентов. Если у вас их нет, то создайте:
|
||||
- 1x [компьютер](block/computer.md)
|
||||
- 1x **Linux** [жесткий диск](item/hard_drive.md) (создайте обычный 8Мб жесткий диск и положите его на крафт вместе с [ключом](item/wrench.md))
|
||||
- 3x 8M [Память](item/memory.md)
|
||||
|
||||

|
||||
|
||||
После того, как вы создали все нужное, поставьте компьютер. Откройте его инвентарь, кликнув по компьютеру ключом. Или откройте терминал, а затем слева нажмите на кнопку инвентаря. Здесь поместите созданные вами жесткий диск и память.
|
||||
|
||||

|
||||
|
||||
## Запуск
|
||||
Чтобы запустить ваш только что собранный компьютер, вам нужен источник питания. Обратите внимание на полоску энергии слева от терминала или инвентаря компьютера. Она информирует вас о количестве запасенной в компьютере энергии, и количестве энергии, потребляемой за один тик работы.
|
||||
|
||||

|
||||
|
||||
Когда вы добыли необходимое количество энергии, переключитесь на терминал и нажмите на кнопку питания вверху слева. Или нажмите на компьютер, присев. Теперь он начнет загружаться! Дождитесь приглашения ввода логина.
|
||||
|
||||

|
||||
|
||||
Наберите в поле логина `root` и нажмите клавишу ввода. Вот и все, теперь ваш компьютер готов к работе!
|
||||
|
||||
Теперь вы можете добавить дополнительные устройства, в зависимости от того, что вам нужно. За информацией по управлению устройствами обращайтесь в раздел [скрипты](scripting.md).
|
||||
|
||||
Удачи, и что самое главное, веселья!
|
||||
27
src/main/resources/assets/oc2/doc/ru_ru/index.md
Normal file
27
src/main/resources/assets/oc2/doc/ru_ru/index.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Справочник компьютерщика
|
||||
Приветствую и добро пожаловать! Если вы пришли сюда, то либо сделали это случайно, либо хотите [собрать свой первый компьютер](getting_started.md), или, возможно, вы ищете информацию о каком-то [блоке](block/index.md) или [предмете](item/index.md)?
|
||||
|
||||
## Обзор
|
||||
[Компьютеры](block/computer.md) предлагают множество способов применения, от развлекательных до крупномасштабных, гибко настраиваемых средств автоматизации других машин и устройств.
|
||||
|
||||
Основой каждого компьютера является Операционная Система (ОС). Поэтому вам предоставляется наипростейший дистрибутив Linux. Он содержит в себе основные команды, а также позволяет писать и запускать программы на Lua.
|
||||
|
||||
Lua очень удобен, когда дело касается работы с устройствами с высокоуровневым API (HLAPI), такими как [красный интерфейсный блок](block/redstone_interface.md). Вместе со стандартными библиотеками ОС, для работы с такими устройствами поставляется библиотека `devices`. Чтобы узнать больше о работе с HLAPI устройствами в Lua, смотрите раздел [скрипты](scripting.md).
|
||||
|
||||
С другой стороны здесь есть нативные устройства, такие как [жесткие диски](item/hard_drive.md) и [сетевая интерфейсная карта](item/network_interface_card.md). Эти устройства контролируются драйверами Linux и требуют перезагрузки системы при их установке или удалении. Хотя большинство устройств, с которыми вы столкнетесь, работают по стандарту HLAPI, но все же.
|
||||
|
||||
## Руководство для начинающих
|
||||
Если вы хотите быстро разобраться во всем, читайте [руководство для начинающих](getting_started.md). Оно содержит пошаговую инструкцию по сборке вашего первого компьютера и работе с ним. Чтобы узнать о чем-то больше, пройдите по ссылкам на страницы в разделе "Ссылки".
|
||||
|
||||
## Ссылки
|
||||
Инструкция содержит информацию о блоках и предметах, присутствующих в этом моде.
|
||||
|
||||
Если вас интересует данная информация, загляните сюда:
|
||||
- [Список блоков](block/index.md)
|
||||
- [Список предметов](item/index.md)
|
||||
|
||||
Если вам интересна информация о основных механиках мода, то вам сюда:
|
||||
- [Основы](basics.md)
|
||||
- [Скрипты](scripting.md)
|
||||
- [Роботы](robotics.md)
|
||||
- [Сети](networking.md)
|
||||
@@ -0,0 +1,30 @@
|
||||
# Модуль управления блоками
|
||||

|
||||
|
||||
Модуль управления блоками позволяет [роботам](robot.md) ломать и ставить блоки в игровом мире.
|
||||
|
||||
## API
|
||||
Название устройства: `block_operations`
|
||||
|
||||
Это устройство с высокоуровневым API. Оно может управляться через Lua в стандартном дистрибутиве Linux. Например:
|
||||
`local d = require("devices")`
|
||||
`local m = d:find("block_operations")`
|
||||
`m:excavate("front")`
|
||||
|
||||
### Стороны
|
||||
Стороны указываются относительно лицевой стороны робота. Допускаются значения: `front`, `up` и `down`.
|
||||
|
||||
### Методы
|
||||
`excavate([side]):boolean` робот пытается сломать блок в указанном направлении. Подобранные блоки размещаются в слотах начиная с текущего. Если он заполнен, блоки буду складываться в следующий и так далее. Если инвентарь полон, робот не будет подбирать выпавшие вещи.
|
||||
- `side` сторона, на которой робот будет ломать блок. Опциональное значение, по умолчанию равно `front`. Смотрите секцию "Стороны".
|
||||
- Возвращает статус выполненной задачи (`true` - удача, `false` - неудача).
|
||||
|
||||
`place([side]):boolean` робот пытается поставить блок в указанном направлении. Блок поставится из текущего слота. Если он пуст, робот ничего не поставит.
|
||||
- `side` сторона, на которой робот будет ставить блок. Опциональное значение, по умолчанию равно `front`. Смотрите секцию "Стороны".
|
||||
- Возвращает статус выполненной задачи (`true` - удача, `false` - неудача).
|
||||
|
||||
`durability():number` возвращает оставшуюся прочность модуля. Если она достигнет нуля, робот не сможет ломать блоки, пока модуль не починят.
|
||||
- Возвращает оставшуюся прочность модуля в числовом виде.
|
||||
|
||||
`repair():boolean` пытается починить модуль, используя материалы в текущем слоте. Метод берет по одному предмету за раз. Источником материала может служить любой добывающий инструмент вроде кирки или лопаты. Качество предмета напрямую влияет на количество восстанавливаемой прочности модуля.
|
||||
- Возвращает статус успешности починки (`true` - удача, `false` - неудача).
|
||||
@@ -0,0 +1,14 @@
|
||||
# Карта импорта/экспорта файлов
|
||||

|
||||
|
||||
Карта импорта/экспорта файлов напрочь ломает четвертую стену. Она позволяет:
|
||||
- выгружать файлы с вашего реального ПК на [компьютеры](../block/computer.md) из мода.
|
||||
- загружать на реальный компьютер файлы с компьютеров из мода.
|
||||
|
||||
Для удобства, дистрибутив Linux включает в себя два скрипта для операций импорта/экспорта - `import.lua` и `export.lua`.
|
||||
|
||||
`import.lua` после запуска откроет пользователю диалог выбора файла для загрузки на виртуальный компьютер. Файл сохранится в текущей рабочей директории. Если файл с таким именем уже существует, будет предложено указать новое имя.
|
||||
|
||||
`export.lua` в качестве первого параметра принимает название файла, который необходимо выгрузить на реальный компьютер. После выгрузки откроется диалог сохранения, где можно выбрать, куда сохранять файл, или, если нужно, отменить процесс.
|
||||
|
||||
Оба скрипта приглашат в диалог всех пользователей, в данный момент работающих с виртуальным компьютером. Для операции импорта (`import.lua`) будет использован первый выбранный файл, а файлы остальных клиентов будут проигнорированы. Для операции экспорта у всех пользователей откроется диалог для сохранения файла на реальный компьютер.
|
||||
@@ -0,0 +1,4 @@
|
||||
# Карта памяти
|
||||

|
||||
|
||||
Карта памяти содержит загрузочный код, загружаемый в [компьютерную](../block/computer.md) память при его старте. Проще говоря, она содержит прошивку для компьютера. Прошивка, поставляемая с новыми компьютерами и [роботами](robot.md) содержит в себе ядро Linux. Ядро загружает корневую файловую систему, хранящуюся на первом [жестком диске](hard_drive.md) в системе.
|
||||
6
src/main/resources/assets/oc2/doc/ru_ru/item/floppy.md
Normal file
6
src/main/resources/assets/oc2/doc/ru_ru/item/floppy.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# Дискета
|
||||

|
||||
|
||||
Дискета является сменным носителем. Это значит, что их можно менять в [дисководе](../block/disk_drive.md) не перезагружая [компьютер](../block/disk_drive.md).
|
||||
|
||||
Загляните в раздел по [дисководу](../block/disk_drive.md), в нем содержатся полезные команды для работы с дискетами в Linux.
|
||||
@@ -0,0 +1,8 @@
|
||||
# Жесткий диск
|
||||

|
||||
|
||||
Жесткие диски являются основным файловым хранилищем в [компьютерах](../block/computer.md) и [роботах](robot.md).
|
||||
|
||||
Обычно прошивка компьютера для успешной загрузки требует некоторое дисковое пространство. [Карта памяти](flash_memory.md), установленная в новые компьютеры и роботы, содержит в себе ядро Linux, монтирующее корневую файловую систему с первого жесткого диска. Создать необходимый диск можно, положив обычный жесткий диск на крафт вместе с [ключом](wrench.md).
|
||||
|
||||
Компьютеры *необходимо отключать* перед установкой или снятием этого компонента. Установка при работающем компьютере не даст ничего (определение происходит только при загрузке), удаление может повлечь за собой сбой системы.
|
||||
17
src/main/resources/assets/oc2/doc/ru_ru/item/index.md
Normal file
17
src/main/resources/assets/oc2/doc/ru_ru/item/index.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Предметы
|
||||
Здесь представлены ссылки на документации для всех предметов мода. Если вас интересуют блоки - перейдите на страницу [списка блоков](../block/index.md).
|
||||
|
||||
- [Модуль управления блоками](block_operations_module.md)
|
||||
- [Справочник компьютерщика](manual.md)
|
||||
- [Карта Импорта/Экспорта файлов](file_import_export_card.md)
|
||||
- [Карта памяти](flash_memory.md)
|
||||
- [Дискета](floppy.md)
|
||||
- [Жесткий диск](hard_drive.md)
|
||||
- [Модуль управления инвентарем](inventory_operations_module.md)
|
||||
- [Память](memory.md)
|
||||
- [Сетевой кабель](network_cable.md)
|
||||
- [Сетевая интерфейсная карта](network_interface_card.md)
|
||||
- [Красная интерфейсная карта](redstone_interface_card.md)
|
||||
- [Робот](robot.md)
|
||||
- [Ключ](wrench.md)
|
||||
- [Звуковая карта](sound_card.md)
|
||||
@@ -0,0 +1,43 @@
|
||||
# Модуль управления инвентарем
|
||||

|
||||
|
||||
Модуль управления инвентарем позволяет [роботам](robot.md) брать и выкидывать предметы из своего инвентаря. Это касается как предметов, так и блоков.
|
||||
|
||||
## API
|
||||
Название устройства: `inventory_operations`
|
||||
|
||||
Это устройство с высокоуровневым API. Оно может управляться через Lua в стандартном дистрибутиве Linux. Например:
|
||||
`local d = require("devices")`
|
||||
`local m = d:find("inventory_operations")`
|
||||
`m:drop(1, "front")`
|
||||
|
||||
### Стороны
|
||||
Стороны указываются относительно лицевой стороны робота. Допускаются значения: `front`, `up` и `down`.
|
||||
|
||||
### Методы
|
||||
`move(fromSlot:number,intoSlot:number,count:number)` пробует переместить определенное количество предметов из одного слота робота в другой.
|
||||
- `fromSlot` - номер слота, откуда берутся предметы.
|
||||
- `intoSlot` - номер слота, куда ложатся предметы.
|
||||
- `count` - количество предметов для перемещения.
|
||||
|
||||
`drop(count:number[,side]):number` пробует выкинуть определенное количество предметов из текущего слота в указанном направлении. Предметы выбросятся либо в хранилище (если в указанном направлении есть, например, сундук), либо в игровой мир.
|
||||
- `count` - количество предметов для выкидывания.
|
||||
- `side` - сторона, куда будут выкинуты предметы. Опциональное значение, по умолчанию равно `front`. Смотрите секцию "Стороны".
|
||||
- Возвращает количество выкинутых предметов.
|
||||
|
||||
`dropInto(intoSlot:number,count:number[,side]):number` пробует выкинуть предметы с текущего слота в указанный слот хранилища на указанной стороне. Выкидывает предметы только если есть хранилище.
|
||||
- `intoSlot` - номер слота, куда будут положены предметы.
|
||||
- `count` - количество предметов для выкидывания.
|
||||
- `side` - сторона, куда будут выкинуты предметы. Опциональное значение, по умолчанию равно `front`. Смотрите секцию "Стороны".
|
||||
- Возвращает количество выкинутых предметов.
|
||||
|
||||
`take(count:number[,side]):number` пробует взять определенное количество предметов в текущий слот из указанного направления. Предметы возьмутся либо из хранилища (если в указанном направлении есть, например, сундук), либо из игрового мира.
|
||||
- `count` - количество предметов для подбирания.
|
||||
- `side` - сторона, откуда будут взяты предметы. Опциональное значение, по умолчанию равно `front`. Смотрите секцию "Стороны".
|
||||
- Возвращает количество подобранных предметов.
|
||||
|
||||
`takeFrom(fromSlot:number,count:number[,side]):number` пробует взять предметы в текущий слот из указанного слота хранилища на указанной стороне. Берет предметы только если есть хранилище.
|
||||
- `intoSlot` - номер слота, откуда будут взяты предметы.
|
||||
- `count` - количество предметов для подбирания.
|
||||
- `side` - сторона, откуда будут взяты предметы. Опциональное значение, по умолчанию равно `front`. Смотрите секцию "Стороны".
|
||||
- Возвращает количество подобранных предметов.
|
||||
6
src/main/resources/assets/oc2/doc/ru_ru/item/manual.md
Normal file
6
src/main/resources/assets/oc2/doc/ru_ru/item/manual.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# Справочник компьютерщика
|
||||

|
||||
|
||||
Маленькая книжечка с короткими описаниями всего, что касается [компьютеров](../block/computer.md) и устройств для них. Собственно, ее же вы сейчас и читаете!
|
||||
|
||||
Для удобства, можно кликнуть справочником на любой блок из мода и вы получите по нему справку.
|
||||
10
src/main/resources/assets/oc2/doc/ru_ru/item/memory.md
Normal file
10
src/main/resources/assets/oc2/doc/ru_ru/item/memory.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# Память
|
||||

|
||||
|
||||
Оперативное Запоминающее Устройство (ОЗУ) является одной из необходимых вещей для работы [компьютера](../block/computer.md) и [робота](robot.md).
|
||||
|
||||
В отличие от [жестких дисков](hard_drive.md) эта память энергозависима и очищается при выключении компьютера. Теоретически компьютер конечно может работать без ОЗУ, но программам необходим стек для хранения данных. Так что, обычным программам для работы просто необходима ОЗУ. Даже прошивка в [карте памяти](flash_memory.md) требует оперативную память для работы.
|
||||
|
||||
Советуем посмотреть [руководство для начинающих](../getting_started.md).
|
||||
|
||||
Компьютеры *необходимо отключать* перед установкой или снятием этого компонента. Установка при работающем компьютере не даст ничего (определение происходит только при загрузке), удаление может повлечь за собой сбой системы.
|
||||
@@ -0,0 +1,6 @@
|
||||
# Сетевой кабель
|
||||

|
||||
|
||||
Сетевые кабели соединяют пары [сетевых разъемов](../block/network_connector.md) между собой. Один кабель можно протянуть на довольно длинную дистанцию. Для подключения кабеля кликните им по двум сетевым разъемам.
|
||||
|
||||
Кабели ограничены в длине, поэтому сетевые разъемы можно использовать в качестве повторителей для увеличения дистанции.
|
||||
@@ -0,0 +1,10 @@
|
||||
# Сетевая интерфейсная карта
|
||||

|
||||
|
||||
Сетевая интерфейсная карта (NIC) позволяет [компьютерам](../block/computer.md) обмениваться сообщениями через [сетевые разъемы](../block/network_connector.md), подключенные к ним.
|
||||
|
||||
Компьютеры *необходимо отключать* перед установкой или снятием этого компонента. Установка при работающем компьютере не даст ничего (определение происходит только при загрузке), удаление может повлечь за собой сбой системы.
|
||||
|
||||
При использовании дистрибутива Linux, карта предоставляет стандартное Ethernet-устройство. Настройка сети может быть выполнена вручную или через скрипт `setup-network.lua`. Скрипт позволяет настроить статический адрес или динамический при наличии DHCP сервера в сети.
|
||||
|
||||
После настройки воспользуйтесь командой `ifconfig` для получения информации о текущем IP адресе.
|
||||
@@ -0,0 +1,8 @@
|
||||
# Красная интерфейсная карта
|
||||

|
||||
|
||||
Красная интерфейсная карта - более компактная версия [красного интерфейсного блока](../block/redstone_interface.md). Она позволяет пользователям собирать более компактные системы.
|
||||
|
||||
Функционально карта ничем не отличается от блока, за исключением того, что вместо блока сигнал излучается непосредственно от [компьютера](../block/computer.md). Стороны аналогичны блоку.
|
||||
|
||||
API устройства идентично таковому в красном интерфейсном блоке.
|
||||
100
src/main/resources/assets/oc2/doc/ru_ru/item/robot.md
Normal file
100
src/main/resources/assets/oc2/doc/ru_ru/item/robot.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# Робот
|
||||

|
||||
|
||||
Фактически роботы представляют из себя маленькие [компьютеры](../block/computer.md). Однако учитывая их нестационарное назначение, роботы несколько отличаются от обычных компьютеров. Они не могут подключаться к [интерфейсной шине](../block/bus_interface.md). Вместо карт расширения они поддерживают модульные устройства. Это специальные устройства, разработанные с учетом мобильности роботов.
|
||||
|
||||
Роботы имеют фиксированный по размеру инвентарь и суперсовременное емкое энергохранилище. Только предметный инвентарь роботов может быть автоматически заполнен и опустошен, например, с помощью таких устройств, как воронка. Компонентный инвентарь робота конфигурируется вручную.
|
||||
|
||||
В стандартной конфигурации робот не может работать со своим инвентарем. Используйте [модуль управления инвентарем](inventory_operations_module.md), дабы робот мог перемещать предметы в своем инвентаре, выкидывать и поднимать их с игрового мира или хранилища.
|
||||
|
||||
Для подзарядки робота необходимо использовать [зарядное устройство](../block/charger.md). Для зарядки достаточно передвинуть робота на верх устройства. Или вы можете поставить над зарядным устройством какое-либо хранилище и положить робота в него.
|
||||
|
||||
Дистрибутив Linux предоставляет специальную Lua библиотеку `robot`, упрощающую контроль над роботами. Базовое API предлагает асинхронные методы для перемещения. Библиотека же добавляет синхронные альтернативы для более удобного программирования.
|
||||
|
||||
## API
|
||||
Название устройства: `robot`
|
||||
|
||||
Это устройство с высокоуровневым API. Оно может управляться через Lua в стандартном дистрибутиве Linux. Например:
|
||||
`local d = require("devices")`
|
||||
`local r = d:find("robot")`
|
||||
`d:move("forward")`
|
||||
|
||||
### Направления
|
||||
Направления указываются от лица робота. Допускаются значения: `forward`, `backward`, `upward`, `downward` для движения, `left` и `right` для поворотов.
|
||||
|
||||
Для удобства доступны сокращения некоторых сторон: `back`, `up`, `down`. Для максимальной краткости можно использовать первую букву стороны.
|
||||
|
||||
### Методы
|
||||
Эти методы доступны в стандартной конфигурации робота. Для более удобной работы существует обертка этого устройства. Рекомендуется использовать именно эту обертку, вместо прямого доступа к роботу.
|
||||
|
||||
`getEnergyStored():number` возвращает текущее количество запасенной энергии в энергохранилище робота.
|
||||
- Возвращает текущее количество запасенной энергии.
|
||||
|
||||
`getEnergyCapacity():number` возвращает максимальное количество энергии, которое можно запасти в роботе.
|
||||
- Возвращает максимальное количество энергии, которое можно запасти.
|
||||
|
||||
`getSelectedSlot():number` возвращает номер текущего слота в инвентаре робота. Этот слот используется большинством модулей для взаимодействия.
|
||||
- Возвращает номер текущего слота в инвентаре.
|
||||
|
||||
`setSelectedSlot(slot:number):number` устанавливает текущий слот в инвентаре робота. Этот слот используется большинством модулей для взаимодействия.
|
||||
- `slot` - номер слота в инвентаре для выбора.
|
||||
- Возвращает номер нового текущего слота. Он может отличаться от указанного в переменной `slot`, если указанное там значение является некорректным.
|
||||
|
||||
`getStackInSlot(slot:number):table` получает описание предмета в указанном слоте.
|
||||
- `slot` - номер слота, о котором нужно получить информацию.
|
||||
|
||||
`move(direction):boolean` пробует передвинуться в указанном направлении.
|
||||
- `direction` - направление для перемещения.
|
||||
- Возвращает статус выполненной задачи (`true` - удача, `false` - неудача).
|
||||
|
||||
`turn(direction):boolean` пробует повернуться в указанную сторону.
|
||||
- `direction` - направление поворота.
|
||||
- Возвращает статус выполненной задачи (`true` - удача, `false` - неудача).
|
||||
|
||||
`getLastActionId():number` возвращает id последнего совершенного действия. Вызовите его после успешного вызова `move()` или `turn()`, чтобы получить id, связанный с поставленным в очередь действием.
|
||||
- Возвращает id последнего совершенного действия.
|
||||
|
||||
`getQueuedActionCount():number` возвращает количество поставленных в очередь действий, ожидающих выполнения. Используйте его, чтобы дождаться завершения действий при сбое постановки в очередь.
|
||||
- Возвращает количество поставленных в очередь действий.
|
||||
|
||||
`getActionResult(actionId:number):string` возвращает результат действия по его id. Id последнего действия можно получить функцией `getLastActionId()`. Возможно посмотреть результаты только некоторого количества последних действий.
|
||||
- Возвращает результат действия по его id или ничего, если результат недоступен. Доступные результаты имеют следующие статусы: `INCOMPLETE`, `SUCCESS` и `FAILURE`.
|
||||
|
||||
### Библиотека для API
|
||||
- Название библиотеки: `robot`
|
||||
|
||||
Это Lua библиотека. Она может использоваться в стандартном дистрибутиве Linux. Например:
|
||||
`local r = require("robot")`
|
||||
`r.move("forward")`
|
||||
`r.turn("left")`
|
||||
|
||||
### Методы
|
||||
`energy():number` возвращает текущее количество запасенной энергии в энергохранилище робота.
|
||||
- Возвращает текущее количество запасенной энергии.
|
||||
|
||||
`capacity():number` возвращает максимальное количество энергии, которое можно запасти в роботе.
|
||||
- Возвращает максимальное количество энергии, которое можно запасти.
|
||||
|
||||
`slot():number` возвращает номер текущего слота в инвентаре робота. Этот слот используется большинством модулей для взаимодействия.
|
||||
- Возвращает номер текущего слота в инвентаре.
|
||||
|
||||
`slot(slot:number):number` устанавливает текущий слот в инвентаре робота. Этот слот используется большинством модулей для взаимодействия.
|
||||
- `slot` - номер слота в инвентаре для выбора.
|
||||
- Возвращает номер нового текущего слота. Он может отличаться от указанного в переменной `slot`, если указанное там значение является некорректным.
|
||||
|
||||
`stack([slot:number]):table` получает описание предмета в указанном слоте.
|
||||
- `slot` - номер слота, о котором нужно получить информацию. Опционален, по умолчанию равен `slot()`.
|
||||
|
||||
`move(direction):boolean` пробует передвинуться в указанном направлении. Блокирует выполнение программы, пока операция не выполнится.
|
||||
- `direction` - направление для перемещения.
|
||||
- Возвращает статус выполненной задачи (`true` - удача, `false` - неудача).
|
||||
|
||||
`moveAsync(direction)` пробует асинхронно передвинуться в указанном направлении. Блокирует выполнение программы, пока операция не будет поставлена в очередь.
|
||||
- `direction` - направление для перемещения.
|
||||
|
||||
`turn(direction):boolean` пробует повернуться в указанную сторону. Блокирует выполнение программы, пока операция не выполнится.
|
||||
- `direction` - направление поворота.
|
||||
- Возвращает статус выполненной задачи (`true` - удача, `false` - неудача).
|
||||
|
||||
`turnAsync(direction)` пробует асинхронно повернуться в указанную сторону. Блокирует выполнение программы, пока операция не будет поставлена в очередь.
|
||||
- `direction` - направление поворота.
|
||||
21
src/main/resources/assets/oc2/doc/ru_ru/item/sound_card.md
Normal file
21
src/main/resources/assets/oc2/doc/ru_ru/item/sound_card.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Звуковая карта
|
||||

|
||||
|
||||
Звуковая карта позволяет проигрывать разные звуковые эффекты из своей огромной библиотеки реалистичных семплов. Из-за некоторых технических особенностей, последовательное проигрывание эффектов требует небольшой паузы между ними. Если попытаться проиграть эффект в это время, то звука просто не будет.
|
||||
|
||||
Это высокоуровневое устройство, поэтому оно контролируется через высокоуровневое API (HLAPI). Дистрибутив Linux предоставляет Lua библиотеку для данного API. Например:
|
||||
`local d = require("devices")`
|
||||
`local s = d:find("sound")`
|
||||
`s:playSound("entity.creeper.primed")`
|
||||
|
||||
## API
|
||||
Название устройства: `sound`
|
||||
|
||||
### Методы
|
||||
`playSound(name:string)` проигрывает звуковой эффект с указанным именем.
|
||||
- `name` - название эффекта для проигрывания.
|
||||
- Создает ошибку, если такого эффекта не существует.
|
||||
|
||||
`findSound(name:string):table` возвращает список доступных звуковых эффектов с таким именем. Учитывайте, что количество выдаваемых результатов ограничено, поэтому запросы с большим количеством результатов будут обрезаться.
|
||||
- `name` - название звукового эффекта для поиска.
|
||||
- Возвращает список названий звуковых эффектов по указанному запросу.
|
||||
8
src/main/resources/assets/oc2/doc/ru_ru/item/wrench.md
Normal file
8
src/main/resources/assets/oc2/doc/ru_ru/item/wrench.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# Ключ
|
||||

|
||||
|
||||
Ключ-отвертка или просто ключ предназначен для конфигурации некоторых блоков, например [компьютеров](../block/computer.md).
|
||||
|
||||
Он необходим для конфигурирования устройств вроде [интерфейсных шин](../block/bus_interface.md) или быстрого демонтирования, например, [кабелей](../block/bus_cable.md).
|
||||
|
||||
А еще им убирается маскировочный фасад у кабелей.
|
||||
18
src/main/resources/assets/oc2/doc/ru_ru/networking.md
Normal file
18
src/main/resources/assets/oc2/doc/ru_ru/networking.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Сети
|
||||
Чтобы настроить сеть на [компьютере](block/computer.md), используйте [сетевые разъемы](block/network_connector.md) и [сетевые кабели](item/network_cable.md) для соединения разъемов. И убедитесь, что в каждом компьютере будущей сети установлена [сетевая интерфейсная карта](item/network_interface_card.md).
|
||||
|
||||
Разъемы можно подключить к любой стороне компьютера, кроме лицевой. Они позволяют сетевой карте обмениваться пакетами с картами других компьютеров.
|
||||
|
||||
Разъемы, соединенные друг с другом кабелями, будут обмениваться пакетами друг с другом. Для более сложных сетей воспользуйтесь [сетевым концентратором](block/network_hub.md). Он позволяет создавать соединения между кучей компьютеров.
|
||||
|
||||
## Прыжки
|
||||
Сетевые пакеты имеют лимит на количество "прыжков". Прыжком обычно считают одну операцию перемещения пакета. Например, разъем передает пакет за один прыжок. Сетевой концентратор передает пакет на каждый разъем (за исключением разъема-отправителя) за тот же один прыжок. Когда количество оставшихся прыжков становится нулевым, пакет перестает передаваться. Это предотвращает зацикливание пакетов в цикличных сетях. Такой вот защитный механизм. И все же не стоит делать циклы в сетях, поскольку это приведет к дублированию пакетов у принимающих компьютеров.
|
||||
|
||||
## Настройка компьютера
|
||||
Для настройки сети на компьютере убедитесь, что сетевая карта установлена. Затем, в стандартном дистрибутиве Linux запустите команду `setup-network.lua`. Данный мастер поможет вам настроить подключение к сети. Ну а если вы опытный человек, то можете сами настроить сеть, как в обычном Linux.
|
||||
|
||||
## DHCP
|
||||
DHCP это протокол, позволяющий облегчить настройку сети. Достаточно иметь один компьютер с вручную настроенным статическим адресом и DHCP сервером, как все остальные компьютеры в сети смогут получать адреса автоматически. Перед настройкой убедитесь, что у вас нет других компьютеров с DHCP сервером. И проверьте, нет ли компьютеров, имеющих статические адреса в диапазоне выдаваемых DHCP сервером IP адресов.
|
||||
|
||||
## Инструменты
|
||||
После настройки сети и объединения компьютеров в нее, вы получаете кучу преимуществ. Например, вы можете копировать файлы между компьютерами через утилиту `scp`, подключаться к удаленным компьютерам через `ssh` и писать свои сетевые программы на Lua с помощью библиотеки `socket`. За примерами по использованию библиотеки `socket` загляните в [примеры на официальном репозитории](https://github.com/diegonehab/luasocket/tree/master/samples).
|
||||
3
src/main/resources/assets/oc2/doc/ru_ru/robotics.md
Normal file
3
src/main/resources/assets/oc2/doc/ru_ru/robotics.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Роботы
|
||||
|
||||
*НЕ ГОТОВО!*
|
||||
75
src/main/resources/assets/oc2/doc/ru_ru/scripting.md
Normal file
75
src/main/resources/assets/oc2/doc/ru_ru/scripting.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Скрипты
|
||||
Контроль устройств с помощью Lua - это основная механика при использовании [компьютеров](block/computer.md). Большинство устройств здесь имеют высокоуровневое API (HLAPI). Это означает, что они не контролируются системой Linux, используя вместо этого простую RPC систему, передающую JSON сообщения через последовательное устройство.
|
||||
|
||||
## Библиотека устройств
|
||||
В дистрибутив Linux входит библиотека для упрощения доступа к HLAPI устройствам. Библиотека `devices` предоставляет набор функций для обнаружения устройств и вызова их методов, а также получения их документации, если она имеется.
|
||||
|
||||
Для использования библиотеки `devices` , импортируйте ее с помощью строки `require("devices")`.
|
||||
|
||||
### Методы
|
||||
`list():table` возвращает список со всеми доступными устройствами. Каждая запись в этой таблице представляет собой другую таблицу с названиями устройства и его уникальным номером.
|
||||
- Возвращает список с подключенными HLAPI устройствами.
|
||||
|
||||
`get(id:string):Device` возвращает обертку над устройством по его идентификатору. Работает аналогично функции `find`, но вместо имени использует идентификатор.
|
||||
- `id` - уникальный идентификатор устройства.
|
||||
- Возвращает обертку над указанным устройством.
|
||||
|
||||
`find(typeName):Device` возвращает обертку над устройством по его типу (имени). Если устройств с таким названием несколько, будет передан случайный.
|
||||
- `typeName` - тип устройства для поиска.
|
||||
- Возвращает обертку над указанным устройством.
|
||||
|
||||
`methods(id:string):table` возвращает список методов устройства по его идентификатору. Для получения более читабельного списка рекомендуется получить обертку устройства и преобразовать ее в строку. Также посмотрите раздел о типе обертки устройства.
|
||||
- `id` - уникальный идентификатор устройства.
|
||||
- Возвращает список методов устройства.
|
||||
- Создает ошибку, если не удалось получить список.
|
||||
|
||||
`invoke(id:string, methodName:string, ...):any` вызывает метод по его названию и идентификатору устройства. Принимает разное количество параметров (зависит от метода). Не рекомендуется напрямую использовать данный метод. Получите обертку над устройством и вызывайте методы через нее. Также посмотрите раздел о типе обертки устройства.
|
||||
- `id` - уникальный идентификатор устройства.
|
||||
- `methodName` - название метода для вызова.
|
||||
- `...` - параметры для вызываемого метода.
|
||||
- Возвращает результат метода.
|
||||
- Создает ошибку, если вызов не удался или вызываемый метод сам создал ошибку.
|
||||
|
||||
## Обертка устройства
|
||||
Устройства, возвращаемые библиотекой `device` являются объектами типа `Device`. Это обертка, содержащая в себе идентификатор устройства.
|
||||
|
||||
Ее основная цель - упростить вызов методов устройств и получение документации, если она есть.
|
||||
|
||||
Для вызова метода через обертку используйте двоеточие и имя метода. Например:
|
||||
`wrapper:someMethod(1, 2, 3)`
|
||||
|
||||
Для получения документации по устройству примените на обертке `tostring`. В интерпретаторе Lua используйте строчку `=wrapper` (где вместо `wrapper` вводится имя переменной с оберткой).
|
||||
|
||||
## Пример
|
||||
В этом примере мы научимся управлять [блоком красного интерфейса](block/redstone_interface.md). Для начала поставьте блок и подключите его к компьютеру через [интерфейсный кабель](block/bus_cable.md) и [интерфейсные шины](block/bus_interface.md).
|
||||
|
||||

|
||||
|
||||
Мы поставим лампу на блок (сверху) для визуальной индикации наличия красного сигнала.
|
||||
|
||||
Дабы убедиться, что блок подключен, запустим команду `lsdev.lua` . Она выводит список со всеми подключенными HLAPI устройствами. Одно из них должно называться `redstone`.
|
||||
|
||||
Запустите интерпретатор Lua командой `lua`.
|
||||
|
||||

|
||||
|
||||
Подключите библиотеку устройств и запишите ее в переменную `d`:
|
||||
`d = require("devices")`
|
||||
|
||||
Затем получите обертку `Device` для блока красного интерфейса и запишите ее в переменную `r`:
|
||||
`r = d:find("redstone")`
|
||||
|
||||
Здесь строка `redstone` обозначает название (тип) устройства. Тот самый, что был указан в `lsdev.lua`.
|
||||
|
||||
Теперь у нас есть обертка для блока, из которой мы можем вызывать методы. Для получения списка всех доступных методов ведите строку `=r`.
|
||||
|
||||
В данный момент нам нужен метод `setRedstoneOutput`. Он позволяет устанавливать уровень сигнала, излучаемого сторонами красного интерфейса.
|
||||
|
||||
Чтобы зажечь лампу, нам нужно подать красный сигнал на верх блока:
|
||||
`r:setRedstoneOutput("up", 15)`
|
||||
|
||||
Теперь лампа должна зажечься!
|
||||
|
||||

|
||||
|
||||
С помощью этого примера вы теперь можете сами узнавать названия компонентов, их методы и документацию к ним. Идите вперед и экспериментируйте с другими методами красного интерфейса для, например, считывания входящего красного сигнала или попробуйте другие устройства!
|
||||
@@ -7,8 +7,11 @@
|
||||
"block.oc2.bus_cable": "Bus Cable",
|
||||
"block.oc2.bus_cable.desc": "Used in combination with Bus Interfaces to connect external devices to computers.",
|
||||
"block.oc2.network_connector": "Network Connector",
|
||||
"block.oc2.network_connector.desc": "Connector for connecting a computer to a network via a Network Cable.",
|
||||
"block.oc2.network_hub": "Network Hub",
|
||||
"block.oc2.network_hub.desc": "Connects multiple computers into one network. Cables are connected via a Network Connector.",
|
||||
"block.oc2.redstone_interface": "Redstone Interface",
|
||||
"block.oc2.redstone_interface.desc": "Works similar to the Redstone Interface Card, but emits a redstone signal from itself.",
|
||||
"block.oc2.disk_drive": "Disk Drive",
|
||||
"block.oc2.disk_drive.desc": "Used to access Floppy Disks.",
|
||||
"block.oc2.charger": "Charger",
|
||||
@@ -20,13 +23,21 @@
|
||||
"item.oc2.wrench.desc": "Used to configure devices and to dismantle them (while sneaking).",
|
||||
"item.oc2.manual": "The Computerist's Handbook",
|
||||
"item.oc2.bus_interface": "Bus Interface",
|
||||
"item.oc2.bus_interface.desc": "Required for connecting external devices via a Bus Cable.",
|
||||
"item.oc2.network_cable": "Network Cable",
|
||||
"item.oc2.network_cable.desc": "Flexible and thin cable. Connects two Network Connectors together.",
|
||||
"item.oc2.memory": "Memory",
|
||||
"item.oc2.memory.desc": "RAM module. Required for a computer or robot to work. The more you have, the better.",
|
||||
"item.oc2.hard_drive": "Hard Drive",
|
||||
"item.oc2.hard_drive.desc": "Reliable storage for the OS and user files. Almost nowhere without it.",
|
||||
"item.oc2.floppy": "Floppy Disk",
|
||||
"item.oc2.floppy.desc": "Cheap but small storage. Suitable for transferring some program to a friend.",
|
||||
"item.oc2.flash_memory": "Flash Memory",
|
||||
"item.oc2.flash_memory.desc": "This small card can store firmware for a computer or a robot, so it is very important.",
|
||||
"item.oc2.redstone_interface_card": "Redstone Interface Card",
|
||||
"item.oc2.redstone_interface_card.desc": "This card allows the computer to emit a redstone signal from all directions. A useful thing.",
|
||||
"item.oc2.network_interface_card": "Network Interface Card",
|
||||
"item.oc2.network_interface_card.desc": "Allows sending and receiving messages via attached Network Connector.",
|
||||
"item.oc2.network_interface_card.is_configured": "Has connectivity configuration.",
|
||||
"item.oc2.file_import_export_card": "File Import/Export Card",
|
||||
"item.oc2.file_import_export_card.desc": "Provides an API to import and export files into and out of a virtual computer from and into your real file system.",
|
||||
@@ -40,7 +51,9 @@
|
||||
"item.oc2.sound_card.desc": "Can play various sounds from its highly realistic sound bank.",
|
||||
|
||||
"item.oc2.transistor": "Transistor",
|
||||
"item.oc2.transistor.desc": "It may or may not conduct a signal. It is the basis of any computer and not only.",
|
||||
"item.oc2.circuit_board": "Circuit Board",
|
||||
"item.oc2.circuit_board.desc": "Flat board with conductive tracks. Required for the manufacture of computer boards.",
|
||||
|
||||
"entity.oc2.robot": "Robot",
|
||||
|
||||
|
||||
112
src/main/resources/assets/oc2/lang/ru_ru.json
Normal file
112
src/main/resources/assets/oc2/lang/ru_ru.json
Normal file
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"itemGroup.oc2.common": "OpenComputers II",
|
||||
|
||||
"block.oc2.computer": "Компьютер",
|
||||
"block.oc2.computer.desc": "Используйте ключ для установки и снятия компонентов.",
|
||||
"block.oc2.computer.preconfigured": "Собранный компьютер",
|
||||
"block.oc2.bus_cable": "Интерфейсный кабель",
|
||||
"block.oc2.bus_cable.desc": "С помощью интерфейсных шин подключает внешние устройства к компьютеру.",
|
||||
"block.oc2.network_connector": "Сетевой разъем",
|
||||
"block.oc2.network_connector.desc": "Разъем для подключения компьютера к сети через сетевой кабель.",
|
||||
"block.oc2.network_hub": "Сетевой концентратор",
|
||||
"block.oc2.network_hub.desc": "Соединяет несколько компьютеров в одну сеть. Кабели подключаются через сетевой разъем.",
|
||||
"block.oc2.redstone_interface": "Красный интерфейс",
|
||||
"block.oc2.redstone_interface.desc": "Работает аналогично красной интерфейсной карте, но излучает редстоун сигнал от себя.",
|
||||
"block.oc2.disk_drive": "Дисковод",
|
||||
"block.oc2.disk_drive.desc": "Нужен для работы с дискетами.",
|
||||
"block.oc2.charger": "Зарядное устройство",
|
||||
"block.oc2.charger.desc": "Заряжает сущности и предметы в контейнерах над ним.",
|
||||
"block.oc2.creative_energy": "Энергокуб бесконечности",
|
||||
"block.oc2.creative_energy.desc": "Подает бесконечную энергию на соседние блоки. Применять только в тестовых целях.",
|
||||
|
||||
"item.oc2.wrench": "Ключ",
|
||||
"item.oc2.wrench.desc": "Используется для конфигурации и демонтажа (если присесть) устройств.",
|
||||
"item.oc2.manual": "Справочник компьютерщика",
|
||||
"item.oc2.bus_interface": "Интерфейсная шина",
|
||||
"item.oc2.bus_interface.desc": "Нужна для подключения внешних устройств по интерфейсному кабелю.",
|
||||
"item.oc2.network_cable": "Сетевой кабель",
|
||||
"item.oc2.network_cable.desc": "Гибкий и тонкий кабель. Соединяет между собой два сетевых разъема.",
|
||||
"item.oc2.memory": "Память",
|
||||
"item.oc2.memory.desc": "Модуль ОЗУ. Необходим компьютеру или роботу для функционирования. Чем больше памяти, тем лучше.",
|
||||
"item.oc2.hard_drive": "Жесткий диск",
|
||||
"item.oc2.hard_drive.desc": "Надежное хранилище для ОС и пользовательских файлов. Без него практически никуда.",
|
||||
"item.oc2.floppy": "Дискета",
|
||||
"item.oc2.floppy.desc": "Дешевый, но маленький по объему накопитель. Подойдет, чтобы передать какую-нибудь программу другу.",
|
||||
"item.oc2.flash_memory": "Карта памяти",
|
||||
"item.oc2.flash_memory.desc": "В этой маленькой карточке может храниться прошивка для компьютера или робота, поэтому она очень важна.",
|
||||
"item.oc2.redstone_interface_card": "Красная интерфейсная карта",
|
||||
"item.oc2.redstone_interface_card.desc": "Эта карта позволяет компьютеру излучать редстоун сигнал со всех его сторон. Полезная штука.",
|
||||
"item.oc2.network_interface_card": "Сетевая интерфейсная карта",
|
||||
"item.oc2.network_interface_card.desc": "С помощью этой карты компьютер может взаимодействовать с сетью, подключенной к нему через сетевой разъем.",
|
||||
"item.oc2.file_import_export_card": "Карта импорта/экспорта файлов",
|
||||
"item.oc2.file_import_export_card.desc": "Предоставляет API для импорта и экспорта файлов на виртуальный компьютер в или из вашей реальной файловой системы.",
|
||||
"item.oc2.robot": "Робот",
|
||||
"item.oc2.robot.desc": "Используйте ключ для установки и снятия компонентов с робота.",
|
||||
"item.oc2.inventory_operations_module": "Модуль управления инвентарем",
|
||||
"item.oc2.inventory_operations_module.desc": "Позволяет роботам перемещать предметы в своем инвентаре, поднимать и бросать их.",
|
||||
"item.oc2.block_operations_module": "Модуль управления блоками",
|
||||
"item.oc2.block_operations_module.desc": "Позволяет роботам ломать и ставить блоки.",
|
||||
"item.oc2.sound_card": "Звуковая карта",
|
||||
"item.oc2.sound_card.desc": "Может проигрывать разные звуки из своих высококачественных звуковых банков.",
|
||||
|
||||
"item.oc2.transistor": "Транзистор",
|
||||
"item.oc2.transistor.desc": "Может проводить или не проводить сигнал. Является основой любого компьютера и не только.",
|
||||
"item.oc2.circuit_board": "Печатная плата",
|
||||
"item.oc2.circuit_board.desc": "Плоская плата с токопроводящими дорожками. Необходима для изготовления компьютерных плат.",
|
||||
|
||||
"entity.oc2.robot": "Робот",
|
||||
|
||||
"gui.oc2.computer.error.unknown": "Неизвестная ошибка",
|
||||
"gui.oc2.computer.error.missing_firmware": "Отсутствует прошивка",
|
||||
"gui.oc2.computer.error.insufficient_memory": "Недостаточно памяти",
|
||||
"gui.oc2.computer.bus_state.incomplete": "Шина не заполнена",
|
||||
"gui.oc2.computer.bus_state.too_complex": "Слишком много устройств",
|
||||
"gui.oc2.computer.bus_state.multiple_controllers": "Много контроллеров шины",
|
||||
"gui.oc2.computer.error.not_enough_energy": "Недостаточно энергии",
|
||||
|
||||
"gui.oc2.computer.capture_input.capt": "Захват ввода",
|
||||
"gui.oc2.computer.capture_input.desc": "Пока курсор находится в пределах окна терминала, ввод (включая нажатие на ESC) будет захватываться.",
|
||||
"gui.oc2.computer.power.capt": "Кнопка питания",
|
||||
"gui.oc2.computer.power.desc": "Включает или выключает компьютер.",
|
||||
|
||||
"gui.oc2.machine.open_inventory.capt": "Открыть инвентарь",
|
||||
"gui.oc2.machine.open_terminal.capt": "Открыть терминал",
|
||||
|
||||
"gui.oc2.device_type.memory": "Память",
|
||||
"gui.oc2.device_type.hard_drive": "Жесткий диск",
|
||||
"gui.oc2.device_type.flash_memory": "Карта памяти",
|
||||
"gui.oc2.device_type.card": "Карта",
|
||||
|
||||
"gui.oc2.file_chooser.title.load": "Открыть файл",
|
||||
"gui.oc2.file_chooser.title.save": "Сохранить файл",
|
||||
"gui.oc2.file_chooser.text_field.filename": "Имя файла",
|
||||
"gui.oc2.file_chooser.confirm_button.load": "Открыть",
|
||||
"gui.oc2.file_chooser.confirm_button.save": "Сохранить",
|
||||
"gui.oc2.file_chooser.confirm_button.overwrite": "Перезаписать",
|
||||
"gui.oc2.file_chooser.cancel_button": "Отмена",
|
||||
|
||||
"manual.oc2.home": "Главная страница",
|
||||
"manual.oc2.blocks": "Блоки",
|
||||
"manual.oc2.items": "Предметы",
|
||||
|
||||
"message.oc2.connector.error.full": "Подключено слишком много кабелей.",
|
||||
"message.oc2.connector.error.too_far": "Дистанция между разъемами слишком велика.",
|
||||
"message.oc2.connector.error.obstructed": "Между разъемами присутствует преграда.",
|
||||
"message.oc2.import_file.file_too_large": "Файл слишком большой.",
|
||||
"message.oc2.invalid_facade_block": "Этот блок нельзя использовать как фасад.",
|
||||
|
||||
"tooltip.oc2.device_needs_reboot": "Требуется перезагрузка",
|
||||
"tooltip.oc2.flash_memory_missing": "Карта памяти содержит прошивку, необходимую для загрузки.",
|
||||
"tooltip.oc2.memory_missing": "Некоторая память требуется для загрузки прошивки из карты памяти и последующей работы.",
|
||||
"tooltip.oc2.hard_drive_missing": "Большинству ОС для загрузки необходима файловая система.",
|
||||
"tooltip.oc2.energy": "Энергия: %s",
|
||||
"tooltip.oc2.energyConsumption": "Потребление энергии: %s/t",
|
||||
"tooltip.oc2.confirm": "Подтвердить",
|
||||
"tooltip.oc2.cancel": "Отмена",
|
||||
|
||||
"subtitles.oc2.computer": "Запуск вентиляторов",
|
||||
"subtitles.oc2.floppy": "Жужжание дисковода",
|
||||
"subtitles.oc2.floppy_eject": "Дискета извлечена",
|
||||
"subtitles.oc2.floppy_insert": "Дискета вставлена",
|
||||
"subtitles.oc2.hdd": "Шум жесткого диска"
|
||||
}
|
||||
38
src/main/scripts/bin/redstone.lua
Normal file
38
src/main/scripts/bin/redstone.lua
Normal file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/lua
|
||||
|
||||
local devices = require('devices')
|
||||
|
||||
local rs = devices:find("redstone")
|
||||
if not rs then
|
||||
io.stderr:write("This program requires a Redstone Interface Card or Redstone Interface.\n")
|
||||
return 1
|
||||
end
|
||||
|
||||
local args = table.pack(...)
|
||||
if #args == 0 then
|
||||
io.write("Usage:\n")
|
||||
io.write(" redstone <side name> [<value>]\n")
|
||||
return
|
||||
end
|
||||
|
||||
if #args > 0 then
|
||||
local side = string.lower(args[1])
|
||||
sides = {["up"]=true,["down"]=true,["north"]=true,["south"]=true,["west"]=true,["east"]=true,
|
||||
["front"]=true,["back"]=true,["left"]=true,["right"]=true}
|
||||
if not sides[side] then
|
||||
io.stderr:write("invalid side\n")
|
||||
return
|
||||
end
|
||||
|
||||
local value = args[2]
|
||||
if value then
|
||||
if tonumber(value) then
|
||||
value = tonumber(value)
|
||||
else
|
||||
value = ({["true"]=true,["on"]=true,["yes"]=true})[value] and 15 or 0
|
||||
end
|
||||
rs:setRedstoneOutput(side, value)
|
||||
end
|
||||
io.write("in: " .. math.ceil(rs:getRedstoneInput(side)) .. "\n")
|
||||
io.write("out: " .. math.ceil(rs:getRedstoneOutput(side)) .. "\n")
|
||||
end
|
||||
Reference in New Issue
Block a user