ПОЛНЫЙ ОБЗОР
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 — возвращает состояние блокировки шифратора на данный момент.
Скриншоты:
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 — устанавливает текущий цвет лампочки. Если цвет равен нулю, то лампочка выключается.
Скриншоты:
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.
Скриншоты:
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