bennyclams

Untitled

Aug 7th, 2026
15
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. args = { ... }
  2. peripheral.find("modem", rednet.open)
  3. door_name = os.getComputerLabel() or "door"
  4. open = false
  5. closed = true
  6. side = "back"
  7. relay_mode = false
  8. if #args >= 1 then
  9. door_name = args[1]
  10. end
  11. for i = 2, #args do
  12. if string.lower(args[i]) == "inverted" then
  13. open = true
  14. closed = false
  15. elseif string.lower(args[i]) == "back"
  16. or string.lower(args[i]) == "front"
  17. or string.lower(args[i]) == "left"
  18. or string.lower(args[i]) == "right"
  19. or string.lower(args[i]) == "top"
  20. or string.lower(args[i]) == "bottom" then
  21. side = string.lower(args[i])
  22. else
  23. print("Using '" .. args[i] .. "' as relay name")
  24. relay_name = args[i]
  25. relay_mode = true
  26. end
  27. end
  28.  
  29. print("Starting door server for " .. door_name)
  30. rednet.host("door_server", door_name)
  31. while true do
  32. print("Waiting for command ...")
  33. local id, msg, _ = rednet.receive("door_server")
  34. if string.lower(msg) == "open" then
  35. print("Received open command")
  36. if relay_mode then
  37. local relay = peripheral.wrap(relay_name)
  38. relay.setOutput(side, open)
  39. else
  40. redstone.setOutput(side, open)
  41. end
  42. rednet.send(id, "Door opened", "door_server")
  43. elseif string.lower(msg) == "close" then
  44. print("Received close command")
  45. if relay_mode then
  46. local relay = peripheral.wrap(relay_name)
  47. relay.setOutput(side, closed)
  48. else
  49. redstone.setOutput(side, closed)
  50. end
  51. rednet.send(id, "Door closed", "door_server")
  52. elseif string.lower(msg) == "status" then
  53. print("Received status command")
  54. local state = "unknown"
  55. if relay_mode then
  56. local relay = peripheral.wrap(relay_name)
  57. if relay.getOutput(side) == open then
  58. state = "open"
  59. elseif relay.getOutput(side) == closed then
  60. state = "closed"
  61. end
  62. else
  63. if redstone.getOutput(side) == open then
  64. state = "open"
  65. elseif redstone.getOutput(side) == closed then
  66. state = "closed"
  67. end
  68. end
  69. rednet.send(id, state, "door_server")
  70. elseif string.lower(msg) == "help" then
  71. rednet.send(id, "Available commands:\n open\n close\n status\n help", "door_server")
  72. end
  73. end
  74. rednet.unhost("door_server", door_name)
  75. rednet.close()
Advertisement
Add Comment
Please, Sign In to add comment