logic
Пользователи-
Публикации
287 -
Зарегистрирован
-
Посещение
-
Победитель дней
13
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя logic
-
круто, малодец, вот только небольшой совеи, используй _ только в ситуации когда тебе ненужна переменная, а когда нужно передать nil так и пиши nil, так как когда ты пишиш _ = 1 имя _ резервируеться, и там уде будет отнуть не nil, я один раз довно на этом пракололся, причем самле забавное что в точно такой же софтине, тоесть если ты напишиш _ = 5 print(1, _, 7) то вывод будет 1 5 7, я конечьно понимаю что за столько времени ты уже наверника с этим разобрался, но хоть навичькам помогу
-
простите меня за то я пролил на это чудное творения кучу хейта в прошлый раз, я был глуп, и мне очень стыдно и я извеняюсь, а со второго взгляда, могу сказать что софт этот мне очень нравиться, это довольно удобно закинул в накавальну и все, и я даже сделаю свой вариант, да еще и с поддержкой дронов(вдруг ее тут нет), вот только есть один маленький вопрос, а сокрашенные движения робота делают проверку на столкновения?
-
круто, мне нравиться, вот только хотелось бы выбрать диск один раз и чтоб выбор не постаянно появлялся, а еще хотелось бы разные звуки на подключения и удаления файловрй системмы(ну это я уже так, придераюсь), а чтобы решить проблемму с свободным местом, можеш юзать софтину bpacker(да простят меня админы за упаменания левого софта в чужой теме)
- 26 ответов
-
- 1
-
-
- operating system
- opencomputers
- (и ещё 2 )
-
вот еще бажочек, текст немного сдвинут вверх и влево, что сильно бросается в глаза на t2 тире
-
вот еще один баг, ты не откатываешь изменения внесенные в палитру, на третях мониторах ты потеряешь пару оттенков серого что в целом нестрашно, и если бы ты не поддерживал мониторы второго уровня это не было бы так серьезно, но так как в коде у тебя есть упоминания планшетов, я могу с уверенностью сказать что биос создавался для использования в том числе и на мониторах второго уровня, а так последствия от такой смены палитры довольно серьезные, и многие gui программы могут сильно исказиться, так как в палитре просто не будет нужных цветов
-
ну ладно... но у меня без кэшированный сжатия белее эффективное, хз наверное мы юзаем разные алгоритмы сжатия
-
небольшой бажок в установщике для openOS, если загрузиться с lua bios сменить чип и попытаться поставить этот биос вылетит ошибка(хотя чип и прошьётся, не не примениться read only, не напишет seccess, и не предложит reboot), так как ты использовал метод computer.getBootAddress который нежелательно использовать после загрузки компьютера(мое субъективное мнения), это ошибка актуальная для смены lua bios/micro bios/и самого Cyan Bios а так же для всех биосов где computer.getBootAddress просто алиас к eeprom.getData, однако например при загрузке через smart efi и последующий смены чипа с попыткой прошивки Cyan Bios ошибки не последует так как так computer.getBootAddress там реализован иначе, сделай такой код: local bootaddress = fs.get("/").address if computer.getBootAddress then local ok, result = pcall(computer.getBootAddress) if result then bootaddress = result end end eeprom.setData(bootaddress), и проблема исчезнет
-
там 2 способа установки 1) на чистый диск, 2) на готового робота в OpenOS причем так чтобы OpenOS тоже работала, первый перепрошивки eeprom не требует сгодиться обычный lua bios второй требует
-
ну.... я думал это и так понятно
-
вставляешь диск в комп переходишь туда кода он смонтирован и водишь одну команду ВСЕ
-
лол шить eeprom необязательно, это чтобы сделать dualboot roboOS и openOS
-
нет пароль не солю хотя стоило бы но вот 30 байт свободного места которых даже не хватило на переключения архитектуры так не считают, а hesh функцию можеш посмотреть в исходнике https://raw.githubusercontent.com/igorkll/topBiosV5/main/microBios.lua
-
изначально разрабатывалась под eeprom от сюда и фичи boot to external os и много плохого кода ос была портирована на скорую руку так что извините и зарепортире если работы вдруг окажется нестабильной о любых бага просьба репортить в тему функционал установка привата на робота (ака useradd) настройка автозагрузки установка одной из 2 предустановленных тем скачивания программ по url показ документации к программам перемежения/копирования/переименования программ запуск программ установка ос на диск установка с робота: перейдите в тему мода для openOS() и откройте dev устоновшик, и устоновите им micro bios, затем введите на роботе команду: mkdir /boot/kernel; wget https://raw.githubusercontent.com/igorkll/roboOS/main/source.lua /boot/kernel/roboOS -f затем переключите ос, для этого при загрузке micro bios нажмите alt найтите диск робота и выберите /boot/kernel/roboOS установка с компьютера: устоновите диск будушего и разобраного робота в компьютер перейдите туда куда ом смонтирован (обычьно /mnt/xxx (где xxx первые три буквы uuid диска)) а зачем введите команду wget https://raw.githubusercontent.com/igorkll/roboOS/main/source.lua init.lua пример программы для данной ос(круговая копалка) local robot = component.proxy(component.list("robot")()) if gui then gui.status("to exit press ctrl+c") end local sides = { bottom = 0, top = 1, back = 2, front = 3, right = 4, left = 5, unknown = 6, down = 0, up = 1, north = 2, south = 3, west = 4, east = 5, negy = 0, posy = 1, negz = 2, posz = 3, negx = 4, posx = 5, forward = 3 } local damegeWait = 0.5 ----------------------------------------------- local function interrupt(time) local e = {computer.pullSignal(time or 0.1)} if e[1] == "key_down" and e[3] == 3 and e[4] == 46 then error("terminated", 0) end end local function delay(time) local inTime = computer.uptime() while computer.uptime() - inTime < time do interrupt(time - (computer.uptime() - inTime)) end end local oldInterruptTime = computer.uptime() local function interruptTimer() if computer.uptime() - oldInterruptTime > 1 then interrupt() oldInterruptTime = computer.uptime() end end ----------------------------------------------- local function wait(event) while not event() do interruptTimer() end end local function move(side, swing, dmg) while true do interruptTimer() local detectOk, detectOut, detectType = pcall(robot.detect, side) if not detectOk or not detectOut then if robot.move(side) then break end else if swing and (dmg or detectType ~= "entity") then robot.swing(side) if damegeWait and detectType == "entity" then delay(damegeWait) end end end end end local function swing(side, dmg) local swingCount, detectOut, detectType = 0, nil, nil while true do interruptTimer() swingCount = swingCount + 1 detectOut, detectType = robot.detect(side) if detectType == "liquid" or detectType == "air" then break elseif detectType == "entity" then if not dmg then break end if not robot.swing(side) then break end delay(damegeWait) if swingCount >= 16 then break end else if not robot.swing(side) then break end if swingCount >= 4 then break end end end end local function waitEntity(side) while select(2, robot.detect(side)) == "entity" do interruptTimer() end end ----------------------------------------------- local size = 1 while true do for i = 1, 2 do for i2 = 1, size do swing(sides.up, true) swing(sides.down, true) move(sides.forward, true, true) end robot.turn(false) end size = size + 1 end демо программа демонстрирующая работу gui local docs = {[0] = "TUT OSNOVNA DOCA A UNICODE NE PODDERHITICA POTOMU CHE EKONOMIL BYTES FOR EEPROM"} local strs = {} local funcs = {} table.insert(strs, "null") table.insert(docs, "null menu point") table.insert(funcs, false) table.insert(strs, "yesno") table.insert(docs, "yesno gui element") table.insert(funcs, function() if gui.yesno("shutdown?") then computer.shutdown() end end) table.insert(strs, "yesno") table.insert(docs, "yesno gui element") table.insert(funcs, function() if gui.yesno("shutdown?") then computer.shutdown() end end) table.insert(strs, "read") table.insert(docs, "input") table.insert(funcs, function() local data = gui.read("press ctrl+c to cancel") if data then gui.warn("msg: " .. data) end end) for i = 100, 2000, 100 do table.insert(strs, tostring(i)) table.insert(docs, "test doc for menu point " .. tostring(i)) table.insert(funcs, function() computer.beep(i, 0.1) end) end gui.setData("gui test", docs, strs) local num, scroll = 1, 0 while true do num, scroll = gui.menu(num, scroll) if funcs[num] then funcs[num]() else gui.warn("is null menu point") end end документация для пользователей программы могут располагаться на любых дисках и дискетах, автозагрузка привязывается к конкретному диску и ссылается на конкретный файл а ссылка лежит на диск с установленной автозагрузкой в /roboOS/autorun.cfg настройки ос храниться в /roboOS/settings.cfg на системном диске такая система позволяет легко поставить на робота одну автозагрузочную программу а на дискету другую, причем информация о том какая программа автозагрузочная лежит на диске а не в системе, PS если хотите создать автозагрузочную дискету то создайте на ней файл /roboOS/autorun.cfg а в нем ссылка не файл на этой же дискете, например /roboOS/programs/karer/main.lua каждая программа имеет свою папку в /roboOS/programs там должен находиться файл main.lua а так же может находиться файл doc.txt с небольшим описаниям обратите внимания что при скачивании программы по url будет скачан только файл main.lua однако при входе вы сможете скачать все необходимые файлы в программу первым аргументом передаться табличка с некими данными о этой программе а конкретнее имеет в себе 2 ключа fs proxy файловой системы от куда произошёл запуск программы и file с путем до главного файла этой программы по у автозагрузки приоритет на внешние диски при запуске автозагрузочного файла у вас есть секунда на то чтобы отменить запуск и сразу попасть в меню для этого необходимо нажать alt
-
укажи в теме пожалуйста что на первых мониторах не работает а то я они комп так ухандохал, конечно на lua биос потом обратно поменял но все равно неприятненько
-
могу сделать, но не за безплатно, в роботе не gpu не screen не потребуеться, можно будет внешний хоть t3 подключить, интересует?
-
как пользоваться: для входа в меню bios нажмите alt при загрузке для установки пароля bios>password(текущий пароль)>set password вводите пароль два раза пароль можно выключить и он будет нужен только для входа в меню password он может блокировать меню или загрузку в цело пароль захеширован хоть и храниться в nbt, владельцы варпов могут быть спокойны также вы можете перезагрузить компьютер без появления надписи bios menu(computer.shutdown("fast")) или сразу в меню (computer.shutdown("bios")) если у вас стоит мод для openOS() то вы можете использовать reboot fast и reboot bios прямо в shell также из под функций присутствует: url boot (Internet>Url boot) возможность запуска openOS через интернет(Internet>openOSonline) так же биос умеет подгружать утилиты с github репозитория, которых в скором времени там будет много password возможность загрузки в разные файлы на одном диске например - openOS и mineOS что может быть непонятно: если вы вводите пароль а поле просто очищается значит вы ввели его неправильна если вы вводите в буквы не вводиться убедитесь что у вас включен английский язык если вы поставили пароль в он не подставился и не было окна pleas wait значит два пароля не совпадают примечания: поддерживаются все тиры железа обязательно установить архитектуру процессора в lua 5.3(начиная с новой версии биос меняет ее автоматически(как Cyan Bios)) начиная с новой версии загрузка в mineOS работать не будет, это проблема ос, так как она использует getData вместо getBootAddress, и я больше не собираюсь поддерживать этот костыль(поддержка mineOS была полностью удалена) команда для установки: wget https://raw.githubusercontent.com/igorkll/microBios/main/compressed.bin /tmp/bios.lua -f;echo "" > /dev/eeprom-data;flash /tmp/bios.lua microBios -q;echo "require('computer').setArchitecture('lua 5.3')" > "/tmp/architecture.lua" /tmp/architecture.lua;reboot
-
сейчас я работаю над своим новым биосом и там будет пароль который хоть и будет в eeprom data будет закеширован, так что пароль не такой уж и плахой вариант
-
от сам их скрафтит, если чегото не хватает
-
программа которая может сома крафтить предметы при установке мода для openOS не соглашайтесь на установку top bios v5.1 он делает программный read only и будет препятствовать своему удалению если хотите хороший БИОС установите мод dev установщиком от сюда wget https://raw.githubusercontent.com/igorkll/openOSpath/dev/bin/installer.lua /tmp/ins.lua -f; /tmp/ins.lua конфигурация робота контроллер инвентаря улучшения верстак два апгрейдя инвентарь(лучше больше) монитор, видеокарта и клавиатура интернет карта(для установки мода для openOS необходимого для запуска) чтобы скачать программу можно пойти двумя путями: скачать из магазина, скачиваем мод для openOS из соответствующий темы, затем зайти в market, виртуальным курсором навести на robotCraft нажать enter и скачать его скачать программу этой командой wget https://raw.githubusercontent.com/igorkll/appMarket3/main/robotCraft.lua /usr/bin/robotCraft.lua -f а она уже сома откроет установщик мода чтобы открыть программу просто введите в терминале robotCraft, если предлагает установить мод для openOS смело устанавливайте(без него не будет работать) управления в меню можно видеть зарегистрированные предметы а ниже подменю для осуществления различных действий для регистрации предметы выложите его крафт в верхнем левом углу инвентаря робота а результат крафта положите в четвертый слот и нажмите add меня give это продвинутый поиск предметов он скрафтит предмет если не сможет найти find в отличии от give умеет только искать но не крафтить при выборе предметы в главном меню предстанет выбор крафтить один или пока не вылезет какая-то ошибка(например закончатся ресурсы) выход из программы кнопкой exit или ctrl + alt + c(например если идет крафт)
-
component.filesystem.rename() перемешает папку/файл а потом удаляет старую это очень медленно, а как переименовать быстрой непонятно
-
почему после каждого действия откидывает в самое начало списка файлов? если бы не это отчичьная бы ос была бы
- 30 ответов
-
- opencomputers
- operating system
-
(и ещё 1 )
Теги:
-
начнем с того что программа идет в паре программа/загрузчик для программы необходимо создать отдельную папку и поместить туда саму программа и загрузчик(bootloader.lua) устоновка: https://raw.githubusercontent.com/igorkll/products/main/nFlash/bootloader.lua загрузчик https://raw.githubusercontent.com/igorkll/products/main/nFlash/main.lua сама программа что умеет данная прошивка eeprom? удаленное включить/выключить микроконтроллер узнать в каком он сейчас состоянии(вкл/выкл) удаленная перезагрузка удаленный запуск кода удаленная прошивка(обратите внимания что код имеющий синтаксическую ошибку не будет прошит) поиск устройств база данные хранения uuid модемов для обращения по кодовому имени как работать с базой данных? названия из базы можно использовать вместо полного uuid регистрация nFlash base register uuid(можно сокращенный, если модем установлен в компьютер) регистрация по сети, nFlash broadcast list; nFlash broadcast register "номер из списка" имя полная документация print("power control:") print("nFlash control registernameOrFulluuid power on") print("nFlash control registernameOrFulluuid power off") print("nFlash control registernameOrFulluuid power reboot") print("nFlash control registernameOrFulluuid power get") print("programm control:") print("nFlash control registernameOrFulluuid run path") print("nFlash control registernameOrFulluuid fastrun code") print("nFlash control registernameOrFulluuid flash path") print("base:") print("nFlash base list") print("nFlash base register uuid(если модем устоновлен в компьютер можно сократить uuid(для быстрой регистрации))") print("nFlash base remove") print("broadcast:") print("nFlash broadcast list(список сохраняться в оперативку для регистрации по номеру)") print("nFlash broadcast register number registerName(для начала требуеться проиндексировать устройства)") print("nFlash broadcast savedList(выводит предыдулий лист без поиска по сети)")
-
у моего софта уже давно есть устоновшик
