Trystan_C_C

Rednet Redirection Transmitter

Nov 23rd, 2012
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.70 KB | None | 0 0
  1. local tArgs = { ... }
  2. if #tArgs ~= 1 then
  3.         print("Useage: " .. fs.getName(shell.getRunningProgram()) .. " <receiverID>")
  4. end
  5.  
  6. -- Opens any modem found on the computer.
  7. function openModem()
  8.         for sideIndex, side in pairs(rs.getSides()) do
  9.                 if peripheral.isPresent(side) and peripheral.getType(side) == "modem" then
  10.                         rednet.open(side)
  11.                         return
  12.                 end
  13.         end
  14.        
  15.         print("No modem found. Aborting.")
  16.         error()
  17. end
  18.  
  19. -- Closes any modem found on the computer.
  20. function closeModem()
  21.         for sideIndex, side in pairs(rs.getSides()) do
  22.                 if peripheral.isPresent(side) and peripheral.getType(side) == "modem" then
  23.                         rednet.close(side)
  24.                 end
  25.         end
  26. end
  27.  
  28. -- Check for restoration.
  29. if tArgs[1] == "restore" then
  30.         term.restore()
  31.         closeModem()
  32.         return
  33. end
  34.  
  35. openModem()
  36. local receiverID = tonumber(tArgs[1])
  37. local oldTerm = {}
  38. local sendTerm = {}
  39.  
  40. function wrap(functionName)
  41.         return function(...)
  42.                 rednet.send(receiverID, textutils.serialize({funcName = functionName, params = {...}}))
  43.                 return oldTerm[functionName](...)
  44.         end
  45. end
  46.  
  47. for functionName, functionObject in pairs(term.native) do
  48.         oldTerm[functionName] = functionObject
  49. end
  50. for functionName, functionObject in pairs(term.native) do
  51.         if type(functionName) == "string" and type(functionObject) == "function" then
  52.                 sendTerm[functionName] = wrap(functionName)
  53.         end
  54. end
  55.  
  56. term.redirect(sendTerm)
  57. term.clear()
  58. term.setCursorPos(1, 1)
  59. print("Transmitting to " .. receiverID)
Advertisement
Add Comment
Please, Sign In to add comment