Advertisement
Guest User

chat

a guest
Jul 4th, 2015
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 11.09 KB | None | 0 0
  1. term.clear()
  2. mon = peripheral.wrap("monitor_5")
  3.  
  4.  
  5.  
  6. local memn = 0
  7. function save(table)
  8. local file = fs.open("ChatMemory","w")
  9. file.write(textutils.serialize(table))
  10. file.close()
  11. end
  12.  
  13. function load()
  14.  
  15.   local file = fs.open("ChatMemory","r")
  16.   local data = file.readAll()
  17.   file.close()
  18.   return textutils.unserialize(data)
  19.  
  20. end
  21.  
  22. function recover()
  23.  
  24. chatTable = load()
  25.  
  26. for i = 1,#chatTable do
  27.   term.setCursorPos(1,i)
  28.   write(chatTable[i])
  29. end
  30.  
  31. chatLine = #chatTable
  32. end
  33.  
  34. ChatMemory = {}
  35. Temp = {}
  36. local arg = {...}
  37. term.setCursorPos(1,1)
  38.  mon.setCursorPos(1,1)
  39. function LR()
  40. local n=1
  41. while true do
  42. local x, y=term.getCursorPos()
  43. term.clearLine()
  44. mon.clearLine()
  45. if n==1 then write(">LEFT<   RIGHT") else write (" LEFT   >RIGHT<") end
  46. term.setCursorPos(x, y)
  47. mon.setCursorPos(x, y)
  48. a, b=os.pullEventRaw()
  49. while a~="key" do a, b=os.pullEventRaw() end
  50. if b==203 and n==2 then n=1 end
  51. if b==205 and n==1 then n=2 end
  52. if b==28 then print("") break end
  53. end
  54. if n==1 then return true end
  55. if n==2 then return false end
  56. return false
  57. end
  58. --local chatTable = { [1] = "Welcome To Ravenwood! (/help for commands)" }
  59. --local chatLine = 1
  60. recover()
  61. local message = ""
  62. local user = "???"
  63. local compID = os.computerID()
  64. local toID = ""
  65. local msgMessage = ""
  66. local msgSent = ""
  67.  
  68. function drawLine()
  69. term.setCursorPos( 1, 17 )
  70. term.clearLine()
  71. mon.setCursorPos( 1, 17 )
  72. mon.clearLine()
  73. --for n=1,49 do
  74. --io.write("=")
  75. --end
  76.  --for j=0, math.ceil(#message/49)-1 do
  77.   --textmm = ""
  78.      --for i=0, 49 do
  79.       -- kk = j*49 + i
  80.      --  char = message:sub(kk,kk)
  81.       -- textmm = textmm .. char
  82.    --  end
  83.   term.setCursorPos(1,19)
  84.   term.clearLine()
  85.   term.setCursorPos(1,18)
  86.   term.clearLine()
  87.   write(username)
  88.   write(": ")
  89.   write(message)
  90.  
  91.   mon.setCursorPos(1,19)
  92.   mon.clearLine()
  93.   mon.setCursorPos(1,18)
  94.   mon.clearLine()
  95.   mon.write(username)
  96.   mon.write(": ")
  97.   mon.write(message)
  98.  
  99.  --end
  100. end
  101. function addChat(str)
  102. if chatLine < 16 then
  103.   table.insert(chatTable, str)
  104.   chatLine = chatLine + 1
  105. else
  106.   for n=1,15 do
  107.    chatTable[n] = chatTable[n+1]
  108.   end
  109.    chatTable[16] = str
  110.   end
  111.  
  112. save(chatTable)
  113. end
  114.  
  115. function quit()
  116. os.exit()
  117. end
  118.  
  119. function showChat()
  120. term.setCursorPos( 1, 1 )
  121. mon.setCursorPos( 1, 1 )
  122. for n=1,chatLine do
  123.   term.clearLine()
  124.   print(chatTable[n])
  125.  
  126.   mon.setCursorPos(1,n)
  127.   mon.clearLine()
  128.   mon.write(chatTable[n])
  129. end
  130. end
  131. print("Is your modem on the Left or the Right?")
  132. term.setCursorPos(1,18)
  133.  mon.setCursorPos(1,18)
  134. if arg[1] == nil then
  135.     if LR() == true then
  136.       rednet.open("left")
  137.     else
  138.       rednet.open("right")
  139.     end
  140. else
  141.    rednet.open(arg[1])
  142. end
  143.    mon.clear()
  144. term.clear()
  145. repeat
  146. term.setCursorPos(1,1)
  147. mon.setCursorPos(1,1)
  148. print("Enter Your Username.")
  149. term.setCursorPos(1,18)
  150. mon.setCursorPos(1,18)
  151. if arg[2] == nil then
  152.     user = read()
  153. else
  154.     if #arg[2] < 9 then
  155.       user = arg[2]
  156.     else
  157.       user = read()
  158.     end
  159. end
  160. if string.len(user) > 9 then
  161. term.setCursorPos(1,2)
  162. mon.setCursorPos(1,2)
  163. print("Name too long! 9 character maximum.")
  164. term.setCursorPos(1,18)
  165. mon.setCursorPos(1,18)
  166. elseif string.len(user) > 0 then
  167. write("Your username is ")
  168. mon.write("Your username is ")
  169. write(user)
  170. mon.write(user)
  171. print("")
  172. print("Entering Chat...")
  173. username = user
  174. end
  175. until string.len(user) ~=0
  176. sleep(2.0)
  177. term.clear()
  178. mon.clear()
  179. drawLine()
  180. rednet.broadcast("")
  181. rednet.broadcast(username .. " enters the room!")
  182. recover()
  183. repeat
  184.  
  185. term.setCursorPos(1,1)
  186. write(chatTable[chatLine] or "")
  187. mon.write(chatTable[chatLine] or "")
  188. drawLine()
  189. showChat()
  190. term.setCursorPos((3 + string.len(username) + string.len(message)),18)
  191. mon.setCursorPos((3 + string.len(username) + string.len(message)),18)
  192. term.setCursorBlink( true )
  193.  mon.setCursorBlink( true )
  194. event, param = os.pullEventRaw()
  195. if event == "key" then
  196.   if param == 28 then
  197.    if string.sub(message,1,1) == "/" then
  198.         if string.sub(message,1,6) == "/name " then
  199.          if string.len(message) > 6 then
  200.           if string.len(message) < 16 then
  201.            user = username
  202.            username = string.sub(message,7,string.len(message))
  203.            message = "User '" .. user .. "' is now called '" .. username .. "'!"
  204.            rednet.broadcast("")
  205.            rednet.broadcast(message)
  206.            addChat(message)
  207.            message = ""
  208.            drawLine()
  209.           else
  210.            addChat("<SYS> Name too long! Maximum 9 characters.")
  211.            message = ""
  212.           end
  213.          end
  214.         elseif string.sub(message,1,4) == "/me " then
  215.          local meMessage = string.sub(message,4,string.len(message))
  216.          message = "*" .. username .. meMessage
  217.          rednet.broadcast("")
  218.          rednet.broadcast(message)
  219.          addChat(message)
  220.          message = ""
  221.          drawLine()
  222.         elseif string.sub(message,1,5) == "/list" then
  223.          rednet.broadcast("")
  224.          rednet.broadcast(message)
  225.          message = ""
  226.         elseif string.sub(message,1,5) == "/exit" then
  227.          addChat("<SYS> Goodbye!")
  228.          rednet.broadcast("")
  229.          rednet.broadcast("User '" .. username .. "' exits the room.")
  230.          sleep(1.0)
  231.          term.Clear()
  232.      mon.Clear()
  233.          term.setCursorPos(1,1)
  234.      mon.setCursorPos(1,1)
  235.          break
  236.         elseif string.sub(message,1,5) == "/quit" then
  237.          addChat("<SYS> Goodbye!")
  238.          rednet.broadcast("")
  239.          rednet.broadcast("User '" .. username .. "' exits the room.")
  240.          sleep(1.0)
  241.          term.Clear()
  242.          term.setCursorPos(1,1)
  243.          break
  244.         elseif string.sub(message,1,5) == "/help" then
  245.          addChat("/help - lists programs")
  246.          addChat("/name <name> - changes username")
  247.          addChat("/list - lists connected users, and console IDs")
  248.          addChat("/me - used as emote")
  249.          addChat("/clear - clears the screen")
  250.          addChat("/msg <ID> <message> - sends a private message")
  251.          addChat("/exit - exits the program")
  252.          message = ""
  253.         elseif string.sub(message,1,5) == "/msg " then
  254.          if string.len(message) > 5 then
  255.           if string.sub(message,7,7) == " " then
  256.            toID = string.sub(message,6,6)
  257.            msgMessage = string.sub(message,8,string.len(message))
  258.            addChat("You whisper to #" .. toID .. ": " .. msgMessage)
  259.            message = username .. " whispers to you: " .. msgMessage
  260.            toID = tonumber(toID)
  261.            rednet.send(toID,"")
  262.            rednet.send(toID,message)
  263.            message = ""
  264.           elseif string.sub(message, 8,8) == " " then
  265.            toID = string.sub(message,6,7)
  266.            msgMessage = string.sub(message,9,string.len(message))
  267.            addChat("You whisper to #" .. toID .. ": " .. msgMessage)
  268.            message = username .. " whispers to you: " .. msgMessage
  269.            toID = tonumber(toID)
  270.            rednet.send(toID,"")
  271.            rednet.send(toID,message)
  272.            message = ""
  273.           elseif string.sub(message, 9,9) == " " then
  274.            toID = string.sub(message,6,8)
  275.            msgMessage = string.sub(message,10,string.len(message))
  276.            addChat("You whisper to #" .. toID .. ": " .. msgMessage)
  277.            message = username .. " whispers to you: " .. msgMessage
  278.            toID = tonumber(toID)
  279.            rednet.send(toID, "")
  280.            rednet.send(toID,message)
  281.            message = ""
  282.           elseif string.sub(message,10,10) == " " then
  283.            toID = string.sub(message,6,9)
  284.            msgMessage = string.sub(message,11,string.len(message))
  285.            addChat("You whisper to #" .. toID .. ": " .. msgMessage)
  286.            message = username .. " whispers to you: " .. msgMessage
  287.            toID = tonumber(toID)
  288.            rednet.send(toID,"")
  289.            rednet.send(toID,message)
  290.            message = ""
  291.           end
  292.          end
  293.         elseif string.sub(message,1,3) == "/m " then
  294.          if string.len(message) > 3 then
  295.           if string.sub(message,5,5) == " " then
  296.            toID = string.sub(message,4,4)
  297.            msgMessage = string.sub(message,6,string.len(message))
  298.            addChat("You whisper to #" .. toID .. ": " .. msgMessage)
  299.            message = username .. " whispers to you: " .. msgMessage
  300.            toID = tonumber(toID)
  301.            rednet.send(toID,"")
  302.            rednet.send(toID,message)
  303.            message = ""
  304.           elseif string.sub(message, 6,6) == " " then
  305.            toID = string.sub(message,4,5)
  306.            msgMessage = string.sub(message,7,string.len(message))
  307.            addChat("You whisper to #" .. toID .. ": " .. msgMessage)
  308.            message = username .. " whispers to you: " .. msgMessage
  309.            toID = tonumber(toID)
  310.            rednet.send(toID,"")
  311.            rednet.send(toID,message)
  312.            message = ""
  313.           elseif string.sub(message, 7,7) == " " then
  314.            toID = string.sub(message,4,6)
  315.            msgMessage = string.sub(message,8,string.len(message))
  316.            addChat("You whisper to #" .. toID .. ": " .. msgMessage)
  317.            message = username .. " whispers to you: " .. msgMessage
  318.            toID = tonumber(toID)
  319.            rednet.send(toID,"")
  320.            rednet.send(toID,message)
  321.            message = ""
  322.           elseif string.sub(message,8,8) == " " then
  323.            toID = string.sub(message,4,7)
  324.            msgMessage = string.sub(message,9,string.len(message))
  325.            addChat("You whisper to #" .. toID .. ": " .. msgMessage)
  326.            message = username .. " whispers to you: " .. msgMessage
  327.            toID = tonumber(toID)
  328.            rednet.send(toID,"")
  329.            rednet.send(toID,message)
  330.            message = ""
  331.           end
  332.          end
  333.         elseif string.sub(message,1,6) == "/clear" then
  334.          term.Clear()
  335.          for n=1,16 do
  336.           addChat(" ")
  337.          end
  338.          --chatTable = {}
  339.          --chatLine = 1
  340.          recover()
  341.          message = ""
  342.         else
  343.          message = ""
  344.         end
  345.    else
  346.         if string.len(message) > 0 then
  347.           username = tostring(username)
  348.           message = tostring(message)
  349.           message = "<" .. username .. "> " .. message
  350.           mess = {}
  351.           --messeage:gsub(".",function(c) table.insert(mess,c) end)
  352.           for i=0, math.ceil((#message)/49)-1 do
  353.               textm = ""
  354.               for j = 1, (49) do
  355.                 letter = message:sub(j + i*49, j + i*49)
  356.                 textm = textm .. letter
  357.               end
  358.          
  359.          
  360.           rednet.broadcast("")
  361.           rednet.broadcast(textm)
  362.           addChat(textm)
  363.           end
  364.           message = ""
  365.           drawLine()
  366.         end
  367.    end
  368.   elseif param == 14 then
  369.    message = string.sub(message,1,string.len(message)-1)
  370.    drawLine()
  371.   end
  372. end
  373.  
  374. if event == "char" then
  375.   if string.len(message) < 49*2-10 then
  376.         message = message .. param
  377.   end
  378.   drawLine()
  379. end
  380. if event == "rednet_message" then
  381.   id, incoming = rednet.receive(0.5)
  382.  
  383.   if incoming == "/list" then
  384.    rednet.send(id,"")
  385.    rednet.send(id,"User '" .. username .. "' is connected at terminal #" .. compID)
  386.   else
  387.    addChat(incoming)
  388.   end
  389. end
  390.  
  391. until message == "downtime"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement