Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Script B+: Listen for "SMiner" broadcasts and watch shield state changes
- -- 1) Find peripherals
- local speaker = peripheral.find("warpdriveSpeaker")
- local shield = peripheral.find("warpdriveForceFieldProjector")
- assert(shield, "ForceFieldProjector not found!")
- -- 2) Open all modems for rednet
- for _, side in ipairs(peripheral.getNames()) do
- if peripheral.getType(side) == "modem" then
- rednet.open(side)
- end
- end
- -- 3) Speak helper
- local function trySpeak(msg)
- if speaker then speaker.speak(msg) end
- end
- -- 5) Rednet listener coroutine
- local function rednetListener()
- while true do
- local senderID, message = rednet.receive("SMiner")
- if message == "check" then
- local enabled = shield.enable() -- query current state
- if enabled then
- print("Received check → Shield currently ENABLED")
- trySpeak("Shield is enabled")
- rednet.broadcast("StatON", "SMiner")
- else
- print("Received check → Shield currently DISABLED")
- trySpeak("Shield is disabled")
- rednet.broadcast("StatOFF", "SMiner")
- end
- end
- end
- end
- -- 6) Shield-state monitor coroutine
- local function stateMonitor()
- local prevEnabled = shield.enable()
- while true do
- local enabled = shield.enable()
- if enabled ~= prevEnabled then
- if enabled then
- print("Shield state changed → ENABLED")
- trySpeak("Shield enabled")
- rednet.broadcast("StatON", "SMiner")
- else
- print("Shield state changed → DISABLED")
- trySpeak("Shield disabled")
- rednet.broadcast("StatOFF", "SMiner")
- end
- prevEnabled = enabled
- end
- os.sleep(0.5)
- end
- end
- -- 7) Run both loops in parallel
- parallel.waitForAny(rednetListener, stateMonitor)
Advertisement
Add Comment
Please, Sign In to add comment