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

Fingercomp

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

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

  • Посещение

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

    283

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

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


    Перед запуском пропишите mkdir /var и mkdir /var/log. Это нужно для хранения лога лончера.
     
     
    Собственно, запишите сам лончер по ссылке ниже, поменяйте там настроечки по своему желанию (OWNER там, например, чтобы по вашему клику на "гамбургер" в главном меню программа завершалась). И всё, можно запускать!
     
    Gist ID: 684d2c72faaa941df857
     
    Скриншоты
     
     
  2. 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 блоков от серверной стойки, и выход окажется в эндерсумке
  3. Fingercomp
    Началось всё с пустого файла.
    Набросав костылей, ловисипедов и более-менее нормального кода... Рад представить вам свой ламповый репозиторий на ГитХабике с набором программок, написанных на Python. На текущий момент все они в какой-то мере взаимодействуют с Minecraft.
    По-порядку.
     

    Чат-клиент
    Так как блог так или иначе обязан подчиняться правилам, я упоминаю только один чат-клиент под именем "cc-chat". Кое-как подёргав API форума, смог сделать небольшую программу, которая сейчас умеет работать с чатом (отправлять и получать сообщения из/в чат (-а) нашего форума).

    Интерфейс простой. Внизу строка ввода, справа немного кнопок, лист онлайна и сам чат. К слову, клик по нику с контролом — вставить в строку его, а клик с альтом — открыть профиль в браузере.
    Но это так, плюшки.
    Если тыкнуть по большой кнопке [ⓘ], окно с тонной всякой информации.


    Здесь и ТОПы, и места в них, и баланс, и голоса. Особая благодарность @cyber01 за API.
     
    Установка
    Для начала установите Python 3, BeautifulSoup, PyGObject. Скачайте программу с Гитхаба и запустите её. Создастся файл конфигурации, путь к нему будет указан в диалоге.
    Теперь перейдите на страницу чата, откройте DevTools.
    Открыв вкладку "Network", нажмите на кнопку [Обновить] в чате. Появится запрос в списке. Откройте URL запроса в отдельной вкладке и скопируйте всё, что находится между secure_key= и &type. Это есть секретный ключ, который, естественно, никому не нужно давать.
    Откройте файл конфигурации в редакторе и в первую строку вставьте этот ключ.
    Затем в браузере найдите Cookies для сайта, скопируйте их и вставьте во вторую строку браузера.
    Всё это требуется из-за костыльного АПИ форума =\
    Если всё хорошо, при попытке запустить программу, она не завершится с ошибкой.
    К слову, в трее появится значок программы, левый клик по которой скрывает или показывает окно.
     
     
     

    Мониторилка
    Пропустив ту самую программу, идём к mc-monitor. Это небольшое приложение, которое полностью умещается в трее. Позволяет мониторить сервера Minecraft без захода на всякие сайты. Кроме того, имеется таймер, который "звенит" каждые 24 часа. Полезно, чтобы не забыть про голосование.
     
     
    Установка
    Установите, если ещё не сделали, Python 3, PyGObject.
    Просто запустите программу. Скопируйте путь к файлу кнфигурации и откройте его в редакторе.
    Там можно указать список серверов в следующем формате:
    адрес.сервера:порт=Имя сервера
    По строке на каждый сервер.
     
     
     

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



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

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

     
  6. Fingercomp
    Здрассьте. Давно уже назревал план сменить к чертям оформление форума, ибо текущее положение дел вызывает тошноту. Да и ночью глаза болят потом.
    И вот, наконец, недавно я загорелся энтузиазмом, и было принято неотвратимое решение напилировать свою тему для форума. Так как станадртные средства форума по изменению мне неизвестны, а курить доки по этому было катастрофически лень, всё сделано в виде стиля к Stylish.
     
    Что меняется?
    Цвет всех элементов, расположение некоторых блоков-индикаторов, округление, картинки, кнопки и много чего другого.
     
    Как установить?
    Перейдите на эту страницу ( https://userstyles.org/styles/120122/dark-dark-robot) и перейдите по ссылке в заголовке. Вам предложат установить расширение для браузера "Stylish". Согласитесь на установку и дождитесь окончания. Затем снова перейдите на эту страницу и тыкните по большой зелёной кнопке "Install with Stylish". Во всплывающем окне нажмите "OK"... Всё! Теперь вы можете наслаждаться тёмным дизайном форума,
    Чтобы отключить тему, нажмите по значку Stylish в панели инструментов и снимите галку с темы "Dark-Dark Robot". Таким же образом её можно будет включить. Управление темой осуществляется на странице управления темами. Щёлкните по значку и выберите "Manage Styles...".
     
    А что нас ожидает?
    Скриншоты этого добра:

     
     

    Внимание!
    Начиная с версии 1.4, DDR требует наличия скрипта для GreaseMonkey под названием "Good Bad People".
    Ссылка: https://greasyfork.org/en/scripts/13471-good-bad-people
    Для работы требуется расширение браузера GreasyMonkey (Firefox) или TamperMonkey (Chrome)!
  7. 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.



  8. Fingercomp
    С недавним (1.5.18) релизом OpenComputers появилась такая хрень — наноботы. Посмотрев ролик от автора мода (он будет внизу статьи), было ясно, что запутался или я, или автор. Скорее всего первое. Потому решил отложить их на потом.
     
    И вот, пришло то время. По-быстрому забежав на тестовый сервачок и поигравшись с ними, понял, насколько чудовищно... КРУТЫ эти мелкие штуки. Почему? А сейчас узнаем.
     


    I. Тварелогия.
    Вообще, я немного наврал со словом "сейчас". Обосновывать будем по ходу развития сюжета, а в конце (нет, в середине!) сделаем вывод.
    Итак, вот вам выдержка из статьи по нанороботиксам.
    Нанороботы, наноботы, наномашины, наноиды, наниты, наномиты и иже с ими (будем использовать несколько обозначений в этом гайде) — это такие мелкие штуки, которые попадают в организм кубического человека и жрать, мозги, хлам! помогают ему обрести новые способности.  


    II. Приборы и девайсы.
    Значит так, в процессе эксперемента нам нужно: желание умереть, мозги, больше мозгов, невероятное желание подохнуть, планшет, наноботы, грог (?!).  


    III. Ход эксперимента. Физ. часть.
    Итак, вы подготовили всё, что нужно. Давайте приступать.
    Я не указал, но возьмите ведро молока. Если, конечно, вы хотите избавиться от...
    В общем, съешьте нанитов. А теперь выпейте молока. После столь болезненной операции (что? Болезненной? Мы ж серьёзные люди — и кубизм явно то показывает. Не смешите) просто встаньте рядом с активной зарядкой.
    Ну, в общем, вот такая панорама (точней — её кусок) должна получиться.

    Как видно, слева от хотбара расположилась батарейка, которая показывает текущее состояние батареи в наните.
     

    Вообще, можно кушать более одного набора машинок нанометрических, вот только это ничего путного не даст — только сменит конфигурацию.
    К слову, чтобы вывести наномашинок — выпейте грог
     
    Собственно, на этом вся физическая часть закончена. Далее будем управлять через планшет.
     


    IV. Ход эксперемента. Информационная часть.
    Всё управление происходит через беспроводную сеть, так что планшет нужен с беспроводной сетевой картой.
    "Протокол" общения с наномитами предельно прост. Используется функция modem.broadcast(). При этом наниты слушают эфир на всех частотах по умолчанию. Первым куском данных ВСЕГДА является строка "nanomachines". Команда уже такая: modem.broadcast(1337, "nanomachines"). Затем идёт сама функция и аргументами, так же отделёнными частями пакета. Итого: modem.broadcast(1337, "nanomachines", "команда", "первый аргумент, строковой", 2, "прошлый аргумент — числовой", "и т. д."). Не переживайте, я ещё вернусь к этому в перечне команд.  

    Итак, начнём наш перечень с не очень нужных игроку, но полезных команд.
    setResponsePort(port:Number):String,Number. ОБЯЗАТЕЛЬНАЯ КОМАНДА ПЕРЕД НАЧАЛОМ РАБОТЫ! Именно. Так как вещать на всех частотах — идея обломная, лучше поставить заданный порт. Обломная настолько, что без указания порта-канала не будут возвращаться данные! Вот так всё жестоко. Поэтому пропишите modem.broadcast(PORT, "nanomachines", "setResponsePort", PORT). Например: broadcast(1337, "nanomachines", "setResponsePort", 1337). Прописали? Можно продолжать.
    К слову, возвращает "port", port, собственно, где port и есть указанное значение. Бесполезная фишка, кажется. getHealth():String,Number,Number. Значит, возвращает количество здоровья (текущее и максимальное). Чтобы не отвлекаться в дальнейшем, скажу сразу, что взвращаются данные так же через модем, через тот самый указанный порт. Так что не забудьте открыть его (modem.open(PORT)) и указать получение данных через event.pull("modem_message"). Формат данных: "modem_message", "адрес сетевухи на текущем компе", "адрес наноботов", порт, расстояние, "nanomachines", возвращаемые данные.... В данной функции возвращаемые данные: "health", 15, 20, где 15 — текущее, а 20 — максимальное состояния здоровья. getPowerState():String,Number,Number. Возвращает состояние энергии в наномитах: "power", 5000, 10000, где 5000 — текущее, а 10000 — максимальное количества энергии. getHunger():String,Number,Number. Возвращает состояние шкалы голода: "hunger", 10, 20, где 10 — текущее, а 20 — максимальное показания шкалы. getAge():String,Number. Возвращает "возраст" — общее время пребывания игрока на сервере в секундах с момента первого захода на сервер: "age", 1896, где 1896 — этот самый "возраст". getName():String,String. Возвращает имя игрока, который переносит наноботов: "name", "Fingercomp", где "Fingercomp" — имя игрока.

    Вооооооот, теперь самое интересное.
     


    V. Ход эксперимента. Часть, в которой 18 кнопок.
    Тык-с, теперь основное предназначение нанитов — давать всякие эффекты! Начиная от простых частиц вокруг игрока, заканчивая смертью.
    Есть 18 переключателей (входов в терминологии ОС), каждый даёт свой эффект. Набор переключатель-эффект называется конфигурацией. При каждом поедании нанобота эта конфигурация обновляется рандомными значениями. Если в первый раз 9 вход убивал, то теперь он, например, хилит. И т. д.
    ^ Выдрано из комментариев и заменено предыдущей непонятной фигнёй.
    Эффектами, кстати, могут быть не только всякие regeneration, но и просто спаун частиц, а также раритетные эффекты вроде магнита, притягивающего предметы. getSafeActiveInputs():String,Number. Возвращает лимит безопасных активных входов: "safeActiveInputs", 2, где 2 — это установленное в конфиге значение. getMaxActiveInputs():String,Number. Возвращает второй лимит на количество входов всего: "maxActiveInputs", 4, где 4 — тот самый лимит. setInput(input:Number, active:Boolean). Активирует и деактивирует вход. Тут всё просто — первый аргумент является числом от 1 до 18, а второй — состояние активности (true — включить, false — выключить). getInput(inpt:Number):String,Number/String,Boolean. Возвращает состояние выбранного входа. Если неверно указать — ошибка ("input", "error"). Иначе — состояние. "input", 13, true, где 13 — номер входа, а true — состояние =) getActiveEffects():String,String. Возвращает активные эффекты. Формат: "effects", "{digSpeed}", к примеру.

     


    VI. Финал. Трагедия и выводы.
    Собственно, поигравшись так с нанитами, активировал 9 вход. Вот такой казус возник:

    Угадайте, что произошло, когда я отключил креативку?)

     
     

    Чего и вам желаю.
     
    Выводы:
    Наноботы — не плод фантазии больного ума, но полезная вещь. Наноботы — штука хорошая, но только в разумных пределах. В неразумных от них можно сдохнуть.

    Напоследок продемонстрирую обещанное видео от автора мода про нанитов =) И включите аннотации, там инфа полезная.

     
     
    Удачи :P
  9. Fingercomp
    Последняя, пятая часть мастеровления полностью посвящена шеллу и его программам. Переменные окружения, алиасы и с ними связанные команды — я не врал.

    Сложность: высокая 75%
    Скучность: высокая 75%
    Дубовость: для продвинутых 80%

    Ключевой частью OpenOS является шелл. Это программа, которая выполняет команды, рисует командную строку, в общем, занимается предоставлением удобства пользователю. 


    ШЕЛЛ OPENOS.
    Сразу предупреждаю, что мы не будем рассматривать в данном гайде именно API шелла, только как программу. Из места — в карьер и...  
    Переменные окружения
    Это такие переменные, доступ к которым есть у всех приложений. По умолчанию создаются:
    "EDITOR" = "/bin/edit". Редактор по умолчанию. "HISTSIZE" = "10". Размер истории. "HOME" = "/home". Домашняя папка. "IFS" = " ". Символ для разделения. "MANPATH" = "/usr/man:.". Пути к папкам с файлами справочной системы. "PAGER" = "/bin/more". Программа типа more, осуществляющая функцию постраничного вывода. "PATH" = "/bin:/usr/bin:/home/bin:.". Основная переменная системы, указывает папки, где искать программы. "PS1" = "$PWD# ". Собственно, выражение, которое указывается в интерактивном режиме шелле перед полем команд. "PWD" = "/". Текущая рабочая директория, меняется, например, при вызове cd. "SHELL" = "/bin/sh". Шелл по умолчанию. "TMPDIR" = "/tmp". Временная директория.

    Таким образом, если изменить эти параметры и запустить использующие эти переменные программы, то можно изменять их поведение по собственным нуждам.
     
    set и unset
    Используются для этого две программы: set и unset. У первой следующий синтаксис: set [<название>[=<значение>]]. Если не указать никаких аргументов, просто перечислятся все переменные окружения. Если указать только название, то под определённым порядковым номером запишется название, если же ему присвоить значение, то возникнет пара <название>=<значение>. Главное — не ошибитесь при изменении важных переменных типа PATH.
    Чтобы снять значение переменной, пропишите unset <название переменной> [название второй переменной] [...].
     
    Алиасы
    Что такое алиасы? Это создание команды, которая будет вызывать другую. В общем, можно считать это ещё одним типом ссылки. Из стандартных алиасов имеются:
    dir = ls list = ls move = mv rename = mv copy = cp del = rm md = mkdir cls = clear less = more rs = redstone view = edit -r help = man ? = man cp = cp -i

    В данном перечне при написании команды слева выполняется команда справа. Это может быть удобно, например, чтобы не писать длинное "redstone", а только "rs".
     
    alias и unalias
    Но не это главное. Вы сами можете устанавливать алиасы!
    Первая команда alias имеет следующий синтаксис: alias [<Ваш вариант> [исполняемая команда]]. Если не указать аргументов в принципе, покажутся все алиасы, если указать только название — значение алиаса. Устанавливается только при указании значения.
    Чтобы снять алиас, достаточно команды unalias. unalias <название>.
     
    user*
    Приватность данных всё больше и больше волнует смертных человекоподобных существ пользователей ПК. OpenOS не остался исключением, и итог тому — предоставляемым самим модом функции управления пользователями. Тут всё просто. Есть в списке — гуляй, нет в списке — сорри, аксесс денайд.
    На основании уже сказанного мной текста, логично предположить, что детальное описание и использование лежит в глубине документации по API OpenComputers, и Вы будете правы. Единственная причина, почему я пишу об этом — для операций управления списком предназначены две простейшие утилиты useradd и userdel.
    Синтаксис useradd: useradd <игрок>. Ограничение состоит в том, что игрок этот должен быть в онлайне. И ограничение это накладывает сам мод, не система. К сожалению.
    Соответственно, логично, что userdel <игрок> удаляет игрока из списка пользователей.
    Если список пуст, то компьютер доступен всем. Если Вы сначала добавили друга, а затем захотели прописать себя — увы и ах. Так что прописывайте себя первым пользователем, если ещё собираетесь пользоваться компьютером. В любом случае, если Вы совершили олошность, то могут спасти ситуацию администратор или этот счастливый игрок.
     
    * и ?
    Обратили внимание на заголовок предыдущей записи? Тогда поговорим о масках. Нет, совсем не карнавальных.
    Представим следующую стркутуру:
    /|+ clones| || + clone001| + clone002| + clone003| + clone004| + clone101| + clone110| + colne001| + colne101| + colne|+ clonesEX|+ docsEX|+ docs | + doc_future-bak + doc*nature+smth + docFcreature_smth + doc2progsmth + doc.no + totallyNOTa.doc
    Задача попроще. Предположим, мы хотим перетащить в папку clonesEX все файлы из папки clones, при этом копировать папку нельзя. Что делать? Здесь нам на помощь придут эти самые маски. Конкретнее — *. Звёздочка в пути заменяет нуль и более символов. Соответственно, команда: mv clones/* clonesEX.
    Отмотаем время назад и допустим, что нужно перетащить только файлы с colne. Подумав, составляем команду: cp clones/colne* cloneEX. К слову, эта команда также захватит с собою colne. А что, если нам нужны именно файлы с номерами?.. Звёздочка тут не поможет, поэтому воспользуемся знаком вопроса (?). Он заменяет ровно один символ. В нашем случае достаточно такого: cp clones/colne??? clonesEX. Или даже такого: cp clones/colne?* clonesEX.
    По этому принципу перетащим все файлы, начинающиееся с doc, заканчивающиеся smth и имеющего название, отделённого двумя символами от doc и smth, из docs в docsEX. Подумайте, какую команду можно использовать.
    Ответ:

     
     
    ТАБ!
    Завершим рассказ о шелле потрясающей кавишей [TAB]. Суть её проста и огромна — если Вы ввели часть пути, то нажатие ТАБа дополнит до первого совпадения. Ещё одно нажатие — следующее совпадение и т. д.
     


    ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ СТАНДАРТНЫХ ПРОГРАММ?
    Удивительно, но мы, наконец-то, рассмотрели все стандартные утилиты и принципы работы (пишите в commentsStart, если это не так). Потому я закрываю цикл "OpenOS. От дуба до Мастера". В будущем будут другие записи, которые, вероятно, рассмотрят вопрос OpenOS в плане предоставляемых АПИ и скрытых открытых возможностей.
    Благодарю за прочтение.




  10. Fingercomp
    Продолжаем беседу об операционной системе Bolge OpenOS. В этой записи речь пойдёт про те самые оставшиеся утилиты, которые облегчат жизнь программисту.


    Сложность: средне 60%
    Скучность: высокая 80%
    Дубовость: для продвинутых 65%

    Операционная система OpenOS в первую очередь покрывает вопросы (относительно) удобного программирования для OpenComputers. Конечно, это не исключает сторонние редакторы типа Sublime Text или Notepad++, но иметь такие средства нужно и важно. Давайте же я расскажу о них. 


    УТИЛИТЫ ДЛЯ ПРОГРАММИРОВАНИЯ.
    Простой перечень утилит с пояснениями.  
    address
    Наипростейшая из наипростейших утилит, может соперничать даже с print("Hello, world!"). Просто выводит адрес компьютера. Интереса ради, пропишите view /bin/address.lua.
     
    components
    Ещё раз я расскажу об этой программке. Она выводит список компонентов, подключённых к системе. Можно задать фильтр, тогда выведутся только указанные компоненты. Если же указать ключ -l (о них в следующей части), то для каждого компонента будут указываться методы.
     
    dmesg
    Данная программа случает все события и выводит информацию о них на экран. Можно указать фильтры событий для просулшивания через пробел.
     
    flash
    Та самая программа, которая записывает код на EEPROM. Ключ -l выводит код о текущего EEPROM, -r записывает код в файл, а -q заставляет не задавать вопросов.
     
    hostname
    Данная программа бессмысленна без пакета network. Но, тем не менее, она может устанавливать и выводить текущее имя компьютера.
     
    lua
    Если запустить без аргумента или с ключом -i, то запустится интерактивный сеанс Lua-интерпретатора, где можно запускать программы. При этом все библиотеки автоматически переносятся в _G, так что дополнительно подключать их не требуется. Если же указать файл, то скрипт предпримет попытку запуститься и выдаст сообщение при обнаружении ошибки.
     
    primary
    Синтаксис: primary <компонент> [адрес]. Если аргумент [адрес] опущен, то выводится информация о первичном компоненте, иначе — предпринимается попытка сделать данное устройство первичным.
     
    rc
    Программа управления сервисами (о них — в следующих частях). Синтаксис: rc <сервис> [команда] [аргументы].
     
    redstone
    Предоставляет простой интерфейс управления редстоун-сигналами на первичной ред-карте/ред-блоке. По умолчанию синтаксис следующий: redstone <сторона> [значение]. Если [значение] не задано, выводится информация о текущем. Иначе — устанавливается.
    Для многожильных кабелей синтаксис следующий: redstone -b <сторона> <цвет> [значение]. Работа необязательного аргумента такая же.
    Для блоков, предоставляющих интерфейс беспроводной передачи ред-сигнала, команды следующие:
    redstone -w [сила]. Если [сила] задана, устанавливается значение на беспроводном передатчике. Иначе — выводится текущее значение силы. redstone -f [частота]. Устанавливает частоту, если задан аргумент, иначе — выводит текущую.

    sh
    Запускает сеанс командной строки, если не передано аргументов и io.stdin не перенаправлен. Иначе — читает команды из этого потока и выполняет их.
     
    umount
    Синтаксис: umount <точка монтирования>. Отмонтирует устройство по данной точке монтирования.

    Вот так. Следующая часть целиком и полностью посвящена шеллу, ему родимому. Это: переменные окружения, алиасы, ключи, аргументы, особенности работы шелла и прочее. Пока жду комментариев по этой части, пишите, если что-то непонятно.  



    ← →

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




  12. Fingercomp
    Третья часть мануала по OpenOS, где я расскажу об идее монтирования файловых систем, а затем разбавлю повестью о пайпинге.


    Сложность: средне 60%
    Скучность: средне 55%
    Дубовость: для продвинутых 50%
     


    ФАЙЛОВЫЕ СИСТЕМЫ, ЗАКЛЮЧЕНИЕ. УСТРОЙСТВА И МОНТИРОВАНИЕ
    Приступаем к самой сложной штуке в OpenOS — это монтирование файловых систем. Итак, начнём.  

    Логика работы
    Итак, начнём с того, что каждый накопитель — это устройство. У устройства есть свой адрес, который показывается при наведении мышкой. Устройство имеет определённую вместимость. Имеет количество свободной и занятой области. И, наконец, характеризуется наличием метки "Read-Only".


    Допустим, это устройство У имеет адрес Address, вместимость 2 МБ и занято 0.5 МБ.
    Другое устройство Д имеет адрес sserddA и такие же характеристики.
    В OpenOS выбирается одно основное устройство, которое становится корнем. У нас / = У. Оно имеет все стандартные файлы и папки. Но как перейти на устройство Д? Оказывается, в папке /mnt/ собраны ссылки на все устройства. Именами ссылок являются первые 3 буквы адреса устройства. Что интересно, даже если У — корень, ссылка на устройство всё равно будет в /mnt. Вот так: / Устройство У|│┅│+ mnt | |+ Add Устройство У |+ sse Устройство Д |┅
    Монтирование
    Но что, если если у нас таких устройств — 5, например? Помнить все 5 адресов, пусть даже трёх первых букв, писать длинные пути — не-у-доб-но. Согласитесь? Поэтому в ОС есть возможность ручного монтирования. То есть, проще говоря, можно создать ссылку на устройство в любом желаемом месте. Вот только ln здесь не поможет — это ведь не файл, а совершенно другой раздел. Для этих целей служит команда mount. У неё два варианта работы:
    mount -a <адрес> <место назначения> — создаёт ссылку на устройство, адрес которого начинается с <адрес>, в заданной директории <место назначения>. При этом указаннной папки не должно быть до этого на диске. После этого в выбранной директории будут все файлы с устройства. Для устройства Д — mount -a sse /devD/. mount <путь /mnt/адрес> <место назначения> — также создаёт ссылку на устройство в месте назначения, только вместо адреса используется путь типа /mnt/адрес. Для устройства Д это — mount /mnt/sse /devD/.

    Директория, которая является ссылкой на устройство, наызвается точкой монтирования.
     

    df
    Эта команда отобразит все подключённые в данный момент хранилища данных, укажет точку монтирования и состояние. Для нашего компьютера было бы показано следующее:
    Filesystem Used Available Use% Mounted onAddress 512k 2M 25% /Address 512k 2M 25% /mnt/addsserddA 512k 2M 25% /mnt/sse
    Как видите, если у файловой системы несколько точек монтирования, то будет показана информация о каждой из них.
     

    label
    Это у нас названия простые и запоминающиеся. В реальности вместо них были бы эти ужасные длинные непонятные адреса. И чтобы сделать их понятными, можно повесить метку. Что проще: "835f48a-5df9-eb6a-36cb-6ab452d8f16a" или "Programs"? Думаю, всё же второе.
    Чтобы поставить такую метку, воспользуемся командой label, у которой опять два варианта работы:
    label -a <метка или часть адреса> <метка> — устанавливает данному диску метку. label <точка монтирования> <метка> — устанавливает диску по данной точке монтирования метку.

    Кстати, если не указывать метку, то выведется информация о текущей.
    И ещё, установочная дискета имеет метку "openos", а жёсткий диск с ОС — "OpenOS" по умолчанию.

    Информация
    При монтировании первым способом можно вместо части адреса ввести метку.
     
     
     

    ПАЙПИНГ
    Файлы
    Простейший пример — перенаправление вывода echo в файл. Для этого используется >. Смотрите: echo "Hello all!" > hi.all. Содержимое hi.all очищается (или создаётся чистый файл, если его не было), и весь вывод идёт туда. Таким образом, в файле будет следующее: Hello all!
    Если же необходимо из файла содержимое вывести в команду, используется команда <. Вот только примеров такому мне найти не удалось.
     

    Между командами
    Другой простейший пример — команда cat. Если Вы помните, она печатала содержимое всё подряд, и если его больше высоты экрана, то просто обрезается. Так вот, чтобы не случалось такого, используется команда more и пайпинг.
    Сразу скажу, как это сделать. more | cat <файл>. Обратите внимание на |. Этот символ обозначает, что весь вывод из правой команды надо перенаправлять в левую.
    Скажу по секрету — тут можно было обойтись даже без пайпинга. more умеет сама открывать и читать файлы. Но есть нам нужен не файл, а, например, какой-нибудь df — вот тут и потребуется пайпинг.
     
    В любом случае, эта штука является невостребованной, так как она недоделана. Вероятно, в будущем этот недостаток будет устранён, а пока просто запомним три оператора.


    Список терминов: монтирование — процесс создания ссылки на устройство точка монтирования — название ссылки на устройство метка — пользовательское имя для накопителя



    Что же, всё обещанное сделано. В следующей части я расскажу об остальных программах, которые так или иначе помогают в программировании. Жду пожеланий и вопросов.


    ← →

  13. Fingercomp
    И снова здраствуйте. Я продолжаю описывать нелёгкий путь от дуба до Мастера в OpenOS.

    Начать предлагаю с вопросов, которые, к счастью, есть.
    Начинает у нас ЛесхаИнц (@@LeshaInc). И его вопрос:
    Бедный человек не разделяет, что принадлежит самой ОС, а что — предоставляемому АПИ компонентов. ОС принадлежит всё то, что написано именно для этой системы. То есть, например, в EEPROM этим кодом просто так Вы воспользоваться не сможете. АПИ компонентов предоставляет сам мод. И независимо от того, стоит ли на компьютере OpenOS, не стоит ли — АПИ мода всё равно присутствует, следовательно, частью OpenOS считать это ошибочно.
    Запомнил? Молодец. И больше не задавай глупых вопросов.

    Сложность: средне 40%
    Скучность: средне 35%
    Дубовость: для начинающих 30%

    Как и обещал, в этой части я поговорю о структуре ФС уже самой OpenOS и о первых инструментах, предоставляемых системой. 



    СТРУКТУРА ФАЙЛОВОЙ СИСТЕМЫ OPENOS
    Файловая система OpenOS чрезвычайно похожа на оную из *nix. Сразу же после установки системы, у Вас появляются следующие папки: / // Корень|+ bin // здесь хранятся программы самой ОС|+ boot // здесь хранится загрузочный код ОС|+ etc // здесь хранятся файлы конфигурации| || + rc.d // папка скрипта-демона|+ lib // здесь находятся бибилиотеки самой ОС|+ usr // все пользовательские файлы | + man // папка файлов справочной системы | + misc // папка различных файлов
    Допустим, мы хотим узнать, какие программы есть в OpenOS. Для этого заходим в директорию /bin/ (см. часть первую, если не помните, как) и смотрим содержимое через ls. Поразившись количеством программ, можно выходить из директории. К ним мы вернёмся позже.
     
    mkdir
    Но вот, например, вам захотелось страстно создать в корне папку /kotiki/. Для этих целей присутствует утилита mkdir <имя папки>. В нашем случае нужно ввести mkdir /kotiki/. Обратите внимание, что не рекомендуются в названии папок пробелы и спецсимволы (могут возникнуть сложности с программами, но если Вы решились так делать, то заключите путь в "кавычки"), и называть папку так же, как файл на диске, не следует.
    К слову, если нужно сделать две папки, можно обойтись одной командой: mkdir <имя папки> [имя второй папки] [имя третьей папки] [...]. Тогда достаточно прописать, например, mkdir /kotiki/ /sobaki/, чтобы создать папку "kotiki" и "sobaki".
    К слову, сразу же после установки, пропишите команду mkdir /usr/bin/ /usr/lib. Это понадобится.
     
    rm
    Предположим, что вы по ошибке прописали mkdir /koriki/. Возникает вопрос — как удалить папку? Для этого предназначена команда rm <имя файла или папки> [имя второго файла или папки] [...]. Нужно удалить только одну папку, потому пишем: rm /koriki/ — и создаём правильную папку. Напомню, что rm может удалять ещё и файлы.
     
    mv
    Что, если Вам хочется не удалять всю папку, а только переименовать её? Или перетащить с диска на дискету? Воспользуйтесь командой mv <имя файла/папки> <место назначения>. Например, чтобы переименовать /koriki/ в обыкновенных котиков, пропишем mv /koriki/ /kotiki/
     
    cp
    Куда же мы без копирования! Как в любой уважающей себя ОС, здесь тоже есть такая функция. cp <путь к копируемому файлу> <путь в место вставки файла>. Например, cp ../cat1/ ./.
     
    edit
    Но довольно возни с папками — мы пришли программировать! А не в папках копаться. Для создания и/или редактирования файла нужно прописать edit <имя файла>. Откроется редактор файлов. Управление такое же, как, например, в блокноте. Стрелочками перемещаться, ввод стандартный. Вот только для управления файлом вместо меню используются "горячие клавиши":
    [Ctrl] + — сохранение файла [Ctrl] + [w] — закрытие файла (файл НЕ сохраняется!!) [Ctrl] + [Del] — удаление строки [Ctrl] + [f] — поиск [F3] или [Ctrl] + [g] — поиск следующего совпадения

    Внизу справа отображается текущая позиция курсора.
     
    Запуск программ. PATH
    Чтобы запустить свою программу, пропишите путь до неё (например, myfirstprogram.lua). Если у файла расширение .lua, то писать его необязательно. Кроме того, если программа находится в /bin или /usr/bin (Ваши программы советую сохранять в последнюю папку), то вызвать их можно, просто прописав название программы без расширения, причём в любой папке. Именно так и работают стандартные программы (например, cd, mkdir и др.)
    То есть, при попытке запустить файл какой-либо, сначала обыскиваются директории в PATH (это /bin и /usr/bin) и, если программы такой не найдено, система пытается запустить файл в текущей директории.
    Если у Вас в текущей директории есть файл rm.lua, то, чтобы не запускать стандартную утилиту, пропишите ./rm.lua. Если указана директория в пути, то поиск в PATH пропускается.
     


    ДРУГИЕ СТАНДАРТНЫЕ ПРОГРАММЫ OPENOS
    man. Справочная система
    На этой команде я мог бы и закончить описание системы, так как для большинства стандартных программ есть описание в man. man — это команда, которая открывает файл справочной системы для чтения. Начните с man man. Вам расскажется о программе. А теперь пропишите команду ls /usr/man/. Вы увидите список файлов справочной системы. Например, resolution. Для просмотра файла пропишите man <название файла справочной системы>. В данном случае — man resolution. Для каждой изученной ранее команды прочитайте справочную информацию, чтобы Вы могли использовать их на полную силу.  
    cat <имя файла>
    Простой просмотр содержимого файла. Нет возможности управления курсором, если содержимое больше высоты экрана — всё, ничего не поделать (на самом деле, это не так, с помощью more можно сделать это удобным, но для использования потребуется пайпинг, о котором я поговорю в другой раз).
     
    clear
    Очистка терминала.
     
    date
    Выводит текущие время и дату.
     
    echo
    Просто выводит данную строку на экран (echo [строка]) Строку желательно заключить в "кавычки", чтобы избежать разных проблем. В простом виде бессмысленна, нужна опять-таки для пайпинга.
     
    install
    Скопировать полностью содержимое всей файловой системы на другой накопитель, вместе со всеми Вашими файлами.
     
    ln <путь к файлу> [место назначения]
    Создать сиволическую ссылку на данный файл. Если место назначение не указано, то в текущую директорию вставляется ссылка с именем файла. К слову, эти ссылки виртуальные и не хранятся на файловой системе. После перезагрузки компьюетра они стираются. Таким образом, они могут создаваться даже на системах только для чтения!
     
    pwd
    Выводит на экран текущую рабочую директорию. Полезно, опять же, при пайпинге.
     
    reboot
    Перезагрузка системы.
     
    shutdown
    Остановка системы.
     
    resolution
    Изменение расширения экрана. Синтаксис: resolution <X> <Y>. Максимальное разрешение зависит от монитора и видеокарты.
     
    uptime
    Время работы системы
     
    which <файл>
    Выводит путь до указанной программы или сиволической ссылки. Например, which rm выведет /bin/rm.lua.
     
    yes [строка]
    Бесконечно повторяет заданную строку, или "y", если не задано. Сомнительная полезность.

    Списка терминов тут не будет, так как придётся копировать информацию из статьи. Всё, что было изучено — это программы и структура ОС.

    Да и на самом деле, я рассмотрел далеко не все программы и возможности, имеющиеся в OpenOS. В следующей части — о пайпинге и устройствах, а также о программах, с ними связанных, так что не пропустите, если Вам интересно.

     


    ← →

  14. Fingercomp
    Приветствую Вас в очередной записи. Решившись, что отвечать на вопросы типа "как скопировать программу на дискету" каждому проходящему — непозволительная роскошь, я и пишу это здесь. Цель: описать процесс постигания магии бессменных белых букв на чёрном фоне, да так, чтобы это было непонятно всем. Эта часть будет необычной в цикле, так как именно сюда я буду выливать прогресс и делать обновления.
    Что же, запаситесь терпением и приготовьтесь скучать, да так, как Вы ещё не скучали, ибо именно в этой Башне лежат все скучные вещи.


    Сложность: просто 25%
    Скучность: средне 65%
    Баланс дубовости: для начинающих 20%

    Опустим такую невероятно сложную вещь, как установка системы, о которой уже было рассказано на нашем форуме. Вы вытащили дискету, нажали [y] и затем [Enter], готовите уже свою мышку к кликательным пыткам, надеясь, что эти буковки на чёрном фоне до установки — всего лишь результат лени разработчиков, дожидаетесь загрузки и... "О, святые криперы, что это?! Они меня замучать хотят этими буковками непонятными?!"
    Что же, приветствуем Вас на борту этой замечательнейшей операционки, работающая на чистом Луа. Основные принципы: Вы можете выкинуть свою мышку (чего, к слову, мы делать не советуем). Всё управление идёт через клавиатуру, как минимум, в стандартных программах. Эта штука чрезвычайно похожа на ОС типа *nix. Если эти 4 знака Вам знакомы, понятны и не вызывают страха — поздравляю! Вы уже на 90% владеете инструментом. Вся система — это такой большой Проводник. Можно путешествовать по разным папками и смотреть их содержимое.



    Первым делом сразу советую выучить английский, хотя бы немного. Всё потому, что русского языка вы просто так не увидите. Документация на английском, подсказки на английском, команды на английском, в общем — всё на иностранном языке. Выучили? Тогда приступим.

    И вот, прочитав истинно скучную штуку (или пропустив, но это не по-крутому, знай), мы трём носик об этот квадрат Малевича, исписанный в лучших традициях русского народа надписями типа "здесь был Вася" "RAM", "OpenOS" и какого-то магического заклинания. И всё — в белой рамочке. А ниже нарисовано решето. Мигает штука, похожая на детальку из "Лего". В общем, непонятно даже, как можно пользоваться такой штукой.  


    ФАЙЛОВАЯ СИСТЕМА
    CWD и ls
    Итак, представьте, что Вы открыли проводник. И сейчас Вы находитесь в папке "/", о чём говорит (-ят) символ (-ы) слева от решётки. То, что там написано, называется текущей директорией. По-английски — CWD (Current Working Directory). Проверить, что находится в текущей директории, поможет команда ls. Введите команду и нажмите [Enter]. Отобразится список файлов, причём, если у Вас монитор второго и третьего уровней, то синим будут обозначены директории, жёлтым — ссылки, а зелёным — программы. Иначе ­же всё будет белым цветом.  

    cd
    Сложно? Это ещё только начало. Допустим, что список файлов в текущей директории Вас не удолевтворил, и Вы хотите большего. Что насчёт перехода в другую папку? В Проводнике вы кликали 2 раза по ней — здесь же придётся вводить имя папки вручную. Команда: cd <имя папки>. Обращаю внимание, что угловые скобки писать не нужно. Они показывают, что аргумент программе обязателен. Впрочем, об этом в другой раз. Допустим, нам вдруг страстно захотелось в папку /bin/. Пишем: cd /bin/. Вуаля! Слева от решётки появляется надпись /bin, и Вы оказываетесь в другой папке.
     

    Пути
    Итак, мы в /bin/. Думаю, нужно ознакомиться с файловой системой ОС. Для каждой папки есть:
    содержимое родитель корень путь

    Содержимое папки мы узнавать умеем — командой ls. А что такое родитель, корень и путь?
    Допустим, есть папка "Файлы". В ней — ещё 2 папки, "Документы" и "Программы". В папке "Документы" будут файлы "отчёт001", "отчёт002" и "отчёт003". В папке "Программы" — "Программы2" и "Игры". Итого, структура нашей системы такова (структура — это описание всего содержимого папки. Называется часто деревом):
    + Файлы | + Программы | | | + Программы2 | | | + Игры | + Документы | + отчёт001 + отчёт002 + отчёт003
    Как видно, файл "отчёт003" находится в папке "Документы". Поэтому, для файла "отчёт003" родителем будет папка "Документы". В общем, это папка, в котором лежит файл или папка. Для "Документы" родитель — "Файлы", для "Игры" — "Программы", для программы — снова "Файлы". Вот так всё запутанно.
    Далее. Взгляните на дерево ещё раз. Как видно, у папки "Файлы" нет родителя. Эта папка называется корнем файловой системы. Все остальные папки так или иначе находятся в корне.
    Путь — это последовательная запись вложенных структур до нужного файла. Сначала папка "Файлы", в ней — папка "Документы", в "Документах" — "отчёт001". Следовательно, у файла "отчёт001" путь следующий: Файлы/Документы/отчёт001.
    В OpenComputers корнем является папка /, с которой всё и начинается. Следовательно, если папку "Файлы" поместить в "/", то для перехода в папку с файлом "отчёт002" можно прописать команду cd /Файлы/Документы/
     

    Абсолютные и относительные пути. ./ и ../
    Если путь начинается с корневой директории, то он абсолютен. Но есть пути относительные данной директории. Например, путь к папке "Игры" относительно "Программы2" таков: ../Игры/. Заметили ../? Этот путь есть в каждой папке и обозначает родительскую директорию (для корня ведёт на саму себя). То есть cd ../ переходит на директорию выше. Если прописать эту команду, находясь в папке "Игры", то Вы окажетесь в папке "Программы". Далее — в "Файлах", а так как это корень, то продолжение ввода не будет менять рабочую директорию.
    Кроме того, папка ./ ведёт на саму себя. То есть Файлы/ равен, например, Файлы/./././././././.
     
    И, напоследок, чтобы просмотреть список файлов без перемещения в нужную директорию, пропишите ls [путь до папки]


    Изначально, я продолжил запись описанием реальной файловой системы на ОС, но решил сократить объём повествования. Потому в следующей части — редактор, справочная система, объяснение структуры папок на ОС. В конце я привожу список новых слов и терминов: текущая директория — папка, в которой Вы находитесь. Известна как CWD (Current Working Directory) ls — просмотр содержимого текущей директории cd <путь> — перемещение по файловой системе структура — описание содержимого директории. Также известна как дерево родитель — предыдущая по вложенности папка. Директория, в которой расположен текущий каталог корень файловой системы — папка, не имющая родителя. Первая по вложенности. В OpenComputers — / путь — последовательная запись вложенных структур до нужного файла абсолютный путь — путь от корня до нужного файла/каталога относительный путь — путь от текущей директории до нужного файла/каталога ../ — ссылка на родительскую директорию ./ — указывающая на саму себя папка ls [путь до папки] — просмотр содержимого заданного каталога



    Повествование запутанное, сумбурное и непонятное, в лучших традициях Башни. Специально писал ночью для такого эффекта. Но, к сожалению, следующая часть будет веселее и активнее, с картинками и красотой. Жду оценок 1/5, игнорирования и злостных комментариев из-за этого.  




  15. Fingercomp
    Небольшое обновленьице OC вышло сегодня, в котором есть немного небольших изменений.

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




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

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



  17. Fingercomp
    Первая публичная реализация автокрафта на OpenComputers.
    Исполнительным элементом является робот, командующим же — компьютер. Хранилищем предметов здесь выступает МЭ-сеть, с интерфейсом в роли передатчика предметов в обе стороны.
    Для начала использования автокрафта Вам потребуется:

    Компьютер.
    Это главная часть системы, хранящая базу данных рецептов и экспортирующая предметы из дерева крафта в нужном порядке.
    Требования:
    Графическая карта второго уровня. Беспроводная сетевая карта. Процессор второго уровня и выше. Планки памяти уровня 2 и выше (зависит от размеров базы данных). Жёсткий диск уровня 1 и выше (зависит от размера базы данных). Интернет-карта (для скачивания программы). EEPROM. OpenOS Робот.
    Это исполняющая часть системы. По сигналу с модема "craft" она крафтит предметы и складирует полученное в МЭ.
    Требования:
    Апгрейд крафта. Контроллер инвентаря. Инвентарь. Клавиатура. Экран Т1. Дисковод. Интернет-карта (для скачивания программы). Беспроводная сетевая карта. Процессор уровня Т2 и выше. Планки памяти уровня Т2 и выше (возможная комбинация: Т2 и Т1.5). EEPROM. OpenOS. Жёсткий диск первого уровня. МЭ-сеть.

    Это хранящая часть системы, из которой достаются айтемы и в которую кладутся результаты крафтов.
    Требования:
    ME Drive и ячейки. Терминал для доступа к сети (может быть исключён). Интерфейс. После крафта всех необходимых вещей можно приступать к установке. Поставьте робота лицом в интерфейс. Убедитесь, что интерфейс готов к работе. Теперь соберите компьютер. Установите на робота и компьютер OpenOS. Скачайте программы, используя команды ниже, для робота и компьютера соответственно:
    Компьютер:
    pastebin get pXunJUE2 /usr/bin/craft.lua
    pastebin get ixwtEUr6 /usr/bin/recipes.lua
    pastebin get V2Zrnp6F /usr/share/db
    Робот:
    pastebin get tiwidCYt /autorun.lua
    pastebin get S1J5Y7mb /scan.lua
    Теперь запишите адреса сетевых карт на компьютере и роботе (components modem). Откройте файл /usr/bin/craft.lua на компьютере.
    В строке ROBOT замените значение на адрес сетевой карты робота.
    В строке DIR замените значение на сторону экспорта (сторона света, где находится робот относительно интерфейса). "north", "south", "east", "west", "up", "down".
    В строке TECH_SLOTS замените значение на количество слотов внизу робота (инструмент, дискета, контейнеры).

    После этого откройте файл /scan.lua на роботе и замените значение переменной COMP на адрес сетевой карты компьютера.


    Если всё сделано правильно, можно запустить файл /autorun на роботе и recipes на компьютере. Интерфейс у данных программ понятен без моих комментариев. Программа recipes предназначена для управления базой данных: удаление, изменение, добавление, просмотр рецептов. Программа craft на компьютере предназначена для самого процесса крафта. Напоследок, для сканирования рецептов нажмите 7 в recipes, выложите рецепт в роботе и в выделенный слот положите результат крафта. Затем запустите программу scan на роботе и выполните инструкции на компьютере.

    Скриншоты.
     
    Все вопросы, замеченные баги оставляйте в комментариях.
  18. 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 — возвращает оставшееся время до самоуничтожения.


    Предмет:


     

    Вот я и закончил рассказывать о карточках в данном моде. Остались только апгрейды и предметы интеграции с другими модами, но о них я уже вряд ли буду рассказывать. А пока Вы можете оставить комментарий, подписаться на запись и поставить оценку)
  19. 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
    ... Вы можете оставить комментарий)
  20. 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
  21. 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
  22. Fingercomp
    BETTER THAN MINECON 2015


    В выходные (4 и 5 июля) проходило мероприятие Better Than Minecon 2015, где обсуждался модифицированный Майнкрафт. Из моддеров присутствовали:
    asie — BuildCraft BlayTheNinth — EiraMoticons, Cooking for Blockheads copygirl — Flamingo, BetterStorage Cricket — Chisel CyanideX — InfernalSkies Darkhax — WAWLA Drullkus — Thermal Smeltery Dynious, BlayTheNinth — Refined Relocation Jared — FluxedCrystals 2 ljfa — Glass Shards magik9k — PlankOS для OC marcin212 — Zetta Industries masa — Ender Utilities pixlepix — Aura Cascade Sangar — OpenComputers shadowfacts — Matter Overdrive Skyem123, Achati, Vec — Integrated Circuits tterrag — EnderIO 2.2.3 Vexatos — Computronics, BuildCraft Oil Tweak

    Подробнее о том, что там происходило, здесь: http://asie.pl/btm15.html. Там же ссылки на записи некоторых из событий на BTS15.
     
    В частности, живая презентация OpenComputers, о которой я и хотел рассказать:
     

     
    P. S. Кто-нибудь был там с нашего форума?)
  23. 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/
  24. Fingercomp
    Дамы и господа! Мы представляем Вам новый Девайс: Вэйпоинт!..
    Собственно, вот.


    МАНУАЛ по вэйпоинту.



    Станьте Мастером по юзанью этой штуки за 5 шагов!



    I. Что это?
    Вэйпоинт — путевая точка — служит для указания роботу или дрону на конкретную локацию. Используется в совокупности с навигационным апгрейдом. Робот может получать относительные координаты места, силу подведённого к вэйпоинту редстоун-сигнала и название вэйпоинта.
    Внимание! Вэйпоинт указывает на блок, где спаунятся фиолетовые частицы!!  
     
     
     
     
     
     

    II. Использование.
    Для сканирования местности и получения данных о вэйпоинтах, необходим навигационный апгрейд в роботе или в дроне. Тогда появляется новая функция: findWaypoints(range) :: table
    Возвращаемая таблица будет содержать следующие значения:
    { { label="Имя вэйпоинта", position={ 0, --| Относительные |- X 0, --| координаты |- Y 0, --| вэйпоинта. |- Z n=3 -- Значение данного параметра неизвестно. }, redstone=0 -- Сила редстоуна, подведённая к вэйпоинт-блоку. }, { label="Имя второго вэйпоинта", position={ 0, 0, 0, n=3 }, redstone=15 } ...}

    III. Подробности.
    Имя вэйпоинта устанавливается через GUI этого блока.
     

    Но есть и второй вариант: вэйпоинт регистрирует себя как компонент:

     
    Так что мы можем обратиться к его фукнкциям:
    getLabel() :: string -- возвращает текущее название вэйпоинтаsetLabel(label:string) -- устанавливает новое название вэйпоинта

     
     
     
     
     
     
     

    IV. Практика!

    Специально для теста я по-быстрому написал 2 простенькие программы: поиск вэйпоинтов и перемещение к данному вэйпоинту.
    Полигон для тестов выглядел так:
     

    С ред-сигналом был только вэйпоинт "Сундук с грязью", как подсказывает первая программа find:

     
    Теперь давайте использовать путевые точки по назначению! Куда более сырая вторая программа goto позволяет перемещаться на данный вэйпоинт. Так как дрон — слишком просто, будем использовать робота "Curiosity".

     
    После выполнения робот перемещается с грязевого сундука на высокий вэйпоинт:
     
    Из-за сырости программы возникают небольшие ошибочки

    Здесь робот хотел пройти сквозь компьютер и попасть к правому вэйпоинту на скрине, но у него это не получилось :|
     
    И последнее. Если робот не находит какой-то вэйпоинт (в данном случае — "набор слов"), он выдаёт ошибочку.

     
     
     
     
     


    V. Заключение. Вэйпоинты могут помочь роботу или дрону легче ориентироваться на местности. Ссылки на скачивание программ: find: wget http://www.pastebin.com/raw.php?i=s0KdZApY find.lua goto: wget http://www.pastebin.com/raw.php?i=nAqrJ9jT goto.lua
    [*]Жду комментариев, лайков и, может, даже оценок! Ведь теперь Вы можете с уверенностью использовать этот замечательный блок [*]И, внимание! Официальное видео от автора ОС, демонстрирующее интересное использование данного блока в повседневных целях.



  25. Fingercomp
    Выключен
    Хост XMPP-сервера был отключён, ищу другой по возможности для настройки.
     
    Итак, хост, на котором был XMPP-сервер, окончательно ушёл куда-то, а вернуться так и не пообещал. Так что пока сервер, который популярностью и не пользовался, будет отключён до нахождения другого бесплатного хоста (буду рад помощи). Планирую запилить на него IRC, плюс ещё парочку других серверов при необходимости. Тем не менее, зарегистрировалось там 8 человек, сообщений написало (вместе с ЛС): 42, а продержался он 3.5 месяца.
     
    Старая запись:

     
×
×
  • Создать...