Awesomesause200

Block talk v.1.1

May 26th, 2013
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.80 KB | None | 0 0
  1. local w,h = term.getSize()
  2. local sides = {"top","bottom","left","right","front","back"}
  3.  
  4. local Version = "Block talk v.1.1"
  5. local ID = os.getComputerID()
  6.  
  7. local name = "nil"
  8. local CustomCursor = "-"
  9. local ChatMessages = { }
  10.  
  11. local function printCentered(str,ypos)
  12.   term.setCursorPos(w/2-#str/2,ypos)
  13.   term.write(str)
  14. end
  15.  
  16. local function printRight(str,ypos)
  17.   term.setCursorPos(w-#str,ypos)
  18.   term.write(str)
  19. end
  20.  
  21. local function printLeft(str,ypos)
  22.   term.setCursorPos(1,ypos)
  23.   term.write(str)
  24. end
  25.  
  26. local function discover()
  27.   for i = 1,#sides do
  28.     if peripheral.isPresent(sides[i]) then
  29.       if peripheral.getType(sides[i]) == "modem" then
  30.         rednet.open(sides[i])
  31.       end
  32.     end
  33.   end
  34. end
  35.  
  36. local function setName()
  37.     term.clear()
  38.     printCentered("-Welcome to "..Version.."-",1)
  39.     printCentered(string.rep("-",w),2)
  40.     printCentered("Enter your new name: ",h/2)
  41.     name = read()
  42.   if name == "" then
  43.     setName()
  44.   end
  45. end
  46.  
  47. setName()
  48. discover()
  49. while true do
  50.   term.clear()
  51.   printCentered("-Welcome "..name.."-",1)
  52.   printRight("ID:"..tostring(ID),1)
  53.   printCentered(string.rep("-",w),2)
  54.   printCentered(string.rep("-",w),h-1)
  55.   printCentered("Press enter to send a message",h)
  56.  
  57.   local x = 1  
  58.   local y = 3
  59.   term.setCursorPos(x,y)
  60.    
  61.   for i = 1,#ChatMessages do
  62.     print(ChatMessages[i])
  63.   end
  64.  
  65.     if #ChatMessages == h-4 then
  66.             table.remove(ChatMessages,1)
  67.     end
  68.    
  69.   e = {os.pullEvent()}
  70.     if e[1] == "rednet_message" then
  71.       if e[3] == "List now!!!" then
  72.         rednet.send(e[2],name.." @ terminal:"..ID)
  73.       else
  74.         table.insert(ChatMessages,e[3])
  75.       end
  76.     elseif e[1] == "key" and e[2] == 28 then
  77.        
  78.         term.setCursorPos(1,h)
  79.         term.clearLine()
  80.         term.setCursorPos(1,h)
  81.        
  82.         local MakeMessage = read()
  83.        
  84.         if MakeMessage == "" then
  85.             --doesn't send
  86.         else
  87.         rednet.broadcast(name..CustomCursor..MakeMessage)
  88.     table.insert(ChatMessages,name..CustomCursor..MakeMessage)
  89.         end
  90.        
  91.     elseif e[1] == "key" and e[2] == 29 or e[2] == 157 then
  92.         local slc = 1
  93.         local selected = false
  94.        
  95.         while not selected do
  96.             printCentered(string.rep(" ",w),h)         
  97.                 if slc == 1 then
  98.                     printCentered("[exit] change name private message cancel  next",h)
  99.                 elseif slc == 2 then
  100.                     printCentered(" exit [change name]private message cancel  next",h)
  101.                 elseif slc == 3 then
  102.                     printCentered(" exit  change name[private message]cancel  next",h)
  103.                 elseif slc == 4 then
  104.                     printCentered(" exit  change name private message[cancel] next",h)
  105.                 elseif slc == 5 then
  106.                     printCentered(" exit  change name private message cancel[next]",h)
  107.                 end
  108.            
  109.                 local sel = {os.pullEvent()}
  110.                    
  111.                     if sel[1] == "key" then
  112.                         if sel[2] == keys.right and slc < 5 then
  113.                             slc = slc + 1
  114.                         elseif sel[2] == keys.left and slc > 1 then
  115.                             slc = slc - 1
  116.                         elseif sel[2] == keys.enter then
  117.                             selected = true
  118.                         end
  119.                     end
  120.             end
  121.  
  122.             if slc == 1 then
  123.                 term.clear()
  124.                 printCentered("Thank you for using Block talk",1)
  125.                 printCentered("by Awesomesause200",2)
  126.                 break
  127.             elseif slc == 2 then
  128.                 setName()
  129.             elseif slc == 3 then
  130.    
  131.                 term.setCursorPos(1,h)
  132.                 term.clearLine()
  133.                 term.setCursorPos(1,h)
  134.    
  135.                 printLeft("ID to send to:",h)
  136.                
  137.                 local Id = read()
  138.                
  139.                 term.clear()
  140.                     printCentered("-Welcome "..name.."-",1)
  141.                     printRight("ID:"..tostring(ID),1)
  142.                     printCentered(string.rep("-",w),2)
  143.                     printCentered(string.rep("-",w),h-1)
  144.                    
  145.                     term.setCursorPos(1,3)
  146.                       for i = 1,#ChatMessages do
  147.                         print(ChatMessages[i])
  148.                       end
  149.                    
  150.                     term.setCursorPos(1,h)
  151.                     write("Message:")
  152.    
  153.                     local message = read()
  154.                    
  155.                     if tonumber(Id) == nil then
  156.                             table.insert(ChatMessages,"[System]".." -> ".."Invalid ID was entered, cannot send")
  157.                     else
  158.                         rednet.send(tonumber(Id),name.." -> you"..CustomCursor..message)
  159.                     end
  160.  
  161.                     term.clear()
  162.             elseif slc == 4 then
  163.                 --Makes the code repeat before pressing control
  164.             elseif slc == 5 then
  165.                 local slc1 = 1
  166.                 local selected1 = false
  167.                     while not selected1 do
  168.                     printCentered(string.rep(" ",w),h)         
  169.                         if slc1 == 1 then
  170.                             printCentered("[cancel] list ",h)
  171.                         elseif slc1 == 2 then
  172.                             printCentered(" cancel [list]",h)
  173.                         end
  174.                
  175.                 local sel1 = {os.pullEvent()}
  176.                    
  177.                     if sel1[1] == "key" then
  178.                         if sel1[2] == keys.right and slc1 < 2 then
  179.                             slc1 = slc1 + 1
  180.                         elseif sel1[2] == keys.left and slc1 > 1 then
  181.                             slc1 = slc1 - 1
  182.                         elseif sel1[2] == keys.enter then
  183.                             selected1 = true
  184.                         end
  185.                     end
  186.             end
  187.                         if slc1 == 1 then
  188.                             --returns to regular screen
  189.                         elseif slc1 == 2 then
  190.                             rednet.broadcast("List now!!!")
  191.                         end
  192.             end
  193.            
  194. end
  195. end
Advertisement
Add Comment
Please, Sign In to add comment