Kaerius

Door+OpenCCSensors

Jul 7th, 2013
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.10 KB | None | 0 0
  1. local sideRedstone="left"
  2. local sideSensor="right"
  3. local radius = 1 --Радиус детектора
  4. local nameD = {"test2", "test1"}
  5.  
  6. local offset = {
  7.   X = 0, --Запад(-),восток(+)
  8.   Y = 4, --Верх(+), Вниз(-)
  9.   Z = 0  --Север(-), юг(+)
  10. }
  11.  
  12. os.loadAPI("ocs/apis/sensor")
  13. local proximity = sensor.wrap(sideSensor)
  14.  
  15. local function distance(pos)
  16.  local xd = pos.X - offset.X
  17.  local yd = pos.Y - offset.Y
  18.  local zd = pos.Z - offset.Z
  19.  return math.sqrt(xd*xd + yd*yd + zd*zd)
  20. end
  21.  
  22. local function nameT()
  23.  local n = {}
  24.  local targets1 = proximity.getTargets()
  25.  local s = 1
  26.  for name in pairs(targets1) do
  27.   n[s] = tostring(name)
  28.   s = s + 1
  29.  end
  30.  return n
  31. end
  32.  
  33. local function prov(x1,x2)
  34.  for y1 = 1, #x1 do
  35.   for y2 = 1, #x2 do
  36.    if x1[y1] == x2[y2] then
  37.     return true
  38.    end
  39.   end
  40.  end  
  41. end
  42.  
  43. while true do
  44.  local signal = false
  45.  local targets2 = proximity.getTargets()
  46.  for k, v in pairs(targets2) do
  47.   if prov(nameD, nameT()) then
  48.    if distance(v.Position) < radius then
  49.     signal = true
  50.    end
  51.   end
  52.  rs.setOutput(sideRedstone, signal)
  53.  end
  54. end
Advertisement
Add Comment
Please, Sign In to add comment