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

Лидеры


Популярный контент

Показан контент с высокой репутацией за 17.05.2019 во всех областях

  1. 13 баллов
    (проект в разработке) Цель данного проекта - создание нейросети и условий для ее самообучения. В идеале, это будет бомжовый робот минимальной комплектации (возможно даже без жесткого диска), который в зависимости от окружающих условий будет определять свою полезность. Также, он будет "программироваться" снаружи с помощью окружения оставленного другими роботами, формирующими "улей". Апогеем будет саморепликация. Кроме достижения цели, важен и процесс. Наблюдать за самообучением и выбором действий у нейросети очень интересно. Нейросеть изнутри: Мигающие точки - нейроны, линии - синапсы (связи), справа эмулятор мира майнкрафт на движке Love 2d. Нейросети устроены похожим образом. Есть входные значения, скрытые слои и выходные значения. В моей программе робот собирает информацию вокруг себя. На вход подается: Есть ли блоки над, под и перед ним Насколько много клеток он "разведовал" за последнее действие Его позиция в виде значений x,y,z от 0 до 1 Иногда я тестирую со значениями стороны куда он смотрит, возможностью двигаться, расстоянию до последней удачной копки Нейросеть "думает" и выдает 5 значений, которые соответствуют действиям движения 1) вперед, 2) вниз, 3) вверх, 4) вправо, 5) влево. Робот выполняет большее из этих значений. Далее, после действия, я вычисляю коэффициент полезности r [0..1] для этого действия. -- swingSucces: количество вскопанных блоков за действие [0..3] -- input.exploreSucces: коэффициент разведки [0..1], где 0 - уже разводовал все 3 блока, 1 - впервые проверил эти 3 блока -- logic(input.sweetsD < input.old.sweetsD): расстояние до последней удачной копки увеличилось 0, или уменьшилось 1 r = (swingSucces + input.exploreSucces + logic(input.sweetsD < input.old.sweetsD)) / 5 Нейросеь обучается, и в выбранное выходное значение приписывается r a остальные уменьшаются\увеличиваются на 1-r for i=1, #output do output[i] = switch i when actKey (output[i]+val^2)/2 when rndKey (output[i]+(1-val))/2 when oppositeKey (output[i]+(1-val))/4 else output[i] nn:propagate(output) Теперь матан. В начале я использовал обычный Персептрон, найденный готовый на ЛУА, но который мне пришлось править. Проблема в том, что он не может учитывать последние состояния. Нейросети с памятью называются "Long short-term memory" или LSTM, где каждый нейрон выглядит вот так: Найдя библиотеку synaptic.js, хитрыми путями я извлек из нее готовую LSTM сеть, которая получилась на 53 000 строк. Но это не проблема, если зайдет, я перепрограммирую ее на LUA. Текущее состояние сети - отстой. Я неправильно ее обучаю, так как не знаю какие значения выдавать для "обратного распространения ошибки". Круча разные коэффициенты, у меня получилось научить ее двигаться по спирали, как карьерный робот. Сейчас, когда я добавил во входные значения расстояние до последней удачной копки, он научился "кушать" как яблоко, но с огромный количеством лишних действий. В самом майне блоков намного больше и это выглядит вот так. На первом скрине работал 1 робот, на втором штук 6. Сейчас в их действиях слишком много шума. Я специально не даю им кирки, что бы они не унеслись в бесконечность. Фидбек Мне нужно помощь. Подскажите, что лучше подавать на вход, и как обучать сеть. Главная проблема, что для обучения я должен указать какие значения должны быть на выходах при текущих условиях, а я и сам не знаю. Обычно, робот теряется в пустом пространстве и я не знаю какое действие ему казать как "единственно правильное". А так, буду сюда отписываться и отчитываться о процессе разработки.
  2. 9 баллов
    Всем привет. Представляю вам программу для почти полного управления дроном. Но сначала короткая предыстория: Из возможностей отмечу следующее: Перемещение по сторонам света без улучшения "Навигация"(Спасибо версии OC 1.7.3) Возвращение дрона к управляющему планшету(Компьютеру) Удалённый интерпретатор Привязка дрона к управляющему планшету(Почти полная невозможность угона) Красивый Динамичный интерфейс(Отображение заряда планшета, время, заряд дрона, уровень сигнала) Остальные функции можно найти в программе или в скриншотах. Установка: На планшет (Для обладателей интернет-карт): pastebin get 8eEpZtdi drc.lua Для дрона (Для обладателей интернет карт): pastebin get vt7biZzP drc.lua && flash -q drc.lua drc.lua После вынимаем биос и вставляем в дрона. Первый запуск: Первый запуск сопровождается привязкой дрона к порту(Порт можно увидеть открыв дрона) и адресу беспроводной карты. Из-за этого возможность угнать дрона стремится к нулю, так как для первичной настройки нужно стоять не дальше 3 блоков от дрона. Пишем: drc <порт дрона> После этого дрона невозможно угнать, если рядом никого не было и он не мог подслушать сообщение(Перезагрузка привязку не ломает) Пара скриншотов: Видео: P.S Процент справа от шкалы сигнала обозначает не силу сигнала, а мощность передатчиков на планшете с дроном(поэтому для корректной работы нужны одинаковые карты беспроводной сети) В общем на это всё, дань уважения дронам выполнена, теперь могу спать спокойно.
  3. 7 баллов
    !!! пост в процессе редактирования... В ближайшее время администрация сайта планирует заменить игровой сервер EvilWorld. В связи с этим предлагается ознакомиться с игровыми особенностями и по желанию принять участие в обсуждении и балансных правках. Сервер обкатаем в режиме тестирования и после окончательных доработок проведем вайп и запустим его в обычном режиме для игры и программирования. Краткое описание (легенда): AtomicWars - PvP сервер на выживание. Действие (игровой процесс) происходит в воображаемом огромном мире в постъядерный период. До сих пор достоверно не известно, кто первым нанес ядерный удар, люди или машины. Но мир изменился. Изменился климат. Периодически возникают мощнейшие ураганы. Растения катастрофически замедлили скорость роста. Изменилась угловая скорость вращения Земли, длительность суток увеличилась в 8 раз. В результате страшных ядерных ударов произошли тектонические изменения в земной коре, наблюдаются огромные и многочисленные мелкие скопления лавы по всей глубине. Озоновый слой и магнитное поле Земли нестабильны, что в свою очередь увеличило фактор опасности от излучения(вспышек) солнца и других космических излучений. Мир населяют мутанты и монстры. Некоторые мутанты имеют огнестрельное вооружение. Также ведется война за территории, влияние и ресурсы между небольшими остатками людей. Программисты контролируют Север, лагодромщики ЮГ. Бандиты(сталкеры) не принадлежат ни к тем ни к другим. Они ведут разбойный и свободный образ жизни. Правительственные войска (Объеденные Силы быстрого реагирования), они же модеры и админы укрепились на военных базах и сдерживают набеги налетчиков, монстров и голодранцев. Программисты ищут способ восстановить машины, робототехнику и науку, чтобы остановить голод и катаклизмы и нормализовать климат. Только у них есть доступ к машинам, контролирующим погоду. Инженеры-лагодромщики никаких целей не преследуют. Они жадно поглощают ресурсы мира, строят лагодромы и неумолимо продвигаются на Север, чтобы уничтожить программистов и захватить новые земли. Легенда не является обязательной и игрок может не выбирать, кем ему быть, и может свободно заниматься своими песочными делами и выживать в одиночку, но будет лишен некоторых китов и фишечек, а также всей полноты кооперативной игры и сопутствующих ей тактик и стратегий. Характер модификаций: IT индустриализация инженерия декор PvE оружие и др. Некоторые ключевые моменты геймплея: игровой процесс происходит на огромной территории игровые "расы" : ИТ(программисты), Инженеры(лагодромщики), Сталкеры(бандиты). У каждой расы свой префикс, киты и преимущества* игрок автоматически потребляет по мере необходимости пищу, если она есть в специальных слотиках тактического GUI источники света: временные факелы или электрические источники освещения кастомный дроп с мобов кастомная генерация добавлены кастомные аптечки разных тиров добавлены кастомные войсковые пайки разных тиров добавлен полиэтилен добавлено кастомно несколько растений(лук, томаты, кок-сагыз) и их семена отключен спавн гевеи(только на черном рынке) несколько кастомных руд и камней отключены некоторые ванильные мобы (ведьма, дракон, житель) добавлено оружие (огнестрельное, лазерное, плазменное, химическое, ядерное) Оружие не разрушает мир. доступ к эндерчесту с консоли (платная команда) рандомная телепортация для расселения, по желанию (большой кулдаун, платная команда) GUI аукцион для торговли реурсами ограниченные жизни (хардкор режим BetterQuesting) Игроку при старте дается 200 жизней. При полном уничтожении игрока игра для него заканчивается периодические киты отключен лазер ИК мощный стартовый кит (плазменный пистолетик, инструменты, спички, тактичка, сканер, еда, аптечки, набор шахтера) стационарные базы правительственных войск, на которых можно пополнить запасы и получить некоторые разведданные * полностью отсутствует консольная телепортация (кроме установки дома и ТП на него в небольшом радиусе) путешествие в др. локации только через телепортационные врата, которые игроку придется скрафтить самому. В других измерениях уже будут админ врата, коды к которым можно получить из разведданных, расшифровав их. ежедневные киты кастомные игровые саунтреки* редкие, но опасные аномалии, о приближении которых игрок получает оповещение. Для того, чтобы избежать дебаффов, нужно находиться на высоте не выше чем 30 блоков по Y. Как правило, перед конкретным видом аномалии за некоторое время до ее наступления небо приобретает характерный цвет. Самая страшная аномалия - красное небо. плоский бедрок в один слой (не факт, что это будет, но возможно) включенный реактор ИК наносит урон радиацией в радиусе 5 блоков (ЗК блокирует дебафф) радиоактивные руды (блоки в мире) наносят урон радиацией в радиусе 5 блоков (ЗК блокирует дебафф) радиоактивные руды (айтемы в инвентаре) наносят урон радиацией (ЗК блокирует дебафф) бедрок наносит дебафф радиацией (ЗК блокирует дебафф) максимальный голод убивает мгновенно сильный голод накидывает некоторые дебаффы (медлительность и т.п.) ап роботов (размер главного аккумулятора и некоторые др. хар-ки) добавлена соль в некоторые ключевые рецепты (реактор, солнечные панели, чанклодер, робо-тессеракт, камера ядерного синтеза и др) добавлены специальные кастомные айтемы, которые в китах может периодически получать только та или иная раса для ролевого разделения и создания дефицита того или иного реса на аукционе приваты скорее всего будут отключены, или очень сильно ограничены по размеру, если силовые поля пройдут тестирование кастомные данжи и постройки постапокалиптического антуража (скорее всего не будет. Только игрок Doob прислал одну постройку в виде подземной казармы трехэтажной и тоннелем на поверхность.) Если в течении ОБТ что-то успеем сделать, тогда включим кастомную генерацию данжей и построек в мире. квант скорее всего будет отключен или будет стоить по крафту очень дорого миникарта отсутствует. Добавлен мод атлас. Добавлен мод сканер движения. мировая карта основного мира имеет соотношение сторон 1:4 (X:Z) на сервере ведется учет киллсов, и на сайт планируется вывести ТОП игроков К/D рецептура в подавляющей своей массе дефолтная за исключением совсем убогих или противоречивых рецептов (не исключено изменение в процессе игры для баланса) ураганы сносят ТОЛЬКО фиксированные блоки из списка (скорее всего это будут мелкие растения, кропсы, некоторые строительные блоки, которые теоретически могут сносится ураганом в реальности) Ураганы не разрушают мир из соображений эстетики. и др. изменения * - будет активировано после ОБТ Также в игре благодаря нашим форумчанам java-программистам NEO и vx13 появятся масса новых апгрейдов для роботов и дронов, которые они оперативно разработали для нужд сервера по просьбе администрации: солнечные панели персональный чанклоадер мировой навигатор, который получает мировые координаты ультимейт геосканеры (получают всю информацию о блоке в большом радиусе, тип руды, состояние кропса ИК и пр.) сундучки тессеракт для робота (робот может сендить рес из пузика прямо в МЕ сундук, и даже сквозь измерения) и др. Дополнительная информация и вносимые изменения по модам, балансу, новым фишкам, правкам и изменениям будет появляться в этом посте. Лог всех изменений будет фиксироваться в этой теме. Проморолик: Несколько скринов:
  4. 6 баллов
    В общем я много думал, и это не вариант. Если превратить выходные нейроны во внутренний слои и с них снимать значения, то последний один нейрон а.к.а "полезность" просто настроится всегда показывать 0. Для нейросети это беспроигрышный вариант - робот забился в угол, нейросеть определяет что польза будет 0, и ты ей обратным распространением ошибки подкрепляешь и передаешь 0. В общем, не выйдет так делать. Последние 3 дня работаю над экспортом эмулирующей программы в браузер, но и развлекаюсь добавляя анимации
  5. 6 баллов
    С небольшим запозданием, но я таки обновил сервер снова, и исправил все баги. Итак, теперь сервер постоянно обменивается с клиентами пингами. Это позволяет поддерживать соединение "в тонусе" и не давать ему отвалиться, как на TCP подключениях, так и на веб-клиенте. Для теста я держал соединение между веб-клиентом и программкой в эмуляторе OC открытым примерно два часа. Ничего не сломалось. Кроме того я добавил больше контроля над состоянием соединения. В веб клиенте фон будет загораться красным в случае проблем с соединением, так что это будет легко заметить и обновить страничку. В библиотеке для OpenOS добавились новые методы: server:ping(content[, timeout]), boolean - позволяет послать серверу Stem пинг. В качестве контента указываете любой кусок данных. Сервер должен будет его вернуть в точности чтобы подтвердить пинг. Метод блокирующий, ждет ответа от сервера вплоть до таймаута (который по дефолту 5 секунд). Возвращает true или false. server:isConnected(): boolean, error - проверка того, установлено ли подключение к серверу Stem. Если установлено, вернет true. Если не установлено - вернет nil и сообщение об ошибке. server:reconnect(): server, error - если что, этой командой можно переподключиться к серверу. Вернет ссылку на самого себя (объект server) в случае успеха. В случае ошибки, как водится, nil и строку с сообщением об ошибке. Подробный список команд можно полистать тут. Установить новую версию библиотеки можно по прежнему из Hel: hpm install stem Если библиотека уже была устанвлена, можно только обновить: hpm upgrade stem Если вы не пользуетесь Hel, то качайте по прямой ссылке: wget https://gitlab.com/UnicornFreedom/stem/raw/master/stem.lua
  6. 6 баллов
    ВНИМАНИЕ!!! ОБНОВЛЕНИЕ. Сервер STEM ночью был обновлен и перезагружен, всё что было к нему подключено - отключилось. Что нового? Новая веб-страничка. Теперь там появился веб-клиент. Мы можете подключиться к любому каналу и почитать, что там пишут. И даже написать самому. Конечно свободы там меньше чем если работать через OC напрямую - послать любые данные не получится, только UTF-8 текст. Но зато не надо писать код, а можно просто с сайтика всё отправлять. Кроме того, я отрефакторил внутреннюю структуру сервера, поменялось довольно много кода. Всё пока еще сырое, активное тестирование и сообщение о багах приветствуется. В ближайшие несколько дней буду фиксить баги и добавлять остальные обещаные плюшки, типа ping пакета.
  7. 6 баллов
    Программа находится в разработке. Постараюсь упростить процесс настройки программы. Данная программа сканирует содержимое вашей МЕ системы и поддерживает заданное количество указанных в списке предметов. Иными словами предварительно крафтит (preCraft). Это полезно на развитых индустриальных базах, где практически всегда есть медленные рецепты с высокой импульсной нагрузкой, так что если заранее их выполнить можно повысить быстродействие вашего автокрафта. Основой системы является то, что me_interface предоставляет нам информацию о содержимом МЕ и о списке крафтов, а так же предоставляет объекты управления заказанными из OC крафтами. К сожалению получить информацию от текущих крафтах заказанных не из ОС не возможно. Так же API содержит ряд багов по работе со списком предметов в МЕ, а именно некорректно написан фильтр (подробнее можете сами посмотреть на git AE если конечно понимаете scala). В связи с вышеперечисленным требуется много ОЗУ >2mb. Из периферийных устройств нужен adapter подключенный к ме интерфейсу и database https://ocdoc.cil.li/item:database_upgrade для формирования списка прекрафтов. Я постарался минимизировать блокирующие вызовы, однако сканирование списка крафтов при начальной инициализации системы занимает много времени. Установка pasebin get 5hnW78DU preCraft.lua Настройка Первоначально вам необходимо отредактировать код программы. (позже сделаю утилиту конструктор) edit preCraft.lua советую провести манипуляции в текстовом редакторе а потом вставить изменения в ОС На 32 строчке программы находится local preCrafts = { { size = 1000, label = nil, alias = "SoC", craft = nil, progress = nil }, { size = 1000, label = nil, alias = "ASoC", craft = nil, progress = nil } } 33 и 34 строчки это и есть прекрафты, вам необходимо заполнить поля size = сколько штук поддерживать поле alias необходимо т.к некоторые моды что используют свою систему предметов например GregTech, Immersive Engineering выдают не человеко читаемые имена блоков. Если вас это устраивает alias = nil если нет пропишите имя руками alias = "название вашего предмета" теоретически длинна списка не ограничена, однако database t3 содержит 81 предмет и в данный момент дописывание в конец списка не реализовано. для увеличения списка просто вставьте между 33 и 34 строчками еще строчек и отредактируйте их { size = 1000, label = nil, alias = "SoC", craft = nil, progress = nil }, обратите внимание что в конце списка строка не содержит запятой { size = 1000, label = nil, alias = "ASoC", craft = nil, progress = nil } параллельно с составлением списка добавляйте предметы в database первый слот database соответствует первой строке списка и так далее local preCrafts = { первая строка списка{ size = 1000, label = nil, alias = "SoC", craft = nil, progress = nil }, вторая строка списка{ size = 1000, label = nil, alias = "ASoC", craft = nil, progress = nil } } После окончания заполнения списка и database положите database в адаптер и запустите программу с параметрами --int2ext --pclName=preCraftList.lua preCraft.lua --int2ext --pclName=preCraftList.lua программа создаст файл preCraftList.lua после чего database больше не требуется Запуск программы preCraft.lua --extList --pclName=preCraftList.lua --thrLim=4 параметр --thrLim=4 определяет сколько крафтовых процессоров использует программа одновременно, по умолчанию 2 (если этот параметр не указывать) автозапуск программы можно организовать добавив вашу строку запуска preCraft.lua --extList --pclName=preCraftList.lua --thrLim=4 в .shrc https://pastebin.com/5hnW78DU p.s написано под разрешение 160*50. работать будет на любом но консоль отобразится некорректно
  8. 5 баллов
    Небольшое обновление(Абсолютный контроль над дроном): Доделал интерпретатор, теперь почти неотличим от оригинала. Теперь не нужно писать return чтобы вернуть значение, а так же появилось две функции - sleep() и print(). 1 помогает прекратить код через CTRL+D при исполнении, 2 поможет вернуть значение в работающем коде: Так же добавил утилиту net(*клик*) для того, чтобы загрузить программу на дрона. То есть, можно запустить любую программу командой net <program_name> И она сию минуту загрузится на дрон: Установка: pastebin get gF4URgfn net.lua P.S Так же ещё много мелких правок, но это не суть важно. Так же упёрся в лимит по памяти, но я думаю это уже неважно =d P.P.S В интерпретаторе есть функция 'clear' - если её написать, терминал очистится(как неожиданно, правда?)
  9. 5 баллов
    Зачастую на серверах с техносборками ставится базовая коллекция модов: IndustrialCraft BuildCraft OpenComputers Благодаря моду билдкрафта в мире генерируются озера нефти, особенно огромные они в море. Если у вас хватит терпения его выкачать и переработать в дизельное топливо, то наверняка появится вопрос, куда это топливо девать кроме как как в двигатели внутреннего сгорания. В моде IndustrialCraft есть очень интересный генератор со сложным крафтом - полужидкостный генератор. Его особенность в том, что он может вырабатывать из топлива 32 eu/t, но есть большая проблема, передавать в провода он может только 20 eu/t. Данная проблема проявляется только на сервере, в одиночке все нормально. Возможно это разработчики что-то напутали, или так задумано, или чьи-то кривые ручки не туда тыкнули в настройках сервера, однако с 1 ведра топлива можно легко получить 128000 eu. Если запустить его в автоматическом режиме, то он начнет работать импульсами - зарядка внутреннего буфера, отключение, передача 20 eu в провода, включение, зарядка внутреннего буфера ... и т.д Но при этом топливо будет расходоваться не полностью, а с огромными потерями. По 5 мл на запуск, что не есть хорошо. Поэтому буфер всегда должен быть свободен. А постоянно мониторить и вовремя сливать энергию может обычный компьютер из мода OpenComputers. Итак, представляю вашему вниманию автоматический контроллер полужидкостных генераторов на ОС. Я разделил программу для генераторов на 3 уровня. Везде используются разные программы, но они работают на одном и том же принципе. Выбирайте то, что вам больше по душе и вперед строить! Генератор высокого класса Делается чисто на декор и понты Для тех, у кого туго с ресурсами, предлагаю генератор среднего класса. Он не настолько красивый, графония вообще не имеет, но главное, что он довольно низок по потреблению памяти, а так-же скорость обработки данных в разы шустрее. Из минусов - он нессиметричный, хотя это уже дело вкуса каждого. При желании можете налепить батареек и будет вам симметрия. Ну и последний тип генератора - бюджетный на микроконтроллере. От остальных он отличается крайне дешевыми компонентами, хотя со сборкой придется повозиться. Вот такие интересные получились контроллеры полужидкостных реакторов. Качайте нефть скорее, её не так много во всем мире ...
  10. 4 балла
    Я вот согласен с товарищем @Fingercomp почти по всем пунктам. Что касается "картошечки", то тут мне видится два пути. Либо ты презентуешь свою программу как ультра-мега утилиту, которая изменит жизни - и тогда она должна иметь хоть какое-то место собственно в жизни игроков форума. То есть она должна быть реально применима в как можно большем количестве случаев. То есть - никакого лишнего кода, все максимально удобно и максимально практично. "Картошечка". Либо ты презентуешь свою программу как творческий эксперимент, и проект для фана - и тогда она естественно будет практически никому не нужна. Но ты получаешь полную свободу творчества, костылизма, велосипедирования и построения какого угодно хаоса. "Сандбокс". А тут у нас "сандбокс", который пытается выдать себя за "картошечку", и при этом сыпет перлами вроде "комьюнити, без обид, ныне представляет из себя весьма жалкое зрелище" и "вы боитесь поднять голову выше банального пинг-понга пакетами между платками, а ваши низменные интересы ограничены фермами пшенца и картошечки на дронах и прочей ерунде уровня третьего класса церковно-приходской IT-школы", за то, что пользователи не увидели особенного смысла и пользы в презентованном творении.
  11. 3 балла
    Ещё можно вызвать req.finishConnect(). Эта функция выдаст true только тогда, когда установится соединение. Если там ошибка будет, эта же функция ошибку эту выкинет. Очень удобно. Можно в цикле со слипом её вызвать и ждать, пока не установится. А потом уже читать можно будет. Заявления, что "никогда такого не было", ложны. Такое было давно, минимум три года. Я безумно счастлив за тех, кому не приходилось сталкиваться с этой проблемой, но на самом деле нормально работающая геталка с интернета выглядит весьма сложнее, чем код от @Alex. Если делать по-простому, то вы в свою программу добавляете бесплатное состояние гонки. Что, как известно, дебажить очень весело и интересно. Ещё замечание. Чтобы не нужно было в цикле нерационально расходовать процессорное время, лучше не слип делать, а event.pull("internet_ready"). Если совсем круто хочется, то можно даже event.pull("internet_ready", req.id()). internet_ready — это сигнал, который посылается компьютеру, если на сокете появляются новые непрочтённые данные. Например, прочла прога сначала 5 байтов с сокета, а потом на него сервер ещё двадцать отправил — тогда-то и получит прога ивент этот и снова считать данные сможет. Так как особо крутые кодеры могут жонглировать сразу десятью интернет-соединениями на одном компьютере, полезно фильтровать ивенты по идшнику соединения, как во втором варианте у меня. P. S. Все эти функции доступны при создании соединения через компонент интернет-платы. Не через либу internet. Это предельно важно. Поэтому я советую всегда не юзать либу, а помучаться, но сделать нормальную считывалку через апи компонента.
  12. 3 балла
    Целую неделю вожусь с графикой. Это поможет сделать нейросеть более нагляднее. А еще, я собираюсь за эту неделю перевести программу тестирования на HTML5, в браузер, так что каждый сможет попробовать свои собственные формулы для обучения. В интерфейсе можно будет брать любые параметры на входе, рассчитывать их как угодно и выдавать результат нейросети. Посмотрим, вдруг кто то из вас найдет метод лучше чем я. P.S. Зачем удалили сообщения? Норм же общались...
  13. 3 балла
    Говорить о ненужности программы, так как ею нельзя копать "картошечку", не ахинея ли великая? Проснись, народ! Майнкрафт не на одной картошке повязан! Не пропустили ли вы "sandbox" у игры в описании? Так можно говорить, что и OC не нужен, и кубики не нужны, и вообще всё не нужно и бессмысленно. А такое уже лечить нужно. Стримы нужны! Но не всякие: Сеть должна иметь нормальную топологию. Работать внутри <=400 блоках модема — ненормально. Потоки лучше тем, что юзеру не нужно мучаться с делением большого контента на пакеты, которые влезают в maxPacketSize. Если такого нет, это ненормально. На получателе последовательность пакетов должна быть такой же, как и на сервере. Если сначала придут 3 байта конца, а потом 8192 байта начала, это ненормально. Получатель должен получить все пакеты, которые отсылает отправитель. Если половина потеряется, а сеть не оповестит даже об этом получателя, это ненормально. Получатель не должен получать дубликаты пакетов. Если сообщение вдруг вырастает в 2 раза по размеру, это ненормально. В сети нужна какая-то защита от дудоса. Если кто-то в пещере делает вайл-тру-ду-сенд, и из-за этого никто другой не может юзать сеть, это ненормально. Наконец, необходимость набирать огромную кучу лишнего кода, есть тоже ненормально. Если для ответа так или иначе надо создать свой стрим, так почему ж не сделать это сразу в либе и отдать аргументом функции-листнеру? Да и одним бы стримом можно было бы справиться, как мне кажется, смысла во втором не вижу. Возможно, что-то из пунктов выше уже реализовано или реализовывается, пока я пишу этот пост. Я, к сожалению, знать об этом не могу, потому что качать какой-то архив с яндекс-диска — это близко к издевательству, а потому я этого и не делал. P. S. Если кто-то обижен тоном этого поста, прошу прощения. Очень понравилось это выступление.
  14. 3 балла
    В целом, улей это достаточно крутая идея. И у меня есть парочка идей по этому поводу. 1) В улье должна заправлять "матка" - специальный сервер, который будет подключаться через интернет-карту к реальному компьютеру, исполняющему, допустим, Python-программу (нейросеть на 4МБ ОЗУ - такое себе). Она анализирует (хотя это скорее ИИ, а не нейронка) задачу, которая ей дана - допустим, создание определенного количества роботов, разбивает ее на несколько мелких (создание робота = поиск ресурсов + крафт компонентов + крафт робота) и делегирует их роботам. Основная задача "матки" - недопущение собственной разрядки и разрядки роботов. 2) Роботы также должны иметь нейросеть или ИИ, но куда меньшие, предназначенные для решения "маточных" задач из разряда принеси-подай, добудь-поставь.
  15. 3 балла
    Еще до нового года, пришла в голову мысль свести майночасы и реальные. Вышел вот такой простой код: https://pastebin.com/raw/x8FXS31P Работает в фоне, можно настроить свой часовой пояс и время обновления таймштампа(Нужно для того, если сервер остановился/вышли из игры). Для работы требуется только карта отладки, ничего больше. Пара фотографий: Время 23:20 Получилась довольно забавная штука, но на практике - не очень. Чаще всего заходишь в игру вечером - в итоге у тебя всегда в игре луна.
  16. 3 балла
    Данное видео не раскрывает ни возможностей написания Lua-скриптов, ни гигантских возможностей самой игры. Показана моделька какого-то мужика, суетливо бегающего кругами. Также показана игра в астероиды, которые не тормозят и не лагают. Ещё сообщается о гипотетической возможности стать круче Билла Гейтса, программируя какие-то шайтан-машины, но они даже в кадр не попали. Пустое видео.
  17. 2 балла
  18. 2 балла
    Вот односимвольный режим, если спутало 'Увеличить/Уменьшить размер экрана'
  19. 2 балла
    Не-не-не, все так и должно быть: read тупо пытается прочесть по кускам контент веб-страницы с сокета. Если сервак пока еще не кинул ошибку соединения, и контент отсутствует - в сокете ничего свеженького не будет, и read выдаст пустую строку. Если соединение говеное, то сокет закрывается, и read выдает nil с причиной. А если URL валидная, то и содержимое будет выдано практически мгновенно, поэтому никаких пустых строк замечено не бывает - либо бывает, но крайне редко. Потому что sleep в опеноси работает через цикл: function os.sleep(timeout) checkArg(1, timeout, "number", "nil") local deadline = computer.uptime() + (timeout or 0) repeat event.pull(deadline - computer.uptime()) until computer.uptime() >= deadline end В твоем случае достаточно спокойно ждать, пока содержимое соединения прочтется - и забить болт на всякие пустые строки. Всяко будет быстрее, чем статичный sleep в каждом запросе
  20. 2 балла
    хмм, хренька какая-то. Это какая версия ос-ки? То есть ты хочешь сказать, что соединение еще только выполняется, оно еще только в процессе, а прога уже хочет прочитать то, что вернул запрос? Так же не должно быть по идее. Это же ерунда какая-то несусветная? Или нет? п.с. кстати, вот нашел старую функцию какую-то, с которой никаких проблем не было никогда. Со времен царя гороха она работает и никаких проблем. Никаких слипов ей не требовалось никогда. Первый раз такое слышу, что слип там необходим для устойчивой работы. function get(url) local request, reason = internet.request(url) if not request then return '' end local text = '' while true do local data, reason = request.read() if not data then request.close() break elseif #data > 0 then text = text..data end end return text end
  21. 2 балла
    А зачем? Что дает рукопожатие и сессия? Это оверхед. Удобно ~= сложно. Ну и получаем дикий оверхед в виде создания и уничтожения нового стрима на каждый пакет. И да, ты все равно оперируешь пакетами (data) только через стрим, а не напрямую. Сессия (что ты вообще имеешь в виду под сессией?) по-прежнему не нужна. Пока чудес не наблюдается. Ждем. Тут главное не забывать, что мы все это творим в рамках майнкрафта. Картошечка на дронах - это наше все, и любая библиотека сильно выигрываешь, если она применима для картошечки. Если не применима - она остается уделом 2-х с половиной пользователей, которые пилят что-то глобальное свое. А такие пользователи обычно пишут свои велосипеды. Что касается связи компьютеров - недостатка в программах для этого нет. Есть, например: Zn - динамическая p2p сеть, которая обеспечит связь по цепочке компов, и проста в использовании как обычный modem. Не требует никакой конфигурации вообще. Stem - брокер сообщений на основе интернет плат. Мультиканальная передача сообщений откуда угодно и куда угодно, включая компы из реального мира. Опять таки - элементарен в использовании. Нуль настройки. И это я только свои проги упоминаю. Их так-то полно. Делали, и не один раз. OpenNet, например. Был и браузер и сайты. Но в рамках сервера Minecraft это затея "на поглазеть один раз". Особого практического применения нет. Ну вот тут я конечно же полностью согласен и поддерживаю. Как творческий эксперимент - программа офигенна. И объем работы проделан неплохой. Короче жду продолжения.
  22. 2 балла
    Вот именно - вы боитесь поднять голову выше банального пинг-понга пакетами между платками, а ваши низменные интересы ограничены фермами пшенца и картошечки на дронах и прочей ерунде уровня третьего класса церковно-приходской IT-школы. Когда на AtomicWars (дай бог ему здоровья и стабильной работы) вы задумаетесь над чем-то более глобальным, чем пароли на двери и бурение шахт друг-другу... на участках, вы так или иначе столкнетесь с необходимостью соединить ваши компьютеры, дронов и роботов в сеть. И именно тогда вы вспомните старину Атомика, который, словно Прометей, принес вам то, что изменит вашу жизнь навсегда. Запомните этот твит
  23. 2 балла
    Итак, первый кусочек исходного кода. Это код обычного персептрона, который я использовал в самом начале. Сейчас я юзаю более сложную нейросеть LSTM, но начинал с этой. https://gist.github.com/Krutoy242/e7b6618e8bc180acbe65b515a9ad1755 Это форк с другого кода, но я улучшил скорость работы сети, исправил ошибки и добавил удобства в работе с сетью. В комментах есть описание и пример работы, пользуйтесь на здоровье. Ладно, реализовать такое не сложно, так что попробую. Ну и кто то сказал что на предыдущей гифке ничего не понятно и я добавил больше описаний
  24. 2 балла
    Спасибо за радушный прием! Просто, у меня в жизни наконец белая полоса началась и можно заняться любимыми делами.
  25. 2 балла
    Сэнгар выдал самому себе и некоторым друзьям из #oc этого роботика. А мод, который их добавляет, как ни странно, — OpenComputers. Сырцы.
  26. 2 балла
    Ого! Градус безумия растёт. Промежуточные адаптеры можно даже не запитывать энергией. Теперь можно динамически подключать не только отдельные сундуки, но и целые сегменты. При неаккуратном использовании этой возможности процессор крашится, не в силах переварить прорву новых компонентов. Про плотность точно пока не скажу, т.к. мозг ещё не привык к этой новой идее. Первой мыслью в голову приходит сетка 3x3x3, чтобы адаптеры дотягивались друг до друга. Возможно, она не оптимальна. Навскидку потери составляют около 4.5% для алмазных сундуков, для уточнения требуется продумать схему доступа, т.к. при такой сетке появляется возможность дотянуться до одного сундука с разных адаптеров. И тут надо подумать, даст ли эта избыточность какие-либо преимущества, например, в виде повышения пропускной способности сети.
  27. 2 балла
    Они пытаются создать что то похожее. Короче аналог МЭ только на ОС. Писал такое когда то, у кого то на сервере такая установка работающая стояла. А рассчеты щас ведут сколько кто сможет захватить сундуков и на чем выгоднее. На адаптере с МФЭ или на куче транспозеров.
  28. 2 балла
    Ограничение на количество MFU в одном адаптере легко преодолимо: транспозер + сундуки с кучей MFU ограничивают количество периферийных устройств лишь размером инвентарей, находящихся в непосредственной близости от транспозера. А если задержки не критичны, то и вообще ограничений нет. Плюс такого подхода ещё и в том, что он снимает ограничение и на количество периферии, задаваемое процессором или серверными шинами. P.S.: От этого поста отпочковалось обсуждение системы хранения на MFU.
  29. 2 балла
    Это уже проблема того кто ставит. Не уследил и все сгорело, закачивай топливо, корми генератор, запускай заного микроконтроллер. Думал поставить еще пробуждение по wifi, но потом передумал. Это надо еще городить мониторилку и прочее и прочее. Думаю и так сойдет. МФЭ - штука классная, метров за 5 берет от адаптера. Если приват криво влепили и сундучки в этот радиус попадают, можно устроить маленький destroy всего содержимого сундучка ))
  30. 2 балла
    Накодил для себя монитор реактора из Extreme Reactors с поддержкой МЭ системы и хранилища из EnderIO Прога с простым интерфейсом и крупным текстом, без всяких графических штучек, текст легко читается с экрана с большого расстояния Что умеет: Вывод имени реактора (Если несколько реакторов то делаете несколько таких мониторов, и по имени реакторы будет проще найти) Расчет времени работы на остатке топлива (Если включена поддержка МЭ то расчет ведется с учетом йеллоурита в МЭ системе) Режим хранения (В этом режиме программа будет поддерживать ВЫКЛЮЧЕННОЕ состояние реактора) Время последнего включения реактора Вывод мощности реактора, вывод остатка топлива в МЭ и в самом реакторе, вывод запаса энергии в батарее EnderIO Поддержание нужного уровня заряда батареи реактора Что не умеет (Но возможно будет добавлено): Не поддерживается несколько экранов Не поддерживаются несколько реакторов Не поддерживаются турбины Нет управления по модему Проблемы: На 1.12.2 накопитель из EnderIO не считывается адаптером как мультиблочное хранилище, поэтому выводится информация только об одном блоке накопителя (На 1.7.10 все работает) Конфиг: reactor_Control = true, -- Разрешить управление реактором reactor_Storage_Mode = false, -- Режим хранения реактора, программа всегда будет поддерживать ВЫКЛЮЧЕННОЕ состояние ME_Storage_Support = false, -- Поддержка внешнего хранилища (Расчет остатка времени работы с учетом топлива в хранилище, и вывод топлива в хранилище на экран) EIO_Capacitor_Support = false, -- Поддержка EnderIO (Вывод запаса энергии на экран) reactor_Percent_Off = 100, -- Процент заполнения батареи реактора при котором он автоматически выключится reactor_Percent_Hysteresis = 5, -- Гистерезис заполнения батареи реактора reactor_Name = 'Nexus-6', -- Имя реактора Установка (Версия для Extreme Reactors): wget https://raw.githubusercontent.com/Koteyk0o/Lua/master/reactor_Display.lua /home/reactor_Display.lua Установка (Версия для Big Reactors, обновлений нет и не будет): wget https://raw.githubusercontent.com/Koteyk0o/Lua/master/reactor_Display.lua /home/reactor_Display.lua
  31. 1 балл
    да любую. Мне не нравится, что дрон живет ~5-10 минут, и особого "раскача", как например в ИК от кожи до кванта в оске нет. Там есть два вшивых апгрейда, но они особо ничего не решают, да и в дроне и так слотов кот наплакал. А в свете новых событий и персональных чанклодырей можно например дроно-почту забабахать на сервере и летать на 2-5К блоков, например, куда-то. Но так как на сервре удлиненные сутки и ночь может достигать одного часа и более, говнодрон с ванильным конфигом и чанклодырем, да и еще и на контроле по связи сдохнет за первым поворотом. А из-за какого-то карго-культа и поклонению ванильным конфигам детским я не собираюсь лишаться этого геймлея. Вот и всё. И примеров миллион таких. Пускай он там себе в сингле ванильном у кого-то будет дефолтным. Ради бога, я не против этого. Пускай кто-то там пишет проги исключительно под дефолт в сингле. Мне до лампочки, кто там и как и где играет на других серверах. Но батарейку я апну
  32. 1 балл
    @Totoro добавил в мордо-моську навбар адаптивный. У себя иконку роботика из навбара наверно выкинь, это у нас на сайте возможно она останется, а может и выкину ее. Вдруг когда-то захочешь какие-то доп. статические странички сделать, отладочную информацию, ссылки на доки и пр. Вдруг пригодится stem.loc.zip
  33. 1 балл
    Я очень обожаю дронов из OC, довольно быстрые и манёвренные(и дешёвые!). Меня смущает насколько автофермы из разных модов дорогие, так что вот решение этой проблемы: https://pastebin.com/9TBqRHPw (Для ленивых и счастливых обладателей интернет-карты: pastebin get 9TBqRHPw dronefarm.lua) (Проверьте, работает ли у вас сбор культуры на ПКМ, иначе же работать не будет(Версия на ЛКМ была, но она неудобная)) В программе всего 4 настройки: Размер фермы по X и Z Ожидание в секундах(Это нужно для того, чтобы культура успела вырасти) Ожидание при зарядке(Если дрон разрядился во время полёта) Процент заряда, при котором дрон вернётся домой Конфигурация дрона совсем простая, нужен лишь инвентарь(Можно и два инвентаря, так будет лучше). Установка довольно простая: Скачиваем ферму Делаем чистый EEPROM Вставляем в комплюхтер Пишем flash -q dronefarm.lua dronefarm(Не обязательно dronefarm, можно что угодно написать) Вставляем в дрона ??? Профит! Расстановка фермы: Где жёлтый - граница фермы Красный - место стоянки Длина и ширина может быть любой, главное чтобы зарядки хватило(Если у дрона переполнится инвентарь или разрядится до 20% от общей зарядки единиц - он вернётся на базу)
  34. 1 балл
    А всё таки хотелось бы адекватного описания. И ответа на вопросы "Что это такое?", "Для чего оно нужно?" и "Какую проблему оно решает?". После этого можно еще немного пояснить на тему "Как оно работает", если окажется что вещь стоящая.
  35. 1 балл
    @Alex короче проверил роботов. Конфиги ванильные. Можно его заприватить, тогда к его инвентарю доступа не будет. Но при этом кто угодно может его срезать обычной киркой. И при повторной установке привязка пропадает. Кстати мне тут скинули фрагмент конфигов, как я понял это отвечает за отключение урона роботом # Whether robots may damage players if they get in their way. This # includes all 'player' entities, which may be more than just real players # in the game. canAttackPlayers=false
  36. 1 балл
    можешь сейфами из ИК замуроваться Дешевле, и пользы больше. Можно в стенах тонны реса хранить.
  37. 1 балл
    Эти посты были перенесены из темы про мод OpenComputers, идея зародилась в этом посте: Кому не не лень писать много кода, рассказываю: Робот способен не только устанавливать блоки, но и сразу линковать MFU на них. И если робот размещает линкованные MFU в определённом порядке в своём инвентаре и в определённом порядке переносит их в определённые же сундуки, то порядок MFU в слотах сундуков всегда определён. И если алгоритм работы с массивом сундуков всегда возвращает MFU в те же самые слоты, где они были ранее, то порядок не нарушается никогда. И если игроки с шаловливыми руками лишены доступа к этим сервисным сундукам, то и порядку MFU в сундуках ничто не угрожает. Дистанция 3 для MFU – это много или мало? Попытаюсь придумать, например, систему хранения на одном адаптере, облепленном сундуками. Максимальное количество сундуков = 5^3-8+6-4. Это куб 5x5x5 с отрезанными блоками в каждой из 8 вершин и добавленными в центре каждой из 6 граней. Ещё 4 блока потрачено на адаптер и кабель до него. Выходит 119 сундуков. Но для компактности я бы пожертвовал всеми сундуками, выступающими за грани. Получится 114 сундуков. Такая схема легко масштабируется, и два адаптера обеспечат систему хранения из 228 сундуков. Часть слотов в сундуках, непосредственно контактирующих с адаптером, будет занята MFU. Если сильно захотеть, то от части MFU можно избавиться, так как прямой доступ к некоторым из сундуков не обязателен, и к ним можно обращаться через соседние сундуки. Для этого потребуется аккуратно реализовать энергонезависимое хранение информации о содержимом сундуков с учётом того, что последняя операция переноса может и не завершиться успехом. Впрочем, кеширование полезно в любом случае. Вот, как-то так и обходятся ограничения. Но этот путь, возможно, не для всех.
  38. 1 балл
    IDEA + EmmyLua + Файлы заглушки для компонентов итд. https://www.dropbox.com/s/82yd0cebqabpiqi/src.rar?dl=0 Есть парсер доков в заглушки, но с косяками писал не я, сравните доки которые он умеет и те что дает вам components -l [component] > [filename] при необходимости уберите ; поставьте -- Пишу как если б это было java со всеми плюшками.
  39. 1 балл
    Для начала тыкнуть анализатором по отубленному ПК, он выдаст информацию что могло случиться в компьютере. Дать нам скрин синего экрана, ну и чего там в чат анализатор напишет. Так как бубен я дома забыл, удаленное камлание невозможно. Далее проверить питание, точно ли оно подается. Проверить через вайлу, если она есть. Проверить сколько подключено компонентов, отрубить от всего переферийного оборудования оставить чисто конвертор и комп. Возможно слишком много нацепили. Биос на месте? Или его кто то спер, а тебе чистый воткнул? Какие шеллы ты воткнул? Короче вопросов у нас больше чем у тебя, подробно все расскажи покажи и прочее, так как бубны нынче дорогие, и не всегда до абонента можно достучаться
  40. 1 балл
    попробуй кубики. Если есть акк гугла, авторизируйся и можешь свои модельки сохранять, и в последствии редачить и делиться ними с другими. Работают также шифт, делит и пр. + клики.
  41. 1 балл
    Это старая шутка. Намекает на бессмысленность действий, которые якобы содействуют некоторому процессу, но по факту ни на что не влияют. Об её происхождении я лишь догадываюсь. Помнится, в "Маленьком принце" Сента Экзюпери был король, повелевавший и Солнцем и звёздами. Например, он намеревался потребовать захода Солнца в семь часов сорок минут вечера. Не раньше и не позже, так как требовать нужно в благоприятный момент.
  42. 1 балл
    Теслы в индастриале. Турелька есть из OS, но слоупочная до невозможности, ей разве только коридоры простреливать. Дрона заюзать, чтобы он быстро подвозил к противнику и раскидывал уран. Дропперы с зельками тоже можно пользовать.
  43. 1 балл
    по умолчанию в конфиге радиус действия 3 блока mfuRange=3
  44. 1 балл
    а вот хз. Я играю на рандомном сервере, щас попробую там проверить настройки приватов. Но мне кажется не блочится ничего, ведь ты просто тыкнул и все, а метка в любом случае повесится. Да, но если мне не изменяет память можно перемещать вещи только в соседний инвентарь, тоесть в сундук что рядом стоит с тем сундуком к которому привязка прошла. Так что проще цикл с уничтожением и шустро валить P.S. @Alex да, эта штука вообще полностью игнорит приват
  45. 1 балл
    Новые солнечные апгрейды(аддон к Opencomputers) выведут роботов на совершенно новый качественный уровень. Роботы станут почти автономными и смогут работать практически неограниченное время (если, конечно, робот будет проверять время суток, видимость неба и текущий заряд и вовремя всплывать на поверхность для подзарядки) Продвинутая, гибридная, ультимейт и квантовая панели обеспечат роботов и дронов неисчерпаемой энергией. Также аддон добавляет потрясающую и невиданную до сегодняшнего дня новую фичу - зарядку своих инструментов при необходимости прямо внутри инвентаря. Позитронный мозг робота/дрона программно уже сам сможет решить, по каким электрическим цепям ему в данный момент необходимо перенаправить могучие потоки энергии - в бур, в электро-краник для гевеи или в любой другой инструмент, который у него в инвентаре, или же в Главный аккумулятор, а при необходимости и направить всю свою мощь и энергию в миллионы ГВт для колоссального удара Теслой и разрушения на кварки всей живой материи в радиусе при опасности и при обнаружении врага на радаре. "Живучесть" и автономность роботов увеличивается на порядки. Также вы можете использовать своего робота в дальних путешествиях и просто дать ему подзарядить джетпак и свои квантовые или нано трусы, если они вдруг внезапно разрядились. Некоторые солнечные апгрейды, конечно же, не дешевые в крафте, но они того стоят. Роботы, наконец-то, шагнули в квантовую эру благодаря новым источникам энергии и новому аддону. Прощайте, архаичные ванильные угольные апгрейд-чайники. Вы хорошо послужили нам, но прогресс идет вперед. Уже приближается звук ударов иридиевых буров из шахт и слышится жужжание квантовых роботов и свист дронов. Замысел, геймдизайн: Alex Java кодинг: Neo
  46. 1 балл
    расскажу тебе одну историю из жизни. Был, значит, у нас когда-то маджикРобик 1-й или типа того. Только открылся сервер. Серега Кибер играть там начал, честно гриндить эндерперлы и т.п., что-то там копать (а он строго играет, даже если из админки что-то берет, потом когда скрафтит, серверу отдает этот рес обратно) Ну это такое, к делу не относится. Копал он копал потно киркой, копил на топового робота рес, несколько дней крафтил там все козявки для него и наконец его скрафтил. Нашел он на форуме какую-то копалку, при чем прошу заметить не нубокопалку на 15 строчек, а какую-то "топовую" и известную, которой вроде бы якобы все тогда копали от мала до велика. Запустил он робота в надежде накопать тонны реса, как обещали там разработчики этой копалки, но не тут-то было. Робот то ли разрядился к хренам собачим за 5 минут, то ли вообще потерялся в недрах земли где-то в жопе мира и выключился. Нашего аддона на сканер поиска роботов в радиусе тогда еще не было, потребление чанклоадера и геолайзера было дефолтное(а оно просто адское, 10 ед. энергии на блок вроде тогда было), и аккумулятор у робота 20К. Тогда то ли мод обновили, то ли я просто не менял там ничего в конфиге, в общем робот, видимо, на полную катушку начал в программе геолайзить кубические километры земли, да еще и на чанклодыре... и вырубился, а может даже и потерялся. У Сереги бомбануло тогда не по-детски и он в конфиге лупанул 12 нулей для капаситора)))) Я на сервер когда зашел на следующий день, поразился. Зеленая полоска зарядки гуишки робота на сервере пробивала монитор моего компа справа и запихивалась аж в НЕИ-шку. Сначала я даже не понял, что это такое и что произошло. Вот видишь как бывает, и до чего могут довести любого человека до стресса твои любимые ванильные конфиги:)
  47. 1 балл
    Трехмерная печать в Minecraft (инструкции для самых маленьких) Начиная с версии 1.5.4, в OpenComputers появляется интересный девайс - трехмерный принтер. Он дает возможность печатать декоративные блоки любой формы и цвета. Причем не только статичные блоки, но и двери/люки, кнопки и рычаги! Давайте рассмотрим, для чего он может пригодиться, и как именно с ним работать. 1. Цель Как и в предыдущих гайдах, первым делом поставим себе цель. Мы будем создавать стенную плитку со сквозным орнаментом, в виде морды крипера. Я не буду приводить в этом гайде рецепты предметов, так как их легко найти в NEI, или в статьях на gamepedia. 2. Обзор принтера 3D-принтер - это периферическое устройство, которое должно быть подключено к работающему компьютеру. Оно представляет собой блок, с двумя внутренними слотами: Верхний слот предназначен для специальной печатной массы (изготовляется из редстоуна, гравия, древесного угля и воды). Принтер вмещает два стека печатной массы (256 000 ед). Нижний слот занимает картридж с красителями. Объем внутреннего хранилища - два картриджа краски (100 000 ед). По команде от компьютера, принтер берет немного печатной массы и краски и "распечатывает" в крайний правый слот запрограммированную модель. На модель из этого гайда, состоящую из 21 фигуры, принтер потратил 424 единицы массы и 314 единиц краски. 3. Отпечатанный блок Модель для печати задается в виде списка "фигур" - параллелепипедов. Каждая фигура отмечена координатами противоположных углов. Она имеет свою текстуру, цвет оттенка (если необходимо) а также состояние (true/false). Максимальное количество фигур в модели - 24, по умолчанию. Координаты блока тремя числами (X, Y, Z) в пределах от 0 до 16. Блок может переключать свое состояние, когда игрок кликает по нему правой кнопкой мыши, или на блок подается сигнал редстоуна. По умолчанию блок имеет форму, заданную блоками с состоянием false, и сменяет ее на форму из блоков с состоянием true, при активации. Кроме того блок имеет несколько дополнительных общих флагов, которые определяют его название, описание и некоторые другие параметры. 4. Программирование принтера Есть два способа распечатать свою модель. Через компонент принтера и прямое управление, либо при помощи стардартной программки print3d от Сангара. 4.1 Компонент принтера Подключение принтера ничем не отличается от подключения любого другого устройства: local com = require('component')local printer = com.printer3d Компонент предоставляет набор функций для управления: reset() - сброс настроек и остановка печати setLabel(value:string) - задаем название будущего блока getLabel():string - получаем текущее название setTooltip(value:string) - задаем описание блока getTooltip():string - получаем описание setRedstoneEmitter(value:boolean) - определяет, излучает ли блок сигнал редстоуна в активированном состоянии isRedstoneEmitter():boolean - возвращает true, если блок излучает сигнал в активном состоянии setButtonMode(value:boolean) - определяем поведение блока при активации. Если true, то блок автоматически возвращается в неактивное состояние через несколько секунд после активации (как кнопка) isButtonMode():boolean - возвращает true, если блок находится в режиме "кнопки" addShape(minX:number, minY:number, minZ:number, maxX:number, maxY:number, maxZ:number, texture:string[, state:boolean=false][,tint:number]) - добавляет новую "фигуру" к форме блока. Фигура задана координатами. texture - название текстуры, state - для какого состояния фигура предназначена, tint - цвет оттенка фигуры getShapeCount():number - возвращает количество фигур в модели getMaxShapeCount():number - возвращает максимально возможное количество фигур commit([count:number]) - посылает принтеру текущую конфигурацию и начинает печать (count - количество копий, если не задано - равно 1) status(): string, number or boolean - возвращает состояние принтера - "buzy" и процент готовности, или "idle" и готовность предмета (true/false). 4.2 Программа print3d Код программы не включен в мод по умолчанию, поэтому его надо скачать из интернета. Последнюю версию можно найти на ГитХабе автора: https://github.com/OpenPrograms/Sangar-Programs/blob/master/print3d.lua Либо скачать с Pastebin: http://pastebin.com/b5rD8KcY (поставьте интернет-плату, и наберите в консоли компьютера команду pastebin get b5rD8KcY print3d) Эта программа по сути, читает параметры модели из текстового файла и передает принтеру. Формат вызова программы: print3d FILE [count] Где FILE - название файла с моделью, а необязательный параметр count - количество копий модели. Модели имеют простой формат - все параметры записываются в таблицу, по аналогии с Луа. Вот образец файла с моделью. { -- Это - название модели. Т.е. название будущего блока, которое будет видно -- в инвентаре и подсказке Waila. Название по умолчанию - "3D Print" label = "Example Model", -- Это описание предмета, такое, как будет видно в инвентаре. Если не задано, -- предмет не будет иметь описания tooltip = "Это демонстрационная модель, показывающая все возможности", emitRedstone = false, --[[ Если этот параметр равен false, блок работает как дверь, сменяя свое состояние при сигнале редстоуна. Если параметр равен true, блок работает как кнопка или рычаг - излучая сигнал при смене состояния. При этом блок не реагирует на сторонний сигнал. По умолчанию параметр равен false. ]] buttonMode = false, --[[ Если этот параметр равен false, модель работает как дверь или рычаг - то есть остается в том состоянии, в которое установлен игроком. Если параметр равен true, модель автоматически возвращается в неактивное состояние через несколько секунд после активации. По умолчанию параметр равен false. ]] -- Это список фигур модели, которые определяют, как она выглядит. -- Модель должна содержать как минимум одну фигуру (параллелепипед) -- в неактивном состоянии. -- Фигуры не могут быть "плоскими" т.е. не иметь объема. -- Каждая фигура задана шестью числами: minX, minY, minZ, maxX, maxY, maxZ. -- (Координаты двух противоположных углов.) -- Если смотреть спереди, ось X направлена вправо, ось Y - вверх и ось Z - вглубь. -- Дополнительно, каждая фигура длолжна обладать текстурой. Для того чтобы -- определить название текстуры, вы можете воспользоваться Определителем Текстуры -- (Texture Picker), кликнув им по нужному блоку. -- -- Модель имеет два состояния - неактивное (false, состояние по-умолчанию) -- и активное (true, состояние после активации блока). shapes = { -- Фигура идет от точки <0, 0, 0> (левый нижний угол) до <8, 8, 8> (середина), -- и имеет текстуру блока лазурита. { 0, 0, 0, 8, 8, 8, texture = "lapis_block" }, -- Фигура идет из точки <8, 8, 8> (середина) в <16, 16, 16> (правый верхний угол), -- и закрашена текстурой дубовой листвы. Фигура принадлежит активному состоянию -- модели и имеет светло-зеленый оттенок. { 8, 8, 8, 16, 16, 16, texture = "leaves_oak", state = true, tint = 0x48B518 } }} Т.е. описание модели просто содержит перечень всех тех параметров, которые задаются при помощи компонента, и список фигур из которых модель состоит. Набор тестовых моделей для изучения, можно найти здесь: https://github.com/OpenPrograms/Sangar-Programs/tree/master/models 5. Проектирование модели Разобьем мысленно рисунок запланированной модели на параллелепипеды. Она будет представлять собой тонкую плитку посередине блока, наподобие стекла или решетки. Руководствуясь сеткой координат и образцом выше, составим описание модели для текстового файла: { label = "Плитка 'Морда крипера'", emitRedstone = true, buttonMode = false, tooltip = "Секретный рычаг в виде головы крипера" shapes={ {0,14,7, 16,16,9, texture="quartz_block_side", tint=0x8eb200}, {0,2,7, 2,14,9, texture="quartz_block_side", tint=0x8eb200}, {6,10,7, 10,14,9, texture="quartz_block_side", tint=0x8eb200}, {14,2,7, 16,14,9, texture="quartz_block_side", tint=0x8eb200}, {2,2,7, 4,10,9, texture="quartz_block_side", tint=0x8eb200}, {4,8,7, 6,10,9, texture="quartz_block_side", tint=0x8eb200}, {10,8,7, 12,10,9, texture="quartz_block_side", tint=0x8eb200}, {12,2,7, 14,10,9, texture="quartz_block_side", tint=0x8eb200}, {6,2,7, 10,4,9, texture="quartz_block_side", tint=0x8eb200}, {0,0,7, 16,2,9, texture="quartz_block_side", tint=0x8eb200}, {0,14,7, 16,16,9, texture="quartz_block_side", tint=0x8eb200, state=true}, {0,2,7, 2,14,9, texture="quartz_block_side", tint=0x8eb200, state=true}, {6,10,7, 10,14,9, texture="quartz_block_side", tint=0x8eb200, state=true}, {14,2,7, 16,14,9, texture="quartz_block_side", tint=0x8eb200, state=true}, {2,2,7, 4,10,9, texture="quartz_block_side", tint=0x8eb200, state=true}, {4,8,7, 6,10,9, texture="quartz_block_side", tint=0x8eb200, state=true}, {10,8,7, 12,10,9, texture="quartz_block_side", tint=0x8eb200, state=true}, {12,2,7, 14,10,9, texture="quartz_block_side", tint=0x8eb200, state=true}, {6,2,7, 10,4,9, texture="quartz_block_side", tint=0x8eb200, state=true}, {0,0,7, 16,2,9, texture="quartz_block_side", tint=0x8eb200, state=true}, {2,2,8, 14,14,9, texture="quartz_block_side", tint=0xe0301e, state=true}}} Итак, наша плитка имеет двойной набор фигур - для двух состояний, окрашенных в текстуру кварца с зеленым оттенком. Кнопка будет работать как рычаг, испуская сигнал в активном состоянии. Откройте файл командой open creeper. Скопируйте код плитки выше и вставьте в файл кнопкой [insert]. Затем сохраните ([Ctrl]+) и покиньте редактор ([Ctrl]+[W]). 6. Печать Все готово, принтер заправлен, модель спроектирована. Отправляем ее на печать! print3d creeper 7. Итоги Enjoy!
  48. 1 балл
    if errorCode == 0 then return "Code is valid" elseif errorCode > 0 then return "Error: Opening bracket(s) missing" elseif errorCode < 0 then return "Error: Closing bracket(s) missing" else return "Error: Unknown error" end Вспомнился анекдот:
  49. 1 балл
    Программа позволяет рисовать блоками в воздухе при помощи командного блока подключённого через адаптер или дебаг-карты. В программе есть 8 блоков которыми можно рисовать. Также при выходе все блоки удаляются. Чтобы программа работала, надо включить поддержку командного блока в конфиге мода на 543 строке: # Whether to enable the command block driver. Enabling this allows # computers to set and execute commands via command blocks next to # adapter blocks. The commands are run using OC's general fake player. enableCommandBlockDriver=true Загрузка и использование: pastebin get 060LXELq blockpaint.lua Поставьте командный блок и адаптер вот в таком положении: или просто вставьте debug-карту в ваш компьютер Запускаете программу и рисуете! Обновление Добавлена поддержка debug-карты
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...