Advertisement
Xylem_Gaming

Messenger (Client)

Apr 7th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.11 KB | None | 0 0
  1. --MESSENGER CLIENT
  2. bexit = false
  3. id = os.getComputerID()
  4. x,y = term.getSize()
  5. i = 3
  6.  
  7. local function openRednet()
  8.   for _,side in pairs(rs.getSides()) do
  9.     if peripheral.isPresent(side) and peripheral.getType(side) == 'modem' then
  10.       rednet.open(side)
  11.       return(side)
  12.     end
  13.   end
  14.   print("No modem present!")
  15. end
  16.  
  17. function getid()
  18.   if fs.exists("/.serverid") == true then
  19.     file = fs.open("/.serverid")
  20.     serverid = file.readAll()
  21.     file.close()
  22.     return true
  23.   end
  24.   return false
  25. end
  26.  
  27. function slow(text,h)
  28.   w = math.floor((x-string.len(text))/2)
  29.   term.setCursorPos(w,h)
  30.   textutils.slowPrint(text)
  31. end
  32.  
  33. function drawTab()
  34.   term.setTextColor(colors.yellow)
  35.   --clear()
  36.   term.setCursorPos(1,1)
  37.   term.clearLine()
  38.   print("Computer ID "..id)
  39.   term.setCursorPos(1,2)
  40.   term.clearLine()
  41.   print("__________________________________________________")
  42.   term.setCursorPos(1,y-3)
  43.   term.clearLine()
  44.   print("__________________________________________________")
  45.   term.setTextColor(colors.white)
  46. end
  47.  
  48. function clear()
  49.   term.clear()
  50.   term.setCursorPos(1,1)
  51. end
  52.  
  53. function input()
  54.   term.setTextColor(colors.white)
  55.   term.setCursorPos(1,y-1)
  56.   local message2 = read()
  57.   if message2 == "exit" then
  58.     --bexit = true
  59.     clear()
  60.     term.setTextColour(colours.orange)
  61.     print("Thanks for using messenger by Xylem")
  62.   else
  63.     term.setCursorPos(1,y-1)
  64.     term.clearLine()
  65.     win("Me: "..message2)
  66.     rednet.send(serverid,message2)
  67.   end
  68. end
  69.  
  70. function listen()
  71.   id2,message = rednet.receive()
  72.   if id2 == sid and message == "Server is shutdown" then
  73.     --bexit = true
  74.     clear()
  75.     print("Server "..sid.." has shutdown been by host")
  76.   else
  77.     win(message)
  78.   end
  79. end
  80.  
  81. function win(text)
  82.   if i > y-5 or i==y-5 then
  83.     term.setCursorPos(1,y-3)
  84.     term.clearLine()
  85.     term.setCursorPos(1,4)
  86.     term.clearLine()
  87.     term.scroll(1)
  88.     drawTab()
  89.     term.setCursorPos(1,y-5)
  90.     print(text)
  91.   else
  92.     term.setCursorPos(1,1+i)
  93.     print(text)
  94.     i = i+1
  95.   end
  96. end
  97.  
  98. modemSide = openRednet()
  99.  
  100. if modemSide == nil then
  101.   print("No modem connected")
  102. else
  103.   print("Opened modem on "..modemSide.."!")
  104. end
  105.  
  106.  
  107. --Authenticator
  108.  
  109. if serverid == nil then
  110.     bexit = false
  111.     term.clear()
  112.   --Intro
  113.     term.setCursorPos(1,1)
  114.     term.setTextColor(colours.yellow)
  115.     term.write("Enter server ID: ")
  116.     term.setTextColor(colours.white)
  117.     --Input from intro to show the server id
  118.     sinput = tonumber(read())
  119.     rednet.send(tonumber(sinput),"request")
  120.     --Recieve authentication
  121.     sid, request = rednet.receive()
  122.     --SID is temporary to see if authentication is fullfilled
  123.   if request == "accepted" then -- No password set
  124.       term.clear()
  125.       term.setTextColor(colours.green)
  126.       term.setCursorPos(1,1)
  127.       print("Connected")
  128.       sleep(1)
  129.       rednet.send(tonumber(sinput),"connected")
  130.       serverid = sid -- serverid is now established
  131.     elseif request == "password" then -- Password set
  132.       term.setTextColour(colours.yellow)
  133.       term.write("Enter Password: ")
  134.       term.setTextColour(colours.white)
  135.       passatmp = read("*")
  136.       rednet.send(sid,passatmp)
  137.       id3,request2 = rednet.receive()
  138.       if request2 == "denied" then -- Rejected request
  139.         term.clear()
  140.         .sapi.printColour(red)
  141.         print("Incorrect Password")
  142.         sleep(1)
  143.         bexit = true -- Cancel program
  144.       elseif request2 == "accepted" then -- Accepted request
  145.         term.clear()
  146.         .sapi.printColour(green,"Correct Password",1,1)
  147.         sleep(1)
  148.         serverid = sid
  149.       end
  150.     elseif request == nil then
  151.       term.clear()
  152.       .sapi.printColour(orange,"Error",1,1)
  153.       bexit = true -- Cancel program
  154.     end
  155. end
  156. --Main method
  157. if modemSide ~= nil then
  158.   sid, request = rednet.send(serverid,"rejoin",10)
  159.   --[[if sid == nil and request == nil then
  160.     bexit = true
  161.     clear()
  162.     print("Server is currently down")
  163.   end]]
  164.   clear()
  165.   drawTab()
  166.   while bexit == false do    
  167.     parallel.waitForAny(input,listen)
  168.   end
  169. else
  170.   print("No modem was found. Please place a modem ")
  171. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement