Вся активность
Этот поток обновляется автоматически
- Последняя неделя
-
-
Выкладываю свой вариант программы под 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
-
Дубль. Какой из них лишний?
-
xdevster подписался на Нужен конвертатор с OCIF4
-
Вообщем в последнем конвертаторе нету OCIF4 ток 5-6-7 ну и 8 но мне надо иммено 4 у кого-то остался конвертатор с потдержкой OCIF4 просто всё перерыл но так и не нашёл
- Ранее
-
@Doob Привет! Слушай не мог бы ты помочь с командами а именно как правильно вписывать (breake,place и тд)
-
@Doob Спасибо большое!
-
Установить библиотеку для активации документации, в документации есть вся нужная информация. Вот пример оттуда. 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
- 3 ответа
-
- 2
-
-
-
Нужна помощь с движением робота в моде Nora Robotics / Robotized (Minecraft 1.20.1, Lua)(я пытался заставить его двигаться, разными способами( а именно как дрон из open computer и как черппшку из cc:tweaked)
-
Собственно, это и требуется для описания. А не абьюз, которого нет.
-
Микроконтроллер используется исключительно для воспроизведения beep звука, а обычный компьютер, который обладает соответствующей библиотекой, распределяет все эти beep по микроконтроллерам, чтоб самому работать во время воспроизведения звука. Не на каждом сервере стоит мод для звуковой карты.
-
Абьюз микроконтроллеров для computer.beep Комплектация микроконтроллеров должна содержать любую сетевую карту и достаточно ОЗУ, чтобы открыть порт, а EPPROM должен быть прошит файлом microBeep.lua. Исполняющий библиотеку компьютер так же должен быть в состоянии открыть порт и отправить сообщение. В файле beeptest.lua демонстрируется работа. Сначала задаём порт (По умолчанию 255), потом задаём массив: первые 3 символа адресов сетевых карт наших микроконтроллеров, а далее update() для актуализации информации в библиотеке. Далее — просто beep, как в обычном computer.beep. Внутри оно просто распределяет и определяет, занят ли микроконтроллер, если да — ищет другой. Не находит — звук не воспроизводится и возвращается false. beeplib.luabeeptest.luamicroBeep.lua
-
Здравствуйте! Хочу сообщить, что я вернулся к работе над моим проектом и успел внести некоторые улучшения в алгоритм движения робота. У меня готов новый вариант кода, который: Сокращает количество поворотов — робот больше не делает лишние движения направо-налево для проверки пространства Оптимизирует процесс — алгоритм стал более эффективным и компактным по сравнению с предыдущей версией Однако важно отметить, что новая версия имеет определённое ограничение: поскольку алгоритм больше не использует правило правой руки, могут возникнуть сложности с прохождением некоторых типов лабиринтов. Существует вероятность зацикливания в определённых конфигурациях лабиринта. Я подготовил обновлённый код и готов поделиться им с вами для тестирования и обсуждения возможных решений по устранению проблемы с зацикливанием. С уважением, [Фарадей] Новый код: 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 Установить можно так же, как в инструкции выше.
-
На самом деле странно, так как без использования цикла оно должно отрабатывать только один раз, суть то простая - ждём пока изменится сигнал редстоуна (через os.pullEvent), читаем значения, всё. Перепроверил сейчас внутри майнкрафта, всё работает, да и по идее не может оно не работать при простом добавлении цикла. оно ошибки не выдавало никакие?
-
Я пока только начал работать с 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 я нашёл в инете, поэтому пока не совсем понимаю, как он работает, но с обычными сундуками он выдавал информацию хоть какую-то. Смиренно прошу помощи в понимании.
-
Вы не знаете, как посмотреть из-за какого игрока взорвался крипер?
-
получилось так но со строчкой while true do не работает лампочка загорается
-
Да теперь он показывает 1 и 0 но как мне это встроить в мой код? или как правильно должен выглядеть этот код
-
Возможно, я открыл кривую документацию. Сам я сейчас далеко от Майнкрафта, поэтмоу проверять не буду. Я, кажется, понял. Если whitein является числом, то такое сравнение некорректно. Убери кавычки от единицы.
-
документация к cc tweaked говорит что оно таки возвращает число, но если оно работает в "режиме луа" (я так понимаю имеется ввиду repl), но не работает само по себе - дело может быть не в возвращаемых значениях. Думаю в данном случае стоит проверить вот такой вариант: while true do os.pullEvent("redstone") print(rs.getBundledInput("back", colors.white)) end
-
А я пока не знаю, что там у тебя происходит. Попробуем двигаться малыми шагами. Как ты выполняешь проверку в режиме Lua?
-
Не неработает. Я вообще незнаю что делать
-
Если моё понимание документации верно, следует заменить строку if whitein == "1" then на if whitein then.
-
а что мне тогда делать?
-
Думаю, ошибка в этой строке. Если верить документации, rs.getBundledInput("back", colors.white) возвращает булево значение, а не числовое.
