akihex

listeningDevice

Aug 22nd, 2014
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.93 KB | None | 0 0
  1. local args = {...}
  2.  
  3. local wifi = peripheral.find("modem")
  4. local channel = 52
  5. if #args > 0 then channel = tonumber(args[1]) end
  6. print("Opening wifi channel ",channel)
  7. wifi.open(channel)
  8.  
  9. local interval = #args >= 2 and tonumber(args[2]) or 5
  10. local pos = #args >= 5 and {x=tonumber(args[3]),y=tonumber(args[4]),z=tonumber(args[5])} or {x=0,y=0,z=0}
  11. local save = #args >= 6 and args[6] or nil
  12.  
  13. local sensor = peripheral.find("peripheral")
  14. local signalSide = "front"
  15. for _,i in pairs(peripheral.getNames()) do
  16.   if peripheral.getType(i) == "auto_placer" then
  17.     signalSide = i
  18.     break
  19.   end
  20. end
  21.  
  22. print("Listening for redstone signal on ",signalSide," side")
  23.  
  24. local function saveData(line)
  25.   if save then
  26.     local saveFile = fs.open(save,"a")
  27.     if saveFile then
  28.       saveFile.writeLine(os.day()..":"..os.time()..": "..line)
  29.       saveFile.flush()
  30.       saveFile.close()
  31.     end
  32.   end
  33. end
  34.  
  35. local event, modemSide, senderChannel, replyChannel, message, senderDistance
  36. local players = {}
  37. while true do
  38.   if rs.getInput(signalSide) then os.queueEvent("redstone") end
  39.   event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent()
  40.   if event == "redstone" and rs.getInput(signalSide) then
  41.     players = sensor.getPlayerNames()
  42.     for i,k in pairs(players) do
  43.       if k ~= "_Tikkamasala_" then
  44.         saveData(k)
  45.         saveData(" x="..math.floor(sensor.getPlayerData(k).position.x+pos.x).." y="..math.floor(sensor.getPlayerData(k).position.y+pos.y).." z="..math.floor(sensor.getPlayerData(k).position.z+pos.z))
  46.         saveData("held item: "..sensor.getPlayerData(k).heldItem.name)
  47.         --print(k," x=",math.floor(sensor.getPlayerData(k).position.x+pos.x)," y=",math.floor(sensor.getPlayerData(k).position.y+pos.y)," z=",math.floor(sensor.getPlayerData(k).position.z+pos.z))
  48.         --print("held item: ",sensor.getPlayerData(k).heldItem.name)
  49.       end
  50.     end
  51.   end
  52.   sleep(interval)
  53. end
Advertisement
Add Comment
Please, Sign In to add comment