serafim
-
Публикации
367 -
Зарегистрирован
-
Посещение
-
Победитель дней
46
Сообщения, опубликованные пользователем serafim
-
-
В сундуке только коробки утильсырья ?
Как расположены сундуки вокруг робота?
-
При температуре 8500 образуется лава разрушающая всё вокруг, до этой температуры не сгорит, а вообще всё надо тестить
-
-
на экране 100% не будет отображаться, конденсаторы меняются при 97%
-
Всех с праздником !
Программа @Asior pastebin.com/bji2zXCq не плохая, но не имеет интерфейса.
В графике я не силен, но накидал простенькое отображение состояния конденсаторов и их замену.
тут шаблон отрисовки по координатам
Скрытый текстlocal comp = require('component') local gpu = comp.gpu gpu.setResolution(28,15) gpu.setBackground(0x000000) gpu.fill(1,1,28,15," ") gpu.setForeground(0x669999) gpu.set(1,1,"┌──────────────────────────┐") gpu.set(1,2,"│ │ │ │ │ │ │ │ │ │") gpu.set(1,3,"│──────────────────────────│") gpu.set(1,4,"│ │ │ │ │ │ │ │ │ │") gpu.set(1,5,"│──────────────────────────│") gpu.set(1,6,"│ │ │ │ │ │ │ │ │ │") gpu.set(1,7,"│──────────────────────────│") gpu.set(1,8,"│ │ │ │ │ │ │ │ │ │") gpu.set(1,9,"│──────────────────────────│") gpu.set(1,10,"│ │ │ │ │ │ │ │ │ │") gpu.set(1,11,"│──────────────────────────│") gpu.set(1,12,"│ │ │ │ │ │ │ │ │ │") gpu.set(1,13,"└──────────────────────────┘") gpu.setForeground(0xFF9900) local xy = { {"2","2"},{"5","2"},{"8","2"},{"11","2"},{"14","2"},{"17","2"},{"20","2"},{"23","2"},{"26","2"}, {"2","4"},{"5","4"},{"8","4"},{"11","4"},{"14","4"},{"17","4"},{"20","4"},{"23","4"},{"26","4"}, {"2","6"},{"5","6"},{"8","6"},{"11","6"},{"14","6"},{"17","6"},{"20","6"},{"23","6"},{"26","6"}, {"2","8"},{"5","8"},{"8","8"},{"11","8"},{"14","8"},{"17","8"},{"20","8"},{"23","8"},{"26","8"}, {"2","10"},{"5","10"},{"8","10"},{"11","10"},{"14","10"},{"17","10"},{"20","10"},{"23","10"},{"26","10"}, {"2","12"},{"5","12"},{"8","12"},{"11","12"},{"14","12"},{"17","12"},{"20","12"},{"23","12"},{"26","12"}, } while true do local slot = math.random(1,54) local per = math.random(1,99) gpu.set(1,15,"slot "..slot.." = "..per.." ") gpu.set(tonumber(xy[slot][1]),tonumber(xy[slot][2]),tostring(per)) os.sleep(3) end
Есть ли иной способ вывода значений без использования таблицы координат ?
-
ну так подай сигнал на две стороны, две строки, также и выключить значение с 15 на 0
redstone.setOutput(sides.left, 15) --с лева redstone.setOutput(sides.right, 15) --с права --"left","right","front","back","bottom","top".
-
1
-
-
здесь один датчик и одна сторона , может кому пригодится
Скрытый текстlocal event = require('event') local com = require('component') local sensor = com.motion_sensor local rs = com.redstone local sides = require('sides') local whitelist = {"serafim","zombiman"} --список кого впускать local sideredstone = "right" --"left","right","front","back","bottom","top". local function redset(side, value) rs.setOutput(sides[side], value) end redset(sideredstone, 0) local function isUser(name) for i=1, #whitelist do if name == whitelist[i] then return true end end return false end while true do local _, address, x, y, z, name = event.pull('motion') --print("x "..math.ceil(x).." y "..math.ceil(y).." z "..math.ceil(z)) print("замечен: "..name) if isUser(name) then print("дверь открыта") redset(sideredstone, 15) os.sleep(3) --время открытой двери redset(sideredstone, 0) else print("посторонним вход запрещен") os.sleep(3) print(" ") end end
-
ругается на несуществующий компонент invoke , да и проверку на мобов нужно после срабатывания датчика делать, то есть после event.pull('motion')
-
одной строкой тут не отделаться, впрочем и мобы не частые гости
логика простая, нужно добавить список мобов и перебрать их построчно, в случае совпадения дверь не открываем
посмотри SpiderEye Terminal: pastebin.com/bTc7tJKv в качестве примера
--список мобов 14 monsterlist = {"Spider", "Zombie", "Creeper", "Skeleton", "Enderman", "Sheep", "Cow", "Chicken"} --перебор списка по строкам 311 for i=1, #monsterlist do if name == monsterlist[i] then return true end end -
что за rednet ?
Я бы больше переживал что тут нет проверки на никнейм и сторону от куда игрок подходит, в таком варианте двери будут срабатывать на всех, включая мобов и со всех сторон датчика
-
всё верно здесь нет команды выключить сигнал, только включить
redstone.setOutput(sides.front, 15)
уровень 15
чтобы выключить поменяй на 0
redstone.setOutput(sides.front, 0)
и добавь задержку в секундах
os.sleep(3)
итого получим
local event = require('event') local com = require('component') local sensor = com.motion_sensor local sides = require('sides') local redstone = com.redstone while true do local _, address, x, y, z, name = event.pull('motion') print(name) redstone.setOutput(sides.front, 15) os.sleep(3) redstone.setOutput(sides.front, 0) end
-
Чтобы понять какие данные принимает модем воспользуемся прогой
local port = 1 --порт модема local event = require("event") local com = require ("component") local modem = com.modem local number = 0 modem.open(port) while true do number = number + 1 print("жду сообщение...") local e = {event.pull('modem_message')} print("сообщение "..number.."\n") for a, b in ipairs(e) do print(a.." "..tostring(b)) end print(" ") endОбычно принимает в таком виде
1 событие modem_message 2 адрес принимающей платы 3 адрес передающей платы 4 порт модема 5 растояние между платами 6 принятое сообщение
Отправить данные для теста с ПК или планшета можно так
local port = 1 --порт модема local com = require ("component") local modem = com.modem print("введите сообщение:") while true do modem.broadcast(port,io.read()) endИспользовать полученную информацию, например так
local event = require("event") local com = require ("component") local modem = com.modem modem.open(1) --порт модема local e = {event.pull('modem_message')} print(e[6])В таком виде сообщение будет в шестой строке e[6]
-
2
-
-
Попробуй такой вариант
local event = require("event") local comp = require("component") local modem = comp.modem modem.open(1) modem.broadcast(1,"nanomachines", "setResponsePort", 1) os.sleep(1) modem.broadcast(1,"nanomachines", "getHealth") local e = {event.pull(2,'modem_message')} for a, b in ipairs(e) do print(a.." "..tostring(b)) end -
Если ты имеешь в виду как очистить экран, то можно так
--подключаем библиотеку local term = require("term") --команда очистить терминал term.clear()А если переменную
local _,_,_,_,_,h1,h2,h3 = e.pull("modem_message")то можно её не очищать , данные в ней заменятся при следующем ответе на сообщение модема, на то она и переменная
И ты мог бы код не в виде скриншота вставлять, а виде кода. В сообщении есть кнопочка с надписью КОД
-
Например так :
local shell = require("shell") local fs = require("filesystem") --Массив с программами, которые необходимо загрузить. --Первый элемент - ссылка на файл, второй - путь для сохранения файла. local applications = { { "https://github.com/stripwire/openttablet_os/blob/master/lib/forms.lua", "lib/forms.lua" }, { "https://github.com/stripwire/openttablet_os/blob/master/menu/menu.lua", "menu.lua" }, } --Загружаем файлы for i = 1, #applications do print("Устанавливаю " .. applications[i][2]) fs.makeDirectory(fs.path(applications[i][2]) or "") shell.execute("wget " .. applications[i][1] .. " " .. applications[i][2] .. " -fQ") os.sleep(0.3) end print("Готово") -
В 18.08.2016 в 19:55, qwertyMAN сказал:И когда опыта наберёшься, будешь изначально писать как надо, а не исправлять позже.Тут не поспориш, потому и раздел для начинающих
Поправил, спасибо за замечания
-
увы английский у меня хромает
оптимизация вещь тонкая, щас допилим
-
Байтик старание за труд, спосибо

-
Добавил проверку на ошибки:
если нет удочки ищем в сундуке, если и там нет ждем пока дадут удочку.
если заполнен сундук, то прекращаем ловить.
если нет сигнала от датчика, то выясняем причину: или у робота вместо удочки что то другое, или ошибка конструкции сборки рыболова.
p.s. Хочу байтик

-



Программа "Очень много электричества"
в Выполненные заказы
Опубликовано: · Изменено пользователем serafim
На данный момент программа отлажена, также все возможные зашиты прописаны