Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local sideRedstone="left"
- local sideSensor="right"
- local radius = 1 --Радиус детектора
- local nameD = {"test2", "test1"}
- local offset = {
- X = 0, --Запад(-),восток(+)
- Y = 4, --Верх(+), Вниз(-)
- Z = 0 --Север(-), юг(+)
- }
- os.loadAPI("ocs/apis/sensor")
- local proximity = sensor.wrap(sideSensor)
- local function distance(pos)
- local xd = pos.X - offset.X
- local yd = pos.Y - offset.Y
- local zd = pos.Z - offset.Z
- return math.sqrt(xd*xd + yd*yd + zd*zd)
- end
- local function nameT()
- local n = {}
- local targets1 = proximity.getTargets()
- local s = 1
- for name in pairs(targets1) do
- n[s] = tostring(name)
- s = s + 1
- end
- return n
- end
- local function prov(x1,x2)
- for y1 = 1, #x1 do
- for y2 = 1, #x2 do
- if x1[y1] == x2[y2] then
- return true
- end
- end
- end
- end
- while true do
- local signal = false
- local targets2 = proximity.getTargets()
- for k, v in pairs(targets2) do
- if prov(nameD, nameT()) then
- if distance(v.Position) < radius then
- signal = true
- end
- end
- rs.setOutput(sideRedstone, signal)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment