Advertisement
Darking560

SensorClient

Aug 3rd, 2015
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.41 KB | None | 0 0
  1. --Zone editable du programme--
  2.  
  3. local channel1 = 200
  4. local channel2 = 201
  5.  
  6. --Ne pas toucher au programme apres cette ligne--
  7.  
  8.  
  9. local continuer = true
  10. local prevList = {}
  11. local default = "Darking"
  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 compare(list1,list2)
  44.     for m,n in pairs(list1) do
  45.         local ok = false
  46.         for o,p in pairs(list2) do
  47.             if n.name == p.name then
  48.                 ok = true
  49.             end
  50.         end
  51.         if not ok then
  52.             message = {name=os.getComputerLabel(),player=n.name,entrer=true}
  53.             r.transmit(channel2,channel1,textutils.serialize(message))
  54.             print(n.name.." transmit en enter")
  55.         end
  56.     end
  57.    
  58.     for m,n in pairs(list2) do
  59.         local ok = false
  60.         for o,p in pairs(list1) do
  61.             if n.name == p.name then
  62.                 ok = true
  63.             end
  64.         end
  65.         if not ok then
  66.             sleep(0.5)
  67.             message = {name=os.getComputerLabel(),player=n.name,entrer=false}
  68.             r.transmit(channel2,channel1,textutils.serialize(message))
  69.             print(n.name.." transmit en sortie")
  70.         end
  71.     end
  72.  
  73.  
  74. end
  75.  
  76. print("-------Check Peripheral-------")
  77. side = myperipheral("openperipheral_sensor")
  78. r = peripheral.wrap(myperipheral("modem"))
  79. print("-------End Check Peripheral-------")
  80.  
  81. if side ~= nil then
  82.     s = peripheral.wrap(side)
  83.     first = s.getPlayers()
  84.     default = first[1].name
  85. end
  86.    
  87. if os.getComputerLabel() == nil then
  88.     print("Error: No Computer's Label")
  89.     print("Pour Labeliser un computer la commande est :")
  90.     print("label set <nom>")
  91.     print("Par exemple \"label set "..default.."Base\"")
  92.     continuer = false
  93. end
  94.  
  95. --init
  96. local msg = ""
  97.  
  98. while msg ~= "init" and continuer do
  99.     r.open(channel1)
  100.     e, side, sender, reply, msg = os.pullEvent()
  101.     if msg == "init" and reply == channel2 then
  102.         r.transmit(channel2,"init",os.getComputerLabel())
  103.         r.close(channel1)
  104.     end
  105. end
  106.  
  107. print("Initialisation faite")
  108. sleep(5)
  109.        
  110. while continuer do
  111.     --print("scanning...")
  112.     list = s.getPlayers()
  113.     compare(list,prevList)
  114.     prevList = list
  115.     sleep(2)
  116.     --read()
  117. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement