Advertisement
Darking560

SensorServeur

Aug 3rd, 2015
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.07 KB | None | 0 0
  1. --Zone editable du programme--
  2.  
  3. local blacklist = {PseudoExemple=true}
  4. local whitelist = {}
  5. local channel1 = 200
  6. local channel2 = 201
  7.  
  8. --Ne pas toucher au programme apres cette ligne--
  9.  
  10.  
  11. local sensor = {}
  12.  
  13. function myperipheral(name)
  14.     local function inlist(item,list)
  15.         for n,m in pairs(list)  do
  16.             if m == item then
  17.                 return true
  18.             end
  19.         end
  20.         return false
  21.     end
  22.    
  23.     local side
  24.     for k,v in pairs(peripheral.getNames()) do
  25.         if string.find(v,name) then
  26.             side = v
  27.         elseif inlist(v,rs.getSides()) then
  28.             if peripheral.getType(v) == name then
  29.                 side = v
  30.             end
  31.         end
  32.     end
  33.    
  34.     if side ~= nil then
  35.         print("Found "..name.." as "..side)
  36.         return side
  37.     else   
  38.         print("ERROR:"..name.." don't found")
  39.         return nil
  40.     end
  41. end
  42.    
  43. function screen()
  44.  
  45.     local function enter()
  46.         posx,posy = m.getCursorPos()
  47.         m.setCursorPos(2,posy+1)
  48.     end
  49.    
  50.  
  51.     while true do
  52.         m.setBackgroundColor(0x8000)
  53.         m.clear()
  54.        
  55.         m.setCursorPos(2,2)
  56.         for i,j in pairs(sensor) do
  57.             m.setBackgroundColor(0x100)
  58.             m.write(i.." :")
  59.             enter()
  60.             m.setBackgroundColor(0x8000)
  61.             for o,p in pairs(j) do
  62.                 if blacklist[p] then
  63.                     m.setTextColor(0x4000)
  64.                 end
  65.                 m.write("  - "..p)
  66.                 enter()
  67.                 m.setTextColor(0x1)
  68.             end
  69.         end
  70.         sleep(2)
  71.     end
  72. end
  73.  
  74. function init()
  75.     r.transmit(channel1,channel2,"init")
  76.     local count = 0
  77.     local timerID = os.startTimer(5)
  78.     local event = ""
  79.     while event ~= "timer" do
  80.         event, side, sender, reply, msg = os.pullEvent()
  81.         if event == "modem_message" and reply == "init" then
  82.             sensor[msg]={}
  83.             count = count + 1
  84.         end
  85.     end
  86.     print(tostring(count).." sensor trouver")
  87.     for i,j in pairs(sensor) do
  88.         print(i)
  89.     end
  90.  
  91. end
  92.  
  93. function mylog(text)
  94.     mydate = http.get("http://philipperydin.com/time2.php").readAll()
  95.     mytime = http.get("http://philipperydin.com/time.php").readAll()
  96.    
  97.     if not fs.isDir("log") then
  98.         fs.makeDir("log")
  99.     end
  100.    
  101.     file = fs.open("log/"..mydate,"a")
  102.     file.writeLine("["..mytime.."] "..text)
  103.     file.close()
  104. end
  105.  
  106. function myfind(list,item)
  107.     for n,m in pairs(list)  do
  108.         if m == item then
  109.             return n
  110.         end
  111.     end
  112.     return nil
  113. end
  114.  
  115. function event()
  116.     while true do
  117.         e, side, sender, reply, msg = os.pullEvent("modem_message")
  118.         message = textutils.unserialize(msg)
  119.         if not whitelist[message.player] then
  120.             if message.entrer then
  121.                 table.insert(sensor[message.name],message.player)
  122.                 print(message.player.." entre dans la zone de "..message.name)
  123.                 mylog(message.player.." entre dans la zone de "..message.name)
  124.             else
  125.                 nb = myfind(sensor[message.name],message.player)
  126.                 table.remove(sensor[message.name],nb)
  127.                 print(message.player.." sort de la zone de "..message.name)
  128.                 mylog(message.player.." sort de la zone de "..message.name)
  129.             end
  130.            
  131.             if blacklist[message.player] then
  132.                 rs.setOutput("bottom",true)
  133.             end
  134.         end
  135.     end
  136. end
  137.  
  138. print("-------Check Peripheral-------")
  139. r = peripheral.wrap(myperipheral("modem"))
  140. m = peripheral.wrap(myperipheral("monitor"))
  141. print("-------End Check Peripheral-------")
  142.  
  143. r.open(channel2)
  144.  
  145. init()
  146.  
  147. parallel.waitForAny(screen,event)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement