Whiskee icon

CC Wireless Modem Channel Scanner

Whiskee | PRO | 01/25/23 09:37:09 PM UTC (Edited) | 0 ⭐ | 881 👁️ | Never ⏰ | []
Lua |

1.54 KB

|

None

|

0 👍

/

0 👎

local ogPrint = print
function print(...)
    term.clearLine()
    ogPrint(...)
end
 
local args = {...}
local modem = peripheral.find("modem")
 
if (not modem) then return end
 
modem.closeAll()
term.clear()
term.setCursorPos(1,1)
 
local modemLimit = 128
local bandLimit = 256
 
local band = tonumber(args[1]) or 1
local startRange = modemLimit * (band - 1)
local endRange = modemLimit * band
 
local i = startRange
while i < endRange do
 modem.open(i)
 i = i + 1
end
 
while true do
    term.setCursorPos(1,1)
    print("Band: "..band)
    print("Range: "..startRange.." - "..endRange - 1)
    local event, modemSide, senderChannel,
        replyChannel, message, senderDistance = os.pullEvent()
 
    if (event == "modem_message") then
        term.clear()
        print("Received a message from channel: "..senderChannel)
        print("They expect a reply on channel: "..replyChannel)
        print("The message was: "..message)
    elseif (event == "key") then
        if (modemSide == keys.down or modemSide == keys.up) then
            if (modemSide == keys.up and band < bandLimit) then
                band = band + 1
            elseif (band > 1) then
                band = band - 1
            end
            
            local x = 0
            modem.closeAll()
            startRange = modemLimit * (band - 1)
            endRange = (modemLimit * band)
            x = startRange
            while x < endRange do
                modem.open(x)
                x = x + 1
            end
        end
    end
end

Comments