Advertisement
Guest User

Untitled

a guest
Jan 1st, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. #LIB()
  2.  
  3. local lastMessage = ""
  4. local nativepullEvent = os.pullEventRaw
  5. local tListen = { }
  6.  
  7. return
  8. {
  9. #BEGINFUNCTION()
  10. #FUNCTION(closeAllPort)
  11. closeAllPort = function(modem)
  12. if modem.nOpenPorts <= 0 then
  13. return false
  14. end
  15.  
  16. for _, nPort in pairs(modem.tOpenPorts) do
  17. modem.raw.close(nPort)
  18. end
  19.  
  20. modem.nOpenPorts = 0
  21. modem.tOpenPorts = { }
  22.  
  23. return true
  24. end,
  25. #FUNCTION(closePort)
  26. closePort = function(modem, nPort)
  27. if modem.nOpenPorts > 0 and modem.tOpenPorts[nPort] then
  28. modem.raw.close(nPort)
  29. modem.nOpenPorts = modem.nOpenPorts - 1
  30. modem.tOpenPorts[nPort] = false
  31.  
  32. return true
  33. end
  34.  
  35. return false
  36. end,
  37. #FUNCTION(listen)
  38. listen = function(modem, nPort)
  39. smodem = modem
  40.  
  41. if not modem.tOpenPorts[nPort] then
  42. return false
  43. end
  44.  
  45. tListen[modem.sSide][nPort] = math.random(1, 2147483646)
  46.  
  47. return function()
  48. while tListen[modem.sSide][nPort] do
  49. local sEvent, vData, nRPort, nReplyPort, tMessage, nDistance
  50. = coroutine.yield("modem_message")
  51.  
  52. if sEvent == "modem_message" and
  53. vData == modem.sSide and
  54. nRPort == nPort then
  55. os.queueEvent(
  56. "net_message",
  57. tListen[modem.sSide][nPort],
  58. nReplyPort,
  59. tMessage,
  60. nDistance)
  61. end
  62. end
  63. end, tListen[modem.sSide][nPort]
  64. end,
  65. listenEvent = "net_message",
  66. #FUNCTION(listenStop)
  67. listenStop = function(modem, nPort)
  68. tListen[modem.sSide][nPort] = nil
  69. end,
  70. #FUNCTION(listenStopAll)
  71. listenStopAll = function(modem)
  72. tListen[modem.sSide] = { }
  73. end,
  74. #FUNCTION(loadModem)
  75. loadModem = function(sSide)
  76. if peripheral.isPresent(sSide) and
  77. peripheral.getType(sSide) == "modem" then
  78. tListen[sSide] = { }
  79.  
  80. return
  81. {
  82. isWireless = peripheral.call(sSide, "isWireless"),
  83. raw = peripheral.wrap(sSide),
  84. sSide = sSide,
  85.  
  86. nOpenPorts = 0,
  87. tOpenPorts = { }
  88. }
  89. end
  90.  
  91. return false
  92. end,
  93. #FUNCTION(openPort)
  94. openPort = function(modem, nPort)
  95. if modem.nOpenPorts < 128 and not modem.tOpenPorts[nPort] then
  96. modem.raw.open(nPort)
  97. modem.nOpenPorts = modem.nOpenPorts + 1
  98. modem.tOpenPorts[nPort] = true
  99.  
  100. return true
  101. end
  102.  
  103. return false
  104. end,
  105. #FUNCTION(sendRaw)
  106. sendRaw = function(
  107. modem,
  108. nPort,
  109. nRepPort,
  110. vMessage)
  111. modem.raw.transmit(nPort, nRPort, vMessage)
  112. end,
  113. #FUNCTION(sendRednet)
  114. sendRednet = function(
  115. modem,
  116. nPort,
  117. replyPort,
  118. nRecipient,
  119. vMessage,
  120. sProtocol)
  121. if sProtocol == nil then
  122. sProtocol = ""
  123. end
  124.  
  125. modem.raw.transmit(nPort, replyPort
  126. {
  127. nRecipient = nRecipient,
  128. message = vMessage,
  129. nMessageID = math.random(1, 2147483647),
  130. sProtocol = sProtocol
  131. })
  132.  
  133. return true
  134. end
  135. #ENDFUNCTION()
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement