ProgramCrafter
-
Публикации
245 -
Зарегистрирован
-
Посещение
-
Победитель дней
41
Сообщения, опубликованные пользователем ProgramCrafter
-
-
Решил попробовать эту штуку. Эмулятор с возможностью менять компоненты на лету (кроме того, и выдающий при этом событие component_removed/component_added) - это интересно.
В эмуляторе есть возможность подключить диск в режиме unmanaged (чтение/запись по байтам, а не по файлам)?
Предложения по дальнейшему развитию:
1. Сделать подсветку сторон компьютера в зависимости от сигнала редстоуна.
2. Заменить стандартные значения входов редстоуна с -1 на 0.
3. Сделать ограничения на выход редстоуна (я только что поставил выход с силой -161, это почему-то работает).
4. Создать компонент "лампа", светящийся при сигнале красной пыли.
5. Сделать компонент drive (если его нет) и дать возможность менять вид диска по ПКМ.
-
2
-
-
1 час назад, antonn3312578859 сказал:так это бета
Мне кажется, что это пока ещё только альфа. Пока нету чего-то, похожего на работающий интерфейс, версию обычно не называют "бета".
23 минуты назад, Totoro сказал:А есть скрины?
Есть хотя бы идеи, как интерфейс должен выглядеть? Макет ведь тоже можно выложить, чтобы другие его оценили.
Или идеи засекречены, чтобы другие не написали оболочку раньше?
-
Интересная идея. Надеюсь, сам интерфейс не будет выглядеть, как беспорядочная куча элементов.
1 час назад, antonn3312578859 сказал:Многозадачность
По поводу многозадачности: как будут обрабатываться программы, долго не передающие управление (например, с тяжёлыми вычислениями)?
У меня есть только одна идея по этому поводу: можно создать интерпретатор Lua на самом Lua, и выполнять команды в пользовательских программах по одной, чередуя их с возвратами управления системе.
1 час назад, antonn3312578859 сказал:Антивирус
Он будет контролировать запущенную программу или проверять код на наличие зловреда? Если второй вариант, то я буду рад протестировать такую программу.
-
1
-
-
В 22.11.2019 в 12:23, eu_tomat сказал:Но когда реактор остановлен, нужен инструмент косвенной оценки лагов сервера, без реактора.
Возможно, чтобы измерить лаги, стоит держать корпус реактора в нагретом состоянии, а в выключенный реактор класть теплоотвод? Тогда компьютер сможет проверить, в какой момент изменилась температура реактора и насколько низок TPS.
Компьютер можно запитать от таймера. При лагах, даже если он выключится, то он будет автоматически включен по сигналу редстоуна и снова станет ждать, когда лаги кончатся. Но вообще с проблемой TLWY может справиться что-то вроде pcall.
-
Разумеется, если реактор стабилен, то и говорить не о чем. С ним может справиться даже AE.
Но если нужен больший выход, чем
Только что, serafim сказал:для одной дробилки с печкой
(например, ЯР запитывает генератор материи), то стабильные схемы будут проигрывать схемам, использующим микроконтроль со стороны робота. Пример такой схемы от @eu_tomat (https://computercraft.ru/topic/2822-mikrokontrol-yadernyh-reaktorov-ic2exp/?do=findComment&comment=39656):
-
Я обновил список компонентов, теперь там появился формовщик металла (для стержней) и датчик температуры из NuclearControl.
Правда, если греется уже корпус, то (скорее всего) что-то в схеме сгорело и нужен запасной теплоотвод. Однако роботу не из чего будет его делать: ему доступны только железо, уран и золото (из термальной центрифуги).
1 час назад, serafim сказал:подобное управление можно сделать на логике
Робот может самостоятельно считывать и выдавать сигнал красной пыли.
И я не рекомендовал бы выдавать сигнал на нагретый реактор вне зависимости от его температуры. Иначе на карте вместо домика может появиться большая дыра.
-
На форуме есть множество программ, копающих картошку-морковку, строящих домики, добывающих ресурсы, но нет ни одной программы по обработке добытой руды в машинах IndustrialCraft! Цель конкурса - исправить это недоразумение и создать робота, превращающего железную и урановую руду в иридий (или другие ценные ресурсы - по вашему выбору).
Задача - спроектировать домик Байта и создать программу, позволяющую ему:
1) забирать брошенные предметы,
2) выкидывать все ненужные предметы в утилизатор,
3) утильсырьё перекладывать в генератор материи,
4) обрабатывать (по произвольному алгоритму) руду,
5) изготавливать урановые стержни, обслуживать реактор, не допускать его взрыва,
6) добывать при этом как можно больше иридия.
Дополнительная задача - как-либо показать благодарность игроку, бросившему ресурсы. Например, ласково подмигнуть или бросить ему цветочек.
(Главное, чтобы это была не роза иссушения, иначе игрок обидится!)
Комплектация:
1) любой робот с любыми компонентами, кроме творческих; конвертер питания из IC2 в OC; зарядник (для робота);
2) бесконечный источник воды (если нужен);
3) электропечь; дробилка; компрессор; утилизатор; наполнитель; рудопромывочная машина; термальная центрифуга;
формовщик металла в режиме "Выдавливание"; формовщик металла в режиме "Прокатка";
4) генератор материи; репликатор с шаблоном иридия;
5) ядерный реактор (не жидкостный; количество камер - по усмотрению) с трансформаторами и энергохранилищами;
датчик температуры из NuclearControl;
6) МЭ-сундук с диском.
Улучшения-выталкиватели и втягиватели для машин IC2 запрещены!
Изначально в ядерном реакторе выложена рабочая схема, чтобы робот мог начать обрабатывать руду.
Номинации конкурса:
1) зрительские симпатии - общее голосование за лучшую программу;
2) эффективность - количество произведённого иридия на X железной и X урановой руды;
3) читаемость и расширяемость кода - также общее голосование по сложности добавления новых фич в программу;
4) красивое оформление - робот не висит в одном месте, пока уран в реакторе не закончится, а (например) танцует и переливается.
Награда: 16 алмазов за победу в номинации вскоре после открытия TechnoCraft-а.
Конкурс рассчитан примерно на месяц (до 24 августа), в конце августа будет недельное голосование за лучшие варианты.
-
1
-
2
-
-
Кажется, часть файлов (сама библиотека) нашлась: https://github.com/AtomicScience/OCNS
Там нет программ вроде смены IP и прочего, т.е. команда change_mIP работать не будет. Но сама библиотека вроде цела.
(уже фантазии)
А может быть, идёт разработка новой версии стека, который займёт место старого?
(Скорее всего, причина прозаичнее: автору могло понадобиться место на Яндекс.Диске.)
-
2
-
1
-
-
Немного допилил стандартный tape.lua, чтобы он мог считывать файл с кассеты: pastebin get pTVnhYwp /usr/bin/tape.lua
Замечание: в исходном файле не должно быть нулевых байт.
-
1
-
-
Автоподстановка компонентов - замена %имя_компонента% в аргументах программы на его адрес. Это можно использовать, чтобы разные программы взаимодействовали с разными компонентами и не пытались, например, передавать разные данные через один контроллер редстоуна или рисовать разные интерфейсы на одном мониторе.
Сейчас в программе адреса видеокарт подставляются в том порядке, в каком их выдаёт component.list. Если видеокарт меньше, чем мест для подстановки, то список повторяется. Стоит ли сделать то же самое для других компонентов?
-
Вероятно, многие хотели запустить несколько программ на одном компьютере (на OpenOS), чтобы они работали одновременно.
Моя программа даёт возможность это сделать (программы будут выполняться не совсем одновременно, таково ограничение OpenComputers).
Важное условие: в каждой выполняемой программе должен быть os.sleep, event.pull или computer.pullSignal, чтобы она передавала управление другой.
Инструкция:
1. Скачайте программу: pastebin get wsJqngC5 parallel.lua
2. Запустите её.
3. Введите пути к программам, которые необходимо выполнить параллельно, через пробел (если программа одна, то введите её один раз).
4. Введите число, сколько раз должна быть запущена каждая программа из списка.
5. Задайте аргументы для каждой запускаемой программы.
Если несколько программ должны работать параллельно, то почему бы не запустить их на разных мониторах? Это возможно: просто напишите в аргументы программы %GPU%. Эта строка автоматически заменится на адрес видеокарты.
В программе могут встречаться баги и несовместимости с другими приложениями. Просьба сообщать, если таковые найдутся.
-
3
-
-
@BrightYC новый эмулятор почему-то медленнее: примерно в 2 раза меньше вычислений в секунду (600К вместо миллиона), дольше рендер случайных символов. Это ограничение сервера или какой-то баг?
-
В 07.05.2020 в 22:13, eu_tomat сказал:А как ты чанклодер сможешь включать с точностью до тика? Пока чанклодер выключен, чанк не загрузен. Пока чанк не загружен, робот не примет сигнал на включение чанклодера.
У меня есть такая идея: игроком надо прогружать чанк, в котором находится робот с чанклоадером, но не соседний, где будет находиться тестовый робот. Тогда сигнал гарантированно будет доходить.
Насчёт дюпов и исчезновений роботов (важно: /me не читал код, только делает предположения): возможно, чанк сохраняется на диск в тот момент, когда он попадает в очередь на выгрузку, но продолжает просчитываться дальше. Если робот выезжает из выгружаемого в прогруженный чанк, то робот дюпается; если въезжает внутрь, то исчезает.
-
1
-
-
2 часа назад, AtomicScience сказал:В OCEmu есть специальная настройка, которая включает режим эмуляции задержек запросов к компонентам (fast).
На прошлом тесте было fast=true (быстрый режим).
Данные второго теста OCEmu (fast=false):
тест 1 - 0,02 с
тест 2 - 1,61 с (рендер - как в Minecraft - идёт постоянно)
тест 3 - 2,20 с
тест 4 - 3,00 с
тест 5 - 4,72 с
тест 6 - без предупреждений
тест 7 - предупреждение, что временная файловая система не найдена
тест 8 - без предупреждений
тест 9 - 1,15 с; баг с поимкой собственного сообщения остался
тест 10 - не проводился
тест 11 - 0,09 с
Итого в OCEmu в медленном режиме:
- операции с GPU медленнее, чем в Minecraft,
- генерация случайных чисел быстрее,
- пищалка в 3 раза быстрее Minecraft,
- (баг) модем ловит собственное сообщение,
- запись на EEPROM практически мгновенна.
Тайминги Ocelot Online практически совпадают с нужными, за исключением GPU.
-
1
-
-
Попробовал написать что-то такое.
Сам файл лежит в онлайн-эмуляторе (ocelot.fomalhaut.me) по пути /home/.mt.lua .
Вкратце результат: Ocelot Online гораздо лучше соответствует таймингам Minecraft, чем OCEmu.
Но в обоих эмуляторах есть баги.
Тесты:
тест 1 - генерация 10 тысяч псевдослучайных чисел
тесты 2-4 - отрисовка случайного текста на экране
тест 5 - испытание гуделки случайными звуками (computer.beep)
тест 6 - проверка, все ли компоненты имеют методы по документации
тест 7 - проверка файловой системы на чтение-запись
тест 8 - проверка Интернета
тесты 9,10 - проверка сетевой и соединённой карты соответственно
тест 11 - проверка EEPROM на чтение-запись
Результаты:
Minecraft 1.7.10 (компьютер tier 3)
тест 1 - 0,05 с
тест 2 - 1,3 с (рендер идёт постоянно)
тест 3 - 1,8 с
тест 4 - 2,5 с
тест 5 - 13,5 с
тест 6 - без предупреждений
тест 7 - предупреждение, что временная файловая система не найдена
тест 8 - без предупреждений
тест 9 - 1,15 с; предупреждение, что никто на пинг не ответил
тест 10 - не проводился (не хватило места для соединённой карточки)
тест 11 - 2,2 с
Ocelot Online
тест 1 - 0,05 с
тест 2 - 1,9 с (рендер кусками)
тест 3 - 2,65 с
тест 4 - 3,7 с
тест 5 - 13,5 с
тест 6 - без предупреждений
тест 7 - предупреждение, что временная файловая система не найдена;
(баг эмулятора) на unmanaged диск ничего не записывается
тест 8 - без предупреждений
тест 9, 10 - не проводились
тест 11 - 2,2 с
OCEmu
тест 1 - 0,02 с
тест 2 - 0,37 с (рендер после coroutine.yield)
тест 3 - 0,43 с
тест 4 - 0,91 с
тест 5 - 4,58 с
тест 6 - без предупреждений
тест 7 - предупреждение, что временная файловая система не найдена
тест 8 - без предупреждений
тест 9 - 1 с; (баг OCEmu) модем поймал своё сообщение
тест 10 - не проводился
тест 11 - 0,001 с
Награду попрошу отдать на дальнейшую разработку Ocelot и фиксы багов.
-
4
-
2
-
2
-
-
Я тут придумал способ обойтись без конвертеров (ну, или почти).
Только понадобится считать и желательно иметь бумажку (коды для 4 букв вывески я уже посчитал).
-
2D Принтер (v1.0.0)
Пользуясь этой небольшой программой, вы сможете напечатать вывеску своей мечты! Правда, придётся немного посчитать...
Установка: pastebin get 95SgeMBn 2d_printer.lua
Любая буква состоит из одной или нескольких фигур. Каждая фигура - это параллелепипед толщиной в 1/16 блока.
Он задаётся числом (X левой стороны) * 4096 + (ширина) * 256 + (Y нижней стороны) * 16 + (высота).
Например, для печати буквы S надо последовательно набрать 16961, 17043, 25634, 25714, 25794, 41539, 41649.
H - 16940, 25714, 41516.
O - 16968, 25634, 25794, 41544.
P - 16940, 25714, 25794, 41619.
(К сожалению, числа для других букв ещё не рассчитаны. )
Наконец, чтобы отправить фрагмент вывески на печать, необходимо набрать 0 или 'print'.
Программа начнёт печать, дождётся её завершения и закроется.
-
3
-
-
12 часа назад, Alex сказал:В общем по сути 2 хотелки, но самая главная одна, вторая которая
.
- менять фон (общий цвет бг) на лету в эдиторе.
- менять как-то резолюшн в эдиторе на лету или при сохранении, ну и чтобы его вьюер считывал как-то в том же резолюшине, в котором сохранен баннер-файл с таблицей. Может даже как-то просто еще просто аргументами передавать запускатору баннеров и эдитору резолюшн. Но желательно, чтобы как-то понимать человеку или админу, а какой ему резолюшн выбрать правильный для той или иной многоблочки и того или иного контента, чтобы оно крупно читалось и всё было видно игрокам.
11 час назад, Alex сказал:если у меня всего один баннер на конкретном компе, приходится все равно запускатор запускать с
bannerdisplay 9999999 t1
Вторая версия программы:
Теперь:
1. Цвет фона меняется табуляцией при отсутствии выделения или выделенном поле "-- Editing".
2. Разрешение можно передать вторым и третьим аргументом в редактор баннеров. Отрисовщик меняет разрешение экрана под картинку автоматически.
3. Если в отрисовщик передать только один путь к баннеру, он не обновляет картинку на экране. Вообще.
4. Загруженные баннеры кэшируются: диск будет жужжать ровно столько раз, сколько баннеров указано, и не больше.
-
1
-
Эта программа состоит из двух частей:
Создание картинки: https://pastebin.com/ff1zwCDQ
Отрисовка картинок: https://pastebin.com/tJHPS9NBДля создания баннера надо:
1. Запустить программу. Первый аргумент - путь, куда баннер будет сохраняться.
Пример запуска: banner.lua path_to_banner
2. Кликнуть в любом месте (для распознавания владельца).
3. Щёлкнуть правой кнопкой мышки, чтобы перейти в режим редактирования.
В режиме редактирования:
Клик левой кнопкой мыши на пустом месте создаёт новое текстовое поле.
Клик левой кнопкой мыши на каком-то поле выберет его (фон под ним подсветится).
При нажатии клавиш текст добавляется в выбранное поле. Работает Backspace.
Цвет текста в выделенном поле можно поменять табуляцией (есть палитра из 12 цветов). Если ничего не выделено, то поменяется цвет фона.
Перемещается поле стрелками, удаляется кнопкой Delete.
В любой момент программу можно закрыть (Ctrl-C), сохранения автоматические.
Программу нужно запускать с аргументами: первый отвечает за частоту смены картинки (в секундах), следующие - пути, где картинки лежат.
Например: banner_show.lua 5 path_to_banner1 path_to_banner2
Закрывается тоже по Ctrl-C.
Обо всех багах и предложениях просьба сообщать сюда.
-
7
-
-
Вторая модель банкомата: https://pastebin.com/9MwUsGE8
С её помощью можно смонтировать 3 варианта банкомата: или торчащий мордой из стены, или стоящий сам по себе, или группу из сразу 4 банкоматов на все стороны света (тогда понадобится сложная программа для управления всем сразу).
Скрытый текст
Справа - тот банкомат, который я выкладывал раньше (один из кожухов для наглядности снят).
-
1
-
-
Программа для создания баннеров:
Создание: https://pastebin.com/7v4NTukh
Для создания баннера надо:
1. Запустить программу. Первый аргумент - путь, куда баннер будет сохраняться.
Пример запуска: banner.lua path_to_banner
2. Кликнуть в любом месте (для распознавания владельца).
3. Щёлкнуть правой кнопкой мышки, чтобы перейти в режим редактирования.
В режиме редактирования:
Клик левой кнопкой мыши на пустом месте создаёт новое текстовое поле.
Клик левой кнопкой мыши на каком-то поле выберет его (фон под ним подсветится).
При нажатии клавиш текст добавляется в выбранное поле. Работает Backspace.
Цвет текста в выделенном поле можно поменять табуляцией (есть палитра из 27 цветов).
Перемещается текст стрелками. Удаляется поле кнопкой Delete.
В любой момент программу можно закрыть (Ctrl-C), сохранения автоматические.
Отрисовка: https://pastebin.com/abUTNJUKПрограмму нужно запускать с аргументами: первый отвечает за частоту смены картинки (в секундах), следующие - пути, где картинки лежат.
Закрывается тоже по Ctrl-C.
Скрин (из эмулятора):
Скрытый текст
-
1
-
1
-
-
Вот такой банкомат получился:
Скрытый текст
В качестве материала выбрана глина, потому что она одинаково видна и в редакторе, и в игре.
-
1 минуту назад, whiskas сказал:воруете у мцскила идеи)
Ничего страшного, новые придумают!
P.S. А какой лимит на количество шейпов стоит? Стандартный или больше? Просто для банкомата мало 24 получается...
-
В 28.03.2020 в 17:27, Alex сказал:Только можешь сделать решетку вот с таким периодом стержней, как на скрине ниже?
Сделал.
В 28.03.2020 в 17:27, Alex сказал:И еще вопросик. Пятачки не планируешь делать еще более округло? Это долго и геморно? Это окончательный вариант? Или попробуешь еще вариантики какие-то? Хотя и золотые вроде здорово смотрятся!
Немного скруглил. Если будет смотреться лучше, то это замечательно!
В 28.03.2020 в 17:39, Alex сказал:и на цепь может еще чутка "мяса" нарастить? Как думаешь?
а то она "хлипкая" местами. Нет ощущения "ковки" и "массивности". Хотя на твоем скрине цепь вроде массивнее смотрится и другая.Дело в том, что в редакторе фоном служит трава и немного криво накладываются текстуры. Если всё будет оформлено в одном стиле, то смотреться, по-моему, будет хорошо. Но немного увеличить цепь можно.
Новые модели: https://pastebin.com/cLWxVGMW
Выглядят вот так:
Скрытый текст
-
1
-

Фармер иридия Нью-Байт
в Конкурсы
Опубликовано:
В связи с отсутствием готовых программ конкурс продлён на неопределённое время (скорее всего, до зимы).
Если вы уже начали программировать Нью-Байта, то продолжайте работу, ваша программа обязательно будет принята!