Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- redstone.setOutput('back', true)
- sensor = peripheral.wrap('left')
- x = 2
- y = 3
- z = -1
- keyItem = "Pharros' Lock Stone"
- openTime = 5
- function getPlayers()
- local players = sensor.getPlayers()
- local names = {}
- for _,player in pairs(players) do
- table.insert(names, player.name)
- end
- return names
- end
- function getDataForPlayer(name)
- local success, player = pcall(sensor.getPlayerByName, name)
- if success then return player.all().living else return nil end
- end
- function verifyIsLooking(data)
- if data.lookingAt == nil then return false end
- local pos = data.lookingAt.position
- return pos.x == x and pos.y == y and pos.z == z
- end
- function verifyKeyItem(data)
- local item = data.heldItem
- if item == nil then return false end
- return item.display_name == keyItem
- end
- function openDoor()
- redstone.setOutput('back', false)
- sleep(openTime)
- redstone.setOutput('back', true)
- end
- while true do
- local names = getPlayers()
- if (#names > 0) then
- for _,name in pairs(names) do
- local data = getDataForPlayer(name)
- if data ~= nil then
- local shouldOpen = verifyIsLooking(data) and verifyKeyItem(data)
- if shouldOpen then openDoor() end
- end
- end
- sleep(.5)
- else
- sleep(1)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment