Awesomesause200

Block talk v.1

May 20th, 2013
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.67 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"
  5.  
  6. local name = "nil"
  7. local CustomCursor = "-"
  8. local ChatMessages = { }
  9.  
  10. local function printCentered(str,ypos)
  11.   term.setCursorPos(w/2-#str/2,ypos)
  12.   term.write(str)
  13. end
  14.  
  15. local function printRight(str,ypos)
  16.   term.setCursorPos(w-#str,ypos)
  17.   term.write(str)
  18. end
  19.  
  20. local function discover()
  21.   for i = 1,#sides do
  22.     if peripheral.isPresent(sides[i]) then
  23.       if peripheral.getType(sides[i]) == "modem" then
  24.         rednet.open(sides[i])
  25.       end
  26.     end
  27.   end
  28. end
  29.  
  30. local function setName()
  31.     term.clear()
  32.     printCentered("-Welcome to "..Version.."-",1)
  33.     printCentered(string.rep("-",w),2)
  34.     printCentered("Enter your new name: ",h/2)
  35.     name = read()
  36.   if name == "" then
  37.     setName()
  38.   end
  39. end
  40.  
  41. setName()
  42. discover()
  43. while true do
  44.   term.clear()
  45.   printCentered("-Welcome to "..Version.."-",1)
  46.   printCentered(string.rep("-",w),2)
  47.   printCentered(string.rep("-",w),h-1)
  48.   printCentered("Press enter to send a message",h)
  49.  
  50.   local x = 1  
  51.   local y = 3
  52.   term.setCursorPos(x,y)
  53.    
  54.   for i = 1,#ChatMessages do
  55.     print(ChatMessages[i])
  56.   end
  57.  
  58.     if #ChatMessages == h-4 then
  59.             table.remove(ChatMessages,1)
  60.     end
  61.    
  62.   e = {os.pullEvent()}
  63.     if e[1] == "rednet_message" then
  64.       table.insert(ChatMessages,e[3])
  65.     elseif e[1] == "key" and e[2] == 28 then
  66.        
  67.         term.setCursorPos(1,h)
  68.         term.clearLine()
  69.         term.setCursorPos(1,h)
  70.        
  71.         local MakeMessage = read()
  72.        
  73.         if MakeMessage == "" then
  74.             --doesn't send
  75.         else
  76.         rednet.broadcast(name..CustomCursor..MakeMessage)
  77.         end
  78.        
  79.     elseif e[1] == "key" and e[2] == 29 or e[2] == 157 then
  80.         local slc = 1
  81.         local selected = false
  82.             while not selected do
  83.                 printCentered(string.rep(" ",w),h)
  84.                 if slc == 1 then
  85.                     printCentered("[exit] change name  cancel",h)
  86.                 elseif slc == 2 then
  87.                     printCentered(" exit [change name] cancel",h)
  88.                 elseif slc == 3 then
  89.                     printCentered(" exit  change name [cancel]",h)
  90.                 end
  91.            
  92.                 sel = {os.pullEvent()}
  93.                    
  94.                     if sel[1] == "key" then
  95.                         if sel[2] == keys.right and slc < 3 then
  96.                             slc = slc + 1
  97.                         elseif sel[2] == keys.left and slc > 1 then
  98.                             slc = slc - 1
  99.                         elseif sel[2] == keys.enter then
  100.                             selected = true
  101.                         end
  102.                     end
  103.             end
  104.  
  105.             if slc == 1 then
  106.                 term.clear()
  107.                 printCentered("Thank you for using Block talk",1)
  108.                 printCentered("by Awesomesause200",2)
  109.                 break
  110.             elseif slc == 2 then
  111.                 setName()
  112.             elseif slc == 3 then
  113.                 --Replays loop before control was pressed
  114.             end
  115.            
  116. end
  117. end
Advertisement
Add Comment
Please, Sign In to add comment