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

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

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

  1. Последняя неделя
  2. Выкладываю свой вариант программы под eeprom. local function clear_screen() gpu.fill(1, 1, 50, 16, " ") end local function proxy(c) local ad = component.list(c)() if ad then return component.proxy(ad) else error(string.format("Component: %s, is not found!", c)) end end gpu = proxy("gpu") gpu.bind(component.list("screen")(), true) gpu.setResolution(50, 16) clear_screen() --------------- Константы ---------------- local chamber_component = proxy("reactor_chamber") local redstone_component = proxy("redstone") local me_interface = proxy("me_interface") local temperature_controll = true local max_heat_reactor = 9500 local soft_sleep = 0.1 local redstone_side_output = 1 local reactor_enable_status = true computer.addUser("nickname") local reactor_scheme = { ["rod_slots"] = { 1, 3, 4, 6, 7, 8, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 26, 29, 30, 31, 32 ,34 ,35 , 36, 37,38, 40, 41 ,42 ,43, 45,47,48,49,51,52,54 }, ["LZH_slots"] = { 2, 5, 9, 11, 16, 22, 27, 28, 33, 39, 44, 46, 50, 53 } } --------------- Константы ---------------- local function redstone_toggle(enable_status) redstone_component.setOutput(redstone_side_output, enable_status == "OFF" and 0 or 15) end local function sleep(timeout) local deadline = computer.uptime() + (timeout or math.huge) repeat computer.pullSignal(deadline - computer.uptime()) until computer.uptime() >= deadline end function error_handle(text) clear_screen() gpu.set(1, 8, text) while true do computer.beep(500, 1) if reactor_enable_status or chamber_component.isActive() then redstone_toggle("OFF") reactor_enable_status = false end while true do sleep(0.2) computer.beep(1000, 1) local s = { computer.pullSignal(0) } if s and s[3] == 57 then break end end end end local function draw_status(msg) gpu.fill(1, 1, 50, 15, "*") gpu.set(1, 8, msg) end local function replace_item(chamber_slots, slots_scheme, take_slot, dmg, id) for _, i in pairs(slots_scheme) do if not chamber_slots[i] or chamber_slots[i].dmg >= dmg and chamber_slots[i].id == id then if reactor_enable_status then redstone_toggle("OFF") reactor_enable_status = false -- продвинутый сон while chamber_component.isActive() do sleep(0.1) end end if not me_interface.pullItem("DOWN", i) and chamber_slots[i] then error_handle("ME is FULL") else ::try_again:: local s, e = pcall(me_interface.pushItemIntoSlot, "DOWN", take_slot, 1, i) if not s then error_handle(e) elseif type(e) == "number" and e == 0 and not chamber_component.getStackInSlot(i) then draw_status("ITEM ENDED, try_again") computer.beep(500, 0.1) goto try_again else draw_status("REPLACE ITEMS") end end end end if not reactor_enable_status then redstone_toggle("ON") reactor_enable_status = true draw_status("RK WORK") end end do computer.beep(666, 0.2) while true do sleep(soft_sleep) local s = { computer.pullSignal(0) } if s and s[3] == 48 then redstone_toggle("OFF") clear_screen() gpu.set(1, 8, "RK OFF") while true do sleep(0.2) computer.beep(1000, 1) local s = { computer.pullSignal(0) } if s and s[3] == 57 then draw_status("RK WORK") redstone_toggle("ON") break end end end if chamber_component.getHeat() > max_heat_reactor and temperature_controll then error_handle("REACTOR TEMP OVERHEAT") end local s, chamber_slots = pcall(chamber_component.getAllStacks, false) if not s then error_handle(chamber_slots) end replace_item(chamber_slots, reactor_scheme["LZH_slots"], 4, 8700, "IC2:reactorCondensatorLap") replace_item(chamber_slots, reactor_scheme["rod_slots"], 3, 0, "IC2:reactorUraniumQuaddepleted") end end
  3. Дубль. Какой из них лишний?
  4. Вообщем в последнем конвертаторе нету OCIF4 ток 5-6-7 ну и 8 но мне надо иммено 4 у кого-то остался конвертатор с потдержкой OCIF4 просто всё перерыл но так и не нашёл
  5. Ранее
  6. @Doob Привет! Слушай не мог бы ты помочь с командами а именно как правильно вписывать (breake,place и тд)
  7. Установить библиотеку для активации документации, в документации есть вся нужная информация. Вот пример оттуда. while true do if robot_commands.amount() > 1 then robot_commands.remove(1) end robot_commands.add("stay", "-1 56 10") sleep(20) robot_commands.remove(1) robot_commands.add("stay", "10 56 10") sleep(120) end
  8. Нужна помощь с движением робота в моде Nora Robotics / Robotized (Minecraft 1.20.1, Lua)(я пытался заставить его двигаться, разными способами( а именно как дрон из open computer и как черппшку из cc:tweaked)
  9. eu_tomat

    beeplib

    Собственно, это и требуется для описания. А не абьюз, которого нет.
  10. Oleshe

    beeplib

    Микроконтроллер используется исключительно для воспроизведения beep звука, а обычный компьютер, который обладает соответствующей библиотекой, распределяет все эти beep по микроконтроллерам, чтоб самому работать во время воспроизведения звука. Не на каждом сервере стоит мод для звуковой карты.
  11. Oleshe

    beeplib

    Абьюз микроконтроллеров для computer.beep Комплектация микроконтроллеров должна содержать любую сетевую карту и достаточно ОЗУ, чтобы открыть порт, а EPPROM должен быть прошит файлом microBeep.lua. Исполняющий библиотеку компьютер так же должен быть в состоянии открыть порт и отправить сообщение. В файле beeptest.lua демонстрируется работа. Сначала задаём порт (По умолчанию 255), потом задаём массив: первые 3 символа адресов сетевых карт наших микроконтроллеров, а далее update() для актуализации информации в библиотеке. Далее — просто beep, как в обычном computer.beep. Внутри оно просто распределяет и определяет, занят ли микроконтроллер, если да — ищет другой. Не находит — звук не воспроизводится и возвращается false. beeplib.luabeeptest.luamicroBeep.lua
  12. Здравствуйте! Хочу сообщить, что я вернулся к работе над моим проектом и успел внести некоторые улучшения в алгоритм движения робота. У меня готов новый вариант кода, который: Сокращает количество поворотов — робот больше не делает лишние движения направо-налево для проверки пространства Оптимизирует процесс — алгоритм стал более эффективным и компактным по сравнению с предыдущей версией Однако важно отметить, что новая версия имеет определённое ограничение: поскольку алгоритм больше не использует правило правой руки, могут возникнуть сложности с прохождением некоторых типов лабиринтов. Существует вероятность зацикливания в определённых конфигурациях лабиринта. Я подготовил обновлённый код и готов поделиться им с вами для тестирования и обсуждения возможных решений по устранению проблемы с зацикливанием. С уважением, [Фарадей] Новый код: local robot = require("robot") while true do -- Основной цикл с пошаговым движением if not robot.detect() then -- Двигаться вперед, если нет препятствия robot.forward() else -- Если впереди стена - использовать стратегию правой руки robot.turnRight() while robot.detect() do -- Поворачивать налево, пока не найдется проход robot.turnLeft() end -- Когда проход найден - двигаться в этом направлении robot.forward() end os.sleep(0.2) end Установить можно так же, как в инструкции выше.
  13. На самом деле странно, так как без использования цикла оно должно отрабатывать только один раз, суть то простая - ждём пока изменится сигнал редстоуна (через os.pullEvent), читаем значения, всё. Перепроверил сейчас внутри майнкрафта, всё работает, да и по идее не может оно не работать при простом добавлении цикла. оно ошибки не выдавало никакие?
  14. Я пока только начал работать с CC, но моей основной целью было создание автокрафта на черепашке. Я отказался использовать для хранения сундуки, поэтому решил использовать Storage Drawers. И тут я столкнулся с такой проблемой, что компютер не выводит данные с дроверов. Я могу положить туда предметы, но когда я пытаюсь получить хотя бы список предметов (пытался получить список даже из дровера вплотную к компьютеру), то ничего не получал. local ch0 = peripheral.wrap("minecraft:chest_0") local Adr = peripheral.wrap("storagedrawers:standard_drawers_1_3") local ch1 = peripheral.wrap("minecraft:chest_1") local chN = peripheral.getName(ch1) local dr1 = peripheral.wrap("right") --for i,v in ipairs(peripheral.getMethods("storagedrawers:controller_3")) do -- print(i.. " "..v) --end for i, item in ipairs(dr1.list()) do for k,v in pairs(item) do print(i,k,v) end end вот этот простенький код. Каюсь цикл с ipairs я нашёл в инете, поэтому пока не совсем понимаю, как он работает, но с обычными сундуками он выдавал информацию хоть какую-то. Смиренно прошу помощи в понимании.
  15. Вы не знаете, как посмотреть из-за какого игрока взорвался крипер?
  16. получилось так но со строчкой while true do не работает лампочка загорается
  17. Да теперь он показывает 1 и 0 но как мне это встроить в мой код? или как правильно должен выглядеть этот код
  18. Возможно, я открыл кривую документацию. Сам я сейчас далеко от Майнкрафта, поэтмоу проверять не буду. Я, кажется, понял. Если whitein является числом, то такое сравнение некорректно. Убери кавычки от единицы.
  19. документация к cc tweaked говорит что оно таки возвращает число, но если оно работает в "режиме луа" (я так понимаю имеется ввиду repl), но не работает само по себе - дело может быть не в возвращаемых значениях. Думаю в данном случае стоит проверить вот такой вариант: while true do os.pullEvent("redstone") print(rs.getBundledInput("back", colors.white)) end
  20. А я пока не знаю, что там у тебя происходит. Попробуем двигаться малыми шагами. Как ты выполняешь проверку в режиме Lua?
  21. Не неработает. Я вообще незнаю что делать
  22. Если моё понимание документации верно, следует заменить строку if whitein == "1" then на if whitein then.
  23. Думаю, ошибка в этой строке. Если верить документации, rs.getBundledInput("back", colors.white) возвращает булево значение, а не числовое.
  1. Загрузить больше активности
×
×
  • Создать...