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

Лидеры


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

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

  1. 8 баллов
    Новогодний интерфейсный марафет: Осовременена большая часть системных иконок, заимев мягкие оттенки и скругления Добавлен предпросмотр небольших изображений, что упрощает работу с ассетами Добавлен общий элемент верхнего меню, позволяющий быстро выключить/перезагрузить/обновить систему. Как и в, кхм, прародителе майноськи, он всегда остаётся видим при переключении между приложениями Уменьшен размер нижнего дока, дабы экономить вертикальное пространство Добавлена поддержка иконок для контекстных меню, которые к тому же стали крупнее и читабельнее Добавлена поддержка "живых обоев", позволяющая нативно ренедрить графику любой сложности. Они неплохо сочетаются со слабыми ПК, т.к. не расходуют ОЗУ на хранение пиксельных данных и выглядят вполне симпатично
  2. 6 баллов
    А знаешь, чего у него ещё нет? Нет аппаратных ограничений, что позволяет забить на оптимизацию софта, уничтожает челлендж, а новичков приучает бездумно писать плохой код. Ты думаешь, почему любой AAA-проект в 23 году имеет в минимальных требованиях RTX 2080? Всё потому что джуны учились кодить на CC! Нет сбалансированных рецептов крафтов, ПК в буквальном смысле создаётся из мусора. Это создаёт ложные представления о реальности, обучает требовать максимум, прикладывая минимум усилий. Сегодня ты кодишь на CC, завтра требуешь ЗП в 300к/наносек, а послезавтра спиваешься от разочарования! Нет возможности снести захардкоженную CraftOS и написать собственную взамен. Это пресекает на корню свободу творчества, уничтожает здоровую конкуренцию и приучает с ранних лет считаться с требованиями монополиста. Разве такого будущего мы желаем нашим детям? Нет тонны фич типа 3D-принтера, геосканера, голопроектора, карты данных, связанной карты, датчика движения, контроллера баков, транспозера, поводка, дронов. Человек не может развиваться, сознательно отказываясь от этих благ. Это путь к деградации и самобичеванию, к искусственным ограничениям и невежеству! Нет даже War Thunder! А знаешь, где есть War Thunder? В OC, вот пруф!
  3. 6 баллов
    cloudflared tunnel (нужен домен, 6-символьный домен из цифр вроде 000001 на TLD .XYZ стоит копейки), tailscale funnel из бесплатных решений. cloudflared в принципе пробивает любой CGNAT. Если говорить про хостинг TCP/UDP приложений — из бесплатных решений особо ничего нет, но можно попробовать использовать ipv6 брокера — tunnelbroker.net. Дают бесплатный ипв6 который, вроде как, должен пробивать CGNAT в том числе. Так же существует клиент https://playit.gg/, опенсорсный клиент, позволяет пробрасывать tcp/udp порты (4 штуки). дают и домен, и айпишник (не меняется). Бесплатно. Из платных решений можно взять впн и пробросить через него порт firstbyte.ru (не реклама) предлагает хостинг за 70 рублей.
  4. 5 баллов
    Коллекция штатных приложений пополнилась аудиофильской репликой Pioneer CDJ-2000 nexus с функционалом, близким к оригиналу - насколько позволяет мод, разумеется: Поддержка нескольких кассет, играющих параллельно Cue и Loop-метки с банком памяти и горячими вызовами Навигация по треку через джог, needle search bar или кнопки fov/rew Регулировка темпа и громкости фейдерами и кнобами Подстройка чувствительности элементов управления Визуализация длительности трека, текущей позиции или остатка Запись композиций на кассету с HDD и URL Скевоморфный UI с подсветкой и имитацией питания от сети В обозримом будущем хотелось бы заиметь анализ трека с построением пиков, определением "бочек" и квантованием меток, однако это потребует специфичных скиллов, нудного гугления всяких PCM, IFT, DFPWM и т.п., поэтому пока что и так сойдёт)0
  5. 5 баллов
    Не нужна, это задел на дальнейшую разработку с анализом входящих сообщений. Бывают ситуации, когда робот застрял в приватной зоне или бедроке, когда села батарея или сломался инструмент - в этом случае имеет смысл отослать статусное сообщение с координатами робота относительно хоста, а затем отключить питание Вообще роботы с дронами, имхо, самая балдёжная часть мода. Тут и автоматизация рутины, и распределенное выполнение задач, и сетевой код, и инфо-безопасность. Когда кодил аналогичную систему контроля в сурве, то сформулировал для себя несколько рекомендейшнов: Метод modem.setWakeMessage() - имба. Когда робот выполнил все задачи, можно смело его выключать, оставляя где-то на глубине в границах привата. Когда необходимо продолжить работу, шлём сетевой пакет на включение - профит. И энергия сохранена, и нажимать кнопку Power не надо Широковещательные пакеты через modem.broadcast() опасны на публичных серверах, и в 100% случаев станут причиной угона робота. В идеале, когда все машинки скрафчены, необходимо внести адреса их модемов в конфиг на хосте, а впоследствии общаться приватными пакетами через modem.send(). Либо захардкодить в роботах адрес хоста и доверять лишь ему одному, как в примере выше Дополнительные батареи - мусор. Вместо них лучше установить апгрейд опыта, построить ферму кобблы и позволить роботу фармить экспу. Спустя 2-4 реальных часа у тебя раскачается "алмазный" робот с колоссальным буфером энергии Апгрейд навигации для вычисления позиции/поворота - мусор. Вместо него куда дешевле и интереснее накодить софтверную триангуляцию, основанную на перемещениях робота и расстоянии, которое "пролетел" сетевой пакет. А поворот можно определить с помощью геоанализатора, ломания/установки блоков и вращения робота Софтверное позиционирование - имба. Вычисляешь единожды координаты/поворот робота - и корректируешь их при вызове move/turn. Взамен появляется возможность автоматизировать перемещение в любую указанную точку. При отключении питания имеет смысл сохранять эти данные на диске, либо определять их автоматически при включении Геоанализатор - легальный чит. Однако использовать его в штатном режиме, сканируя вертикальными "столбцами" - выстрел в ногу, т.к. точность результатов на расстоянии в 10+ блоков будет отвратная. Вместо этого стоит заюзать опциональные аргументы scan(), анализируя небольшие горизонтальные плоскости 8х8 блоков вокруг робота, постепенно прокапывая вниз. Точность при этом станет как советском станке Экран/клавиатура/дисковод и полноценная ОС - штуки ситуативные, т.к. стоимость сборки улетает в космос, а выхлоп сомнительный. Мнение не навязываю, но я предпочитаю ставить больше апгрейдов инвентаря/крафтинг/редстоун-плату/etc., делая машинку универсальнее и контролируя её по сети Апгрейд крафтинга очень недооценён. Каким бы большим ни был инвентарь, он гарантированно заполнится всякими андезитами/мусоритами. Эту проблему в соло решает крафтинг, упаковывающий ресурсы в стаки, особенно на серверах с модами типа экстраутилит, позволяющими "сжимать" кобблу Жёсткий диск 1 тира - топ за свои деньги. Всегда приятно иметь возможность сохранять/загружать координаты робота или довольно объёмные "снимки" местности с геоанализатора
  6. 4 балла
    У меня давно была идея реализовать на опенкомпах клиент для какого-нибудь протокола, позволяющего подключиться к полноценному удалённому шеллу. В голову сразу приходит SSH, но я даже не стал разбираться, как он работает, ведь, он, наверное, работает очень сложно. Поэтому мой взгляд пал на древний протокол - telnet, впервые разработанный аж в 1969 году. Сейчас его практически никто не использует, ведь все данные, включая логины и пароли, он передаёт в незашифрованном текстовом виде. Хотя и существуют расширения протокола, реализующие шифрование, мой клиент их не поддерживает. Репозиторий программы можно найти тут. Установить можно в OpenOS с помощью команды wget -f https://raw.githubusercontent.com/Smok1e/oc-openos-telnet/master/installer.lua /tmp/installer.lua && /tmp/installer.lua Синтаксис очень простой, достаточно ввести telnet <адрес> [<порт>]. По умолчанию используется порт 23. Учтите, что если вы подключаетесь к серверу по локальной сети, в конфиге мода необходимо поменять "deny private" на "allow private" в 675 строке (ну или где-то рядом). В данный момент единственная проблема - escape последовательности. OpenOS обрабатывает некоторые из них сама, но далеко не все, из-за чего можно наблюдать различные текстовые артефакты в более-менее графонистых программах.
  7. 4 балла
    по быстрому накидал программу для доступа к OpenAi API, потом с помощью чатбокса добавил возможность игрокам говорить с ГПТ через чат/ Минимальные требования: Интернет карта. подключенный чатбокс ИЛИ обновления "чат" (computronics) Просто запустите программу и напишите в чат префикс "!гпт", "!gpt" и свой вопрос. Через пару секунд вы получите ответ. Программа имеет "память". но при этом не оптимизирует её использование. т.е. по достижению лимита токенов программа крашнется из-за ошибки на стороне OpenAI Репозиторий: https://github.com/Def-Try/MinecGPT/ Программа использует библиотеку json от sziberov Установка: wget https://raw.githubusercontent.com/Def-Try/MinecGPT/main/install.lua /tmp/cgpti.lua && /tmp/cgpti.lua
  8. 4 балла
    В кои-то веки вспомнил про незакоммиченный (уж год как) мелкий багфикс, связанный со списком доп. компонентов для установки. Подправил и обновил. Лучше поздно, чем никогда.
  9. 4 балла
    Интересные изменения: Добавили поддержку Lua 5.4.4. Он не сильно отличается от Lua 5.3, но у него есть атрибуты локальных переменных (<const>, <close>). Последний выглядит очень полезным. Архитектура пока экспериментальна, нужно явно включать в конфиге мода. С остальными либами Lua тоже капитальная переделка. Наконец-то пофиксили инты в методах компонентов (если вам вызов когда-либо говорил invalid key to 'next', это оно). Сами либы обновили до последних версий (например, 5.3.6) и пересобрали с оптимизациями. В том числе под 64-битные армы (линукс, мак). Чтобы не путаться, на текстуре блока redstone i/o точками, как у игральной кости, показывается, какая это сторона: . Теперь рисуются юникод-символы выше U+FFFF. Там, например, всякие емоджи запиханы. Лишь бы в шрифте глифы под них имелись. Патчить шрифт можно ресурс-паками. Причём необязательно собирать глифы для всех символов: если в ресурс-паке глиф не указан, то он берётся из шрифта мода. Интернет-карту переписали на другую HTTP-библиотеку, чтобы она умела слать PATCH-запросы. Ссылка: 1.7.10 / 1.12.2.
  10. 4 балла
    OC тяжелее юзать иза ограничений в памяти и ограничений в действиях. Но это позволяет делать ефективные решения. Помню когда я свою БД писал на ОС. Мне пришлось создавать индексы как в реальной БД что б все ускорить. Помимо этого в ОС более функционален. Возьмем как пример робота из ОС - он может делать почти все что игрок и потому много кул програм было написанно: выведенние растений ИК с топ геном, пчеловод (выводит нужные мутации в форестри), шахтер с лазером из ИК, всякие шахтеры з норм инструментами (даж чареными) а не киркой что не ломается. В ОС даж есть специальный тип роботов (дрон). Он не считается блоком - он ентитя. Потому он позволяет тоже делать много интересных програм. И мне очень нравится что в ОС все идет на енергии а не как в СС (черепашки на угле. Притом тратят уголь ток что б двигатся. Остальные дейсвия бесплатные) Помимо этого в ОС даже есть интеграция с многими плагинами/модами. Например роботы не могут ломать чужые приваты (могут ломать ток приваты того кто его поставил). Потому я топлю за ОС. Правда очень большой минус это то что его забросили. Последняя версия для майна 1.12.2. Хотя там люди работают над портированием его на новые версии - даже ПР уже сделан. Но я б не ожидал что ктото его закончит
  11. 4 балла
  12. 3 балла
    Разработчик MineOS: @ECS "Восстановил это чудо" - @cackemc MineOS Legacy - это восстановленная старая версия MineOS, работающая на Opencomputers 1.5 и 1.6(1.8 не поддерживается) Что я сделал, чтобы оно работало? - перенаправил ссылки для установки на свой репозиторий а собственно ОС достал из форка 8 летней давности... Тестировалось на 1.7.10, версиях мода:1.5.22.46 и 1.6.2.12 Для чего я это делал??? Ответ прост: Дело в том, что я хотел немного понастольгировать по этой старой ОС и достать прогу под названием: InfoPanel, т.к она не работает на современной MineOS Ссылка для установки сего чуда: wget https://raw.githubusercontent.com/Govnosborkinoapps/OpenComputers/master/Installer/Installer.lua Скрины снизу:
  13. 3 балла
    Прости, мы сочли священным долгом отпентестить сей шедевр. Уязвимостей не обнаружено, комиссия ставит 10/10 на кончиках пальцев
  14. 3 балла
    Здраствуйте люди и не очень! Представляю вам, свою мини-бродилку по лабиринту! Данную идею я пытался реализовать много раз, однако каждый раз бросал из-за того что не справлялся. Однако, в этот раз у мне что-то да вышло. Главное отличие этой попытки в несколько другой реализации комнат, но не суть. Что есть: Голод, и жажда Магазинчик По комнатам могут появляться разные вещи, вроде монет, воды, и еды. Процедурно генерируемая карта. Чего я бы хотел добавить в будущем: Врагов! Однако у меня нету идей как реализовать боевку. Увеличить карту с 3х3 до 7х7, и добавить улучшения. Больше комнат. Каких именно я не знаю Ловушки! Комнаты, в которых ты получаешь урон, но как-то можешь избежать его Здоровье. Проблемы игры которые известны: Проблемы с генерацией при ходьбе. Связано это с купой факторов вроде: Зона которая видна равна размеру всей карты. А также маленькая карта(всего 3х3). Цели игры: Купить алкоголь в магазине за 500 монет Достичь показателя в 666 монет Каждая цель даёт разную "концовку" Написал за 3 часа, тестировал только в CCemuX Пастебин
  15. 3 балла
    @BenniShifer919 Про графику не скажу, я не так много работал с ней. Я понимаю, как решить конкретную задачу, но какой-то общий подход в работе с графикой сформулировать вряд ли смогу. А общие советы могу дать такие: Начинать изучение мода я рекомендую в творческом режиме. Первым делом я рекомендую найти в каталоге с игрой файл config/OpenComputers.cfg, найти в нём и установить параметр bufferChanges=false. Отключение буферизации изменений на носителях OpenComputers позволит тут же синхронизировать их с файлами в каталоге сохранения и наоборот. Благодаря этому можно будет редактировать файлы программ любым привычным тебе редактором, не прибегая к редактору на игровых компьютерах. В творческом режиме есть команда, позволяющая заспавнить компьютер. Направляем взгляд персонажа на твёрдый блок и пишем /oc_sc. В результате появится компьютер в сборе. ШПКМ на системном блоке включает его. Но можно по ПКМ на системном блоке зайти в его интерфейс и нажать кнопку включения. На мониторе мы увидим сообщения загрузки OpenOS с дискеты. NEI позволяет получить готовых: робота, дрона, микроконтроллер в богатой комплектации. С роботом проще всего: он называется Creatix, достаём его через NEI, устанавливаем в мир, кликаем по нему ПКМ и попадаем в интерфейс. Там нажимаем кнопку включения и видим загрузку системы. Устанавливать операционную систему не обязательно, но новичкам полезно это сделать. Набираем команду # install, и следуем подсказкам установщика. После перезагрузки OpenOS загрузится уже с жёсткого диска компьютера или робота. Командой # lua запускаем интерпретатор Lua. В нём можно провести различные эксперименты с синтаксисом языка или исследовать API компонентов. Когда основные конструкции в будущей программе более-менее ясны, или же требуется протестировать многострочные скрипты, имеет смысл создать файл программы. Но т.к. редактировать эту программу мы условились во внешнем редакторе, то в игре мы лишь создаём нужный файл программы. Например, с именем uniqname.lua. Зная имя файла, находим его в каталоге сохранения игры любыми привычными нам средствами. Он найдётся при условии, если ранее мы отключили буферизацию изменений. Этот файл я рекомендую переместить в более удобное для редактирования место, а в каталоге диска OpenComputers создать символическую ссылку на него. Так мы решим сразу две проблемы. Во-первых, файл с программой будет находиться в более привычном для программиста месте. А во-вторых, позволит без лишних размышлений удалять сохранения игры, потерявшие актуальность. При этом файл программы сохранится на своём месте, а вместе с сейвом удалится лишь ссылка не него. Редактируем наш файл любым удобным для нас редактором. Проверяем в игре его содержимое командой # cat uniqname.lua или запускаем его как программу: # uniqname. Думаю, этого достаточно для начала. Но можно продвинуться дальше. Можно посмотреть, что за компоненты находятся в компьютере, который заспавнился командой /oc_sc, изучить их назначение. Можно поместить в компьютер какие-нибудь другие компоненты: разнообразные сетевые платы, красную плату. Можно поставить рядом адаптер, а к нему — разные блоки. Посмотреть, как меняется вывод команды # components и # components -l. API компонентов удобнее изучать в интерпретаторе lua. Там работает автодополнение: можно просто набрать слово component и нажимать клавишу TAB. Если для какого-то компонента отсутствует документация, интерпретатор lua становится незаменимым средством. Возможности роботов и их компоненты тоже можно изучить в интерпретаторе lua. Хотя, можно начать и с чтения документации. Например, на официальном сайте: https://ocdoc.cil.li/ Изучать сборку робота я рекомендую с разборки стандартного Creatix, которого можно взять из NEI. Ставим в мир креатвинвый системый блок, заполнять его не обязательно, он удобен как источник бесконечной энергии. К нему ставим сборщик, а к тому разборщик. Кидаем в него робота, и все его детали постепенно оказываются в сборщике. Скорее всего, будет переполнение сборщика, и часть компонентов выпадет наружу. Это не страшно, подбираем их и смотрим внутрь сборщика. Из сборщика можем достать какие-то компоненты, можем какие-то добавить. Некоторые компоненты можно установить лишь в определённые позиции, а без некоторых робот не соберётся. При нажатии на кнопку старта сборки получим пересобранного робота уже с другим именем. На мой взгляд, новичку удобнее начинать именно с такого способа сборки. Точнее, с пересборки стандартного робота. Тема работы с дронами, микроконтроллерами и серверами, я думаю, уже выходит за рамки базовых знаний, поэтому рассматривать её я здесь не буду. Тем более, большинство схем автоматизации строятся на обычных компьютерах и роботах.
  16. 3 балла
    @Oleshe Поздравляю с самостоятельным решением проблемы. Я, к сожалению, не смог понять ни вопрос, ни его решение.
  17. 3 балла
    Если уголь в слоте 1 поддерживается трубой, в таком случае желательно там оставлять 1 уголь, чтоб он заменился на что то другое. local component = require("component") local robot = require("robot") local computer = require("computer") local generator = component.generator robot.select(16) while true do if computer.energy() / computer.maxEnergy() < 0.20 and robot.count(1) > 1 then robot.select(1) generator.insert(1) robot.select(16) end robot.use() end Также можно не проверять если уголь в генераторе, если энергия упала ниже 20 %, то там пусто
  18. 3 балла
    Скорее всего, надо убрать generator.remove() из ветки else, чтобы робот не доставал уголь обратно из топки. Но вообще, ничто не мешает роботу параллельно заряжаться и кликать: local component = require("component") local robot = require("robot") local computer = require("computer") local generator = component.generator local maxEnergy = computer.maxEnergy() while true do local energy = computer.energy() local energyPercentage = energy / maxEnergy if energyPercentage < 0.60 and generator.count() < 64 then robot.select(1) generator.insert(1) robot.select(16) end robot.use() end
  19. 3 балла
    Чтобы что-то закрыть, нужно сперва это что-то открыть. Компонентный вызов open() возвращает дескриптор файла, а APIшный - буферизированный поток, и работа с ними отличается: local filesystemAPI = require("filesystem") local filesystemComponent = require("component").filesystem -- API local stream = filesystemAPI.open("/test.lua", "w") stream:write("Hello world") stream:close() -- Компонент local handle = filesystemComponent.open("/test.lua", "w") filesystemComponent.write(handle, "Hello world") filesystemComponent.close(handle) И вообще не по каждой же строчке кода пинговать форумчан, давай сам думай. Наверняка там ошибка наподобие attempt to call a nil value (field 'close'), означающая, что в filesystem API не существует метода close()
  20. 3 балла
    Лично я начинал знакомство с программированием с СС. Тогда это было фантастично открывало кучу возможностей, но ограничения сильно меня сжимали, типа монитор маленький, черепашки глупые и так далее. Потом я наткнулся на этот проект и перешел на ОС. Не сказал бы что это было просто, но если мне дадут выбор поиграть с СС или ОС, я безусловно выберу ОС. Да, соглашусь что есть свои фишки в СС, но они буквально режутся тем, что нельзя подключиться к любому моду, если автор этого не предусмотрел. Отсутствие запретов по памяти тоже сильно напрягает, я же не один играю, будет не очень приятно если из-за моей анимированной красивой программы другие не смогут играть. ОС же может подключаться к чему угодно, да иногда криво, но может же. Ограничения по памяти, энергии, производительности, да по тем же ресурсам заставляют думать как все оптимизировать и утрамбовать в ограничения памяти и так чтоб это было не сильно накладно по ресурсам. Ну а то, что сложно разобраться в ОС, тут весь форум этому посвящен, выбираешь программы, потрошишь их на части, определяешь че как работает и пытаешься это в свою программу закрепить. Если проблемы с луа, да именно с луа, а не с API мода, то есть справочники в которых можно почитать все что угодно. Проблемы с API тут поможет или вики, правда инфа устарела там, но для базового уровня оно сойдет, или на официальном сайте грянуть EN API, там обновляют довольно часто и всё есть. P.S. Вдруг кому надо, вот справка по луа, точно не помню, там чет в свойствах файла надо переключить, а то не откроется
  21. 3 балла
    Было скучно — теперь опенось с апстрима, алсо портирован compress.lua на питончик для более "адекватного" пакования образа системы, если кому-то это вообще надо. Ну и патчики автоматические, да https://github.com/Chebuya/OpenOS-mineos
  22. 3 балла
    @BenniShifer919 Проверил сейчас выделение памяти на cc-tweaked-1.12.2-1.89.2.jar. Проблема сохранилась со времён оригинального ComputerCraft. Эксперимент: Устанавливаем компьютер, запускаем интерпретатор Lua, запускаем скрипт s=string.rep("x",1024^3) print(#s) Повторяем на следующем компьютере и т.д. Результат: На первом компьютере строка имеет длину 1073741824. На последующих — только 6. Вывод: Мод непригоден для игры на публичных серверах. Любой игрок может выжрать всю память, ничего не оставив другим игрокам. Вот, собственно, и ответ, почему OpenComputers, а не ComputerCraft. Это как минимум.
  23. 3 балла
    Беспроводная карта может послать сообщение одновременно по проводному и беспроводному каналу, это нормально. Вторая карта (проводная) никаких сообщений не посылает, если её об этом не просят.
  24. 3 балла
    Минус CC и плюс OC. Низкое качество кода на OC нивелируется бюджетом вызовов и лимитом памяти. На CC таких ограничений нет, что позволяет убивать публичные сервера и перегружать чанки. Это более чем достаточный повод, чтобы выбросить CC на свалку истории Потому что это челлендж, а жизнь без челленджа скучна и пресна, как еда из столовки в сравнении с рестораном. Плохо, когда челленджа нет, как в CC. Плохо, когда он чрезмерен, как в GregTech. И хорошо, когда он сбалансирован - как в OC Затем, что наличие возможности, которая тебе не пригодится, всегда лучше её отсутствия, при котором она не пригодится никому. На форуме были также посты от авторов альтернативных ОСей, которые пишут их, несмотря на предостережения. Так к которому из авторов стоит прислушаться рабу системы? Я считаю, что одновременно ко всем, и ни к кому. Пост - это не более чем компиляция мыслей одного человека. Можно воспринимать их как рекомендацию, можно как личное кредо - но не как незыблемую догму для всего человечества. Один усатый художник тоже много чего писал)0 Ну, если сам BenniShifer919 не видел, то фичи действительно юзлесс, можно удалять из мода - сейчас кину PR авторам. А способность думать логически и пространственно зависит в том числе и от объема доступного инструментария. Чем он шире, чем гибче - тем лучше, т.к. перспективы и масштабы мышления расширяются. В случае с CC из-за облегчённого геймплея и недостатка фич они наоборот сужаются, а мыслительные процессы текут более вяло, позволяя ошибаться и писать плохой код чаще Потому что не играл на серверах, где рандомный гений крафтит стак компов из мусора, запускает while true и убивает хост за пару минут. OC искусственно ограничен для лучшей иммерсивности, и более-менее защищён от абьюзеров, он учит писать качественный код, не поедающий доступные ресурсы впустую, а CC - нет К примеру, несколько лет назад мне пришлось изрядно попотеть и изучить много нового, чтобы накодить на OC рейкастер с приемлемой производительностью, т.к. при бездумном кодинге движок выдавал лишь 1-2 FPS. Я очень радовался, что осилил, что сумел, что превозмог трудности. Это сродни получению достойной награды за действительно тяжелый труд. Как сказал бы Сэнку: "Это так волнительно!"
  25. 3 балла
    Зависит от кода программы. Если выбирать сетевую карту кодом modem = component.modem, то будет выбран именно главный компонент. И если им является проводная карта, то сообщение по беспроводному каналу не будет послано. Но если выбирать сетевую карту по её адресу, то главный компонент не будет играть какой-либо роли. При этом не имеет значения, как мы получим адрес компонента: введём ли его вручную или же определим перебором, проверяя нужное свойство сетевой платы. @WheatComp Кстати, я думаю, что в описанной задаче вообще не нужна проводная плата, т.к. и беспроводная точно также обеспечивает передачу по проводам. Если требуется заблокировать передачу по воздуху, можно уменьшить до минимума мощность передатчика кодом modem.setStrength(0). Или можно использовать разные номера портов для передачи по проводам и по воздуху.
  26. 3 балла
    computer.pullSignal ждёт первого сигнала определённое время. То, что ей передана пятёрка, означает, что ждать будет не дольше 5 секунд, но если какое-то событие придёт раньше (что здесь и происходит: возможно, подключение компонентов), то выйдет раньше. UPD. @ECS уже говорил про это в предыдущих сообщениях. Просьба внимательнее читать ответы. А os.sleep так не заработает: синтаксис function tbl.func() ... end создаёт новую функцию и кладёт её в поле "func" таблицы tbl. В данном случае функция кладётся в поле "sleep" таблицы os. Но такой таблицы в биосах нет. Либо нужно определить табличку эту: local os = {} function os.sleep(timeout) --[[ сюда код функции ]]-- end Либо вообще не пытаться класть функции в таблицы (что наиболее разумно): local function sleep(timeout) checkArg(1, timeout, "number", "nil") local deadline = computer.uptime() + (timeout or 0) repeat computer.pullSignal(deadline - computer.uptime()) until computer.uptime() >= deadline end Здесь ещё пропал event.pull, потому что event в биосах тоже отсутствует. (Да и в OpenOS event сначала нужно получить через require.) computer.pullSignal для наших целей достаточен.
  27. 3 балла
    @WheatComp Если по-читерски, то можно сдюпнуть жёсткий диск одного робота, вставить его в остальные и работать в одной общей папке Если по-честному, то имеет смысл дать возможность каждому роботу выполнять произвольный код, присылаемый компьютером-хостом по беспроводной сети. Это позволит избавиться от OpenOS, жёсткого диска и упростить сборку робота за счёт более дешёвых компонентов: 1) Крафтим 20 чистых EEPROM и беспроводных модемов 2) Прошиваем их скриптом-ресивером: 3) Вставляем прошитые EEPROM с модемами в роботов 4) Пишем управляющий скрипт для компьютера-хоста. Предполагаю, что на нём будет использоваться OpenOS: 5) Запускаем всех роботов и отсылаешь им любой файл с жёсткого диска на исполнение командой send robots/example.lua Единственный нюанс - работоспособность кода выше чекнуть не могу, т.к. майна под рукой нет, но общий концепт, думаю, понятен
  28. 3 балла
    Один из игроков в мой модпак сделал видео по тому как сделать убивающего робота.
  29. 3 балла
    Для print заданы ограничения сериализатора, которые отсутствуют в writeTable А какие именно - не скажу, сам думай. Не люблю приказной формат дискуссий)0
  30. 2 балла
    Тред подошёл к логическому концу. Нет ни смысла, ни мотивации, ни сил заниматься тем, что всё равно не имеет смысла. Решение о закрытии проекта возрождения приняли мы с Томатом ещё год назад, сейчас дошли руки до остановки машины и снятия её с питания. Лично у меня нет желания работать над Легаси модами и плагинами под 1.7.10(по другому разработку сервера не назвать). Для нормальной работы нужно два Java-программиста и полтора мотиватора. Я могу выступить только как лидер и наставник, потому что приближаться к серверам Майнкрафта, тем более с модами, и тем более на старой версии -- желания нет совсем. Считаю, это был хороший опыт в моей жизни, но не прощаюсь. Сейчас готов оценить разные идеи, и если понравится - взяться за управление. Однако не пытайтесь совершить моих ошибок, у вас не получится сильно лучше чем у меня. Я не Алекс, вы -- тоже. Спасибо eu_tomat и ProgramCrafter за наибольший вклад в развитие этой попытки. Может быть когда-нибудь. Не прощаюсь.
  31. 2 балла
    Переписал README на русский язык. Смотрите тут или в 0м сообщении:
  32. 2 балла
    всем прив, поставил данную ос на oc для майн 1.16.5
  33. 2 балла
    Надо не компонент клавиатуры подключать, а библиотеку: local keyboard = require("keyboard") Эта такая извечная проблема: имя одно и то же, а вещи совершенно разные. Аристотель был бы недоволен. Нам, простым смертным, остаётся только смириться...
  34. 2 балла
    Да можно, но нужно учесть что при каждом вызове будет повторно обрабатываться одна и таже информация, что при опросе ме сети будет вызывать нагрузку, надо бы её за ранее подготавливать пример с выводом ТПС игрокам из списка
  35. 2 балла
    Ну вот как-бы. Убрал вывод на монитор, привинтил всё к окам. Еще можно экономить на бюджетах вызовах, но в данном случаи это не критично. Еще имейте ввиду что у очков возможно(Не проверял) есть потолок виджетов на экране. 1-н пользователь это 3 виджета. Обусловлено окрашиванием текста. Если вам не принципиальны цвета, можно сделать монохромно в 1-н виджет. Ну вот собственно и всё (❁´◡`❁)
  36. 2 балла
    В рамках версии игры и, следовательно, версий мода: нагрев за единицу времени может быть рассчитан косвенно, исходя из реалий используемого топлива и схемы охлаждения. Сам контроллер предоставляет только информацию о объёме хранящейся энергии. Дополнительную информацию может предоставить Reactor Logic Adapter из мода Mecanism. Он же может активировать реактор. Но поскольку, как я вижу, за прошедшее время сдвига по решению вопроса силами мода OpenComputers нет, предлагаю временное решение от игрока из Дойчланд основанное на адаптере: P. S. : А вот будет ли оно работоспособно в вашей сборке модов неизвестно. Впрочем как и о наборе их в ней.
  37. 2 балла
    Для тех, кому лень читать длинный текст: Проблема: Код, записанный в EEPROM и на загрузочных дисках, может быть запущен на процессоре неподходящей архитектуры. Решение: Описанный в статье стандарт. Автор предлагает добавлять в код EEPROM комментарий с указанием требуемой архитектуры, а также модифицировать OpenComputers, чтобы тот распознавал архитектуру, указанную в EEPROM. Есть похожее предложение по маркировке дисков, но я уже не стал вникать. По-моему, проблема высосана из пальца и не требует решения. Обычно этим занимается установщик. Он прошивает EEPROM, записывает файлы на диски, устанавливает нужную архитектуру и перезагружает компьютер, полностью настроенный и готовый к работе.
  38. 2 балла
    Из символа в байты: local char = unicode.char(128) local bytes = {char:byte(1, #char)} print(table.unpack(bytes)) > 194 128 Из байтов в символ: local bytes = {194, 128} local char = string.char(table.unpack(bytes)) print(char) > ┬А -- unicode.char(128)
  39. 2 балла
  40. 2 балла
    Кто свалил? В какую-такую одну кучу? Пока что это выглядит как разные кучи. Есть component.filesystem, а есть require("filesystem"). Это разные объекты, и в прикладной программе мы получаем их различным способом. Если программист использует оба объекта в пределах одной области видимости, то он даёт им разные имена, другого выбора у него нет. Если программисту будет удобно, то можно, например, именовать и так: filesystem_com = component.filesystem filesystem_api = require("filesystem") А если же эти объекты не используются в пределах одной программы, то программист может писать просто filesystem, если контекст использования такого имени переменной конкретно этому программисту и его коллегам понятен. И большинство так и пишет. Изучение такого кода, конечно же, иногда смущает новичков, но сами новички не спешат исправлять эту проблему. Хотя, освоившись со временем, могли бы заполнить форум программами с правильными именами переменных с их точки зрения. Это проблема лежит за пределами ответственности авторов мода. Да и не ахти какая это проблема, если бывшие новички сами с ней не борются.
  41. 2 балла
    Судя по ошибке, в дисководе до сих пор установлена дискета Network, которая проворачивает в фоне какую-то чёрную магию, регистрируя глобальные обработчики событий. Решение: вынуть дискету и ребутнуть ПК
  42. 2 балла
    Там написано, что при нажатии генерируется событие. Соответственно, чтобы получить информацию, надо это событие обработать. Например, запустив в интерпретаторе Lua такой код: while true do print(serialization.serialize({event.pull()}))end
  43. 2 балла
    Широковещательное сообщение может быть принято любой сетевой платой с открытым портом-адресатом при наличии среды передачи (либо при подключении кабелем, либо нахождении в зоне действия беспроводного сигнала). Беспроводную сетевую плату можно рассматривать как улучшенный вариант обычной проводной платы, т.к. она сохраняет возможность проводной связи. Главный компонент нужен лишь для упрощения подключения компонента. Если главный компонент назначен, то для его подключения достаточно лишь выполнить что-то вроде modem = component.modem. В противном случае приходится использовать более длинный вариант кода с component.list("modem"). Нет принципиальной разницы в работе с компонентами через component.invoke или component.proxy. component.proxy удобнее для программиста, и является высокоуровневым API для component.invoke. component.invokeчуть меньше нагружает компьютер, а также доступен из EEPROM, т.к. является низкоуровневым интерфейсом.
  44. 2 балла
    Оказалось, мой косяк: local robot = component.proxy(component.list("robot")()) local computer = component.proxy(component.list("computer")()) computer.pullSignal(3) for i = 1, 4 do robot.turn(true) end определил computer, хотя он и так есть, как Вы и объяснили. Без этой строчки pullSignal работает как и должен работать. Наверное, им и буду пользоваться. Спасибо, работает, в том числе и модули можно использовать.
  45. 2 балла
    Проверяй наличие файлов и корректность вводимых путей. Интереса ради загрузил майн, проверил - всё сработало, как и задумано: Управляющий скрипт /home/send.lua: Микропрограмма-ресивер для робота /home/eeprom.lua: Исполняемый код, отсылаемый роботам по сети /home/robot.lua: Команда для отсылки: send robot.lua Результат: Движение робота реализуется самим роботом, а не OpenOS. Как правило, любая ОС в OpenComputers - это софтверная оболочка, функционирующая поверх аппаратной части, и предоставляющая набор библиотек, упрощающих разработку софта. Например, в случае с роботами OpenOS оборачивает компонент robot в библиотеку robot, предоставляющую набор шорткатов. То же самое и с глобальной функцией require - её попросту нет в "голых" роботах, управляемых из-под EEPROM Использовать ОС крайне удобно, когда речь идет об одном роботе, хранящем пользовательские скрипты и управляемом напрямую через экран/клавиатуру. Однако в случае с роем такое решение контр-продуктивно, т. к. любая ОС потребляет ресурсы и требует крафта более дорогостоящих компонентов - в частности, планок памяти и жёстких дисков. Это всё равно что ставить Debian на сеть устройств для капельного полива домашних растений - ну то есть да, это возможно, а зачем? Разумнее прибегнуть к концепции микропрограмм на EEPROM, которые относительно дёшевы в плане крафта, а профит в виде освободившихся слотов под компоненты существенный. Заодно можно получить интересный опыт по "низкоуровневой" разработке под опенкомпы: -- Робот с OpenOS local robot = require("robot") robot.moveUp() robot.turnRight() robot.swing() -- Робот с EEPROM local robot = component.proxy(component.list("robot")()) robot.move(1) robot.turn(true) robot.swing(3) Таблицы component/computer/robot/unicode/bit32 являются суперглобальными и доступны сразу при запуске микропрограммы EEPROM, однако во время инициализации OpenOS они маскируются из соображений консистентности кода. Поэтому при работе из-под EEPROM вызов require не требуется, а из-под OpenOS уже требуется Верстаки, контроллеры инвентаря и ёмкости - это аппаратные компоненты, функционирующие самостоятельно и не требующие OpenOS. Любая ОС - это просто средство доступа к компонентам, причём одно из многих: -- Робот с OpenOS local component = require("component") local sides = require("sides") local crafting = component.crafting local inventoryController = component.inventory_controller local tankController = component.tank_controller crafting.craft(10) inventoryController.dropIntoSlot(sides.front, 10) tankController.drain() -- Робот с EEPROM local crafting = component.proxy(component.list("crafting")()) local inventoryController = component.proxy(component.list("inventory_controller")()) local tankController = component.proxy(component.list("tank_controller")()) crafting.craft(10) inventoryController.dropIntoSlot(3, 10) tankController.drain() Как видно, разница в коде несущественна, отличие лишь в способе получения доступа к ним и в наличии упрощающих библиотек типа sides Чтобы прояснить ситуацию: никто не призывает тебя использовать голый EEPROM вместо классического подхода с HDD/OpenOS. Разрабатывай так, как считаешь комфортным и оптимальным для себя - я лишь указал один из способов решения поставленной задачи, который использовал при выживании, и который сам считаю оптимальным Если тебе требуется весь богатый функционал, поставляемый OpenOS для роботов, ничто не мешает модифицировать скрипт-ресивер таким образом, чтобы он работал из-под OpenOS:
  46. 2 балла
    Это не возымеет эффекта, т.к. библиотека package реализована средствами OpenOS, а не мода. То есть ей доступны те же данные, что и игровому жёсткому диску. А ему в свою очередь доступны только данные в рамках директории игрового сейва - это захардкожено из соображений серверной безопасности, и обойти не получится Вероятно, package задумывалась как полный аналог одноименной библиотеки в "реальной" версии Lua - отсюда и путаница
  47. 2 балла
    И ещё идея - делать всё через виртуальных игроков. 1. Подключаем майнкрафт к серверу через Wireshark/ещё что-то, что захватит трафик (с offlineMode=true шифрования нет). 2. Кликаем по токарному станку как надо. 3. Отключаемся, находим нужные пакеты. 4. Подключаемся (хоть скриптом на локальном компьютере, хоть с самого сервера из OC) к серверу майна и управляем токарным станком.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...