MagmaLP

SMF Output-Rechner

Aug 18th, 2024 (edited)
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.63 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.     term.write(text)
  10. end
  11.  
  12. function head()
  13.     term.setBackgroundColor(colors.black)
  14.     term.clear()
  15.     msg(13, 02, 05, 16, " SMF Item-Output Rechner ")
  16.     msg(13, 03, 05, 16, " ~~~~~~~~~~~~~~~~~~~~~~~ ")
  17. end
  18.  
  19. while true do
  20.     head()
  21.     -- Nachricht anzeigen und Anzahl der SMFs abfragen
  22.     msg(1, 5, 4, 16, " Wie viele SMFs besitzt du?")
  23.     term.setCursorPos(2, 6)
  24.     TotalSMFAmount = tonumber(read())  -- Konvertiere die Eingabe in eine Zahl
  25.     if TotalSMFAmount > 7 then
  26.         TotalSMFAmount = 7
  27.     end
  28.  
  29.     -- Tabellen für die Levels und Einstellungen der SMFs
  30.     SMFLevels = {}
  31.     SMFSettings = {}
  32.     SMFResults = {}
  33.  
  34.     -- Abfrage der Levels für alle SMFs
  35.     for i = 1, TotalSMFAmount do
  36.         msg(1, 6 + i, 4, 16, " Level von SMF " .. i .. " : ")
  37.         SMFLevels[i] = tonumber(read())  -- Level eingeben und in die Tabelle speichern
  38.         if SMFLevels[i] > 3000 then
  39.             SMFLevels[i] = 3000
  40.         end
  41.     end
  42.  
  43.     head()
  44.     -- Erklärung der Einstellungen
  45.     msg(1, 5 , 4, 16, " Einstellungen:")
  46.     msg(1, 6 , 4, 16, " 1 = UU-Matter")
  47.     msg(1, 7 , 4, 16, " 2 = Solars")
  48.     msg(1, 8 , 4, 16, " 3 = LV-Solars")
  49.     x = 10
  50.     -- Abfrage der Einstellungen für alle SMFs
  51.     for i = 1, TotalSMFAmount do
  52.         msg(1, x, 4, 16, " Einstellung für SMF " .. i .. " Level: " .. SMFLevels[i] .. " (1/2/3): ")
  53.         setting = tonumber(read())  -- Einstellung eingeben und in die Tabelle speichern
  54.         x = x + 1
  55.     -- Validierung und Umwandlung der Einstellung in Text
  56.         if setting == 1 then
  57.             SMFSettings[i] = "UU-Matter"
  58.             if SMFSettings[i] == "UU-Matter" and SMFLevels[i] > 48 then
  59.                 SMFLevels[i] = tonumber(48)
  60.             end
  61.             SMFResults[i] = math.floor(SMFLevels[i] * 33333 / 1000000 * 20 * 60 * 60)
  62.         elseif setting == 2 then
  63.             SMFSettings[i] = "Solars"
  64.             if SMFSettings[i] == "Solars" and SMFLevels[i] > 940 then
  65.                 SMFLevels[i] = tonumber(940)
  66.             end
  67.             SMFResults[i] = math.floor(SMFLevels[i] * 33333 * 20 * 60 / 19550000 * 60)
  68.         elseif setting == 3 then
  69.             SMFSettings[i] = "LV-Solars"
  70.             SMFResults[i] = math.floor(SMFLevels[i] * 33333 * 20 * 60 * 60 / 158706000)
  71.         else
  72.             SMFSettings[i] = "Unbekannt"
  73.             SMFResults[i] = 0  -- Fallback bei ungültiger Einstellung
  74.         end
  75.     end
  76.  
  77.     head()
  78.     term.setTextColor(16384)
  79.     print(" ")
  80.     print(" ")
  81.     print(" Maximales Level für UU-Matter:  48")
  82.     print(" Maximales Level für Solars:    940")
  83.     print(" ")
  84.     print(" ")
  85.     -- Ergebnisse anzeigen
  86.     for i = 1, TotalSMFAmount do
  87.         msg(01, i + 8, 04, 16, " " .. i .. ".SMF - Level: " .. SMFLevels[i])
  88.         msg(22, i + 8, 04, 16, "->")
  89.         msg(25, i + 8, 04, 16, " " .. SMFResults[i])
  90.         msg(32, i + 8, 04, 16, " " .. SMFSettings[i] .."/h")
  91.     end
  92.  
  93.     --Programm neustarten                                                )
  94.     msg(01,17,01,06,"           -> neue Berechnung starten <-           ")
  95.     msg(01,19,01,15,"               -> System Neustart <-               ")
  96.  
  97.     local event, button, X, Y = os.pullEvent("mouse_click")
  98.     if X >= 01 and X <= 51 and Y == 17 then --neue Berechnung
  99.         -- neue berechnung
  100.     elseif X >= 01 and X <= 51 and Y == 19 then --restart
  101.         os.reboot()
  102.     end
  103.     sleep(0.5)
  104. end
  105.  
Advertisement
Add Comment
Please, Sign In to add comment