icdb icon

[ComputerCraft] Remote Redstone (with PW) [sender]

icdb | PRO | 09/07/14 12:17:23 AM UTC | 0 ⭐ | 441 👁️ | Never ⏰ | []
Lua |

3.53 KB

|

None

|

0 👍

/

0 👎

--Sender
 
--Id of the reciver
id = 4
--True if you want that a password is necessary to change the output
pwnecessary = true
--Password (4 symbols)
code = 1234
--Wireless modem (currently at the top)
rednet.open("top")
--Monitor (currently at the back)
monitor = peripheral.wrap("back")
 
function clrmonitor()
    for i=1,7 do
        for o=1,5 do
            monitor.setCursorPos(i,o)
            monitor.setTextColor(1)
            monitor.setBackgroundColor(32768)
            monitor.write("O")
        end
    end
    monitor.clear()
    monitor.setCursorPos(1,1)
end
 
function question()
    choose = false
    rednet.send(id,"question")
    event, id, message, distance = os.pullEvent("rednet_message")
    while choose == false do
        clrmonitor()
        monitor.write("Status:")
        for i=2,6 do
            for o=2,4 do
                if message == "on" then
                    monitor.setCursorPos(i,o)
                    monitor.setBackgroundColor(8192)
                    monitor.setTextColor(8192)
                    monitor.write("O")
                else
                    monitor.setCursorPos(i,o)
                    monitor.setBackgroundColor(16384)
                    monitor.setTextColor(16384)
                    monitor.write("O")
                end
            end
        end
        --monitor.setBackgroundColor(32768)
        monitor.setTextColor(1)
        monitor.setCursorPos(3,3)
        monitor.write(message)
        event, side, x, y = os.pullEvent("monitor_touch")
        if y >= 2 or y <= 4 then
            if x >= 2 and x <= 6 then
                choose = true
            end
        end
    end
end
 
function setnumber()
    clrmonitor()
    
    monitor.setCursorPos(3,2)
    monitor.write("1")
    monitor.setCursorPos(4,2)
    monitor.write("2")
    monitor.setCursorPos(5,2)
    monitor.write("3")
    
    monitor.setCursorPos(3,3)
    monitor.write("4")
    monitor.setCursorPos(4,3)
    monitor.write("5")
    monitor.setCursorPos(5,3)
    monitor.write("6")
    
    monitor.setCursorPos(3,4)
    monitor.write("7")
    monitor.setCursorPos(4,4)
    monitor.write("8")
    monitor.setCursorPos(5,4)
    monitor.write("9")
    
    monitor.setCursorPos(4,5)
    monitor.write("0")
    
    monitor.setCursorPos(1,1)
end
 
function getinput()
    repeat
        if x == 3 and y == 2 then
            input = 1           
            
        elseif x == 4 and y == 2 then
            input = 2
            
        elseif x == 5 and y == 2 then
            input = 3
            
        elseif x == 3 and y == 3 then
            input = 4
            
        elseif x == 4 and y == 3 then
            input = 5
            
        elseif x == 5 and y == 3 then
            input = 6
            
        elseif x == 3 and y == 4 then
            input = 7
            
        elseif x == 4 and y == 4 then
            input = 8
            
        elseif x == 5 and y == 4 then
            input = 9
            
        elseif x == 4 and y == 5 then
            input = 0
        else
            input = 10
            event, side, x, y = os.pullEvent("monitor_touch")
        end
    until input ~= 10
end
 
while true do
    clrmonitor()
    question()
    if pwnecessary == true then
        setnumber()
        output = 0
        for i=1,4 do
             event, side, x, y = os.pullEvent("monitor_touch")
             if event == "monitor_touch" then
                getinput()
                monitor.setTextColor(2048)
                monitor.setCursorPos(i+2,1)
                monitor.write(input)
                monitor.setCursorPos(i+1+2,1)
                monitor.write(" ")
                monitor.setCursorPos(i+2+2,1)
                monitor.write(" ")
                monitor.setTextColor(1) 
                if i == 1 then
                    output = output + input * 1000
                elseif i == 2 then
                    output = output + input * 100
                elseif i == 3 then
                    output = output + input * 10
                elseif i == 4 then
                    output = output + input
                end
             end
        end
        if output == code then
            if message == "off" then
                rednet.send(id,"on")
            else
                rednet.send(id,"off")
            end
        end
        print(output)
    else
        if message == "off" then
            rednet.send(id,"on")
        else
            rednet.send(id,"off")
        end
    end 
    sleep(0.5)
    clrmonitor()
end

Comments