Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #LIB()
- local lastMessage = ""
- local nativepullEvent = os.pullEventRaw
- local tListen = { }
- return
- {
- #BEGINFUNCTION()
- #FUNCTION(closeAllPort)
- closeAllPort = function(modem)
- if modem.nOpenPorts <= 0 then
- return false
- end
- for _, nPort in pairs(modem.tOpenPorts) do
- modem.raw.close(nPort)
- end
- modem.nOpenPorts = 0
- modem.tOpenPorts = { }
- return true
- end,
- #FUNCTION(closePort)
- closePort = function(modem, nPort)
- if modem.nOpenPorts > 0 and modem.tOpenPorts[nPort] then
- modem.raw.close(nPort)
- modem.nOpenPorts = modem.nOpenPorts - 1
- modem.tOpenPorts[nPort] = false
- return true
- end
- return false
- end,
- #FUNCTION(listen)
- listen = function(modem, nPort)
- smodem = modem
- if not modem.tOpenPorts[nPort] then
- return false
- end
- tListen[modem.sSide][nPort] = math.random(1, 2147483646)
- return function()
- while tListen[modem.sSide][nPort] do
- local sEvent, vData, nRPort, nReplyPort, tMessage, nDistance
- = coroutine.yield("modem_message")
- if sEvent == "modem_message" and
- vData == modem.sSide and
- nRPort == nPort then
- os.queueEvent(
- "net_message",
- tListen[modem.sSide][nPort],
- nReplyPort,
- tMessage,
- nDistance)
- end
- end
- end, tListen[modem.sSide][nPort]
- end,
- listenEvent = "net_message",
- #FUNCTION(listenStop)
- listenStop = function(modem, nPort)
- tListen[modem.sSide][nPort] = nil
- end,
- #FUNCTION(listenStopAll)
- listenStopAll = function(modem)
- tListen[modem.sSide] = { }
- end,
- #FUNCTION(loadModem)
- loadModem = function(sSide)
- if peripheral.isPresent(sSide) and
- peripheral.getType(sSide) == "modem" then
- tListen[sSide] = { }
- return
- {
- isWireless = peripheral.call(sSide, "isWireless"),
- raw = peripheral.wrap(sSide),
- sSide = sSide,
- nOpenPorts = 0,
- tOpenPorts = { }
- }
- end
- return false
- end,
- #FUNCTION(openPort)
- openPort = function(modem, nPort)
- if modem.nOpenPorts < 128 and not modem.tOpenPorts[nPort] then
- modem.raw.open(nPort)
- modem.nOpenPorts = modem.nOpenPorts + 1
- modem.tOpenPorts[nPort] = true
- return true
- end
- return false
- end,
- #FUNCTION(sendRaw)
- sendRaw = function(
- modem,
- nPort,
- nRepPort,
- vMessage)
- modem.raw.transmit(nPort, nRPort, vMessage)
- end,
- #FUNCTION(sendRednet)
- sendRednet = function(
- modem,
- nPort,
- replyPort,
- nRecipient,
- vMessage,
- sProtocol)
- if sProtocol == nil then
- sProtocol = ""
- end
- modem.raw.transmit(nPort, replyPort
- {
- nRecipient = nRecipient,
- message = vMessage,
- nMessageID = math.random(1, 2147483647),
- sProtocol = sProtocol
- })
- return true
- end
- #ENDFUNCTION()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement