Advertisement
Guest User

RNP v1A

a guest
Jan 5th, 2014
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.53 KB | None | 0 0
  1. port=8000
  2. modem={}
  3. name=os.getComputerID()
  4.  
  5. --broadcasts go in form: type, src, dest, step (array of hop names), data
  6.  
  7. function openModems()
  8.   n=1
  9.   if peripheral.getType("back")=="modem" then modem[n]=peripheral.wrap("back") n=n+1 end
  10.   if peripheral.getType("top")=="modem" then modem[n]=peripheral.wrap("top") n=n+1 end
  11.   if peripheral.getType("left")=="modem" then modem[n]=peripheral.wrap("left") n=n+1 end
  12.   if peripheral.getType("right")=="modem" then modem[n]=peripheral.wrap("right") n=n+1 end
  13.   for i=1, #modem do
  14.     modem[i].open(port)
  15.   end
  16. end
  17.  
  18. function broadcast(type, src, dest, dat) --takes type, src, dest, dat
  19.   local packet={}
  20.   packet.type=type
  21.   packet.src=src
  22.   packet.dest=dest
  23.   step={}
  24.   step[1]=name
  25.   packet.step=textutils.serialize(step)
  26.   packet.dat=textutils.serialize(dat)
  27.   local transmit=textutils.serialize(packet)
  28.   for i=1, #modem do
  29.     modem[i].transmit(port, port, transmit)
  30.   end
  31.   openModems()
  32. end
  33.  
  34. function receive(type) --returns type, src, dest, step, dat
  35.   local event, mSide, sChannel, rChannel, msg, senderDist = os.pullEvent("modem_message")
  36.   openModems()
  37.   local packet=textutils.unserialize(msg)
  38.   if packet.type==type or type==nil or type==false or type==0 then
  39.     if packet.dest==nil or packet.dest==name then
  40.       return packet.type, packet.src, packet.dest, textutils.unserialize(packet.step), textutils.unserialize(packet.dat)
  41.     end
  42.   end
  43.   return nil
  44. end
  45.  
  46. function setName(n)
  47.   name=n
  48. end
  49.  
  50. function start()
  51.   openModems()
  52.   name=os.getComputerID()
  53. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement