Перейти к содержимому

Fingercomp

Гуру
  • Публикации

    1 629
  • Зарегистрирован

  • Посещение

  • Победитель дней

    283

Записи блога, опубликованные пользователем Fingercomp

  1. Fingercomp
    ; — это код, который делает приблизительно ничего. Не абсолютно: об этом статья.

    Когда я писал crateriform (видяшки в гайде про корутины этим набором прог зарендерены), я отталкивался от Lua-парсера на Lua от @LeshaInc (спасибо ему ещё раз): Lua-часть принимала исходный файл с кодом, парсила его на AST и генерировала по нему обратно код. С костылями.
     
    Для рендера нужен был "сценарий" — файл, в котором указаны, какие символы изменились и на какое значение, помимо прочего. Генерируемые костыли как раз этим занимались: они оборачивались вокруг выражений и писали в файл высчитанное значение.
     

     
    Чтобы показать кадр с "n = 10", как на гифке, и следующий за ним, сценарий такой:
    5,16 5,16 expr 10 Здесь через пробел: позиция начала в исходном коде, позиция конца, опкод (expr) и значение выражения.
     
    Так как генерируемый код делает то же, что и исходный, но ещё рисует сценарий, а выражения могут быть засунуты где угодно и раскрываться сразу в несколько значений, я создаю лямбду (анонимную функцию) и тут же её вызываю. Вот как выглядит часть сгенерированного кода, который занимается строкой выше:
    highlight({5, 16}, {5, 16}, (function(...) local values = table.pack(...) return function() return table.unpack(values, 1, values.n) end end)((n)), 'expr') Выглядит очень сложно (для сложности есть причины), но сейчас интересует только это:
    (function(...) <...> end)(...) Эта конструкция присутствует как третий аргумент к highlight. Программисты на JS с этим шаблоном должны быть знакомы: создаётся лямбда и тут же вызывается с некими аргументами. В месте, где синтаксис позволяет указывать только выражение — в списке аргументов вызова в нашем случае, — таким образом размещаем стейтменты.
     
    На всякий случай скажу, что стейтмент — любая цельная конструкция, кроме выражений. Если вы берёте часть кода, которая отдельно, вырванная из кода, не выдаёт синтаксическую ошибку (например, цикл for или local x = 3), и её нельзя поместить после x =  , это стейтмент.
     
    А теперь суть.
    (function(x) print(x^2) end)(2) (function(y) print(y + 2) end)(2) Этот код задумывался так, чтобы он два раза принтнул четвёрку. Запускаем:
    $ lua5.3 semicolon.lua 4.0 lua5.3: semicolon.lua:1: attempt to call a nil value stack traceback: semicolon.lua:1: in main chunk [C]: in ? ..?
     
    Lua игнорирует пробельные символы. Код вроде такого:
    func(3) (4)(5) ...эквивалентен такому:
    func(3)(4)(5) В примере с ошибкой вызывается первая лямбда, возвращающая nil, который мы затем пытаемся вызвать с аргументом — второй лямбдой. Поэтому получаем "attempt to call a nil value". Чиним с помощью ;:
    (function(x) print(x^2) --> 4.0 end)(2) ; (function(y) print(y + 2) --> 4 end)(2) Кстати, чтобы ещё с толку сбить: комментарий вместо ; ошибку не исправит.
     
    Ещё один ошибочный пример:
    local pi = math.pi (function(r) print(2 * pi * r) end)(3) Как чинить, вы уже знаете.
     
    Отдельно упомяну точку с запятой после return. return обязан быть последним стейтментом в блоке. А ; — это стейтмент. Почему тогда можно делать так?
    local function f(x) return x^2; end print(f(2)) --> 4.0 Ответ: потому что ; — это опциональная часть return, а не отдельный стейтмент. Если же залипает клавиша и получается вот так:
    local function f(x) return x^2;; end print(f(2)) ...то будет синтаксическая ошибка. Вторая точка с запятой — теперь отдельный стейтмент, которых после return быть не должно.
     
    Поэтому с уважением относитесь к этому стейтменту. Точка с запятой делает приблизительно ничего, но с умом.
  2. Fingercomp
    Приветствую Вас, уважаемый читатель! В самый ТРУДный день '15 года я, наконец, написал красивые часы, которые идеально подходят для декорирования, например, метро или аэропорта, а также как просто инфо-панель дома Не будем отрывать коту хвост, закончим здесь предисловие.
     
    Finger Clock v. ∞
    Простая прога для OpenComputers, которая будет показывать Вам текущее майновремя... и реальное время с поддержкой часовых поясов!
    Pastebin: http://pastebin.com/aKjh5SZL
    Command: pastebin get aKjh5SZL clock
     
    Минимальная комплектация:
    Монитор T1 x1
    Компьютер T1 x1
    Жёсткий диск T1 x1 + OpenOS
    Видеокарта T1 x1
    Редстоун-карта T1 x1 (требуется, если монитор не поддерживает клик мышкой, то есть если монитор первого уровня. В мониторах выше не обязателен).
    Процессор T1 x1
    ОЗУ T1.5 x2
    EEPROM — Lua BIOS
    Интернет-карта/OpenNet-интернет — только для установки

    Рекомендуемая комплектация:
    Монитор T2/T3 x6
    Компьютер T2/T3 x1
    Жёсткий диск T1 x1 + OpenOS
    Видеокарта T2/T3 x1
    Редстоун-карта T1 x1 (требуется, если монитор не поддерживает клик мышкой, то есть если монитор первого уровня. В мониторах выше не обязателен).
    Процессор T2/T3 x1
    ОЗУ T2/T2.5/T3/T3.5 x1/2
    EEPROM — Lua BIOS
    Интернет-карта/OpenNet-интернет — только для установки

    Функции:
    Позволяет показывать реальное время и внутриигровое время.
    Настройка цветов, разрешения и часового пояса в константах в начале программы.
    Не использует отдельные библиотеки — меньше возни с установкой.

    Настройка:
    В самом начале программы есть список констант для настройки программы.

    MT_BG = 0x000000 -- Цвет фона при режиме показа внутриигрового времени.MT_FG = 0xFFFFFF -- Цвет текста при режиме показа внутриигрового времени.DAY = 0xFFFF00 -- Цвет надписи "Day".EVENING = 0x202080 -- Цвет надписи "Evening".NIGHT = 0x000040 -- Цвет надписи "Night".MORNING = 0x404000 -- Цвет надписи "Morning".RT_BG = 0x000000 -- Цвет фона при режиме показа реального времени.RT_FG = 0xFFFFFF -- Цвет текста при режиме показа реального времени.TIMEZONE = 0 -- Часовой пояс (от -12 до 12).W, H = 80, 25 -- Разрешение экрана. Рекомендуется 40x8.REDSTONE = false --[[ Если параметр будет установлен в true, программа будет сменять режимы при изменении редстоун-сигнала. ]]--TOUCH = true --[[ Если параметр будет установлен в true, программа будет сменять режимы по клику мышкой по экрану. ]]--KEY1 = 13 -- Коды клавиши. По умолчанию — [Enter].KEY2 = 28 -- Подробнее в комментариях.AUTOMODE = true --[[ Режим, который активируется при запуске программы. true — режим внутриигрового времени, false — режим реального времени. ]]--SHOWSECS = true --[[ Позволяет скрывать секунды в режиме реального времени при значении, равном false. ]]--SWDATEMT = true -- Показывать внутриигровую дату.SWDATERT = true -- Показывать реальную дату.SWDTMMT = true -- Показывать внутриигровое время суток.SWDTMRT = true -- Показывать реальное время суток.
    Скриншоты:

    Режим показа внутриигрового времени
     
     

    Режим показа реального времени
  3. Fingercomp
    Lamp-o-mat! Это небольшая программулька, которая снова из категории "украшения" (предыдщую программу, часики, смотреть тут). В общем, это гирлянда такая. Для лампочек цветных из Computronics.
    Проста прога как дуб, но выглядит прикольно. В частности, это первая прога с принципом ООП.
    Писалась ночями двумя по заказу @Alex, итог меня радует.
     
    Скачивание в репозитории.
    Паста.
    Гист.
     
    Скриншот:

     
     
    Конфигурация:

     
  4. Fingercomp
    Да, дамы и господа, он тут! Тот самый автокрафт, который был на старом ИТ с АЕ, обновляется до новой версии, в которой полностью отказываемся от АЕ и переходим на сундуки.
    Для работы нужна "стенка" из сундуков, двойные использовать нельзя. Или ставить вплотную сундуки из IronChest, или же попеременно сундук обычный / сундук-ловушка. В левой позиции ставим робота-крафтера мордой в сторону других сундуков, под него ещё один сундук. Теперь считаем размеры массива: по ширине сколько (X) и по высоте (Y).
     
    Затем ставим комп/сервер/планшет с нет-картой беспроводной, пишем mkdir /usr/bin, mkdir /usr/share, затем wget https://gist.github.com/Fingercomp/64d811a08af2e7848c9d/raw/8bacd47b12d2f202fb2d8bb48ff4010534e29b96/pc-craft.lua /usr/bin/craft.lua, wget https://gist.github.com/Fingercomp/64d811a08af2e7848c9d/raw/8bacd47b12d2f202fb2d8bb48ff4010534e29b96/pc-recipes.lua /usr/bin/recipes.lua.
     
    Запускаем команду recipes, пишем 4 и 0. Всё. Компьютер готов.
     
    Включаем робота, пишем wget https://gist.github.com/Fingercomp/64d811a08af2e7848c9d/raw/8bacd47b12d2f202fb2d8bb48ff4010534e29b96/robot-autorun.lua /autorun.lua, wget https://gist.github.com/Fingercomp/64d811a08af2e7848c9d/raw/8bacd47b12d2f202fb2d8bb48ff4010534e29b96/robot-scan.lua /scan.lua.
     
    А ещё чуть выше мы считали размер массива сундуков. Пишем edit /usr/bin/craft.lua на компьютере, в начале самом файла находим local CHESTX, CHESTY = 1, 2 и меняем числа на свои. Если ширина = 4, а высота = 3, то будет 4, 3. И т. д.
     
    В принципе, автокрафт теперь готов к работе. Но чтобы скрафтить хоть что-либо, потребуется заполнить базу данных с помощью программы recipes. Я чуть ниже подробнее расскажу о том, как это делается, а пока можете просто прописать команду wget https://gist.github.com/Fingercomp/64d811a08af2e7848c9d/raw/8bacd47b12d2f202fb2d8bb48ff4010534e29b96/pc-db /usr/share/db, чтобы скачать готовую БД, которую составлял я сам. =)
     
    Давайте просканируем рецепт! Открываем прогу recipes:


    Жмём 7 и [Enter]:


    Идём к роботу и выкладываем рецепт так:


    Пишем в роботе scan:


    Всё, забираем предметы у робота и возворащаемся к компу. Там должна быть такая картинка:


    Вводим имя рецепта, количество предметов на выходе крафта. Жмём [Enter].


    Тыкаем по [y], энтерим... И всё! Рецепт сохранён в памяти... Программы. Это означает, что если сейчас выйти, рецепт будет утерян. Так что не забывайте писать 4 перед выходом!
     
    Остальные функции прог craft и recipes интуитивно понятны. Если нет — смотрите предыдущую запись про автокрафт, интерефейс тот же... =)
    Кроме одного. База данных предметов получается при первом запуске программы в сеансе, затем она кэшируется в _G. Это позволяет не ждать опять фигалион лет, если вы ошиблись номером рецепта или у вас не было какого-то ресурса. Но если что-то изменили в сундуках — всё, БДП не будет соответствовать действительности. В таком случае запустите программу так: craft update.
    Сундук под роботом (выход) проверяется каждый раз при старте проги. Если не хотите делать проверку (всего 5 секунд), запустите с аргументом noupd[/i]: [il]craft noupd.
     
    К слову, код там старый, гнилой и высохший. Самому не нравится. Но что поделать — переписывать лень.
     


    БАГИ В ПРОГРАММЕ CRAFT И ИХ РЕШЕНИЕ Программа некорректно просчитывает выходное количество, если запрашивается родитель в одном рецепте несколько раз, при этом выходных предметов нет в сундуках. То есть? А вот. Есть процессор, в нём 4 изумруда требуется. Допустим, изумрудов просто нет, но есть блоки. И во время построения рецепта изумруды буду запрошены 4 раза, каждый раз будет найдена нехватка, так что в итоге в плане окажутся 4 блока изумрудов. Проблема решается достаточно просто: вызовите тот крафт, родитель которого запрошен слишком большое количество раз. То есть, в нашем случае достаточно просто заказать крафт изумрудов.
    [*]Не баг, но всё же. Программа во время крафта выдаёт ошибку "в функции экспорта" и сбрасывает крафт.
    Случается из-за того, что БДП устарела, и когда робот пытается взять предмет в слоте из БДП, а там его не оказывается или там находится вообще другой предмет, вызывается ошибка. Решение банальное: перезапустите крафт, вызвав программу так: craft update.
    [*]Тоже ошибка в функции экспорта, но на 188 (или 118 ) строке и со стактрейсом.
    Это действительно баг, причину возникновения которого мне выяснить не удаётся. Однако, есть решение. Перезапустите программу, можно даже без update, и проблема решится.
    [*]И ещё один совсем не баг. Программа запускается и зависает на старте, даже не показав GUI.
    Всё просто: она ждёт ответа от робота, который недоступен Проверьте, работает ли робот вообще, запущена ли на нём программа и находится ли он в зоне дальности модема компьютера (а компьютер — в зоне радиуса модема робота). Прервите программу комбинацией [Ctrl] + [Alt] + [C] и запустите снова после устранения ошибки.



    Очень удобно становится, если вместо обычного сундука под роботом поставить якорный, программы с компа перенести на сервер и таскать с собою эндерсумку и удалённый терминал от сервера. Тогда вы можете заказывать предметы на расстоянии до 400 блоков от серверной стойки, и выход окажется в эндерсумке
  5. Fingercomp
    Вот был у нас вот такой "простой" лончер от Квертика (тык), в котором без поллитра и ведра инструкций не разобраться, да.
    Естественно, это не вариант ни разу, особенно для меня. Потому представляю своё дитё — Крутой Графонистый Лончер Игр На Коленке!
     
    Интерфейс интуитивно понятен. Сейчас имеется рейтинг, лайки, статистика игр (по игрокам и всего), крутой поиск (чинит даже жестокие очепятки) и воз графонистости.
    Файлы хранятся в директории /games (создайте её). Для каждой игры необходима своя директория. Название директории должно быть коротким и простым (фиг знает, зачем). Например, /games/flappy-block/. В этой папке делаем файлец info и записываем следующую бурду:


    Перед запуском пропишите mkdir /var и mkdir /var/log. Это нужно для хранения лога лончера.
     
     
    Собственно, запишите сам лончер по ссылке ниже, поменяйте там настроечки по своему желанию (OWNER там, например, чтобы по вашему клику на "гамбургер" в главном меню программа завершалась). И всё, можно запускать!
     
    Gist ID: 684d2c72faaa941df857
     
    Скриншоты
     
     
  6. Fingercomp
    Имеется один проект на Питоне, который потребовал для себя парсер семантического версионирования, семвера, в общем. Ну там такие штуки как парсинг версий человеческий, обработка ввода юзверёв, умение сравнить все эти версии и выбрать из списка по указателю типа ">=1.5.17", ну, думаю, об этом вы слышали.
    К слову, вот тута лежит спецификация SemVer: http://semver.org/, можете почитать.
     
    Ну и нашёл я либу интересную, semantic_version зовётся. Подключил и нарадоваться не мог фичам всяким. И там пирожки, и здесь пэнкейки, в общем, использовалась весело и радостно.
     
    В рамках того же проекта ещё умещался репозиторий на мункрипте, который мункриптил очень важные дела, и ему тоже нужен был парсер. Без промедления открыл файлик того парсера, и спустя два вечера этот парсер был успешно портирован на Мункрипт, при всём при этом он даже работал! D:
    Ну, как минимум, насколько хватило желания протестить.
     
    Так что вот как-то так у нас всё получилось, я по-быстрому ознакомился с лицензией тех ребят, оформил всё более-менее и пихнул в свою репу на OpenPrograms.
     
    Потому если интересно будет когда-нибудь решить вопрос с версиями, то милости просим использовать либу libsemver, для OC её можно скачать с помощью OPPM: oppm install libsemver.
     
    Документации для либы этой именно я не писал, ибо она работает на 99% так же, как и оригинал. Потому вся инфа здесь: https://python-semanticversion.readthedocs.io/en/latest/
     
    А, ну и мой отзыв по поводу мункрипта: язык этот сумасшедший, но норм, писать можно. Ознакомиться с ним лишним явно не будет, так что осаждайте референс языка.
    Удачи!
  7. Fingercomp
    ОБНОВЛЕНИЕ OPENCOMPUTERS ДО ВЕРСИИ 1.5.13 PRE 1.


     
    Спустя 20 дней, наконец-то вышла новая версия OC. Изменений немного, но пусть это не смущает Вас...
    ...Ведь в 1.5.13 появляется новая архитектура процессора: Lua 5.3! Подробнее.
     
    В этом пре-релизе появляется, как уже было сказано, новая архитектура: Lua 5.3, что и является причиной для новой версии.
    Если Вы играли с dev-билдами OC 1.5.13, Вам необходимо выставить значение enableLua53 в true. Необходимо такое было, так как новая архитектура была очень нестабильная по сравнению стабильности архитектуры на данный момент.
     
    Как поиграться с этой штуковиной? Возьмите CPU в руки, зажмите [shift] и кликните процессором. В чате появится надпись об изменении архитектуры.
     
    Кроме того, множество мелких изменений прмсутствует в этой версии, чэйнджлог который приедет уже к полному релизу.
     
    --
    Собственно, вот я и перевёл описание релиза с ГитХаба) Кстати, девелоперские версии ОС можно получить с Jenkins: http://ci.cil.li/job/OpenComputers-dev-MC1.7.10/
  8. Fingercomp
    ОБНОВЛЕНИЕ OPENCOMPUTERS



    до версии 1.5.14.


    Очередное обновление OpenComputers, дамы и господа, уже доступно на ГитХабе: версия 1.5.14. Не сказать, что изменений много, но зато...
    Добавлено: Сетевой разделитель (или же сплиттер, не помню, как вы его там назвали в транслейте. Но сплиттер звучит лучше в любом случае) — блок, которому с помощью клювёртки (не знаю, запрещена ли она на ИТ, или же нет) можно настраивать входы и выходы. Данный блок является аналогом свитча или распределителя энергии, но позволяет соединять подсети так, что бы компьютеры видели компоненты. По ред-сигналу все входы/выходы инвертируются. По сути это кабель, который может работать то в одну сторону. то в другую. Полезно для компьютеров, так как у них есть ограничение на компоненты. По одному состоянию сплиттера комп подключён к одним компонентам, по другому — к другим. Теперь для копирования адреса достаточно кликнуть по нему в чате. Специально для сингл-кодеров: появилась новая команда /oc_spawnComputer, спаунящая креативный компьютер вместе с его начинкой (гпу, цпу, память, хдд), монитором и клавой. Интеграция с столь недостающего на ИТ ForgeMultipart увеличилась — "вставляемось" в Hollow Cover зависит от размера кабеля. Диск с новой операционной системой по типу Linux plan9k OS доступен как лут в данжах! [MC 1.8] Интеграция с Power Advantage
    [*]Пофикшено:
    Лутовые диски теперь только для чтения. Блоки перекрашиваются при использовании инструментов из других модов. Проблемы с Lua BIOS и OpenOS при выборе компонентов, когда другой мод добавлял компонент, название которых начинается так же, как и у стандартных. Наконец-то тонна исправлений в логике пайпинга (огромная благодарность payonel). Да-да, в шелле есть мой любимый пайпинг! Проблема со светом от дронотапочек. Анимация и рендер ассемблера заставляли взбешиваться до невозможности мод Colored Lights (кстати, очень забавный и красивый мод, но он лагуч "немного") НАКОНЕЦ-ТО!!! Пофикшено вырубание экрана в некоторых случаях до обновления буфера видеокарты. Тем не менее, автор только надеется, что пофиксил Тератонны всяких других менее значимых багулинок также были пофикшены. Внутренний конвертер пчёлок использовал старые методы для анализации пчёлок. os.date() крашился на конце игрового года (пытался возвратиться несуществующий 366 день). screen.setTouchModeInverted() применялся только к главному блоку мультискринов. Теперь у не-обновляющихся блоков есть начальный ред-сигнал.



    Вот такое обновление. Не за горами уже 1.6, в которой, надеюсь, будет много вкусного) А пока...
    ... Вы можете скачать мод по этой странице: https://github.com/MightyPirates/OpenComputers/releases
    ... Вы можете зайти на официальный форум ОС: http://oc.cil.li/index.php?/index
    ... Вы можете оставить комментарий)
  9. Fingercomp
    Приветствую Вас, уважаемый читатель! Рад сообщить о том, что, спустя целых 24 дня, наконец, отрелизилась версия 1.5.15. Изменений маловато, но перечислить, думаю, не помешает.
    Добавлено: Режим доступа к накопителям низкого уровня. То есть, это является, по сути, одним "файлом", в который можно писать и из которого можно читать. Может быть полезным. Что? Мало карт данных? Не проблема. Теперь они различаются по уровням (бесполезная и даже неприятная фича ) Фича из разряда "НАКОНЕЦ-ТО!!!" Две функции для контроллера инвентаря: isEquivalentTo() и areStacksEquivalent(). Они позволяют определять, есть ли общие категории OreDict у обоих предметов. Всё больше мы переезжаем на Луа 5.3. "Новая"-старая либа bit32 для обратной совместимости. Перехватывание и возврат значений чисел различных типов в сигналах. Срочно бежим дизассемблировать кольчужную броню! Ибо добавлен чёрный список для него, и кольчуга там по умолчанию. Что? Только в 1.8 редактирвоание NBT? Да? Уже нет. Для дебаги добавлена функция управления NBT (спасибо gamax92).
    [*]Изменено:
    Использование правильного дефолтного шаблонного премета в лутогенераторе, для помощи работе другим модам.
    [*]Пофикшено:
    Сообщение computer.stopped. При отключении компьюетра, например, не закрывались сокеты. Переборщили с правкой времени копания. Как, что — не указывается. Если компьютеры остановились неожиданно, крашилось всё (бежим крашить сервер, пока не поздно!) Дедлок потенциальный на работающих компьютерах. Нестабильный мануал: деление на нуль. В интеграции с АЕ2 была небольшая проблема. Наконец-то. Утечки памяти в серверных стойках (кажется, именно это и происходило) были устранены. Состояние гонки возникало между ServerThread и ClientShutdownThread. Всякие очепятки и опечатки в мануале (спасибо Shuudoushi).



  10. Fingercomp
    Ей! Мы дождались, наконец, действительно интересного и полезного обновления OpenComputers — 1.5.18!! Ну, и это ещё четвёртая запись за сегодня))
    Сегодня в выпуске:
    Добавлено: Наномашинки!! Новая система баффов/дебаффов и эффектов. См. 'video. Добавлена функция вращения голограмм. Голограммный проектор, очевидно, второго уровня. Транспозер может быть использован как апгрейд.
    [*]Изменено:
    Благодаря payonel, улучшен механизм автодополнения по [Tab]. Дроны теперь должны сниматься исключительно ключом. Шифт-клик без ключа теперь ведёт к включению дрона, как роботов или компьютеров.
    [*]Пофикшено:
    Потенциальный дюп жидкостей при использовании бочек из ExtraUtilities. Поведение os.date()/os.time(). Несколько других мелких багов. Потеециальный NullPointerException, если робот использует анализатор. Проблемы с рендером определённый предметов, которые держат роботы. 1.8: проблемы рендера при наведении на кнопки в GUI.




  11. Fingercomp
    А вот и новая версия почти всеми любимого OpenComputers готова приземлиться на Ваш жёсткий диск.
    Добавлено: Редстоун-карты и блоки могут теперь считывать вход компаратора. Компы-серверы-µC при краше теперь красят индикатор работы в красный цвет. Программа в OpenOS: du (Disk Usage). Показывает свободное место на дисках. Автор: payonel. Совместимость с билдерами из BC. Работать начнёт после выхода BC 7.2. Конфигурация наноботов (см. запись) может теперь быть сохранена в ещё не скушанного нанита (то есть, в виде предмета). Возможность указывать сторону взаимодействия с блоком для контроллера инвентаря. Интеграция с джетпаками из RotaryCraft (Voidi).
    [*]Изменено:
    Программа alias (payonel). Программа cd теперь более придерживается POSIX (payonel). При съедании следующих нанитов, они меняют адрес.
    [*]Пофикшено:
    Проблема с интеграцией с Magnanimous Tools. Проблема с интеграцией со Sponge. Изменение NBT через дебаг-карту работало только в эксперементальной версии. Потенциальный NullPointerException в обработчике крафтовых событий. Роботы отказывались летать над пустотой, даже с апгрейдом левитации Т2. Автодополнение по [TAB] при ./. Проблемы с EssentialCraft.



  12. Fingercomp
    ДВАДЦАТЬ! Новая версия, 1.5.20, готова к скачиванию. Рассмотрим изменения:
    Добавлено: Функция compareStackToDatabase для контроллера инвентаря и транспозера. Конвертер для обработки информации о зачарованиях. Французский перевод в мануалах. От Pyeroh. Перевод на немецкий язык в мануалах. Подготовлен Shadow1Raven. Можно отключить излучение света для голографических проекторов.
    [*]Изменено:
    Обновлено API для Forestry.
    [*]Исправлено:
    Скорость ломания кабелей с мультиблоками FMP. Нанотапки дают эффект замедления, если они разряжены. Несовместимость с Чизелем, которая позволяла делать из обычных сундуков эндер-сундуки. O_o Отсутвие проверки NBT-данных при объединении предметов, полученных от агентов, при ломании блока. Наниты не работли в других измерениях. Вероятный краш при использовании команд OpenComputers. Продолжение эпопеи о зарядниках: вероятный краш при нескольких таковых. Переполнение, когда кто-то особо тупой устанавливает фигалионные размеры дисков. Завышенная задержка в релеях.



  13. Fingercomp
    Приветствую Вас, уважаемый читатель! На протяжении уже нескольких недель я думал, о чём мне писать в блоге... И, наконец, нашёл.
    Я начинаю переводить чэйнджлоги ОС. Полезно и нетрудно.
    5 апреля 2015 года резилнулась версия OC 1.5.6, в которой кое-что изменили. Посмотрим на список изменений!
    Добавлено: Хамелиум теперь можно поедать. Но лучше не надо. Больше, БОЛЬШЕ АЕ2 интеграции! Автор выражает благодарность DrummerMC.
    [*]Изменено:
    Дискеты и харддрайвы теперь стираются через перекрафт самого себя, Шифт-клик отключён. Улучшенное обращение с рецептами. Теперь можно поставить false и отключить рецепт вообще. Миссинги будут генерировать ошибки уровня "Внимание".
    [*]Пофикшено:
    WAILA теперь показывает инфу о 3D-принте корректно. Конвертер для Форести применяется не только для пчёлокоттеждей/изунализаторов/..., но и для пчёл в инвентарях. Комментарий переводчика: Мне непонятно, что это за конвертер появился.


    [*]Дисассемблер игнорировал размер выхода рецептов... В общем, из 1 наггета получался 1 слиток. Дюпобаг. [*]Потенциальные краши в интеграции с АЕ2 даже в новых версиях... Будем надеяться, что сработает. [*]Улучшена интеграция ForgeMultipart и 3D-принтов. Ими теперь можно прикрывать кабели из Project:R3D, например. [*]Редстоун контроллер теперь по-нормальному включает компьютер. [*]Бесконечныепроводные сообщения вызывали загрузку чанков.


    Вот и всё в этой версии. В принципе, ничего дополнительно объяснять не нужно, потому я здесь заканичваю. Комментарии, как всегда, приветствуются =)
  14. Fingercomp
    OPENCOMPUTERS V. 1.5.7 — DOCUMENT ALL THE THINGS!


    Приветствую Вас, уважаемый читатель! На момент написания этой записи 18 часов назад (14 апреля 2015 года) была релизнута версия 1.5.7, в которой есть некоторые изменения, на которые мы посмотрим:
    Добавлено: Теперь у принтов можно указать силу редстоун сигнала, который они смогут испускать.
    Автодополнение через TAB в Lua интерпретаторе.
    Принты теперь вообще бомбой стали: они могут излучать свет!
    Теперь вместо картриджей в принтер можно вставлять обычные ванильные красители, но с куда меньшей эффективностью.
    Ключик. По большей части для 1.8. Но работает с некоторыми другими модами Комментарий переводчика: надо бы на грифабельность проверить.

    [*]И, самое вкусное... КНИЖКА-МАНУАЛ! Описано в ней всё самое вкусное в ОС
    Комментарий переводчика: хороший шаг! Ведь в НЕИ не всегда всё можно уместить, а вот в книжке — почему бы и нет?



    [*]Изменено:
    Хотите ли Вы этого или нет, но вам придётся крафтить этот мануал, так как рецепты Луа БИОСа и OpenOS теперь крафтятся с использованием этой штуковины.
    Скорость функции gpu.setPalette() теперь стала быстрее. Также добавлена зависимость скорости от уровня видеокарты.

    [*]Пофикшено:
    Потенциальный краш, возникающий при попытке отрендерить символ, который не может быть сгенерирован.
    Хамелиум блоки ломают мипмап.



  15. Fingercomp
    ОБНОВЛЕНИЕ OPENCOMPUTERS ДО ВЕРСИИ 1.5.8!


    Дата релиза: 21-04-2015
    Версия: 1.5.8
    Приветствую Вас, господа и дамы, перед Вами новая версия 1.5.8, о котором я спешу Вас оповестить!
    Взглянем на список изменений:
    Добавлено: Теперь, если бедный робот пытается стукнуться со стеной (он что, в коллайдере живёт?), появляются частицы! Дабы избежать спама частицами, поставлена небольшая задержка... Так что robot.detect() теперь куда нужнее.
    Если Вы игрете в мирном режиме, то наверняка замечали, что та же интерпаутина (а не интерсеть, кстати) требует эндержемчуг. Но где ж его достать-то в мирном режиме? О_о В общем, данное недоразумение поправлено: добавлен файл рецептов для мирного режима.
    Спасибо, Кибер! Ведь у нас русский перевод мануала для чайников в Инглише!

    [*]Изменено:
    Как и было заказано на багтрекере ОС, голограммы отрисовываются куда быстрее. Также на очереди метод для помещения сырого набора инфы (data) для быстрой изменении картинки.

    [*]Пофикшено:
    Опять-таки с багтрекера: теперь дроны умеет ходить сквозь Порталы и не выключаться. Доставщик пиццы между измерениями дождался своего часа!
    Пути теперь в мануале абсолютные. Немцы теперь тоже смогут вполне пользоваться мануалом.
    OpenOS был продублирован в НЕИ (на что я обратил внимание, кстати).
    Дроны! Отставить кушать! Что? Память! Потенциальные утечки при использовании дронов.
    Чуждое мне состояние гонки. Великий Рандом был недоволен этим и отрубал иногда компы.
    Память кушается меньше при таймауте __gc (то бишь __сборщикамусора).
    В OpenOS стандартные потоки I/O были способны закрываться. THNX TO: mpmxyz.
    При фоллбэке в LuaJ компы, которые отрубались при отгрузке чанка, не стартовали снова.
    1.8:
    Цветной текст на мониторе красил другие цветные блоки. А также много всякой рендерной ерунды.
    Поршневой апгрейд. Фиксед.



    На этом всё!
    Следите за багтрекером ОС, там ОЧЕНЬ много интересного! https://github.com/MightyPirates/OpenComputers/issues
    Следите за целями в ОС 1.6! https://github.com/MightyPirates/OpenComputers/milestones/v1.6.0
    Следите за релизами ОС! https://github.com/MightyPirates/OpenComputers/releases/
    Заходите на форум ОС! http://oc.cil.li/index.php?/index
    Предлагайте, о чём мне ещё написать, оставляйте комментарии, оценки — этому всему я буду рад :P
    А также прямые ссылки на ОС 1.5.8:
    1.7.10: https://github.com/MightyPirates/OpenComputers/releases/download/v1.5.8/OpenComputers-MC1.7.10-1.5.8.17-universal.jar
    1.8: https://github.com/MightyPirates/OpenComputers/releases/download/v1.5.8/OpenComputers-MC1.8-1.5.8.19-universal.jar
  16. Fingercomp
    ОБНОВЛЕНИЕ OPENCOMPUTERS ДО ВЕРСИИ 1.5.9 RELEASE CANDIDATE 1!


    Приветствую Вас, уважаемый читатель. Автор OpenComputers Sangar продолжает работать над своим модом, поэтому встречаем новую версию 1.5.9! Точнее, первого кандидата на релиз.
    Взглянем на изменения.
    Добавлено: Charger теперь может использовать для зарядки батарейных апгрейдов! И, кроме них, все другие предметы, хранящие и содержащие энергию RF и EU!
    Интеграция с IngameWikiMod. Большая часть страничек из мануала там доступны.
    То, чего мне иногда не хватало. Стандартный шелл теперь поддерживает пайпинг!cat < f1 | cat >> f2

    Поддержка многожильного кабеля из BluePower.
    Больше, БОЛЬШЕ интеграции с GregTech! В рецептах можно использовать машины из Грега.
    Waypoint. Может использоваться с навигационными апгрейдами.

    [*]Изменено:
    Логика и механика рендеринга апгрейдов на роботе была изменена. Аддонам проще ставить свои апгрейды, а на MC1.8 всё работает, как и должно.

    [*]Пофикшено:
    Дроны теряли своё имя при замене EEPROM.
    Потенциальный клиентский лог-спам при открытия ГУИ Dissaembler'а, если функция disassembleAllThings была включена.
    Роботы продолжать анимироваться даже при паузе.
    MC1.8:
    Несколько потенциальных NPE



    Вот и всё. Комментарии как всегда приветствуются, равно как и лайки и даже оценки!
    А ещё...
    Следим за интересными предложениями, багами на баг-трекере OpenComputers! https://github.com/MightyPirates/OpenComputers/issues
    Проверяем обновления ОС! https://github.com/MightyPirates/OpenComputers/releases
    Заходим на официальный сайт... http://oc.cil.li/ ...и форум! http://oc.cil.li/index.php?/index
    И прямые ссылки для скачивания:
    [MC1.7.10] https://github.com/MightyPirates/OpenComputers/releases/download/v1.5.9-rc.1/OpenComputers-MC1.7.10-1.5.9.20-rc.1-universal.jar
    [MC1.8] https://github.com/MightyPirates/OpenComputers/releases/download/v1.5.9-rc.1/OpenComputers-MC1.8-1.5.9.22-rc.1-universal.jar
  17. Fingercomp
    О 1.6 было говорено ещё с очень давних пор — примерно год назад. И наконец-то первая бета OC 1.6 доступна для скачивания.
    Вообще, 1.6 всё это время можно было загрузить как дев-версию — достаточно перейти на Jenkins. Однако билды там не всегда блещут стабильностью.
     
    Что изменилось:
    Полный ченджлог Sangar предоставит, когда отрелизится 1.6.0.
    Но благодаря ГитХабу я могу сравнить 1.5.22 и 1.6. Так что краткое переложение >150 коммитов:
    Новые серверные стойки. Модульность, крутой GUI и многое другое. Дисковод — компонент. Геолайзеру теперь можно задать не только колонну, но и прямоугольник. Терминальный сервер. Lua 5.3.2. В internet.request можно задавать хедеры. Ачивки теперь даются не только за крафт, но и за поднимание предметов. Торговый апгрейд для роботов. playSoundAt для дебаг-карт. __gc-метаметод оказался опасным — им можно перегрузить сервер. Теперь в настройках есть опция для включения этого метаметода. По умолчанию __gc отключён. OpenOS 1.6. Там мегатонны всяких изменений. И, кстати, эта система грузится на планке памяти первого уровня. Даже несмотря на новые проги, либы и пр. Дронотапки можно красить. Новый шрифт. Логирование чанклоадеров. Ну и множество других изменений.

    Качайте новую версию тут и крушите её. А обо всех найденных багах, как обычно, сообщать сюда.
  18. Fingercomp
    Обновление OpenComputers до третьей беты 1.6. Сегодня в гостях у нас следующие изменения:
    Добавлено В русский мануал добавлена информация про saveConfiguration (PR #1855 от cyber01). Функция computer.getProgramLocations, которая используется для программы install из OpenOS.
    [*]Пофикшено
    Неожиданный баг с сохранением мира в версиях MC выше 1.8.
    [*]OpenOS
    Команда cat теперь будет читать stdin, если не указан файл. cp: поддержка путей вида /. и более мелкие фиксы. df теперь поддерживает относительные пути. Функция next либы /lib/guid.lua теперь возвращает GUID в корректном формате. head теперь закрывает stdin. install был сильно переработан и теперь с помощью этой программы можно устанавливать файлы с loot-дискет (и не только), мануал в man install. less теперь поддерживает скроллинг, в кои-то веки! Ну и алиас в /etc/profile был, конечно, убран. В mv добавлено несколько проверок: команда будет выдавать теперь ошибку, если путь назначения в режиме только для чтения или путь имени для копирования — точка монтирования. У rm была пофикшена проблема, при которой ссылки на директории не могли быть удалены. Шелл поддерживает экранировку пробелов и может отдавать сигнал SIGPIPE. А ещё позволяет использовать getWorkingDirectory до установки переменной окружения PWD.



    На момент писания этого текста в install был уже обнаружен один баг, который даже пофикшен, остаётся ждать принятия PR.
     
    Github
  19. Fingercomp
    Недавно вышло мелкое обновление OC, которое я пропустил из-за некоторых проблем, и в нём:
    ДобавленоИнтернет-карты посылают событие, когда они получили данные по сокету и можно использовать :read.
    [*]Пофикшено
    Несколько мелких багов.
    [*]OpenOS
    Небольшие фиксы install, /lib/buffer.lua, ls, /lib/package.lua, rc, /lib/sh.lua.



    Вот и всё действительно небольшое обновление. Скачать можно по ссылкам в блоке справа сверху.
  20. Fingercomp
    И лучше поздно, чем никогда. Недели две-три назад вышла версия OC 1.6-RC1 (Release Candidate). В основном ничего особенного, только баг-фиксы.
     
    Изменения:
    Фиксы LuaJ с помощью мастера по починке LuaJ. gamax92, если быть точнее. Plan9k теперь будет хотя бы запускаться. Ну замечательный прогресс уже, хотя крашиться всё так же любит. Switch и Access Point были скрыты в NEI. Поддержка энергии RotaryCraft. Обновление мануала под 1.6. Облегчённые рецепты. Из алмазов делаются алмазные кусочки, которые нельзя потом собрать воедино. Опция для отключения эффектов частиц у нанытов. Работа с жидкостными реакторами IC2 через редстоун-порт. Кабели можно красить в инвентаре, они выпадают крашенными. Краска теперь тратится. Обновлён китайский перевод. Обновлён русский перевод. Фикс ачивки про свитч. Свитча-то нет. Команда /oc_sc спаунит компьютеры лицом к игроку. Баг-фиксы в OpenOS. Фикс краша при подключении нескольких серверных компонентов к одной стороне, когда при этом к ней не подключён сервер. install теперь не будет копировать ещё и файлы по символическим ссылкам. Юнит-тесты.

    В целом OC выглядит уже достаточно стабильным для игры. Новую версию можно скачать только здесь. На GitHub её нет.
  21. Fingercomp
    Начну со слов автора мода: "давайте будем считать, что кандидата к релизу не было. Не потому, что он был сломан, нет. Просто я добавил несколько вещей, которые требуют тестирования, поэтому у нас снова будет бета".
     
    Изменения
    ДобавленоНовая функция computer.getDeviceInfo() теперь возвращает список всех компонентов, имеющихся у устройства, включая планки памяти, процессоры и пр. Для показа их в OpenOS есть теперь команда lshw.
    [*]Изменено
    Большинство "магических файловых систем" у компонентов было перенесено в дискеты. То есть, теперь, чтобы иметь либу lib/internet.lua, например, придётся любую из уже имеющихся стандартных дискет OC (дискету OpenOS, например) в сетке крафта объединять с ключом OC (Scrench), пока не получится нужная дискета, а потом скопировать файлы с дискеты на устройство. Но есть и положительная сторона изменения: те диски стандартные, которые можно было найти только в данжах, теперь могут быть спокойно получены через тот же самый ключ. Теперь игрок не будет в AFK для сервера, если он что-то пишет в мониторах, например. Команда /oc_dn будет теперь выводить дебаг-инфу и в чат выполнившего эту команду. Та самая команда saveConfiguration, которую я внезапно обнаружил некоторое время назад, теперь таки добавлена в мануал.
    [*]Пофикшено
    Контейнеры с жидкостью могли пропадать в апгрейде-генераторе (например, cells из ИК2 с лавой). Роботы могли всасывать вёдра жидкости не из источника её в мире, а из прилегающих "текущих" блоков. Всякие внутренние функции были тоже пофикшены. Потенциальный фикс какого-то бага с серверной стойкой. gpu.setResolution возвращала false, даже если разрешение было изменено успешно. При разборке планшета теперь будет, как и положено, возвращаться с нормальным шансом контейнер апгрейдов.
    [*]OpenOS
    Добавлены devfs. Те самые магические штуки внутри /dev. /dev/null, /dev/zero. Перенаправление I/O. Это не так страшно: myprogram > stdout.log 2> stderr.log. Но объяснять, что это, не буду — кто знает, тот поймёт. Более тысячи (ТЫСЯЧИ) юнит-тестов для OpenOS. Множество мелких фиксов.



    Напомню, что разработка OC 1.6 уже заняла более 1 года и ещё 2-3 месяцев. Список изменений на релизе обещает быть огромнейшим.
     
    Скачать новую версию можно, как обычно, на билд-сервере:
    1.7.10: http://ci.cil.li/view/OpenComputers/job/OpenComputers-1.6-MC1.7.10/lastSuccessfulBuild/artifact/build/libs/OpenComputers-MC1.7.10-1.6.0.4-beta.2-universal.jar 1.8.9: http://ci.cil.li/view/OpenComputers/job/OpenComputers-1.6-MC1.8.9/lastSuccessfulBuild/artifact/build/libs/OpenComputers-MC1.8.9-1.6.0.5-beta.2.jar 1.9.4: http://ci.cil.li/view/OpenComputers/job/OpenComputers-1.6-MC1.9.4/lastSuccessfulBuild/artifact/build/libs/OpenComputers-MC1.9.4-1.6.0.1-beta.2.jar

    Или же на GitHub, если угодно.
  22. Fingercomp
    Небольшое обновленьице OC вышло сегодня, в котором есть немного небольших изменений.

    1.5.16 Добавлено: Транспозер — управляемая компьютером мультисторонняя воронка. Позволяет перетаскивать жидкости и предметы между соседними блоками. Интеграция с читёрнейшим AgriCraft. LordJoda Интеграция с интересным модиком Better Records. Функция для программного изменения архитектуры процессора. Ребут при изменении. Аргумент, который не ресетит монитор при биндинге GPU. makkarpov
    [*]Изменено:
    Access Point + Switch = реле, блок, совмещающий функции составляющих. Изначально — свитч, беспроводная карта превращает в точку доступа. В режиме свитча может быть вставлена линкокарта. Обновление Plan9k
    [*]Пофикшено:
    Редкая проблема с интеграцией. Много другой мелкотни.




    1.5.17 Пофикшено: Краш при изменении архитектуры АПУ (самый лёгкий способ краша за всю историю ОС). Дронотапки теперь поглощают повреждения за счёт энергии.

  23. Fingercomp
    ПОЛНЫЙ ОБЗОР



    Computronics версии 1.5.5.



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


    Приветствую Вас, уважаемый читатель! В данном обзоре я попытаюсь рассказать о всём, что только есть в Computronics. И начать предлагаю со "стандартных" блоков. Итак, гостями сегодняшней части будут:
    Iron Note Block (железный нотный блок) Camera (камера) Radar (радар) Chatbox (чат-бокс)


     


    I: Iron Note Block.
    Железный нотный блок — аналог обычного нотного блока, управляемый исключительно компьютером и позволяющий указывать номер ноты (от нуля до 24) и инструмент. Последний указывается числом от нуля до шести: 0 — пианино; 1 — большой барабан; 2 — клики/палочки; 3 — малый барабан; 4 — бас-гитара; 5 — пианино; 6 — бас-гитара.


    Функции: iron_noteblock.playSound(instrument, note) — проигрывает ноту с номером note на инструменте instrument (кроме номера инструмента, можно написать название)


    Блок:
     
     


    II: Camera.
    Камера — блок, позволяющий Вам получать дистанцию до ближайшего блока. При этом, можно установить угол "поворота" камеры по обеим плоскостям (X и Y). Максимальное значение "поворота" равно единице, минимальное — -1.

    Функции : camera.distance([x, y]) — получить дистанцию до ближайшего блока с определённым углом "поворота". Если опущено, то равно 0, 0.


    Блок:
     
     



    III: Radar.
    Радар позволяет получать информацию об игроках, мобах, предметах на земле и энтитей в определённом радиусе, но не дальше указанного в файле конфигурации мода предела. Все координаты относительные!

    Функции: radar.getEntities([range]) — возвращает информацию обо всех сущностях.

    Структура возвращаемой таблицы у этой и последующих двух функций такова:


    radar.getPlayers([range]) — возвращает информацию об окружающих игроках radar.getMobs([range]) — возвращает информацию о мобах поблизости radar.getItems([range]) — возвращает таблицу с предметами на земле около радара.

    Структура данной таблицы:




    Блок:
     
     


    IV: Chatbox.
    Последний в данной части блок — чат-бокс. Этот компонент позволяет отправлять и принимать сообщения в/из игрового чат (-а) в определённом радиусе.  
     
     
     
     


    Функции: chatbox.getDistance() — возвращает текущий установленный радиус действия чат-бокса. chatbox.getName() — возвращает текущее установленное "имя" чат-бокса. chatbox.say(msg[, range]) — отправляет сообщение msg в чат в радиусе range. Если не указано, равно установленному. Возвращает true при успехе. chatbox.setDistance(range) — устанавливает радиус действия чат-бокса. Возвращает новый радиус. chatbox.setName(name) — устанавливает "имя" чат-бокса. Возвращает новое "имя".


    События: chat_message(UUID, sender, msg) — генерируется при отправке сообщения msg в чат игроком sender с UUID UUID.


    Скриншоты:






     

    Вот мы и подошли к концу данной части. В следующей части я расскажу о Chiper Block, Advanced Chiper Block, Colorful Lamp и Tape Drive. А пока — жду комментариев, оценок
     
    Ссылка на страницу мода: http://wiki.vex.tty.sh/wiki:computronics


    << НАЗАД в башню Fingercomp
  24. Fingercomp
    ПОЛНЫЙ ОБЗОР



    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
  25. Fingercomp
    ПОЛНЫЙ ОБЗОР



    Computronics версии 1.5.5



    Часть третья: Карточки


    Приветствую Вас, уважаемый читатель! Думаю, самое подходящее время, для того, чтобы написать новую часть обзора CX. В данной части я расскажу всё о карточках, которых тут как раз четыре вида:
    Beep Card (бипающая карта) Spoofing Card (карта-маскировщик) Particle Card (карта частиц) И, конечно же, Self-Destruct Card (карточка самоуничтожения).


     


    I. Beep Card.
    a.k.a. "Бипающая карта"
    Данная карта предоставляет продвинутый аналог системного динамика, который позволяет проигрывать сразу несколько звуков. Принимает таблицу следующего типа:


    Функции: beep.beep(freqLength:table):Boolean — запускает "аккорд" из таблицы freqLength, в которой записаны для каждой пары частота и длительность. beep.getBeepCount():Number — возвращает текущее количество проигрываемых нот.


    Предмет:
     
     


    II. Spoofing Card.
    a.k.a. "Карта-маскировщик"
    Данная карта позволяет отправлять сообщения с возможностью указывания адреса отправителя! Уже начали думать над взломом Банка? Тут-то и придёт конец вашей идее. Данная карта работает только для проводных сетей, но не для беспроводных, к сожалению.  
     
     

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

    Предмет:
     
     
     
     
     

    III. Particle Card.
    a.k.a "Карточка частиц"
    Данная карточка позволяет спаунить частицы в зоне 16х16х16 блоков с центром в блоке, где она находится. Полная таблица частиц доступна здесь: http://minecraft.gamepedia.com/Particles  
     
     

    Функции: particle.spawn(particle_name:String, x:Number, y:Number, z:Number[, speed:Number]):Boolean || particle.spawn(particle_name:String, x:Number, y:Number, z:Number[, x_speed:Number, y_speed:Number, z_speed:Number]):Boolean — заспаунить частицу particle_name по определённым относительным координатам с определённой скоростью.


    Блок:
     
     
     
     
     

    IV. Self-Destruct Card.
    a.k.a "Карточка самоуничтожения"
    "Каждый нормальный цивилизованный житель нуждается в данной штуке", — гласит тултип к этой карточке. И он, знаете, прав!
    Я думаю, объяснять, что эта карточка делает, мне не нужно. Просто приведу список функций.  
     
     

    Функции: self_destruct.start([timer:Number]):Number — устанавливает таймер на самоуничтожение. Если не указано, равно пяти секундам. Таймер самоуничтожения остановить или отредактировать невозможно! Трижды подумайте, прежде чем запускать отсчёт! self_destruct.time():Number — возвращает оставшееся время до самоуничтожения.


    Предмет:


     

    Вот я и закончил рассказывать о карточках в данном моде. Остались только апгрейды и предметы интеграции с другими модами, но о них я уже вряд ли буду рассказывать. А пока Вы можете оставить комментарий, подписаться на запись и поставить оценку)
×
×
  • Создать...