SHOW:
|
|
- or go back to the newest paste.
| 1 | -- https://stackoverflow.com/a/7615129/13347795 | |
| 2 | - | |
| 2 | + | function split(input, maxSplits, sep) |
| 3 | if sep == nil then | |
| 4 | sep = ";" | |
| 5 | end | |
| 6 | splits = {}
| |
| 7 | splitCount = 0 | |
| 8 | - | h = fs.open("messages.txt", "r")
|
| 8 | + | for str in string.gmatch(input, "([^"..sep.."]+)") do |
| 9 | - | repeat |
| 9 | + | if maxSplits ~= nil and splitCount > maxSplits then |
| 10 | - | line = h.readLine() |
| 10 | + | splits[splitCount] = splits[splitCount]..sep..str |
| 11 | - | if line ~= nil then |
| 11 | + | else |
| 12 | - | print(line) |
| 12 | + | table.insert(splits, str) |
| 13 | - | end |
| 13 | + | splitCount = splitCount + 1 |
| 14 | - | until line == nil |
| 14 | + | end |
| 15 | end | |
| 16 | - | |
| 16 | + | return splits |
| 17 | - | |
| 17 | + | |
| 18 | - | id, message = rednet.receive() |
| 18 | + | |
| 19 | - | h = fs.open("messages.txt", "a")
|
| 19 | + | |
| 20 | - | h.writeLine(os.date()..os.time()..";"..message) |
| 20 | + | h = fs.open("messages.txt", "r")
|
| 21 | term.clear() | |
| 22 | term.setCursorPos(1, 1) | |
| 23 | repeat | |
| 24 | line = h.readLine() | |
| 25 | if line ~= nil and line ~= "" then | |
| 26 | date, time, id, message = table.unpack(split(line, 3)) | |
| 27 | print(message) | |
| 28 | end | |
| 29 | until line == nil | |
| 30 | h.close() | |
| 31 | end | |
| 32 | ||
| 33 | write("Starting...")
| |
| 34 | if not fs.exists("messages.txt") then
| |
| 35 | local h = fs.open("messages.txt", "w")
| |
| 36 | h.close() | |
| 37 | end | |
| 38 | ||
| 39 | peripheral.find("modem", rednet.open)
| |
| 40 | ||
| 41 | local h = fs.open("messages.txt", "r")
| |
| 42 | rednet.broadcast(h.readAll(), "response-messenger-backlog") | |
| 43 | h.close() | |
| 44 | refresh() | |
| 45 | ||
| 46 | while true do | |
| 47 | id, message, protocol = rednet.receive() | |
| 48 | if protocol == "request-messenger-backlog" then | |
| 49 | local h = fs.open("messages.txt", "r")
| |
| 50 | rednet.send(id, h.readAll(), "response-messenger-backlog") | |
| 51 | h.close() | |
| 52 | elseif protocol == "broadcast-messenger-message" then | |
| 53 | local h = fs.open("messages.txt", "a")
| |
| 54 | h.writeLine(os.date("%F;%T;")..id..";"..message)
| |
| 55 | h.close() | |
| 56 | end | |
| 57 | refresh() | |
| 58 | end | |
| 59 |