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

Лидеры


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

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

  1. 7 баллов
    Примитивная Операционная Система для слабых компьютеров Возможности: Простое API для быстрого и лёгкого написания своих программ (Документация: в розработке) Удобный Файловый менеджер для работы с файлами и папками Наличие редактора кода (Больше не знаю, что еще сказать, но думаю вы всё поняли) Кнопки: Стрелки Вверх и Вниз - навигация по файлам Enter - запустить програму, или открыть папку Tab - переключения по доступным дискам (дискетам) Alt - Открыть системное меню Ctrl - Открыть меню файла/папки (в текстовом редакторе - меню сохранения) Системные требования: Корпус компьютера, екран - 1 Tier Процесор - 1 Tier Видеокарта - 1 Tier Память - 1.5 Tier (x1) Жерсткий диск - 1 Tier Дисковод, клавиатура, Lua BIOS - должны присутствовать Установка: Вставляете чистую дискету в комп (с OpenOS) Вводите команду в консоль: pastebin run ngQT9YF8 Выбираете пустую дискету из спика файловых систем Когда всё будет готово - вынимаете теперь уже инсталлер данной ОС Собираете слабый комп и устанавливаете ОС с дискеты Буду рад отзывам, которые помогут мне улучшать систему. Скриншоты: Внимание! Просмотр кода может вызвать побочные ефекты: ужас, стыд, депрессия, потеря сознания
  2. 5 баллов
    Актуальность Раньше, чтобы обновить прошивку дрона или микроконтроллера нужно было записать прошивку на eeprom через компьютер, снять устройство, заменить eeprom через верстак поставить устройство Довольно геморно если устройств много или часто вносятся мелкие изменения во время разработки Решение Чтобы не демонтировать устройство можно отправлять ему прошивку по беспородной сетевой карте. Устройство в свою очередь принимает обнову и применяет ее. Использование Загружаем файлы из этой папки(wget) https://github.com/hohserg1/OpenComputersPrograms/tree/master/wireless_flash Прошиваем наш eeprom прошивкой wireless_flash_eeporm.lua и вставляем в устройство Копируем адрес сетевой карты устройства Запускаем устройство Вызов команды wireless_flash покажет usage Последний использованный адрес сетевой карты устройства запоминается Теперь можем быстро тестировать прошивки Программа пока не особо функциональна, но вполне юзабельна. При разработке ПО для дрона рекомендую юзать планшет. Какие фичи еще стоит добавить(наверное, я это сделаю): Сохранение принятой прошивки Получение текущей прошивки устройства Сохранение множества адресов беспроводных карт
  3. 5 баллов
    Не фигачь строку по одному символу. Используй string.find, чтобы найти позицию последовательности смены цвета. Паттерн — "%[0x(%x%x%x%x%x%x)]". Вернёт позицию начала, конца и цвет. local s = "test[0x123456]testtest[0x654321]spameggs" local pattern = "%[0x(%x%x%x%x%x%x)]" local begin = 1 local x, y = 1, 1 while true do local b, e, color = s:find(pattern, begin) local precedingString = s:sub(begin, b and (b - 1)) if precedingString then gpu.set(x, y, precedingString) x = x + utf8.len(precedingString) end if not color then break end gpu.setForeground(tonumber(color, 16)) begin = e + 1 end
  4. 3 балла
    В кукбуке есть подробная инфа о некоторых штуках Lua. https://fingercomp.gitbooks.io/oc-cookbook/content/lua/table-copy.html
  5. 2 балла
    Всем привет. Сегодня вечером сделал довольно простенькую вещицу. Это недо-вирус(Сам себя не распространяет, запускает его злоумышленник) Вообще, если кто не в курсе - эта ошибка возникает у тех, кто хочет сэкономить, и покупает Xiaomi китайской версии(Т.е для продажи только для китайского рынка) и пытаются сделать её глобальной - и в итоге убивают прошивку. Что делает эта штука в OC - перетирает все файловые системы(ака rm -rf /), прошивает EEPROM и делает его ридонли. Запустить довольно просто - работает в MineOS, или OpenOS - запустите его в интерпретаторе, или еще где-нибудь. Код: Полная версия https://raw.githubusercontent.com/BrightYC/Other/master/full-virus.lua Минифицированная https://raw.githubusercontent.com/BrightYC/Other/master/minified-virus.lua
  6. 2 балла
    Здравствуйте, я - молдавский вирус. В виду бедности моего создателя и общей отсталости развития высоких технологий нашей страны, я не в силах причинить какой-либо вред вашему компьютеру. Пожалуйста, сотрите сами несколько самых нужных вам файлов, а затем разошлите меня по почте своим друзьям. Благодарю за понимание и сотрудничество.
  7. 2 балла
    Здравствуйте, товарищи! Я в очередной раз заинтересовался темой микроконтроллеров и на этот раз я намерен перевести свой интерес в практическую плоскость. При выборе платформы я склонялся сначала к Arduino, но потом вспомнил о платформе NodeMCU, с которой нас познакомил @BrightYC. NodeMCU позволяет писать программы на языке Lua, благодаря чему эта тема может стать интересной более широкому кругу форумчан. Поэтому для первого проекта я выбрал NodeMCU. Должен сразу сказать, что тему микроконтроллеров я знаю поверхностно и лишь теоретически. И я слабо представляю возможности типовой периферии Arduino и NodeMCU, и насколько совместима эта периферия между платформами. Поэтому я буду рад любым советам. Ближайшая цель: выбрать комплектующие для проекта и заказать их в Китае. Можно заказать и в России, если это будет не сильно дороже. Конечная цель проекта: Минимум: Сделать игрушечную машинку на четырёх колёсах с танковым разворотом, способную случайно блуждать по полу, объезжая препятствия. Датчики препятствий нужны какие-то оптические, чтобы не пугать ультразвуком котов. Датчики желательно аналогвые, чтобы знать примерное расстояние до препятствий, если это вообще возможно на типовых модулях. Также требуется подключение по WiFi для отладки скриптов. Датчиков препятствий пока планируется три: один смотрит вперёд, а другие немного в стороны, чтобы выбрать предпочитительное направление для поворота, не вращая корпус машины. Машинка будет иметь четыре колеса с двигателями и редукторами на каждое колесо. Колёса требуются какие-нибудь простые и недорогие. Двигатели будут объединены в две группы, для их управления нужен какой-нибудь модуль драйвера. Драйверы будут управляться либо аналоговым сигналом, либо ШИМ, чтобы машинка могла двигаться с переменной скоростью и делать повороты различного радиуса. Также требуется аккумулятор для питания устройства и контроллер заряда с USB-интерфейсом. Опционально: Нужна сервомашинка для вращения "глазами" для улучшения ориентации на поворотах. Нужен датчик тепла, скорее всего, на сервоприводах, чтобы искать котов, отличая их от батарей отпления или ног людей. В дальнейшем я предполагаю добавление алгоритма троллинга этих самых котов для большего веселья. Нужен способ воспроизводить звуки из заданного набора с флешки. Корпус первой машинки я планирую изготовить из картона с помощью термоклея. Все элементы, включая электронику также будут лепиться на термоклей. Для начала чем проще, тем лучше. Я хочу сосредоточиться в первую очередь на логике, а не на эстетике или долговечности игрушки. Вопросы на текущем этапе: Как выбирать плату контроллера? Установлен ли на плату WiFi, или он устанавливается отдельным модулем? Насколько часты у начинающих самодельщиков случаи "ткнул не туда, плата сгорела"? Имеет ли смысл взять несколько плат на всякий случай? Какие выбрать модули для управления двигателями? По каким критериям? Какие существуют оптические датчики расстояния? Могут ли они выдавать аналоговый сигнал, и есть ли в аналоговом сигнале какой-либо смысл? Как выбрать аккумулятор и контроллер заряда? Как подключаются сервомашинки к контроллеру? Нужны ли им дополнительные модули драйверов? Какая периферия требуется для воспроизведения звуков с флешки? Если какие-то из моих формулировок вам непонятны, задавайте уточняющие вопросы. Я пока сам не знаю, как правильно сформулировать свои мысли в новой для меня теме. На практике я знаю лишь Lua, да умею пользоваться паяльником, а также знаю основы электроники и электротехники. А вот, всякие там Ардуинки и прочие конструкторы в руках держать пока не доводилось, и возможностей компонентов я тоже не знаю. Надеюсь обо всём этом узнать в процессе реализации данного проекта. Возможно, с вашей помощью.
  8. 2 балла
  9. 2 балла
    Тебе надо прописать ему команду на включение по редстоуну. Например можно вызвать утилиту lua, и ввести туда component.redstone.setWakeThreshold(1) Где вместо единички можно подставить любое другое значение от 0 до 15. Это будет минимальная сила редстоун сигнала для включения компа. Разумеется красная карта нужна.
  10. 2 балла
    Для начала надо понять, почему компьютер выключается, и попробовать устранить причину отключений. Если избежать отключений не удаётся, то компьютер можно "разбудить" с помощью либо сетевой, либо красной платы. При каких обстоятельствах происходит выключение компьютера?
  11. 2 балла
    Вспомнил тут недавно про нематоду OpenWorm, которую реализовали в виде робота. Такой себе червячок, 1000 нервных клеток. Потянет даже atmega328p, правда, пришлось бы задействовать внешнюю память. Были бы у меня какие-нибудь мелкие движители, я б по хардкору, на низком уровне, реализовал такого червячка.
  12. 2 балла
    Если объемы таблиц не сильно большие, то рекомендую вообще использовать файл как файл подгрузки таблицы. Тоесть при старте программы прогружать таблицу в оперативку и там с ней работать. Постоянно обращаться на диск за таблицей не стоит, так как во первых это довольно долго, а если таблица разрастется до хороших таких объемов то еще и невыгодно будет по памяти. Еще вариант - придумать собственный вариант хранения данных в файле. Я например часто использую хранение как в csv таблицах, тоесть данные пишу все через; . Но это уже каждому свое.
  13. 2 балла
    Файл — последовательность байтов. Кроме них ничего записать в него невозможно. Осмысленность этой последовательности придаёт формат — соглашённость о том, как представлять некий вид информации в байтах и как оттуда его считывать. В данном случае нужно подобрать формат для таблицы и записывать в нём. Так как в вопросе не дана структура этой таблицы, то могу только перечислить инструменты, которыми можно воспользоваться. Либа serialization (OpenOS). Сериализует таблицу и десериализует в таблицу назад. Функции string.pack и string.unpack. Первая по строке-формату пакует данные в строку, вторая их извлекает. Функции string.char и string.byte. Первая создаёт строку с байтом, значение которого равно переданному; вторая возвращает значения байтов, из которых состоит строка. Функции string.gsub, string.gmatch, string.find, string.match. Для поиска по шаблону. Прошу описать структуру содержимого таблицы, чтобы помочь подобрать правильный инструмент. Кроме того, чтобы файл не переписывать с нуля, а дописывать с конца, нужно использовать io.open(path, "a") (от append).
  14. 2 балла
    Небольшая программка для записи информации через Card Writer из мода OpenSecurity. Очень полезно когда работаете с множеством контроллеров. Загрузить можно в App Market'e или в моем гитхабе
  15. 2 балла
    Предлагаю изменить сортировку по умолчанию в разделе вопросов не по рейтингу ответов, а по времени их создания. Сегодня оказалось, не один я страдаю от этого:
  16. 2 балла
    Начиная с версии 1.7.3 изменен алгоритм сохранения состояния компьютера при выгрузке его из чанка. Из за ошибки в коде (разраб утверждает что так и задумано, походу сделано для продажи фиксов для ОС хотя может я не так понял смысл). Тык1 Тык2 Насколько я понимаю, при выгрузке чанка проходит сохранение, а потом спустя ~5 минут очищается все состояние компьютеров. Тоесть при прогрузке чанка, комп пытается восстановить свое состояние, а восстанавливать неоткуда, тогда прилетает ошибка, и комп переходит в режим "выключено". Я не сильно силен в этом коде, кто понимает, можете почитать. Проблема явно в этом районе +- 10 строк SaveHandler.scala#L211 Описание проблемы от того кто починил это https://pastebin.com/raw/Rh8Nqh0B И да, такое наблюдается на всех серверах дримфинити. Там ими не занимаются фактически, так что игроки смирились и придумали схемы автозапуска на импульсе по редстоун сигналу.
  17. 1 балл
  18. 1 балл
    А зачем вообще было их раскрывать? Теперь придётся спешить. Теперь кто-то тоже хочет "другое с VR очками". А кто-то не только хочет, но и уже делает.
  19. 1 балл
    Протестировал. Да норм всё, ответ приходит мгновенно. На счёт N/A - в программе при запуске есть функция send("data"), что исключает возможность N/A если дрон включен. Какие-то локальные проблемы. У меня всё нормально =\ Напиши, пожалуйста, версию OC, и версию майна.
  20. 1 балл
    Кажется, я нашел, в чем проблема. Когда робот идет по координатам, он сначала поворачивается, потом идет вперед, пока не дойдет до нужной координаты. Все бы хорошо... НО. На каждом шагу (на самом деле каждые 32) робот проверяет разные параметры, и, если ими не доволен, возвращается домой, потом возвращается обратно на те же координаты, при этом не учитывая своей ориентации. Если он это сделал в середине пути, он может после возвращения быть повернут не туда, и переть не в ту сторону, все так же ожидая достижения нужной координаты, которой он никогда не достигнет. Лечится добавлением запоминания направления туда же, где в home запоминаются координаты, и добавлением smart_turn на это направление после возвращения на эти координаты.
  21. 1 балл
  22. 1 балл
    Новые солнечные апгрейды(аддон к Opencomputers) выведут роботов на совершенно новый качественный уровень. Роботы станут почти автономными и смогут работать практически неограниченное время (если, конечно, робот будет проверять время суток, видимость неба и текущий заряд и вовремя всплывать на поверхность для подзарядки) Продвинутая, гибридная, ультимейт и квантовая панели обеспечат роботов и дронов неисчерпаемой энергией. Также аддон добавляет потрясающую и невиданную до сегодняшнего дня новую фичу - зарядку своих инструментов при необходимости прямо внутри инвентаря. Позитронный мозг робота/дрона программно уже сам сможет решить, по каким электрическим цепям ему в данный момент необходимо перенаправить могучие потоки энергии - в бур, в электро-краник для гевеи или в любой другой инструмент, который у него в инвентаре, или же в Главный аккумулятор, а при необходимости и направить всю свою мощь и энергию в миллионы ГВт для колоссального удара Теслой и разрушения на кварки всей живой материи в радиусе при опасности и при обнаружении врага на радаре. "Живучесть" и автономность роботов увеличивается на порядки. Также вы можете использовать своего робота в дальних путешествиях и просто дать ему подзарядить джетпак и свои квантовые или нано трусы, если они вдруг внезапно разрядились. Некоторые солнечные апгрейды, конечно же, не дешевые в крафте, но они того стоят. Роботы, наконец-то, шагнули в квантовую эру благодаря новым источникам энергии и новому аддону. Прощайте, архаичные ванильные угольные апгрейд-чайники. Вы хорошо послужили нам, но прогресс идет вперед. Уже приближается звук ударов иридиевых буров из шахт и слышится жужжание квантовых роботов и свист дронов. Замысел, геймдизайн: Alex Java кодинг: Neo
  23. 1 балл
    Нет, к сожалению это только для дронов=) на самом деле, проще вообще так делать: local handle, data, chunk = component.proxy(component.list("internet")()).request("http://мой-ип/bios.lua"), "" while true do chunk = handle.read(math.huge) if chunk then data = data .. chunk else break end end handle.close() local chunk, err = load(data, "=stdin", "t") if not chunk and err then error(err) end success, err = xpcall(chunk, debug.traceback) if not success and err then error(err) elseif success and not err then for freq = 100, 2000, 100 do computer.beep(freq, .1) end computer.shutdown() end И редактируешь код прямо в редакторе, а еще говорил @Asior что дропбокс позволяет открывать файлы в облаке как файлы на компьютере. Так омжно даже не заморачиваться, а тупо перезагружать, и комп/дрон/мк уже скачал новую прошивку.
  24. 1 балл
    А можно использовать мою программу. Там есть и возврат ошибок, так же там есть интерпретатор(можно вживую, как на компьютере, протестировать какую-то вещь). Там и есть загрузка файлов, и так же можно при желании даже перепрошить дрона=) UPD: А у @Fingercomp эта штука в openprograms уже висит 3 года https://github.com/OpenPrograms/Fingercomp-Programs/tree/master/net-flash
  25. 1 балл
  26. 1 балл
    Зависит от программы наверное. Я не знаю. Если это обычная программа, то сама она скорее всего себя запускать не будет. Но ты можешь прописать её в автозапуск. Вот тут товарищ @Fingercomp собрал список всех способов, как это можно сделать в OpenOS. Выбирай какой нравится.
  27. 1 балл
    Вот ты компьютер включаешь, там запускается OpenOS. Там у тебя командная строка, куда можно печатать команды. Одна из команд, которая доступна в OpenOS это команда lua. Если ты её выполнишь, запустится интерпретатор Луа, куда можно тот код для включения компа скопировать и выполнить. А вообще Луа это язык программирования такой.
  28. 1 балл
  29. 1 балл
  30. 1 балл
  31. 1 балл
  32. 1 балл
    Энергии хватает , я бы хотел узнать как можно его включить без меня допустим редстоуном но у меня не получается ((
  33. 1 балл
    Здравствуйте,допустим чанк выгружается и комп вырубается надо подойти и нажать по нему shift+ПКМ
  34. 1 балл
    Где можно хорошо подучить API компонентов, OpenOS и всего что связано с OC?
  35. 1 балл
    Некоторое время назад я публиковал программку - интернет-мост Stem. Он очень простой в использовании, но к сожалению пока не лишен некоторых глюков. А кроме того, у него есть недокументированные возможности. Предлагаю сейчас поиграться с одной такой тайной фичей. Это будет интересно тем, кто немного знаком с HTML/CSS/JavaScript. В чём суть? Всё просто. У Stem есть веб-клиент. То есть если вы зайдете по адресу https://stem.fomalhaut.me (например), вы увидите окно, которое пригласит вас ввести ID канала и початиться прямо с сайта. После ввода ID канала, вас перекинет на страничку с "чатом", где вы сможете посылать сообщения вашему компьютеру/роботу в майнкрафте. Адрес этой странички будет выглядеть примерно так: https://stem.fomalhaut.me/channel?id=test Где test это ID вашего канала. Когда робот будет вам отвечать, это будет видно в логе. Примерно так: А теперь - тайная фича. Находясь на страничке канала, как на скриншоте, вы можете приписать к адресу дополнительный флаг: &render=true. Полный адрес станет выглядеть примерно так: https://stem.fomalhaut.me/channel?id=test&render=true И начиная с этого момента, все входящие сообщения от компьютера в OpenComputers будут не отрисовываться в лог, а попадать в JS функцию eval(...). Что это значит? Те кто имел дело с JS уже наверное поняли все последствия. Но я поясню. Это значит, что компьютер OpenComputers может прислать сообщение с JS кодом, и сайт Stem этот код выполнит. А это значит, что вы можете творить на сайте вообще всё что угодно. Вы можете удалить интерфейс, показать вместо него новый, скачать что-то с инета, запустить игрушку... да хоть майнить крипту. Поиграем Ничего вредоносного мы делать конечно сейчас не будем. Вместо этого, традиционно, попробуем сделать так, что сайт Stem превратится в сайт для управления светом в нашем доме в Майнкрафте. Шаг первый. Подготовим дом. Тут всё просто - стандартный компьютер, с интернет картой, от него кабель к I/O блоку, а на блоке - подопытная лампа. На компьютер ставим Stem. Например, ставим HPM такой командой, pastebin run vf6upeAN И потом пишем: hpm install stem Нажимаем Enter и готово. Шаг второй. Нам нужен сайт. Усложнять не будем, и наш революционный дизайн будет выглядеть так: Что нам нужно сделать, чтобы сайт Stem превратился в то что нам надо? Методом тыка, через консоль браузера определяем, что достаточно выполнить такой код: document.body.innerHTML = " <style>button:active { background: #fac700; }</style> <button onclick=\"sendMessage(\'toggle\')\">Toggle Light</button> "; document.body.style.alignItems = "center"; Первой строкой мы просто заменяем всё содержимое тега <body> на то что нам надо. Я добавил еще немного косметики в виде стиля для кнопки. Вторая строка - тоже косметика, я просто поправил стиль на теге <body> чтобы кнопочка была посередине. Один важный ньюанс - на кнопке повешено свойство onclick с кодом sendMessage("toggle"). Таким образом, когда пользователь тыкнет по кнопке, мы отправим сообщение обратно в OpenComputers. Функцию sendMessage нам дает веб-клиент Stem. Ей можно безвозмездно пользоваться в своих целях. Шаг третий. Соединяем это все вместе. Теперь надо набросать программку для нашего компьютера в Майнкрафте, чтобы он выслал подготовленную JS-"бомбу" по нашему сигналу. Эники, беники... выходит что-то такое: local event = require('event') local stem = require('stem') local side = require('sides') local com = require('component') local redstone = com.isAvailable('redstone') and com.redstone or nil local channel = "test" local layout = [===[ document.body.innerHTML = "\ <style>button:active { background: #fac700; }</style>\ <button onclick=\"sendMessage(\'toggle\')\">Toggle Light</button>\ "; document.body.style.alignItems = "center"; ]===] local lampSide = side.top local lampTurnedOn = false print("Connecting to the #" .. channel .. " STEM channel...") local server = stem.connect('stem.fomalhaut.me') server:subscribe(channel) print("Done.") print("Press [q] to quit.") while true do local name, a, b = event.pull() if name == "stem_message" then local message = b if message == "connect" then print("Someone wants to connect - sending the layout...") server:send(channel, layout) elseif message == "toggle" then if redstone ~= nil then if not lampTurnedOn then redstone.setOutput(lampSide, 16) lampTurnedOn = true else redstone.setOutput(lampSide, 0) lampTurnedOn = false end end end elseif name == "key_down" then local char = b if char == 113 then break end end end server:disconnect() Я думаю тут большая часть очевидна и понятна. Мы подключаемся к серверу Stem, подписываемся на нужный канал и внимательно слушаем входящие сообщения. Когда пользователь присылает сообщение connect, мы отправляем ему подготовленный код, который мирно лежит в переменной layout. Этот код прилетит к пользователю, и, если пользователь смотрит страницу с включенной опцией render=true, код сработает и перерисует страницу. Если опция будет отключена - он просто увидит код в логе, как простое сообщение. Шаг четвертый. Тестируем. Откроем наш канал по ссылке: https://stem.fomalhaut.me/channel?id=test&render=true Появится пустой лог. Запустим программу в OpenComputers. Она отрисует наше приветствие, что-то вроде: Сonnecting to the #test STEM channel... Done. Press [q] to quit. Теперь пишем на сайте команду connect. Если мы все сделали правильно, и Stem не заглючил, интерфейс сайта исчез, и вместо него появилась наша кнопка. Нажимаем её. Вуаля! Дома зажегся свет. Постскриптум Это конечно же недокументированная хакерская фича, которую можно считать альфа-версией. Кроме того в Stem сейчас есть неуловимый баг, из за которого сообщения иногда не доходят. Не пугайтесь. Если кто-нибудь предоставит мне сценарий (прямо по шагам), при котором 100% срабатывает баг - буду очень рад и пофиксить его будет легче. С помощью описанной фишки можно придумать много хрени. Я показал самое простое что пришло в голову. Уверен, ваша фантазия будет покруче моей ) Пишите баг-репорты или пожелания по фиче, да и просто комменты в эту тему, либо мне в любой канал связи, где я онлайн.
  36. 1 балл
    NodeMCU платы сделаны на основе esp12e, реже esp12f. Этот микроконтроллер по умолчанию имеет Wi-Fi, но он слабоват, если в квартире/доме больше 2 комнат. Лично у меня не сгорела ни 1 плата, но для подстраховки имеет смысл взять дубликат, чтобы не брать такую же плату втридорога в России. В основном потребление двигателей. Для маленькой машинки сойдет такая(Для мощных же двигателей нужно что-то помощнее): https://ru.aliexpress.com/item/32856351192.html?spm=a2g0s.9042311.0.0.23cb33ed6qFjsr (Сам брал лично) Если честно, я не имею никакого опыта об датчиках расстояния. Разве что дома лежит ультразвуковой, который я так и не использовал. На счёт оптических - вообще ничего не знаю, к сожалению. Если цель действительно на простоту - то проще взять powerbank. Выйдет дешевле и проще. В принципе, сервопривод можно подключить напрямую к плате - но у них потребление слишком большое и фонить будет сильно(wi-fi сигналу мешать будет), так же - есть шанс спалить плату. Поэтому сервоприводам нужно отдельное питание от микроконтроллера. Вообще, писать всё это на Lua слишком сложно. Если очень хочется - можно заказать отдельный модуль, который воспроизводит музыку отдельно. А флеш-накопитель к "слабым" esp-шкам подключить нельзя, разве что к ESP32 можно. Но там уже и камеру приделать можно =) UPD: По поводу драйверов для двигателей - в том модуле, что я сбросил - есть ШИМ, то есть плавное управление возможно. В некоторых модулях же ШИМ нет.
  37. 1 балл
    Можно просто обновить русскую вики. Там доступ открыт для всех.
  38. 1 балл
    Привет. Вам когда нибудь нужен был хостинг или сервер, а money = 0 или у вас мало денег? У меня лично такое было. Поэтому я организовываю проект: ServerHelp - помощь с серверными потребностями от добрых людей. Добрые люди делятся сервером или хостингом, а люди у которых хорошая идея реализовывают её. Как? Людям которая нужна помощь: Люди которые хотят помочь: Список 1. Сервер мой и моей команды - FirstVDS - VDS-KVM-Старт-6.0 - serverhelp.themixteam.ru, Ubuntu-16.04-amd64, лицензия ISPManager 5 Lite, 1 IPv4 адрес, Неограниченный трафик 100m/с, без защиты от DDOS - WebDC (Москва) Удачи вам в реализации проектов:)
  39. 1 балл
    https://minecraft-ru.gamepedia.com/Категория:OpenComputers/API
  40. 1 балл
    Может всё таки тетрис для начала? Так сказать "потренируешься на кошках". У нас в Hel не хватает игр.
  41. 1 балл
    Цвета для tint используются те же самые, что и в фотошопе. Правильный формат цвета для принтера - 0xRRGGBB. В начале обязательно ноль и икс - 0x. Если копируешь цвет из фотошопа или интернета и там в начале решеточка - убирай. После ноля и икса идут шесть знаков (цифр и букв) - это и есть код цвета. Если копируешь из фотошопа или ещё откуда-то, и там 8 знаков - это значит что там ещё код для канала прозрачности добавлен. Обычно он добавляется в конце (иногда в начало) - просто убери два последних знака (или два первых). Можно получить код цвета вручную, из трех чисел RGB (red, green, blue). (Не HSL, а именно RGB.) Для этого нужно взять каждое из трех чисел, преобразовать из десятичной системы счисления в шестнадцатеричную и затем записать последовательно. Пример: Есть цвет с кодом RGB(205, 92, 92). Это приглушенный красный цвет, который ещё называется indian red. Конвертируем число R из десятичной системы в шестнадцатеричную. Было 205, стало CD (может быть записано как 0xCD). Затем G. Было 92, стало 5С (может быть записано как 0x5C). То же самое для B - тоже получаем 5C. Теперь записываем последовательно, в том же порядке (без префиксов 0x если они были). Получаем CD5C5C. Теперь приписываем ноль и икс. Получаем 0xCD5C5C. Всё, это готовый код цвета для принтера.
  42. 1 балл
    Для тех, кто спешит: https://ocelot.fomalhaut.me/ На форуме давно мелькают упоминания Ocelot. Это эмулятор OpenComputers, который находится в разработке примерно с 2015 года, был несколько раз переписан и наконец увидел свет в закрытом альфа-тесте зимой 2018. Я немного отвлекся на другие проекты (привет Stem), но теперь возвращаюсь к разработке Ocelot, и с гордостью предствляю вам тизер-анонс и, по совместительству, открытый альфа-тест Ocelot. Ещё один эмулятор? Да. Будем честны. Нормального эмулятора OpenComputers не существует. Те что есть - полны костылей, не совсем соответствуют реальному моду, сложны в установке, заброшены... и так далее. Ocelot - это решение всех этих проблем. Основная идея Ocelot - взять уже существующий код мода OpenComputers, тщательно отделить всё не нужное (Майнкрафт), затем осторожно переписать то что получилось с поправкой на реалии эмулятора. Благодаря этому, Ocelot эмулирует OpenComputers с ранее невиданной точностью. Вплоть до того, что в эмуляторе могут встречаться те же самые баги, что и в моде. Что он умеет? Практически всё. В перспективе. Ocelot позволяет воссоздать схему любой сложности из любого количества блоков - мониторов, компьютеров (любой конфигурации), проводов, модемов и прочих компонентов. Он позволяет управлять скоростью работы компьютеров, позволяет изменять "игровое" время, ставить его на паузу, сохранять состояние работы компьютеров и потом возобновлять работу с любого сохранения. Сейчас доступен базовый набор компонентов и блоков. Это кабель, корпус компьютера, APU/CPU, плашки памяти, видеокарты, дата-карты, EEPROM, дискеты, жесткие диски (managed и unmanaged режимов), интернет-карта, линкед-карта, сетевая карта (проводная и безпроводная), редстоун-карта / блок и монитор. Список будет расширяться. В перспективе будет эмуляция всех блоков и компонентов стандартного OC, роботов, дронов, микроконтроллеров, серверных стоек, плюс эмуляция адаптера и интеграции с ванильными блоками и блоками других модов. Что можно потрогать? Ocelot задуман как модульный проект. А именно: Ocelot Brain Основа эмулятора - это библиотека Ocelot Brain. Она написана на Scala и может быть подключена к любому другому проекта на Scala (и, может быть, Java). Ocelot Brain - это как раз переработанный код OpenComputers в компактной и удобной форме. Отвечает за всю эмуляцию кода и компонентов, а также сохранение / загрузку проектов. Вы можете использовать его для своих проектов, можете помочь с разработкой и патчами. Проект открыт и доступен по адресу: https://gitlab.com/cc-ru/ocelot/ocelot-brain На данный момент Ocelot Brain актуален версии OpenComputers 1.7.4. Ocelot Online На основе проекта Ocelot Brain, в качестве демонстрации его возможностей, создается проект Ocelot Online. Ocelot Online это эмулятор OpenComputers в виде сайта. Да. Всё что вам нужно для его запуска - это открыть сайт. Ссылка: https://ocelot.fomalhaut.me/ Исходный код тоже доступен: https://gitlab.com/cc-ru/ocelot/ocelot-online Поскольку проект пока находится в альфа-релизе, большая часть возможностей закрыта. Доступен только один монитор на всех, который позволяет взаимодействовать с уже настроенным демо-проектом. Конфигурация проекта: Креативный корпус, CPU T3, видеокарта T3, две планки памяти T3.5, managed жесткий диск T3, unmanaged жёсткий T3, интернет карта, редстоун карта T2, дисковод с дискетой Open OS, монитор T2, клавиатура и EEPROM с Advanced Loader от товарища Luca_S. Отличия от стандартного OpenComputers: * В OpenOS уже установлен HPM. Благодаря этому можно быстро ставить разные программы через hpm install. * Вставка текста заменена с Insert на Ctrl + V. Браузер не дает изменить этот хоткей. * В редакторе edit кнопка выхода заменена на Ctrl + E. Стандартная комбинация юзается браузером для закрытия вкладок - и переопределить её нельзя по соображениям безопасности. * Иногда не печатаются стек-трейсы. Это последствия одного фикса против одного вредного эксплойта. Проблема уже сообщена разработчикам OC. Как только нормальный патч появится в OpenComputers - я пропатчу и Ocelot. * Вместо OpenOS EEPROM используется Advanced Loader. Это сделано для удобства и наглядности. * Не работает лок на пользователя - по понятным причинам. Ocelot Online должен так же работать на смартфонах. Однако возможно придется отключить T9 - он портит эвенты клавиатуры. В разработке находится более сложная версия, где все получат возможность зарегистрировать аккаунт и создавать личные проекты любой конфигурации. Но это дело будущего. Ocelot Desktop Это классический вариант эмулятора Ocelot в виде программы, которую можно скачать и запустить на любой операционной системе, где есть Java. Построен на Ocelot Brain и библиотеке LWJGL (как и сам майнкрафт). Разработкой занимается товарищ @LeshaInc. Я не буду спойлерить и рассказывать про его проект - если он захочет, сам расскажет. Альфа-тест Итак, дорогие пользователи, пишите ваши хотелки, сообщайте о багах, обо всем что работает не так как должно, и как в оригинальном OC. Я, со своей стороны, постараюсь проект не забрасывать, развивать и своевременно (или не очень) обновлять. Благодарности Над проектом также работали: @LeshaInc, @Laine_prikol, @Fingercomp и @MeXaN1cK. За что им огромное спасибо и респект. Не забудем также всех, кто помогал с альфа-тестированием, Сангара - за чудесный мод, и мейнтейнеров OpenComputers за то что его не забросили (всё ещё ждем от них фикс). Enjoy!
  43. 1 балл
  44. 1 балл
    Еще одно обновление: Добавлена возможность загрузки модулей с планшета, то есть теперь можно расширять код хоть до полу мегабайта. Для начала была добавлена сериализация, чтобы таблицы нормально отображались при отправке на планшет: Теперь можно не ограничиваться фантазией и писать сколько угодно(в пределах, разумеется, ограничивается лишь размером оперативной памяти у дрона и планшета)
  45. 1 балл
    Небольшое обновление: Доделал интерпретатор, теперь почти неотличим от оригинала. Теперь не нужно писать return чтобы вернуть значение, так же добавил возможность прекратить код через CTRL+D при исполнении Так же добавил утилиту загрузки по сети. Чтобы загрузить программу на дрона. То есть, можно запустить любую программу командой net <program_name> И она сию минуту загрузится на дрон: Установка: wget https://raw.githubusercontent.com/BrightYC/DRC/master/network-load.lua net.lua Так же, в интерпретаторе есть функции: update() - обновляет данные на планшете print(...) - помогает отправить данные на планшет в работающем коде sleep([timeout: number]) - сон он и в африке сон pull([timeout: number]): name, ... - ожидает какой-либо сигнал не ломая связь move(dx: number, dy: number, dz: number, wait: number) - блокирующий drone.move distance(): number - возвращает расстояние до планшета, если ответ не пришёл в течении 3 секунд - возвращает 0 moveToUser() - перемещает дрон к планшету slot([slot:number]) - безопасно выбирает слот(К примеру - в дроне всего 4 слота, но slot(5) выделит самый последний и не выкинет ошибку) clear - очищает терминал
  46. 1 балл
    Недавнo завезли нескoлькo нoвых функций. canSeeSky():boolean - вoзвращает true, если виднo небo. Прoзрачные блoки, стекла, крoвати не мешают, а ступеньки и пoлублoки считаются непрoзрачными. detect(стoрoна:number):boolean, string - кoпия функции component.robot, прoверяет наличие блoка с указаннoй стoрoны. Вoзмoжные варианты выдачи: (false, 'air') - пустo, блoк вoздуха. (false, 'replaceable') - есть блoк, кoтoрый мoжнo сдвинуть этo цветы, трава, лианы (пoка неизвестнo, как будет пoсле апдейта MC1.14). В приватах мoжнo считать за true, т. к. рoбoтoм лoмаются тoлькo кактусы. (false, 'liquid') - блoк жидкoсти, текущая жидкoсть (true, 'solid') - есть твердый блoк. (true, 'entity') - какая-тo сущнoсть. (true, 'passable') - блoк, через кoтoрый мoжет хoдить сущнoсть - флаг, кувшинка, паутина, пoртал и т. п. Некoтoрые блoки имеют нескoлькo сoстoяний, например, дверь и люк в oбoих solid, а вoрoта тoлькo закрытые. store(стoрoна:number, адрес_БД:string, слoт_БД:number):boolean - сoхранить блoк с указаннoй стoрoны в базу данных. isSunVisible():boolean - вoзвращает true, если пoгoда ясная, вo время дoждя или грoзы - false
  47. 1 балл
    В последних версиях OpenComputers обрастает всякими загадочными вещами. Игроки, которые только только освоились с предыдущей версией вдруг понимают, что надо изучать все заново. "А пошло оно все!" - думают игроки, и уходят на версию 1.3.6, или переучиваются на ComputerCraft, который проще, и не требует непонятного. А одна из самых загадочных - неведомый EEPROM. Это такая мелкая хрень, без которой не работает ни один компьютер, или даже робот. Хорошо еще, что есть стандартный EEPROM который называется Lua BIOS. Он легко крафтится и заставляет работать компьютеры как и раньше. Но найдем задачку посложнее, где Lua BIOS не поможет. Попробуем собрать микроконтроллер, который будет управлять входными дверями. 1. План Представим, как оно должно работать. Слева от двери (если входить) - микроконтроллер. Ради понтов, возьмем Микроконтроллер 2-ого уровня и поставим в него беспроводную сетевую плату. Кроме того добавим красную плату, чтобы управлять дверью. 1. Если контроллер принимает сигнал "open" - он открывает дверь. 2. Если примет сигнал "close" - он закрывает дверь. 3. Если примет посторонний сигнал - взрывает динамит. Дабы сокровища не достались хакерам. Для управления задействуем любой комп, у которого тоже будет беспроводная плата (или точка доступа). 2. Крафтим контроллер С этим проблем не возникнет. Потому, что я играю в креативе :P . Открываем NEI и берем нужные детали. В последний слот положим пока пустой EEPROM. Потом поставим на него прошивку, а пока - не важно. Нажимаем кнопку "Старт" и достаем готовый блок. 3. Готовим прошивку Теперь, когда все готово, мы построили сокровищницу и скрафтили контроллер - осталось самое главное. Программирование EEPROM'а отличается от программирования обычной программы. Потому, что обычно, наши программы выполняются в OpenOS, которая заботливо загружает нужные библиотеки, предоставляет всякие удобные фичи и прочее. Тем не менее писать мы будем именно в OpenOS. Запустим компьютер, напишем edit bios и введем следующие строки: red = component.proxy(component.list("redstone")())while true do red.setOutput(5, 0) computer.pullSignal(1) red.setOutput(5, 15) computer.pullSignal(1)end Дело в том, что большая часть библиотек, которые мы использовали - это библиотеки OpenOS. А значит мы не можем ими пользоваться в BIOS. Однако кое-что нам доступно. Это библиотеки computer и component, и соответственно все установленные в целевом агрегате (микроконтроллер) компоненты. Более чем достаточно для наших задач. Вышеприведенный код делает следующее: * ищет компонент с названием "redstone" и возвращает его прокси * в вечном цикле посылает нулевой редстоун-импульс направо (side = 5), т.е. гасит сигнал * ждет секунду (на самом деле - ожидает эвентов, то есть сигналов) * посылает редстоун сигнал с силой 15 направо * опять ждет секунду Преследуем двоякую цель: во-первых проверить, что EEPROM вообще работает так про него написано на Вики. Кто его знает? А во-вторых: убедиться, что сторона 5 это именно та сторона, где дверь. А не какая-нибудь другая. Нажмем Ctrl+S, чтобы сохраниться и Ctrl+W, чтобы закрыть редактор. Вставим пустой EEPROM (еще один) в слот нашего компьютера, вместо лежащего там Lua BIOS. И напишем в консоль такую команду: flash -q bios MCBios Программа flash предназначена для прошивки чипов. Флаг -q говорит ей, чтобы не задавала лишних вопросов, затем идет имя файла с нашим кодом (bios) и метка, которую программа шлепнет на чип (MCBios). Все. Доставайте. Lua BIOS на место класть не обязательно, ибо этот слот нам еще потребуется. (Но не забудьте его вернуть, если будете перезагружать компьютер) Чтобы заменить пустой EEPROM в контроллере на наш MCBios, надо положить контроллер и MCBios на верстак. При этом пустой чип вылетит, а новый встанет на его место. Поставим контроллер на пол и протестируем. После клика ПКМ на контроллере - замигала правая лампа. Значит все работает как нужно. 4. Теперь - серьезно Извлеките чип с MCBios обратно (так же как и вставляли, только наоборот). Или приготовьте новый пустой чип. Главное - не запутайтесь в них. Пишем клиент для контроллера. У меня он выглядит примерно так: red = component.proxy(component.list("redstone")())modem = component.proxy(component.list('modem')())modem.open(27)red.setOutput(5, 0)red.setOutput(2, 0) -- no explosions yet =)while true do name, _, sender, _, _, message = computer.pullSignal(2) if name == 'modem_message' then if message == 'open' then red.setOutput(5, 15) elseif message == 'close' then red.setOutput(5, 0) else -- hacker tries to get? red.setOutput(2, 15) -- fire in the hole!!! end endendmodem.close() Все согласно плану. Прошиваем чип, вставляем в контроллер, а контроллер ставим слева от дверей. Сзади к контроллеру осторожно прилаживаем запал. ПКМ! Теперь открываем новый файл на компьютере: edit send И пишем в него такой код: local com = require('component')local modem = com.modemlocal args = {...}modem.broadcast(27, args[1])print("Message '"..args[1].."' sent!") Сохраняем, и закрываем. Это будет программка для тестирования контроллера. 5. Тест! Пишем в консоль send open. Дверь открылась! Пишем send close. Дверь закрылась! Пишем send opeh Упс! Опечатка. О_О
  48. 1 балл
    Всем ку, благодоря бессоной ночи изучение api opencomputers написал прогу для контроля за роботом через планшет. Благодаря возможно изменения разрешения удалось свернуть окно для обзора за роботом, сделать это можно по кнопке "R". Для работы этого приложения на компьютер или планшет нужно установить видеокарту карту 2 уровня или выше (из-за изменения разрешения) , и вайфай карту. На робота только вайфай карту. Из функционала доступно: Все функции движения Все swing() Все use() И моя любимая команда для робота вида : os.execute(msg)где msg это то что вы вписали при вызове отправки шела: Протокол передачи написан настолько по индусски и небезопастно, что для работы вам достаточно просто запустить эти программы на роботе и планшете. Вашего робота могут просто упереть этой же программой XD. Если вы одобрите эту программу, то я допилю её. Код для планшета: --tab local component = require("component") local term = require("term") local event = require("event") local m = component.modem --component.gpu.setResolution(1,1) term.clear() print("--------------------------------------------------------------") print("|Движение: Вперёд= ↑; Назад = ↓; Вниз = ctrl; Вверх = shift; |") print("|Поворот: Влево = ←; Вправо →; Выход из программы = '0' |") print("|Shell = 'O' - передать аргумент shell робота; |") print("|Левый клик: Вперёд = space; Вверх = 'E'; Вниз = 'D' |") print("|Правый клик: Вперёд = enter; Вверх = 'W'; Вниз = 'S' |") print("|Сворачивание окна планшета для слежения за роботом = 'R' |") print("|By http://vk.com/dencraft23 for http://computercraft.ru/ |") print("--------------------------------------------------------------") m.open(23) sr = 1 while true do _,_,key1,key2 = event.pull("key_down") z = key2 print(z) if (z==19) then if (sr==1) then term.clear() component.gpu.setResolution(2,2) sr = 0 else component.gpu.setResolution(80,25) print("--------------------------------------------------------------") print("|Движение: Вперёд= ↑; Назад = ↓; Вниз = ctrl; Вверх = shift; |") print("|Поворот: Влево = ←; Вправо →; Выход из программы = '0' |") print("|Shell = 'O' - передать аргумент shell робота; |") print("|Левый клик: Вперёд = space; Вверх = 'E'; Вниз = 'D' |") print("|Правый клик: Вперёд = enter; Вверх = 'W'; Вниз = 'S' |") print("|Сворачивание окна планшета для слежения за роботом = 'R' |") print("|By http://vk.com/dencraft23 for http://computercraft.ru/ |") print("--------------------------------------------------------------") sr = 1 end end if (z==200) then m.broadcast(66, "f") end if (z==208) then m.broadcast(66, "b") end if (z==203) then m.broadcast(66, "l") end if (z==205) then m.broadcast(66, "r") end if (z==42) then m.broadcast(66, "u") end if (z==29) then m.broadcast(66, "d") end if (z==57) then m.broadcast(66, "swing") end if (z==28) then m.broadcast(66, "use") end if (z==17) then m.broadcast(66, "useup") end if (z==31) then m.broadcast(66, "usedown") end if (z==18) then m.broadcast(66, "swingup") end if (z==32) then m.broadcast(66, "swingdown") end if (z==11) then m.broadcast(66,"exit") shell.execute("sh") end if (z==24) then m.broadcast(66,"shell") os.sleep(1) print("shell:") shellr = io.read() m.broadcast(66,shellr) end end end Код для робота: --robot term = require("term") r = require("robot") local component = require("component") local event = require("event") local m = component.modem term.clear() m.open(66) while true do local _, _, _, _, _, msg = event.pull("modem_message") z = tostring(msg) if (z=="f") then r.forward() end if (z=="b") then r.back() end if (z=="l") then r.turnLeft() end if (z=="r") then r.turnRight() end if (z=="u") then r.up() end if (z=="d") then r.down() end if (z=="swing") then r.swing() end if (z=="useup") then r.useUp() end if (z=="usedown") then r.useDown() end if (z=="swingup") then r.swingUp() end if (z=="swingdown") then r.swingDown() end if (z=="use") then r.use() end if (z=="exit") then shell.execute("sh") end if (z=="shell") then local _, _, _, _, _, msg = event.pull("modem_message") os.execute(msg) end end
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...