Перейти к публикации
Форум - ComputerCraft

Fingercomp's Playground

  • записей
    85
  • комментария
    323
  • просмотров
    217 412

[OC] [Add-ons] Computronics! Полный обзор версии 1.5.5 [#2] (стандартные блоки)

Fingercomp

5 218 просмотров

ПОЛНЫЙ ОБЗОР


Computronics версии 1.5.5


Часть вторая: стандартные блоки.


И снова я приветствую Вас, уважаемый читатель этого блога! Вашему вниманию представляю вторую часть полного обзора CX версии 1.5.5, в которой я поведаю Вам о:

  • Cipher Block (шифратор)
  • Advanced Cipher Block (продвинутый шифратор)
  • Colorful Lamp (разноцветная лампочка)
  • Tape Drive + Cassette tapes (кассетный привод и, собственно, кассеты))





I. Cipher Block

a.k.a. "Шифратор"

Алгоритмов шифрования уже и так огороды, но суровые разрабы CX не сдаются) На самом деле, может быть очень полезным блоком для каких-нибудь там ивентов. Почему? Этот блок позволяет шифровать и дешифровать определённую строку, используя в качестве ключа... не что иное, как... предметы! Да, знаю, поворот весьма и весьма неожиданный, но так оно и есть на самом деле.

 

Функции.
  • cipher.decrypt(encrypted_string:String):String — пытается расшифровать строку, используя как "ключ" предметы в инвентаре шифратора. В случае неудачи (неправильный код) выдаёт ошибку.
  • cipher.encrypt(string_to_encrypt:String):String — шифрует данную строку, используя как "ключ" предметы в инвентаре шифратора. Возвращает зашифрованную строку.
  • cipher.setLocked(lock:Boolean) — блокирует/открывает доступ к инвентарю шифратора. При попытке открыть заблокированный шифратор, игроку выдаётся предупреждение в чат.
  • cipher.isLocked():Boolean — возвращает состояние блокировки шифратора на данный момент.


Скриншоты:


Интерфейс шифратора. Имеется шесть слотов под предметы. Тем не менее, если инвентарь заполнен частично, шифратор всё равно может шифровать сообщения. Размер стэка в шифраторе на процесс не влияет, в отличии от места расположения предмета.
8lI5ZpK.png



Заблокированный шифратор
fxauLf6.png

 

 

 

 

II. Advanced Cipher Block.

a.k.a. "Продвинутый шифратор"

Этот вариант шифратора отличается от предыдущего тем, что здесь нет необходимости задать предметы как ключ — для шифровки/расшифровки используется алгоритм RSA.

 

Функции.
  • adv_cipher.createKeySet(prime1:Number, prime2:Number):Keygen — создаёт и запускает процесс генерации пары ключей на основе двух простых чисел. Возвращается структура, содержашая данные методы:
    • key_set.finished():Boolean — так как процесс генерации ключей не мгновенный, использовать ключи сразу же после создания генератора нельзя. Данная функция возвращает готовность ключей: true при завершённом процессе генерации и false, если процесс генерации не завершён.
    • key_set.getKeys():Table, Table — данная функция возвращает пару сгенерированных ключей или nil при незавершённом процессе генерации.

    [*]adv_cipher.createRandomKeySet():Keygen — идентичен полностью прошлой функции за исключением того, что числа простые указывать не нужно — они выберутся случайно. [*]adv_cipher.decrypt(encrypted_string:String, private_key:Table):String — дешифрует данную строку, используя приватный ключ RSA. [*]adv_cipher.encrypt(string_to_encrypt:String, public_key:Table):String — шифрует данную строку, используя публичный ключ RSA.

 

 

 

III. Colorful Lamp.

a.k.a "Разноцветная лампочка"

Блок, испускающий свет, цвет которого можно менять программно (всего цветов 32768, включая чёрный).
Функции.
  • lamp.getLampColor():Number — возвращает текущий цвет лампочки.
  • lamp.setLampColor(color:Number):Boolean — устанавливает текущий цвет лампочки. Если цвет равен нулю, то лампочка выключается.


Скриншоты:


Здесь лампе был присвоен цвет 16384.
DBuRS76.png

 

 

 

 

IV. Кассеты и всё, что с ними связано.


IV.1. Cassette Tapes.

a.k.a. "Кассеты"

Кассеты — мощное переносное хранилище информации, как текстовой, так и музыкальной. Всего видов кассет в CX — ни много, ни мало — 8 штук! И каждый тип различается требованиями по ресурсам и вместительностью музыки в минутах.
  • Деревянная — 2 минуты
  • Железная — 4 минуты
  • Стальная — 6 минут
  • Золотая дешёвая — 8 минут
  • Золотая дорогая — 16 минут
  • Алмазная — 32 минуты
  • "Дешёвая" незерстарровская — 64 минуты
  • И, наконец, самая ненажная и дорогущая одновременно вещь, которая когда-либо существовала в Майначе... Дорогущая незерстарровская — 128 минут. Это больше, чем на CD-диске!)) Но и качество хромает. Тем не менее, на такую кассету можно записать больше данных, чем на РЭЙД с 3 алмазными дисками)

 


IV.2. Tape Drive.

a.k.a. "Стример"

Но одной кассетой Вы удолевтвориться не сможете... Для считывания и записывания информации необходим аналог CD-ROM'а, но для кассет — кассетный проигрыватель, называемый стримером.
Функции.
  • tape.stop():Boolean — останавливает проигрывание кассеты.
  • tape.setSpeed(speed:Number):Boolean — устанавливает скорость воспроизведения (от 0.25 до 2).
  • tape.getLabel():String — возвращает метку касссеты. Если не задано, равно "".
  • tape.setLabel(label:String):String — устанавливает метку кассеты. Она видна в тултипе кассеты и в кассетном приводе, если там вставлена дискета. Возвращается новая установленная метка кассеты.
  • tape.getState():String — возвращает текущий статус кассетного привода: "RUNNING", если проигрывается кассета, или "STOPPED", если нет дискеты, или воспроизведение было остановлено.
  • tape.seek(amount:Number) — перематывает кассету на данное количество байтов вперёд/назад (при отрицательном значении).
  • tape.setVolume(volume:Number) — устанавливает громкость кассеты от 0 до 1 (принимаются дробные значения).
  • tape.getSize():Number — возвращает размер музыкального содержимого кассеты в байтах. Полезно вместе с функцией tape.seek() для перемотки в начало.
  • tape.play() — начинает проигрывание музыкального содержимого кассеты.
  • tape.isEnd():Boolean — возвращает true, если проигрывание содержимого завершилось. Полезно для зацикливания музыки на дискете в совокупности с tape.getSize() и tape.seek().
  • tape.isReady():Boolean — возвращает true, если в приводе присутствует дискета.
  • tape.read([length:Number]):Number|String — читает всё (или определённое кол-во байтов), что записано на кассету.
  • tape.write(data:Number|String) — записывает на кассету данные.


Программа.

При вставке кассеты в привод, появляется программа tape, которая позволяет совершать базовые операции над кассетой без необходимости использовать интерпретатор Lua. Доступно следующее:
  • tape play — начать проигрывание.
  • tape pause — приостановить проигрывание.
  • tape stop — остановить проигрывание и перемотать в начало.
  • tape rewind — перемотать кассету в начало.
  • tape label — получить метку кассеты.
  • tape label label — установить метку label кассете в приводе.
  • tape volume volume — установить громкость volume музыке на кассете.
  • tape speed speed — установить скорость speed проигрывания.
  • tape write path/to/audio/file — записать на кассету файл с жёсткого диска компьютера.
  • tape write URL — записать на кассету музыку с удалённого сервера, доступную по адресу URL.


Скриншоты:


Интерфейс кассетного привода.
B2iMT0Z.png


IV.3. Формат звуковых файлов DFPWM.

Прочитав рассказ о воспроизведении звука, наверняка, Вы уже начали искать тот самый файл с вашей любимой музыкой. Но не всё так просто! Дело в том, что используется странный и непонятный формат файлов — DFPWM... Но где его искать?

Шаг первый. Конвертер.

Первым делом, придётся открыть http://www.google.com/ в отдельной вкладке, ведь мороки с музыкой будет много. Сначала найдите в интернете конвертеры из формата Вашего файла в формат WAV (можно пропустить, если изначально в WAV). Для Линукса это ffmpeg, например.

Шаг второй. Получение файла DFPWM.

У вас должен быть на руках WAV-файл с музыкой. На всякий случай попробуйте открыть его в аудиопроигрывателе, дабы убедиться в "правильности" файла. Если всё ОК — закрываем Гугл и идём дальше. Загрузите данный файл на свой компьютер: https://dl.dropboxusercontent.com/u/93572794/LionRay.jar Это конвертер из WAV в DFMPW. Выставьте права на исполнение, если они не соблюдены, и запустите файл через Java. Укажите расположение исходного WAV-файла и запустите процесс конвертации.

Шаг третий. Сохранение файла.

Если у Вас есть доступ к папке сохранения, то всё просто — откройте папку ~/saves/<имя_мира>/opencomputers/<адрес_диска>/ и переместите туда Ваш получившийся аудиофайл. Затем вставьте кассету в стример, подключите последний к компьютеру и пропишите tape write <имя_аудиофайла>. Иначе Вам придётся искать хостинг, выдающий прямые ссылки на файл. Загрузите файл и скопируйте ссылку. Затем вставьте интернет-карту в компьютер и пропишите следующее: tape write <ссылка_на_аудиофайл>. Дождитесь окончания загрузки.

 




Фух, вот я, наконец, и закончил. В сумме на написание этого гайда ушло около шести часов ночного времени, так что думаю, что он Вам понравится) Оставляйте оценки, лайки, жду комментариев! А в следующей части я расскажу о четырёх новых картах, которые добавляет CX.

 

Ссылка на страницу мода: http://wiki.vex.tty.sh/wiki:computronics

  • Like 10


7 комментариев


Рекомендованные комментарии

@Andronio

Я, конечно, понимаю. Краткость — сестра таланта, всё такое.

Однако слишком сокращать не следует.

 

Прошу пояснений и явного указания, что за функция, и почему так сложно понять, что :Boolean — это тип возвращаемого значения?

Поделиться комментарием


Ссылка на комментарий

А в каком формате цвета задаются лампе?
P.S. За ранний коммент сорь, не понимал тогда ничего. Жаль, что комменты удалить нельзя...

Поделиться комментарием


Ссылка на комментарий

А в каком формате цвета задаются лампе?

5 бит на канал R, G, B. То есть каждый канал может иметь значение от 0 до 31. Простейшими битовыми операциями их затем можно будет совместить: (((r << 5) | b) << 5) | g.

Поделиться комментарием


Ссылка на комментарий

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×