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

Вся активность

Этот поток обновляется автоматически     

  1. Последний час
  2. Сижу короче я такой и хочу сделать свой проект в майне на OC вот и придумал ЭТУ идею ПРЕДСТАВЛЯЮ ВАМ DISROB а если точнее управление роботом из дискорда! Предыстория: Установка! 1. 1 - Для начала нужен дискорд бот *ТЫК* мы попадаем на Developer portal Дискорда 2 - входим в аккаунт 3 -и нажимаем New application 4 - Даем название.. 5 - 9999... - а дальше нагуглите лень писать ?? - получаем Токин 2. 1 - Качаем моё .exe приложение (делал на пайтон кто боится могу скинуть исходник) **ШМЯК** 2 - запускаем и вводим какой либо код Stem 3 - запоминаем код он ещё понадобиться 4 - вводим токен бота(вы же его уже на сервер добавили?) может показатся что прога зависла но это не так 3. 1 - Качаем прогу на робота wget https://raw.githubusercontent.com/Bumer-32/Minecraft-opencomputers/main/DisRob/DisRob.lua 2 - редактируем.. edit DisRob.lua и сверху в переменной вбиваем тот же самый код stem (Помните мы его запоминали? не помните? память тренировать надо! стихи учить! быстро стих или 2 в журнал!) давайте давайте стих в обсуждение сюда 3 - написать стих 4 - ставим Stem ***ГРЮК*** НЕ ПУТАЕМ СО СТИМОМ ЭТО СТЕМ запускаем все скачанное Инструкция: Сис требования : Просьба не кри.. а хотя.. КРИТИКУЙТЕ ХОЧУ ПОУЧИТСЯ! и да спасибо @Totoro за прекрасный Stem и @ProgramCrafter за предоставленный код для подключения к Stem на Python
  3. Сегодня
  4. Короче я слишком тупой и у меня дет за 2 - 3 месяца так до сих пор ничего не получилось почему всё так сложно?
  5. @Taoshi был бы благодарен если бы код добавили то куда именно надо что бы программа вообще не отключался а то не совсем ясно куда в какие строки
  6. Вчера
  7. Ещё можно заюзать dofile вместо require - результат тот же, а либа каждый раз будет читаться из файла без кеширования
  8. Мда) Додуматься до этого было бы непросто. Спасибо!
  9. Сбрасывать кеш надо перед require('numbers'): package.loaded['numbers'] = nil что-то там = require('numbers')
  10. @ProgramCrafter Содержимое библиотеки изначально: Добавляем строку в /lib/package.lua: Сохраняем и меняем библиотеку(меняем точку на 15): Сохраняем, запускаем изначальный код который юзает библиотеку: Результат тот же Я это все делаю в Ocelot эмуляторе, но не думаю что это влияет как то
  11. Кстати, раз уж речь про магазин приложений - а можно фичу, чтобы не отрисовывать иконки приложений, а просматривать всё в виде списка? А то лагает просто ужасно.
  12. Вроде бы лучше библиотеки складывать в /usr/lib/<name>.lua, но это так, просто для красоты. Новые тоже. Офнуть проблематично, для этого надо (и надо бы, кстати) переписать require. А выбросить библиотеку из кеша можно так: package.loaded[<name>] = nil
  13. Создал "библиотеку", положил в /lib/<name>.lua. Она работает. Изменил библиотеку, но изменения не учитываются при ее использовании после изменений. В документации нашел вот это: package это у нас библиотека для загрузки библиотек, понятно. Но "For unloading precached library, see package.loaded.", не очень понятное объяснение. В поле loaded лежит таблица с hardcoded стандартными либами. Я не понимаю, новые библиотеки тоже кешируются или только те что указаны? Если новые тоже кешируются, что вероятно, то как это офнуть?
  14. Приветствую вас. Этот пост я пишу, чтобы рассказать вам о своей разработке для мода OpenComputers: BetterBIOS Это специальная прошивка BIOS для EEPROM, позволяющая выбирать любое из подключенных устройств для загрузки. Для этого используется пользовательский псевдографический интерфейс, который поддерживается для всех уровней видеокарт и экранов (То есть интерфейс будет даже на видеокарте и/или экране первого уровня, при чём с обрезанными адресами, чтобы уместить имя устройства в экран). Так же, в этой прошивке есть своя система отображения ошибок, показывающая весь "traceback" за исключением не нужных пунктов внутри самой прошивки. Это будет очень полезно для разработчиков собственных операционных систем, ведь данная прошивка подскажет места, в которых возникла ошибка, в то время как стандартная прошивка молчит как партизан. Если доступных для загрузки устройств больше, чем одно - то при включении компьютера, пользователю предлагается выбрать одно из них. Если такое устройство только одно - загрузка начнётся незамедлительно. Подключение устройств для загрузки происходит динамически, "на лету", прямо во время выбора устройства. То же самое с экранами и видеокартами. Так же, данная прошивка имеет приоритеты на выбор экрана: первым делом она пытается подключить тот экран, у которого есть клавиатуры поблизости. Если таковых не имеется - использует любой другой. Видеокарту прошивка использует максимального уровня. Прошивка защищена от критических сбоев при резком извлечении устройств, пока программа работает с файлами на них. Это делает данную прошивку практически не убиваемой, и позволяет избегать любых несчастных случаев при работе с компьютером. Я просто параноик, иначе сделать не мог... Данная прошивка поддерживает стандартную операционную систему OpenOS, для работы которой требуются функции computer.setBootAddress и computer.getBootAddress. Если вы хотите использовать данную прошивку, но не хотите мусорить в глобальных переменных этими рудиментами - просто вырежьте эти функции, сделать это несложно, ниже будут ссылки на исходники. Несмотря на весь этот функционал и продуманность, в минимизированном виде данная прошивка помещается на EEPROM, стандартная ёмкость которого - 4096 символов. Вы можете изучить исходный код данной прошивки, и использовать некоторые приёмы оттуда для своих проектов. К сожалению, код не очень хорошо читаемый, но это обусловлено тем, что я писал заранее с расчётом на то, что подробный код будет минимизирован, а минимизаторов кода недостаточно, нужно ещё и грамотно написать код. Исходный код: https://codeberg.org/KeyTwoZero/BetterBIOS/src/branch/main (Я ещё делал репозиторий на GitHub, но чёт я его забросил... Мне он не нравится) Спасибо за внимание. Если у вас есть какие-то идеи, как можно улучшить или ухудшить данную прошивку - пишите здесь, или как-нибудь вычислите меня, постараюсь подумать, и может быть, даже обновлю код, сделав его лучше для вас.
  15. Ну и ну, ОСи почти семь лет, а она продолжает обновляться!
  16. Если сопряжение с МЕ сетью прекращено, то разумно прекратить выполнение программы с ней работающей. Вылавливать же все возникающие ошибки при обращении к методам работающим с ней дело неблагодарное. Если же критически важно чтобы программа продолжала работать в любом случае, то можно осуществлять не выход, а переход к ожиданию восстановления подключения к МЕ сети. Что-то вроде if not value_name then waiting_for_ME_up) ---и что-то вроде такого в самом ожидании --------------- waiting for_ME_up() while math.huge do if component.isAvailable("me_interface") then return true else os.sleep(0.05) end end --------------- then waiting_for_ME_connect() плюс сам этот цикл ожидания МЕ). Но делать такие вкладки в код программы придется во всех местах, где происходит обращение к таблице содержащей методы работы с оной.
  17. Последняя неделя
  18. Зараза! Ну, тогда только ручная растеризация символов, да. Я от недалекого ума эту фичу напрямую через двумерные таблички реализовал. Может, у тебя получится более грамотное решение https://github.com/IgorTimofeev/MineOS/blob/master/Libraries/BigLetters.lua
  19. @ECS спасибо за ответ. My bad я не до конца написал что хочу. Большой текст должен находиться на одном экране с текстом поменьше. В центре что то вроде счетчика и сбоку кнопочки и обычный текст. https://prnt.sc/-4Lfi8jY5bSP
  20. local event = require("event") local unicode = require("unicode") local component = require("component") local screen = component.screen local gpu = component.gpu -- Отображаемый текст local text = "Hehe u cute" -- Разрешение по высоте, на основе которого будет подобрана "идеальная" ширина -- Т.к. строка всего одна, она как раз займет 1/3 высоты экрана local height = 3 -- Получаем компоновку мульти-блочного экрана и его пиксельную пропорцию -- Инфа по формуле, если интересно: https://computercraft.ru/topic/2413-kak-ubrat-chyornye-polosy-po-krayam-ekrana-opencomputers/ local aspectWidth, aspectHeight = screen.getAspectRatio() local proportion = 2 * (16 * aspectWidth - 4.5) / (16 * aspectHeight - 4.5) -- Рассчитываем разрешение по ширине на основе высоты и пропорции local width = math.floor(height * proportion) -- Чистим экран gpu.setResolution(width, height) gpu.setBackground(0x220000) gpu.setForeground(0xFFFFFF) gpu.fill(1, 1, width, height, " ") -- Рисуем текст по центру gpu.set(math.ceil(width / 2 - unicode.len(text) / 2), math.ceil(height / 2), text) -- Ждем интерактива от юзера while event.pull() ~= "touch" do end
  21. Мне нужно нарисовать текст(не статический) размером 1\3 высоты экрана. Как бы это лучше всего реализовать? Есть идея построчно рисовать ASCII символами, но решил спросить тут. Должны быть варианты получше.
  22. Небольшой апдейт для ОС: Добавлено приложение Events, работающее по аналогии с OpenOS'евским dmesg Добавлена возможность установки event.interruptingFunction для пользовательской обработки прерываний по ctrl + alt + c Добавлена возможность установки кастомных кодов клавиш вместо ctrl + alt + c Добавлена поддержка precise режима для мониторов без форсированной установки этого режима на false Для магазина приложений добавлена поддержка иконок с разрешением < 8x4 пикселей Исправлен краш проводника при скроллинге в пустых директориях Оптимизирован экранный буфер для прямых вызовов к GPU через invoke без проксирования компонента, что чуть-чуть повышает скорость отрисовки И для местной прошивки EEPROM: Добавлена фича URL boot для выполнения пользовательских скриптов Добавлена поддержка авто-привязки к монитору при его подключении и отключении Добавлено ожидание появления "приемлемой" файловой системы в компьютере с соотв. оповещением, если при включении компьютера она не была обнаружена
  23. Не понимаю, о чём здесь идёт речь. Что придётся написать? Чтобы Какую программу запустить? Почему 1? Кто пишет, что /home ждёт команду? Что значит, указал код в edit 1? Я не работал конкретно с МЭ-сетью и не знаю всех нюансов. Поэтому предлагаю варианты, что с этим вообще можно сделать. Придётся ли удалить эту строку? Если она не нужна, то можно удалить. Если она нужна, то можно добавить условие на выполнение этой строки. А может, не только этой. Это возможные варианты. Или ты просишь выбрать лучший вариант? Можно убрать ошибку, которую выдаёт Lua, но это не значит, что программа после этого будет работать правильно. Выбор осуществляет автор программы, исходя из предпочитаемой им логики действий. А какова логика? Попробуем разобраться. Например, каков смысл строк 186 и 191, в которых проявилась проблема? Что они делают?
  24. @eu_tomat а то что указали со строкой 191 вообще не понятно придется удалит эту строку или как быть что бы вообще не было таких проблем с meltem
  25. @eu_tomat c этим кодом вообще не выдает ошибку но придется написать например 1 что бы запустить саму программу пишет так /home ждет команду(например я указал этот код в edit 1,ждет что бы я указал 1 что бы запустилась)как быть? if meItem and meItem[1] and not meItem[1].isCraftable then
  26. А в строке 191 у нас такой код: displayTable[itemIndex].currentValue = meItem[1].size Значит, вероятнее всего, проблема, в meItem или meItem[1], и эта строка в случае несуществующей таблицы не имеет смысла. Если требуется исправить быстро, то для выполнения этой строки также надо добавить условие проверки таблицы. Но, скорее всего, по условию должна выполняться не только эта строка, но целый блок кода. Какой именно, надо уже разбираться в логике работы программы. Иначе та же ошибка где-нибудь ещё вылезет.
  27. @serafim проблема какраз в отключение мэ контроллера как указал
  1. Загрузить больше активности
×
×
  • Создать...