Sirshark10

CloudChat V2

May 23rd, 2016
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local args = {...}
  2. local modem = peripheral.find("modem")
  3. local user = args[1]
  4. local server = tonumber(args[2])
  5. local event, side, sChannel, id, data, dist, bg, chatBox, sid, H
  6. local debug = args[3]
  7. if debug then
  8.   H = 2
  9. else
  10.   H = 1
  11. end
  12. modem.open(os.getComputerID())
  13.  
  14. local function send(msg)
  15.     modem.transmit(server, os.getComputerID(), msg)
  16. end
  17.  
  18. local function receive()
  19.     event, side, sChannel, id, data, dist = os.pullEvent("modem_message")
  20. end
  21.  
  22.  
  23. local function writeMsg()
  24.   data = data .. " "
  25.   local recursive
  26.   if #data > 50 and data:find("%s") then
  27.     recursive = true
  28.     local space = data:find("%s", 50)
  29.     local line = data:sub(0, space - 1)
  30.     data = data:sub(space + 1)
  31.     bg.write(line)
  32.   else
  33.     recursive = false
  34.     bg.write(data)
  35.   end
  36.  
  37.     local x, y = bg.getCursorPos()
  38.     if y >= 15 then
  39.     bg.scroll(1)
  40.     bg.setCursorPos(1, y)
  41.   else
  42.     bg.setCursorPos(1, y + 1)
  43.   end
  44.   if recursive then
  45.     writeMsg()
  46.   end
  47. end
  48.  
  49. local function sendMsg(msg)
  50.     send(sid .. ":" .. msg)
  51.     receive()
  52.     writeMsg()
  53. end
  54.  
  55. local function init()
  56.     term.clear()
  57.     botBar = window.create(term.native(), 1, 17, 52, 3)
  58.     botBar.setBackgroundColor(colors.gray)
  59.     botBar.clear()
  60.     bg = window.create(term.native(), 1, 2, 52, 15)
  61.     bg.setBackgroundColor(colors.lightGray)
  62.     bg.clear()
  63.     bg.setCursorPos(1, 2)
  64.     topBar = window.create(term.native(), 1, 1, 52, 1)
  65.     topBar.setBackgroundColor(colors.blue)
  66.     topBar.clear()
  67.     topBar.setCursorPos(1, 1)
  68.     topBar.write("Cloud Chat")
  69.   if debug == "true" then
  70.     topBar.setCursorPos(45,1)
  71.     topBar.write("Debug")
  72.   end
  73.     chatBox = window.create(term.native(), 2, 18, 49, H)
  74.     chatBox.setBackgroundColor(colors.black)
  75.     chatBox.clear()
  76. end
  77.  
  78. local function input()
  79.     chatBox.setCursorPos(1, 1)
  80.     term.redirect(chatBox)
  81.     data = read()
  82. end
  83.  
  84. init()
  85.  
  86. send(user)
  87. receive()
  88. sid = tonumber(data)
  89. if sid == nil then
  90.     writeMsg()
  91.     sleep(2)
  92.     os.pullEvent()
  93.     term.clear()
  94.     term.setCursorPos(1, 1)
  95.     return
  96. else
  97.     modem.open(id)
  98. end
  99. while true do
  100.     chatBox.clear()
  101.   event = parallel.waitForAny(input, receive)
  102.     if event == 1 and sid ~= nil and data ~= "" then
  103.         sendMsg(data)
  104.     elseif event == 2 then
  105.         writeMsg()
  106.     end
  107. end
Add Comment
Please, Sign In to add comment