Advertisement
JustGekto

Rednet Forwarder

Nov 9th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.66 KB | None | 0 0
  1. local fo = 0
  2. local fi = 0
  3. local function findModems()
  4.     local wr
  5.     local wrl
  6.     peripheral.find("modem",function(side)
  7.         if peripheral.call(side,"isWireless") then
  8.             wrl = side
  9.         else
  10.             wr = side
  11.         end
  12.     end)
  13.     if wr and wrl then
  14.         return wr,wrl
  15.     else
  16.         error("You need one wired modem and one wireless",0)
  17.     end
  18. end
  19. local function open(nChanel,side)
  20.     peripheral.call(side, "open", nChanel )
  21. end
  22. local function close(nChanel,side)
  23.     peripheral.call(side, "close", nChanel )
  24. end
  25. local function send( nRecipient,nSender,message,side,protocol)
  26.     nMessageID = math.random( 1, 2147483647 )
  27.     local tMessage = {
  28.         nMessageID = nMessageID,
  29.         nRecipient = nRecipient,
  30.         message = message,
  31.         sProtocol = protocol,
  32.     }
  33.     peripheral.call(side,"transmit",nRecipient,nSender,tMessage)
  34. end
  35. wrm,wrlm = findModems()
  36. open(rednet.CHANNEL_REPEAT,wrlm)
  37. open(rednet.CHANNEL_REPEAT,wrm)
  38. local x,y = term.getCursorPos()
  39. while true do
  40.     e = {os.pullEventRaw()}
  41.     if e[1] == "modem_message" and e[2] == wrlm then
  42.         send(e[5].nRecipient,e[4],e[5].message,wrm,e[5].sProtocol)
  43.         fi = fi+1
  44.     elseif e[1] == "modem_message" and e[2] == wrm then
  45.         send(e[5].nRecipient,e[4],e[5].message,wrlm,e[5].sProtocol)
  46.         fo = fo+1
  47.     elseif e[1] == "terminate" then
  48.         close(rednet.CHANNEL_REPEAT,wrlm)
  49.         close(rednet.CHANNEL_REPEAT,wrm)
  50.         break
  51.     end
  52.     term.setCursorPos(1,y)
  53.     term.write("Messages forwarded  in "..fi)
  54.     term.setCursorPos(1,y+1)
  55.     term.write("Messages forwarded out "..fo)
  56. end
  57. term.setCursorPos(1,y+2)
  58. print("Ended")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement