MagmaLP

Mall Dust Rechner DE

Aug 18th, 2024 (edited)
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.27 KB | None | 0 0
  1. function calc_color(color)
  2.     return math.pow(2, color - 1)
  3. end
  4.  
  5. function msg(gap, line, color, groundb, text)
  6.     term.setBackgroundColor(calc_color(groundb))
  7.     term.setCursorPos(gap,line)
  8.     term.setTextColor(calc_color(color))
  9.     text = term.write(text)
  10. end
  11.  
  12. function clear()
  13.     for a = 5,20 do
  14.         for b = 1,50, 10 do
  15.             msg(b,a,16,16,"          ")
  16.         end
  17.     end
  18. end
  19.  
  20. while true do
  21.     term.setBackgroundColor(colors.black)
  22.     term.setTextColor(colors.white)
  23.     term.setCursorPos(1,1)
  24.     term.clear()
  25.  
  26.     -- Funktion, um die Liste einzulesen und die Daten für einen Levelbereich zu summieren
  27.     function getLevelRangeData(startLevel, endLevel)
  28.         local file = fs.open("dustlist", "r")
  29.         local sumAsh, sumMiniumdust, sumVerdandust, sumAzuredust, sumAmaranthinedust, sumIridescentdust = 0, 0, 0, 0, 0, 0
  30.  
  31.         -- Datei Zeile für Zeile lesen
  32.         for line in file.readLine do
  33.             local parts = {}
  34.             for part in string.gmatch(line, "%S+") do
  35.                 table.insert(parts, part)
  36.             end
  37.  
  38.             if #parts >= 7 then
  39.                 local level = tonumber(parts[1])
  40.                 if level and level >= tonumber(startLevel) and level <= tonumber(endLevel) then
  41.                     -- Summiere die Werte
  42.                     sumAsh = sumAsh + tonumber(parts[2])
  43.                     sumMiniumdust = sumMiniumdust + tonumber(parts[3])
  44.                     sumVerdandust = sumVerdandust + tonumber(parts[4])
  45.                     sumAzuredust = sumAzuredust + tonumber(parts[5])
  46.                     sumAmaranthinedust = sumAmaranthinedust + tonumber(parts[6])
  47.                     sumIridescentdust = sumIridescentdust + tonumber(parts[7])
  48.                 end
  49.             end
  50.         end
  51.         file.close()
  52.  
  53.         return sumAsh, sumMiniumdust, sumVerdandust, sumAzuredust, sumAmaranthinedust, sumIridescentdust
  54.     end
  55.  
  56.     function getLevelInput(prompt)
  57.         local level = nil
  58.         while not level do
  59.             print(prompt)
  60.             level = tonumber(read())
  61.             if not level then
  62.                 print("Ungültige Eingabe. Bitte eine Zahl eingeben.")
  63.             end
  64.         end
  65.         return level
  66.     end
  67.  
  68.     msg(16,02,05,16," SMF Dust Rechner ")
  69.     msg(16,03,05,16," ~~~~~~~~~~~~~~~~ ")
  70.  
  71.     clear()
  72.     term.setTextColor(colors.lightBlue)
  73.     term.setCursorPos(1,5)
  74.     local startLevel = getLevelInput("Dein aktuelles SMF Level:")
  75.     startLevel = startLevel + 1
  76.     clear()
  77.     term.setTextColor(colors.lightBlue)
  78.     term.setCursorPos(1,5)
  79.     local endLevel = getLevelInput("Das SMF Ziel-Level:")
  80.     clear()
  81.    
  82.     if startLevel > endLevel then
  83.         term.setTextColor(colors.red)
  84.         term.setCursorPos(1,8)
  85.         print("Ungültige Eingabe.")
  86.         print("Start-Level muss kleiner als Zeil-Level sein.")
  87.         sleep(4)
  88.         shell.run("SMF-Dustcalculator_DE")
  89.     elseif endLevel > 3000 then
  90.         term.setTextColor(colors.red)
  91.         term.setCursorPos(1,8)
  92.         print("Ungültige Eingabe.")
  93.         print("Zeil-Level darf nicht höher als 3000 sein.")
  94.         sleep(4)
  95.         shell.run("SMF-Dustcalculator_DE")
  96.     end
  97.    
  98.     local sumAsh, sumMiniumdust, sumVerdandust, sumAzuredust, sumAmaranthinedust, sumIridescentdust = getLevelRangeData(startLevel, endLevel)
  99.  
  100.     clear()
  101.     msg(01,05,04,16,"Resourcen benötigt von Level " .. startLevel .. " bis " .. endLevel)
  102.     msg(01,07,09,16,"Ash:         " .. sumAsh)
  103.     msg(01,08,15,16,"Minium:      " .. sumMiniumdust)
  104.     msg(01,09,14,16,"Verdan:      " .. sumVerdandust)
  105.     msg(01,10,10,16,"Azure:       " .. sumAzuredust)
  106.     msg(01,11,11,16,"Amaranthine: " .. sumAmaranthinedust)
  107.     msg(01,12,08,16,"Iridescent:  " .. sumIridescentdust)
  108.  
  109.     --Programm neustarten                                                )
  110.     msg(01,17,01,06,"           -> neue Berechnung starten <-           ")
  111.     msg(01,19,01,15,"               -> System Neustart <-               ")
  112.  
  113.     local event, button, X, Y = os.pullEvent("mouse_click")
  114.     if X >= 01 and X <= 51 and Y == 17 then --neue Berechnung
  115.         -- neue berechnung
  116.     elseif X >= 01 and X <= 51 and Y == 19 then --restart
  117.         os.reboot()
  118.     end
  119.     sleep(0.5)
  120. end                        
  121.  
  122.  
  123.  
  124.  
  125.  
Advertisement
Add Comment
Please, Sign In to add comment