Trystan_C_C

Simple Background Mail

Nov 30th, 2012
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.38 KB | None | 0 0
  1. local localShellThread = nil
  2. local mailDirectory = "/Mail"
  3. local screenWidth, screenHeight = term.getSize()
  4.  
  5.  
  6. function openModem()
  7.         for index, side in pairs(rs.getSides()) do
  8.                 if peripheral.getType(side) == "modem" then
  9.                         rednet.open(side)
  10.                         return true
  11.                 end
  12.         end
  13.        
  14.         return false
  15. end
  16.  
  17. function createNewShell()
  18.         return coroutine.create(function() shell.run("rom/programs/shell") end)
  19. end
  20.  
  21. function getNumberOfTimesAppearedInMailDirectory(fileName)
  22.         local timesAppeared = 0        
  23.         for index, file in ipairs(fs.list(mailDirectory)) do
  24.                 if file:find(fileName) then
  25.                         timesAppeared = timesAppeared + 1
  26.                 end
  27.         end
  28.        
  29.         return timesAppeared
  30. end
  31.  
  32. function handleMail(mail)
  33.         local fileName = "From_" .. mail.sender .. '_'
  34.         fileName = fileName .. getNumberOfTimesAppearedInMailDirectory(fileName)
  35.        
  36.         local file = fs.open(mailDirectory .. '/' .. fileName, 'w')
  37.         file.write("From " .. mail.sender .. "\n\n" .. mail.message)
  38.         file.close()
  39. end
  40.  
  41. function listenForAndHandleMail()
  42.         localShellThread = createNewShell()
  43.         coroutine.resume(localShellThread)
  44.        
  45.         while true do
  46.                 local event = {os.pullEvent()}
  47.                
  48.                 if event[1] == "rednet_message" then
  49.                         local mail = textutils.unserialize(event[3])
  50.                         if mail.sender and mail.message then
  51.                                 handleMail(mail)
  52.                                 local xPos, yPos = term.getCursorPos()
  53.                                
  54.                                 term.setCursorPos(screenWidth - ("Mail from " .. mail.sender):len(), 1)
  55.                                 term.write("Mail from " .. mail.sender)
  56.                                
  57.                                 term.setCursorPos(xPos, yPos)
  58.                                 event = {}
  59.                         end
  60.                 end
  61.                
  62.                 coroutine.resume(localShellThread, unpack(event))
  63.         end
  64. end
  65.  
  66. if not openModem() then
  67.         print("Modem not found.")
  68.         return
  69. end
  70.  
  71. if not fs.isDir(mailDirectory) then
  72.         fs.makeDir(mailDirectory)
  73. end
  74.  
  75. listenForAndHandleMail()
Advertisement
Add Comment
Please, Sign In to add comment