hilburn

Notification List

Aug 20th, 2014
589
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.09 KB | None | 0 0
  1. mon=peripheral.wrap("left")
  2. list={}
  3. playerAdmins={}
  4. menu={[1]="Add item to board",[2]="Remove item from board"}
  5. mon.setTextScale(2)
  6. monitorsizex, monitorsizey = mon.getSize()
  7.  
  8. local function saveList()
  9.         if fs.exists("list.dat") then
  10.                 fs.delete("list.dat")
  11.         end
  12.         file = fs.open("list.dat", "w")
  13.         file.write(textutils.serialize(list))
  14.         file.close()
  15. end
  16.  
  17. local function loadList()
  18.         if fs.exists("list.dat") then
  19.                 file = fs.open("list.dat", "r")
  20.                 list = textutils.unserialize(file.readAll())
  21.                 file.close()
  22.         end
  23. end
  24.  
  25. local function addToList(info,player,forplayer)
  26.     list[#list+1]={info,player,forplayer}
  27.     saveList()
  28. end
  29.  
  30. local function removeFromList(number, player)
  31.     if isAdmin(player) or list[number].player=="" or string.upper(player)==string.upper(list[number].player) or string.upper(player)==string.upper(list[number].forplayer) then
  32.         table.remove(list,number)
  33.     end
  34.     saveList()
  35. end
  36.  
  37. local function isAdmin(name)
  38.     if name=="" then return false end
  39.     for i,j in pairs(playerAdmins) do
  40.         if string.upper(player)==string.upper(j) then return true end
  41.     end
  42.     return false
  43. end
  44.  
  45. local function printLine(line, text)
  46.     mon.setCursorPos(1,line)
  47.     mon.write(text)
  48.     return line+1
  49. end
  50.  
  51. local function splitString(text,length)
  52.     return string.sub(text,1,length), string.sub(text,length+1)
  53. end
  54.  
  55. local function printList()
  56.     mon.clear()
  57.     line=1
  58.     for i,j in pairs(list) do
  59.         forplayer=""
  60.             if j.forplayer~="" then forplayer=j.forplayer..": " end
  61.         fromplayer=""
  62.         if j.player~="" then fromplayer=" - "..j.player end
  63.         printtext="["..i.."] "..forplayer..j.info..fromplayer
  64.         while string.length(printtext)>monitorsizex do              --this just handles text wrapping
  65.             printline, printtext = splitString(printtext,monitorsizex)
  66.             line=printLine(printline,line)
  67.         end
  68.         printline(printtext,line)                      
  69.      end
  70. end
  71.  
  72. local function addItem()
  73.     print("Add Item)
  74.     print("Type \ at any point to cancel")
  75.     print("Text to add:")
  76.     input=""
  77.     while input=="" do
  78.         input=read()
  79.         if input=="\" then return end
  80.     end
  81.     print("Receiving Player (Optional)")
  82.     forplayer=read()
  83.     if forplayer=="\" then return end
  84.     print("Sending Player (Optional)")
  85.     fromplayer=read()
  86.     if fromplayer=="\" then return end
  87.     addItemToList(input,fromplayer,forplayer)
  88.     printList()
  89. end
  90.  
  91. local function removeItem()
  92.     print("Remove Item)
  93.     print("Type \ at any point to cancel")
  94.     print("Item to remove")
  95.     input=0
  96.     while input<1 or input>2 do
  97.         input=read()
  98.         if input=="\" then return end
  99.         input=tonumber(input)
  100.     end
  101.     print("Your Name (Optional)")
  102.     player=read()
  103.     if player=="\" then return end
  104.     removeFromList(input, player)
  105.     printList()
  106. end
  107.  
  108. local function printMenu()
  109.     while true do
  110.         term.clear()
  111.         for i,j in pairs(menu) do
  112.             print("["..i.."] "..j)
  113.         end
  114.         input=0
  115.             while not (input>0 and input<=#menu) do   --#loops until valid input
  116.                 input=tonumber(read())
  117.         end
  118.         if input==1 then
  119.             addItem()
  120.         else
  121.             removeItem()
  122.         end
  123.     end
  124. end
  125.  
  126. loadList()
  127. printList()
  128. printMenu()
Advertisement
Add Comment
Please, Sign In to add comment