KapitanWalnut

VaultDoor v1.4

Mar 28th, 2014
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.99 KB | None | 0 0
  1. --VaultDoor by KapitanWalnut
  2. --version 1.4
  3. --Outputs redstone signal when player is sneaking within the detection area
  4. --NOTE: requires OpenPeripherals sensor
  5.  
  6. --Detection Area
  7. local minX = 2 local maxX =  7
  8. local minY = -5 local maxY =  3
  9. local minZ = -2 local maxZ =  2
  10.  
  11. --open time (seconds)
  12. openTime = 3
  13.  
  14. --keep track of if vault is closed
  15. vaultClosed = true
  16.  
  17. --sensor in relation to computer
  18. local sensor = peripheral.wrap("back")
  19. --open module in relation to computer
  20. local moduleOpen = "right"
  21. --close module in relation to computer
  22. local moduleClose = "left"
  23. --disintegrate module in relation to computer
  24. local moduleDisin = "front"
  25.  
  26. --Open and Close functions
  27. function close()
  28.     vaultClosed = true
  29.     rs.setOutput(moduleOpen, false)
  30.     rs.setOutput(moduleClose, true)
  31.     rs.setOutput(moduleDisin, true)
  32.     sleep(3)
  33.     rs.setOutput(moduleDisin, false)
  34.     sleep(3)
  35.     rs.setOutput(moduleClose, false)
  36. end
  37.  
  38. function open()
  39.     vaultClosed = false
  40.     rs.setOutput(moduleOpen, true)
  41.     rs.setOutput(moduleClose, false)
  42.     rs.setOutput(moduleDisin, true)
  43.     sleep(3)
  44.     rs.setOutput(moduleDisin, false)
  45.     sleep(3)
  46.     rs.setOutput(moduleOpen, false)
  47. end
  48.  
  49. --Initially door should be closed
  50. close()
  51. --Infinite loop
  52. while true do
  53.     --Get players from sensor
  54.     players = sensor.getPlayerNames()
  55.     --no players around
  56.     if #players == 0 then
  57.         --no one's around, make sure vault is closed
  58.         if not vaultClosed then
  59.             close()
  60.         end
  61.         --don't do stuff
  62.         sleep(0.7)
  63.     else --players in vicinity
  64.         for _,name in pairs(players) do
  65.             --anyone can open vault
  66.             if name ~= '' then
  67.                 data = sensor.getPlayerData(name)
  68.                 pos = data.position
  69.                 --check if player is in vicinity
  70.                 if pos.x >= minX and pos.x <= maxX
  71.                 and pos.y >= minY and pos.y <= maxY
  72.                 and pos.z >= minZ and pos.z <= maxZ
  73.                 and data.isSneaking == true then
  74.                     if vaultClosed then
  75.                         open()
  76.                         sleep(openTime)
  77.                     end
  78.                 elseif not vaultClosed then
  79.                     close()
  80.                 end
  81.             end
  82.         end
  83.         sleep(0.5)
  84.     end
  85. end
Advertisement
Add Comment
Please, Sign In to add comment