Premier_Prince 3 Опубликовано: 22 марта, 2020 Доброго времени суток, прекрасные обитатели сия форума. В компах полный профан, но нужна помощь. Описание: Требуется программа, имеющая две кнопки, при нажатии на которые они загораются и посылают сигнал сверху и снизу относительно системного блока. Пытался написать сам, но все встало(( Награда: Огромное человеческое спасибо! Установка: Тут, видимо, комплектующие. Только OpenComputer на версию 1.7.10. OpenOs 1.7.5 Требования: Срабатывание редстоун сигнала после нажатия кнопки с возможностью отключения при повторном нажатии. Связь: Здесь) Еще раз огромное спасибо, если кто-то найдется помочь с этим Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 24 марта, 2020 local event = require("event") local component = require("component") local unicode = require("unicode") local gpu = component.gpu local red = component.isAvailable("restone") and component.redstone or error("Redstone component is unavailable") local floor = math.floor local TOP = 1 local BOTTOM = 0 local SignalTop, SignalBottom local Buttons = {} local function CreateButton(x, y, w, h, bgc, fgc, text, callback) local obgc = gpu.getBackground() local ofgc = gpu.getForeground() gpu.setBackground(bgc) gpu.setForeground(fgc) gpu.fill(x, y, w, h, " ") gpu.set(floor(x+(w/2)-unicode.len(text)/2), floor(y+h/2, text), text) table.insert(Buttons, { xmi = x, ymi = y, xma = x+w, yma = y+h, cb = callback }) gpu.setBackground(obgc) gpu.setForeground(ofgc) end local function CheckButtonPress(x, y) for _, button in ipairs(Buttons) do if (x>=button.xmi) and (x<=button.xma) then if (y>=button.ymi) and (y<=button.yma) then button.cb(x, y) end end end end local ScrW, ScrH = gpu.getResolution() CreateButton(floor(ScrW/6), floor(ScrH/2), 18, 3, 0x646464, 0xbebebe, "Top", function() SignalTop = not SignalTop red.setOutput(TOP, SignalTop and 15 or 0) end) CreateButton(ScrW - floor(ScrW/6) - 18, floor(ScrH/2), 18, 3, 0x646464, 0xbebebe, "Bottom", function() SignalBottom = not SignalBottom red.setOutput(BOTTOM, SignalBottom and 15 or 0) end) while true do local _, _, x, y = event.pull("touch") CheckButtonPress(x, y) end Нуу.... Должно работать, наверное... 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 24 марта, 2020 В 24.03.2020 в 12:05, Alex сказал: в смысле должно? не проверял. Скрина нет? слишком лень качать майнкрафт, запускал на OCEmu, интерфейс отрисовывается, логика работает, а вот как будет работать редстоун в игре - не знаю)( Скрытый текст две кнопки имеются)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 24 марта, 2020 @Asummonster и кстати, для той задачи, которая в заказе для управления рэдом в чужом привате, лучше было бы, имхо не кнопки "светящиеся" хотеть заказчику две штуки, которые работают в режиме вкл/выклк (типа отключение рэда при повторном нажатии он хотел), а строки с чекбаксами Типа так: [x] - реактор [x] - дверь [ ] - люк ... Это сделает гуи проще визуально понятнее, и програмка будет более масштабируемая для любых задач (если рэд. сигнал подавать редстон-камнями ОС) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Premier_Prince Автор темы 3 Опубликовано: 24 марта, 2020 (изменено) 18 минут назад, Asummonster сказал: слишком лень качать майнкрафт, запускал на OCEmu, интерфейс отрисовывается, логика работает, а вот как будет работать редстоун в игре - не знаю)(две кнопки имеются)) Огромное человеческое спасибо! Все работает! Изменено 24 марта, 2020 пользователем Alex сокращение цитаты 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 24 марта, 2020 1 минуту назад, Premier_Prince сказал: Огромное человеческое спасибо! Все работает! рекомендую тебе убрать клавиатуру после запуска программы, так как я не делал защиты от интерруптов и кто-то в твоём привате сможет прервать выполнение программы и что-то сделать с твоим компом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
serafim 272 Опубликовано: 4 июля, 2020 (изменено) Для одного проекта потребовалось управлять контроллером красного камня со всех сторон, к этой проге добавил кнопок на остальные стороны https://pastebin.com/7HTacede Скрытый текст Изменено 4 июля, 2020 пользователем serafim 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах