iShot

Door Scanner Security

Apr 20th, 2014
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     local scanSide = "bottom"
  2.     local projSide = "top"
  3.     local modemSide = "front"
  4.     local doorSec = 3
  5.     local masterSec = 41
  6.     local scanPath = "z"
  7.      
  8.     p = peripheral.wrap(scanSide)
  9.     rednet.open(modemSide)
  10.     redstone.setOutput(projSide, true)
  11.      
  12.     function playerInRange(name)
  13.        data = p.getPlayerData(name)
  14.        if data then
  15.           return(math.abs(tonumber(data["position"][scanPath])) <2.5)
  16.        end
  17.        return false
  18.     end
  19.      
  20.     function openDoor(name)
  21.        redstone.setOutput(projSide, false)
  22.        while playerInRange(name) do
  23.          sleep(0.5)
  24.        end
  25.        redstone.setOutput(projSide, true)
  26.     end  
  27.      
  28.     function getAccess(player)
  29.        rednet.send(masterSec, player)
  30.        local id, msg, dist = rednet.receive(5)
  31.     --   print(msg)
  32.        return(msg)
  33.     end
  34.      
  35.     function checkAccess(secLevel)
  36.        if secLevel ~= nil then
  37.           return(secLevel >= doorSec)
  38.        end
  39.        return(false)
  40.     end
  41.      
  42.     function scan()
  43.        local players = p.getPlayerNames()
  44.        local playerAccess
  45.        for num,name in pairs(players) do
  46.         playerAccess = getAccess(name)
  47.         if checkAccess(playerAccess) then
  48.            if playerInRange(name) then
  49.              openDoor(name)
  50.            end
  51.          end
  52.        end
  53.     end
  54.      
  55.     while true do
  56.       scan()
  57.       sleep(0.025)
  58.     end
Advertisement
Add Comment
Please, Sign In to add comment