Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local w,h = term.getSize()
- local sides = {"top","bottom","left","right","front","back"}
- local Version = "Block talk v.1.1"
- local ID = os.getComputerID()
- local name = "nil"
- local CustomCursor = "-"
- local ChatMessages = { }
- local function printCentered(str,ypos)
- term.setCursorPos(w/2-#str/2,ypos)
- term.write(str)
- end
- local function printRight(str,ypos)
- term.setCursorPos(w-#str,ypos)
- term.write(str)
- end
- local function printLeft(str,ypos)
- term.setCursorPos(1,ypos)
- term.write(str)
- end
- local function discover()
- for i = 1,#sides do
- if peripheral.isPresent(sides[i]) then
- if peripheral.getType(sides[i]) == "modem" then
- rednet.open(sides[i])
- end
- end
- end
- end
- local function setName()
- term.clear()
- printCentered("-Welcome to "..Version.."-",1)
- printCentered(string.rep("-",w),2)
- printCentered("Enter your new name: ",h/2)
- name = read()
- if name == "" then
- setName()
- end
- end
- setName()
- discover()
- while true do
- term.clear()
- printCentered("-Welcome "..name.."-",1)
- printRight("ID:"..tostring(ID),1)
- printCentered(string.rep("-",w),2)
- printCentered(string.rep("-",w),h-1)
- printCentered("Press enter to send a message",h)
- local x = 1
- local y = 3
- term.setCursorPos(x,y)
- for i = 1,#ChatMessages do
- print(ChatMessages[i])
- end
- if #ChatMessages == h-4 then
- table.remove(ChatMessages,1)
- end
- e = {os.pullEvent()}
- if e[1] == "rednet_message" then
- if e[3] == "List now!!!" then
- rednet.send(e[2],name.." @ terminal:"..ID)
- else
- table.insert(ChatMessages,e[3])
- end
- elseif e[1] == "key" and e[2] == 28 then
- term.setCursorPos(1,h)
- term.clearLine()
- term.setCursorPos(1,h)
- local MakeMessage = read()
- if MakeMessage == "" then
- --doesn't send
- else
- rednet.broadcast(name..CustomCursor..MakeMessage)
- table.insert(ChatMessages,name..CustomCursor..MakeMessage)
- end
- elseif e[1] == "key" and e[2] == 29 or e[2] == 157 then
- local slc = 1
- local selected = false
- while not selected do
- printCentered(string.rep(" ",w),h)
- if slc == 1 then
- printCentered("[exit] change name private message cancel next",h)
- elseif slc == 2 then
- printCentered(" exit [change name]private message cancel next",h)
- elseif slc == 3 then
- printCentered(" exit change name[private message]cancel next",h)
- elseif slc == 4 then
- printCentered(" exit change name private message[cancel] next",h)
- elseif slc == 5 then
- printCentered(" exit change name private message cancel[next]",h)
- end
- local sel = {os.pullEvent()}
- if sel[1] == "key" then
- if sel[2] == keys.right and slc < 5 then
- slc = slc + 1
- elseif sel[2] == keys.left and slc > 1 then
- slc = slc - 1
- elseif sel[2] == keys.enter then
- selected = true
- end
- end
- end
- if slc == 1 then
- term.clear()
- printCentered("Thank you for using Block talk",1)
- printCentered("by Awesomesause200",2)
- break
- elseif slc == 2 then
- setName()
- elseif slc == 3 then
- term.setCursorPos(1,h)
- term.clearLine()
- term.setCursorPos(1,h)
- printLeft("ID to send to:",h)
- local Id = read()
- term.clear()
- printCentered("-Welcome "..name.."-",1)
- printRight("ID:"..tostring(ID),1)
- printCentered(string.rep("-",w),2)
- printCentered(string.rep("-",w),h-1)
- term.setCursorPos(1,3)
- for i = 1,#ChatMessages do
- print(ChatMessages[i])
- end
- term.setCursorPos(1,h)
- write("Message:")
- local message = read()
- if tonumber(Id) == nil then
- table.insert(ChatMessages,"[System]".." -> ".."Invalid ID was entered, cannot send")
- else
- rednet.send(tonumber(Id),name.." -> you"..CustomCursor..message)
- end
- term.clear()
- elseif slc == 4 then
- --Makes the code repeat before pressing control
- elseif slc == 5 then
- local slc1 = 1
- local selected1 = false
- while not selected1 do
- printCentered(string.rep(" ",w),h)
- if slc1 == 1 then
- printCentered("[cancel] list ",h)
- elseif slc1 == 2 then
- printCentered(" cancel [list]",h)
- end
- local sel1 = {os.pullEvent()}
- if sel1[1] == "key" then
- if sel1[2] == keys.right and slc1 < 2 then
- slc1 = slc1 + 1
- elseif sel1[2] == keys.left and slc1 > 1 then
- slc1 = slc1 - 1
- elseif sel1[2] == keys.enter then
- selected1 = true
- end
- end
- end
- if slc1 == 1 then
- --returns to regular screen
- elseif slc1 == 2 then
- rednet.broadcast("List now!!!")
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment