jloos Posted February 6 Posted February 6 Hallo, Das script von @Goetz über den zufälligen Abruf eines Zuges aus dem SB war mir nicht Zufall genug. Deshalb habe ich in den Lua Foren den Befehl math.randomseed(os.time()) gefunden. Den habe ich vor dem random-Aufruf eingesetzt. Doch damit bekomme ich den Fehler "attempt to index a nil value (global 'os')" Hier das script wie es jetzt ist. local WarteListe = {} local SignalListe = {$("Signal SB-Ausfahrt Gleis 02"), $("Signal SB-Ausfahrt Gleis 03"), $("Signal SB-Ausfahrt Gleis 04"), $("Signal SB-Ausfahrt Gleis 05"), $("Signal SB-Ausfahrt Gleis 06"), $("Signal SB-Ausfahrt Gleis 07"), $("Signal SB-Ausfahrt Gleis 08"), $("Signal SB-Ausfahrt Gleis 09"), $("Signal SB-Ausfahrt Gleis 10"), $("Signal SB-Ausfahrt Gleis 11"), $("Signal SB-Ausfahrt Gleis 12"), $("Signal SB-Ausfahrt Gleis 13"), $("Signal SB-Ausfahrt Gleis 14"), $("Signal SB-Ausfahrt Gleis 15"), $("Signal SB-Ausfahrt Gleis 16"), $("Signal SB-Ausfahrt Gleis 17"), $("Signal SB-Ausfahrt Gleis 18"), $("Signal SB-Ausfahrt Gleis 19"), $("Signal SB-Ausfahrt Gleis 20"), $("Signal SB-Ausfahrt Gleis 21"), $("Signal SB-Ausfahrt Gleis 22"), $("Signal SB-Ausfahrt Gleis 23"), $("Signal SB-Ausfahrt Gleis 24"), $("Signal SB-Ausfahrt Gleis 25"), $("Signal SB-Ausfahrt Gleis 26"), $("Signal SB-Ausfahrt Gleis 28"), $("Signal SB-Ausfahrt Gleis 29"), $("Signal SB-Ausfahrt Gleis 30"), $("Signal SB-Ausfahrt Gleis 31"), $("Signal SB-Ausfahrt Gleis 32"), $("Signal SB-Ausfahrt Gleis 33"), $("Signal SB-Ausfahrt Gleis 34"), $("Signal SB-Ausfahrt Gleis 35"), $("Signal SB-Ausfahrt Gleis 36")} for i, Signal in ipairs(SignalListe) do if #layout:getVehiclesOn(Signal) > 0 then table.insert(WarteListe, Signal) end end local Anzahl = #WarteListe math.randomseed(os.time()) if Anzahl > 0 then local Zufall = math.random(1, Anzahl) local Signal = WarteListe[Zufall] print(Zufall) Signal.variables["FS Ausfahrt"].autoActivate = true Signal.variables["FS Ausfahrt"].active = true end Kann es sein, dass das script nicht auf die Systemvariable os.time zugreifen kann? Gruß Jürgen
Neo Posted February 6 Posted February 6 Hallo Jürgen, die OS-Bibliothek steht aus Sicherheitsgründen im Studio nicht zur Verfügung, aber du brauchst Randomseed nicht aufzurufen, das macht das Studio automatisch bei Anlagenstart. Viele Grüße, Neo
jloos Posted February 6 Author Posted February 6 Hallo @Neo, bei Start scheint aber nicht genug, denn es kommen aus den 36 SB Gleisen oft die Züge in gleicher Folge. Gibt es nicht die Möglichkeit das vor jedem random Aufruf zu machen? Gruß Jürgen
Neo Posted February 6 Posted February 6 Hallo Jürgen, ein Zufallsgenerator wird immer nur einmalig initialisiert, eine mehrmalige Initialisierung bringt dir keinen Gewinn. Erst recht garantiert eine erneute Initialisierung nicht, dass eine Zahl nicht doppelt vorkommt, so funktionieren die Zufallsgeneratoren in Computern leider nicht. Wenn du doppelte Aktivierungen vermeiden willst, musst du aktivierte Signale aus der Warteliste löschen. Viele Grüße, Neo
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now