sorry about some german terms but i guess you should understand the code anyways.
the problem is, that after some time (about 1100 seconds) i get this error:
bios:38: vm error: java.lang.ArrayIndexOutOfBoundsException: 256
the code works perfectly with lower timers like 8 seconds run and 5 minutes cd (for a mark V)
Spoiler
--modes
function zyklus100()
term.clear()
term.setCursorPos(1,1)
print("Soll ein Vollzyklus gestartet werden?")
print("werden? ja / nein")
print("Dauer: 2h 45m - EU: 8.000.000")
auswahl = read()
if auswahl == "ja" then
rs.setOutput("back", true)
az = 0
zz = dauer
euzyk = geseu
cdz = cd
timerstart()
else
neustart()
end
end
function zyklus50()
term.clear()
term.setCursorPos(1,1)
print("Soll ein Halbzyklus gestartet werden?")
print("werden? ja / nein")
print("Dauer: 1h 22m - EU: 4.000.000")
auswahl = read()
if auswahl == "ja" then
rs.setOutput("back", true)
az = 0
zz = dauer * 0.50
euzyk = geseu * 0.50
cdz = cd * 0.50
timerstart()
else
neustart()
end
end
function zyklus25()
term.clear()
term.setCursorPos(1,1)
print("Soll ein Viertelzyklus gestartet werden?")
print("werden? ja / nein")
print("Dauer: 51m - EU: 2.000.000")
auswahl = read()
if auswahl == "ja" then
rs.setOutput("back", true)
az = 0
zz = dauer * 0.25
euzyk = geseu * 0.25
cdz = cd * 0.25
timerstart()
else
neustart()
end
end
function zyklus12()
term.clear()
term.setCursorPos(1,1)
print("Soll ein Achtelzyklus gestartet werden?")
print("werden? ja / nein")
print("Dauer: 26m - EU: 1.000.000")
auswahl = read()
if auswahl == "ja" then
rs.setOutput("back", true)
az = 0
zz = dauer * 0.125
euzyk = geseu * 0.125
cdz = cd * 0.125
timerstart()
else
neustart()
end
end
--functions core
function reinstall()
term.clear()
term.setCursorPos(1,1)
print("Setup aendert Daten...")
print("Bitte warten.")
sleep(3)
shell.run("akwmanager")
end
function neustart()
print("Abbruch oder Fehler bei der Eingabe.")
print("Neustart...")
sleep(2)
shell.run("m1menu")
end
--functions modes
function timerstart()
az = az + 5
if az > (zz - 1) then
caz = 0
czz = cdz
rs.setOutput("back", false)
cdtimerstart()
else
term.clear()
term.setCursorPos(1,1)
print("Reaktor laeuft...")
print("Ausstoss/Zyklus :"..euzyk.." EU")
print("EU/sec :"..eusec.." EU")
print("Verbleibende Zeit:")
print(" "..az.." von "..zz.." Sekunden")
sleep(5.01)
timerstart()
end
end
function cdtimerstart()
caz = caz + 5
if caz > (czz - 1) then
timerstop()
else
term.clear()
term.setCursorPos(1,1)
print("Reaktor kuehlt ab...")
print("Verbleibende Zeit:")
print(" "..caz.." von "..czz.." Sekunden")
sleep(5.01)
cdtimerstart()
end
end
function timerstop()
print("Zyklus abgeschlossen.")
print("Produzierte EU in diesem Zyklus:")
print(euzyk.." EU")
print("Enter - Hauptmenu")
wait = read()
shell.run("m1menu")
end
--var
geseu = 8000000
eusec = 40 * 20
dauer = 10000
cd = 14
--core
term.clear()
term.setCursorPos(1,1)
print(" Mark I Reaktor ")
print("======================")
print()
print("Bitte Funktion waehlen")
print("1/1-Zyklus starten (1)")
print("1/2-Zyklus starten (2)")
print("1/4-Zyklus starten (3)")
print("1/8-Zyklus starten (4)")
print("Reaktortyp aendern (5)")
auswahl = read()
if auswahl == "1" then
zyklus100()
elseif auswahl == "2" then
zyklus50()
elseif auswahl == "3" then
zyklus25()
elseif auswahl == "4" then
zyklus12()
elseif auswahl == "5" then
reinstall()
else
neustart()
end
I don't know how to optimize the code or how to do it better, beacause i just started using CC and/or Lua.
sometimes the error occurs earlier if a longer lagg occurs. i hope you can help me.