Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- args = { ... }
- peripheral.find("modem", rednet.open)
- door_name = os.getComputerLabel() or "door"
- open = false
- closed = true
- side = "back"
- relay_mode = false
- if #args >= 1 then
- door_name = args[1]
- end
- for i = 2, #args do
- if string.lower(args[i]) == "inverted" then
- open = true
- closed = false
- elseif string.lower(args[i]) == "back"
- or string.lower(args[i]) == "front"
- or string.lower(args[i]) == "left"
- or string.lower(args[i]) == "right"
- or string.lower(args[i]) == "top"
- or string.lower(args[i]) == "bottom" then
- side = string.lower(args[i])
- else
- print("Using '" .. args[i] .. "' as relay name")
- relay_name = args[i]
- relay_mode = true
- end
- end
- print("Starting door server for " .. door_name)
- rednet.host("door_server", door_name)
- while true do
- print("Waiting for command ...")
- local id, msg, _ = rednet.receive("door_server")
- if string.lower(msg) == "open" then
- print("Received open command")
- if relay_mode then
- local relay = peripheral.wrap(relay_name)
- relay.setOutput(side, open)
- else
- redstone.setOutput(side, open)
- end
- rednet.send(id, "Door opened", "door_server")
- elseif string.lower(msg) == "close" then
- print("Received close command")
- if relay_mode then
- local relay = peripheral.wrap(relay_name)
- relay.setOutput(side, closed)
- else
- redstone.setOutput(side, closed)
- end
- rednet.send(id, "Door closed", "door_server")
- elseif string.lower(msg) == "status" then
- print("Received status command")
- local state = "unknown"
- if relay_mode then
- local relay = peripheral.wrap(relay_name)
- if relay.getOutput(side) == open then
- state = "open"
- elseif relay.getOutput(side) == closed then
- state = "closed"
- end
- else
- if redstone.getOutput(side) == open then
- state = "open"
- elseif redstone.getOutput(side) == closed then
- state = "closed"
- end
- end
- rednet.send(id, state, "door_server")
- elseif string.lower(msg) == "help" then
- rednet.send(id, "Available commands:\n open\n close\n status\n help", "door_server")
- end
- end
- rednet.unhost("door_server", door_name)
- rednet.close()
Advertisement
Add Comment
Please, Sign In to add comment