Advertisement
Ubidibity

filefunctions.lua

Jun 3rd, 2025 (edited)
404
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.04 KB | Gaming | 0 0
  1. -- Supplimental file save and load functions for backpackloot.lua https://pastebin.com/eDNsazPj to persist manifest between reboots
  2. -- filefunctions.lua to be used in backpackloot.lua as local filefunctions = dofile("filefunctions.lua")
  3. -- filefunctions.saveManifest("manifest.dat")
  4. -- filefunctions.loadManifest("manifest.dat")
  5.  
  6.  
  7. local filefunctions = {}
  8.  
  9. -- Get current day abbreviation: Mon, Tue, ..., Sun
  10. local function getDayOfWeek()
  11.     local days = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}
  12.     local time = os.time()
  13.     local day = os.day("%a") % 7 + 1  -- Minecraft os.day is 0-based
  14.     return days[day]
  15. end
  16.  
  17. -- Save global stats and make a rotating daily backup
  18. function filefunctions.saveStats(filename)
  19.     -- Backup first
  20.     local backup_name = "stats_backup_" .. getDayOfWeek() .. ".dat"
  21.     if fs.exists(filename) then
  22.         if fs.exists(backup_name) then
  23.           fs.delete(backup_name) -- we only need the most recent daily backup.
  24.         end
  25.         fs.copy(filename, backup_name)
  26.     end
  27.  
  28.  
  29.  
  30.     -- Save main file
  31.     local file = fs.open(filename, "w")
  32.     if file then
  33.         local data = {
  34.             item_quantities = _G.item_quantities,
  35.             item_frequencies = _G.item_frequencies
  36.         }
  37.         file.write(textutils.serialize(data))
  38.         file.close()
  39.     end
  40. end
  41.  
  42. -- Load saved global stats
  43. function filefunctions.loadStats(filename)
  44.     if fs.exists(filename) then
  45.         local file = fs.open(filename, "r")
  46.         local data = textutils.unserialize(file.readAll())
  47.         file.close()
  48.         if data then
  49.             _G.item_quantities = data.item_quantities or {}
  50.             _G.item_frequencies = data.item_frequencies or {}
  51.             print("pre-return stats...")
  52.             for k,v in pairs(item_quantities) do
  53.                 print("Qty", k, v)
  54.             end
  55.             for k,v in pairs(item_frequencies) do
  56.                 print("Freq", k, v)
  57.             end
  58.                -- using _G. return item_quantities, item_frequencies
  59.             end
  60.         else
  61.           print("No data?",data==nil)
  62.         end
  63.     end
  64.  
  65. return filefunctions
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement