Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- port=8000
- modem={}
- name=os.getComputerID()
- --broadcasts go in form: type, src, dest, step (array of hop names), data
- function openModems()
- n=1
- if peripheral.getType("back")=="modem" then modem[n]=peripheral.wrap("back") n=n+1 end
- if peripheral.getType("top")=="modem" then modem[n]=peripheral.wrap("top") n=n+1 end
- if peripheral.getType("left")=="modem" then modem[n]=peripheral.wrap("left") n=n+1 end
- if peripheral.getType("right")=="modem" then modem[n]=peripheral.wrap("right") n=n+1 end
- for i=1, #modem do
- modem[i].open(port)
- end
- end
- function broadcast(type, src, dest, dat) --takes type, src, dest, dat
- local packet={}
- packet.type=type
- packet.src=src
- packet.dest=dest
- step={}
- step[1]=name
- packet.step=textutils.serialize(step)
- packet.dat=textutils.serialize(dat)
- local transmit=textutils.serialize(packet)
- for i=1, #modem do
- modem[i].transmit(port, port, transmit)
- end
- openModems()
- end
- function receive(type) --returns type, src, dest, step, dat
- local event, mSide, sChannel, rChannel, msg, senderDist = os.pullEvent("modem_message")
- openModems()
- local packet=textutils.unserialize(msg)
- if packet.type==type or type==nil or type==false or type==0 then
- if packet.dest==nil or packet.dest==name then
- return packet.type, packet.src, packet.dest, textutils.unserialize(packet.step), textutils.unserialize(packet.dat)
- end
- end
- return nil
- end
- function setName(n)
- name=n
- end
- function start()
- openModems()
- name=os.getComputerID()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement