--------------------------------------------------------------------------------------- -- MineCraft ComputerCraft - RFID Door lock (use Immibis's Peripherals) -- Written by Ty94, ComputerCraft Info Forums -- Source: http://www.computercraft.info/forums2/index.php?/topic/3984-rfid-door-lock-use-immibiss-peripherals/ --------------------------------------------------------------------------------------- --If you want this to start at every boot of a computer run the following line of code in the startup -- shell.run("RFID","door") --The door stays open as long as you stay in the area of the reader -- !!! Make sure there is no creeper behind you !!! -- Set up your own door system doorPass = "wsxedcrfvbgtnhzmjuzvrnzcif" --Max Length 82 chars cardLabel = "Ident: Front Door" --Max Length 20 chars --Make sure the following sides are equal to your build readerSide = "left" writerSide = "right" redstoneSide = "bottom" --(Don“t change) tArgs = {...} lastTimer = {} -- Check the arguments given if #tArgs < 1 then print("Usage:") print("RFID write") print("RFID door") return end mode = tArgs[1] shell.run("clear") if mode == "write" then writer = peripheral.wrap(writerSide) print("Enter writing mode") print("Insert card in the writer") while not writer.isPresent() do --Waits until a card is in the writer sleep(0) end if writer.encode(doorPass, cardLabel) then --Start write to card print("Start writing Pass to card") else --Error handling if writer.isCoded() then print("Card is already coded\nInsert a blank card") elseif #cardLabel > 20 then print("Card Label is too long max. 20 char") elseif #doorPass > 82 then print("Data is too long max. 82 char") else print("Leave the card in the writer") end return end os.pullEvent("rfid_written") --Wait until the card is written print("RFID card is coded") print("Take the card out of the writer") while writer.isCoded() do --Ends the program when the card is taken out of the writer sleep(0) end shell.run("clear") ------------------------------------------------------ ------------------------------------------------------ elseif mode == "door" then reader = peripheral.wrap(readerSide) print("Door Contol is running") while true do reader.scan() --Creats an "rfid_detected" when a card is in range event, p1 = os.pullEvent() if event == "rfid_detected" then if p1 == doorPass then rs.setOutput(redstoneSide, true) lastTimer = os.startTimer(1) end elseif event == "timer" and lastTimer == p1 then rs.setOutput(redstoneSide, false) end end end