-
Gesamte Inhalte
5510 -
Benutzer seit
-
Letzter Besuch
Alle erstellten Inhalte von Andy
-
Guten Morgen Neo, mir sind heute nacht wieder ein paar Fragen bezüglich der EV aufgekommen: 1. eine table, die ich in einem Ereignis anlege, wird die global, oder ist die immer automatisch lokal und wird immer neu angelegt, wenn ich in das Ereignis komme? Wenn ich sie in ein Modulskript lege, findet er $-Einträge nicht. Wann werden die da initalisiert? 2. Ist ein Modulskript ausführbar? Oder dient es nur als Ablage von tables und Funktionen? Wie rufe ich die Ausführung auf? Das 'Hauptskript' in "Ereignisse" läuft beim Einschalten der Ereignisprotokollierung ab. Ist es einfach so, dass alle Modulskripte nacheinander ablaufen, wenn auf '>' (play) gedrückt wird? 3. Beim Umbenennen von Modulvariablen hatten wir das Thema, dass Du sagst, dass es nicht so einfach ist, die Umbenennung auch in Skripten durchzuführen. Wäre es dann nicht doch sinnvoll, so etwas wie einen Sammelexport für Skripte in eine txt-Datei zu ermöglichen, damit man wenigstens checken kann, wo entsprechende Stellen sind? Zumal im Skripteditor Strg-F für Finden und Strg-H für Ersetzen ja auch nicht gehen. Gruß Andy
-
Hallo Neo, erstmal Danke für das Update. Als ich die neuen Features gesehen habe, habe ich mich riesig gefreut, dass nun die dritte Dimension in den Modelleditor eingezogen ist. Leider nicht so, wie ich es mir eigentlich erhofft habe. Ich hätte mir gewünscht, dass wir da was bekommen können, das die Verwindung einer Kurve in einer Steigung rausrechnet. Sodaß der Anfang des Gleises plan auf der Ebene liegt und das Ende ebenfalls plan auf der höheren Ebene. So wie es nun ist, ist immer noch das Gleis selbst in einer Ebene, liegt halt rotiert in der Landschaft. Das wird wohl nur ausnahmsweise gebraucht werden. Habe ein Bild angehängt, wie ich's mir gewünscht hätte. Und dann ... habe ich mal drüber nachgedacht, wie denn ein Zug auf so einem Gleis stehen würde, wenn das nicht wirklich ziemlich lang und mit relativ geringer Steigung ist. Ach, irgendwas ist immer. beste Grüße Andy
-
Kleiner Tip noch, habe ich auch gerade eingesetzt, sind richtig toll: Unsichtbare Gleise gehören der Vergangenheit an. Schau mal im Ordner Verkehrswege/virtuell Die bringen Farbvariationen gleich mit! Kannst Weichen mit bauen, geht alles. Gruß Andy
-
Objektvariablenarrays kann ich nur unterstützen. Die bräuchte ich für meine Weichenlisten in den Fahraufträgen und natürlich auch in den Fahrplänen für die Aufträge. Eigentlich könnte man die ja oft in echte Lua-Arrays auslagern. Aber dann haben sie einen entscheidenden Nachteil: man kann ihren Wert nicht einsehen. Oder doch? Und wenn ja, wie? Gruß Andy
-
Könnt ihr mir mal den Sportteil rübergeben? Und wird der Trimm Dich-Pfad jetzt gebaut oder nicht? Andy
-
Oh, logisch, da war was. Und - wie ist das Gefühl mit V5? Ich habe die 14 Tage jetzt sehr intensiv damit gearbeitet. Es kommt langsam in die Finger. Aber nur langsam! Gruß Andy
-
Du hast mit einer nicht freigeschalteten Version gespeichert? It's cool man! Andy
-
Das hätte auch noch durchgestrichen gehört. V5 behält die OV der einzelnen Objekte bei. Ich denke, das war in V4 noch nicht der Fall. Manchmal sieht man eben den Wald vor lauter Bäumen nicht. Da steht der Ordner Ereignisse und dann die Unterordner und ... das man wirklich nur auf den Ordner selbst gehen muß und dann okay drücken muß, weil ein Doppelklick da nix bringt, damit er $("Ereignisse") schreibt und man den Rest selbst ergänzen kann, da muß man auch wirklich erstmal drauf kommen. Alles gut dann. Gruß Andy
-
Was mir vorhin noch aufgefallen ist: wenn ich in einem Lua-Skript editiere, muß ich manchmal einen $-Eintrag ändern. Bei einem Objekt ist das kein Problem, aber wie kriege ich da eine globale Variable rein? Also: $("Ereignisse").variables["MeineVariable"] Stelle ich mich wieder dumm an, oder fehlt da noch was in der Auswahl? Derzeit behelfe ich mir mit etwas, das ich von woanders her kopiere und einfüge. Gruß Andy
-
Götz, ich habe da auch noch eine Frage: Meinst Du, es macht einen Performance-Unterschied, wo der table definiert ist? Muß er sich da immer wieder durchackern, wenn er in ein Skript reinkommt, das in Untermodulen liegt? Oder macht er derlei Dinge gleich beim Programmstart und geht dann im Skript direkt drüber weg? Im ersten Fall wäre es ja sinnvoll alle tables aus den Untermodulen ins Hauptskript abzuziehen. Das wäre nicht so schön. Gruß Andy
-
Ich habe eine nette Demo als Entwurf hochgeladen. Dieser Code sollte wirklich wiederverwendbar sein. Entwurf: Animationstabellen 54901AE0-3E05-4444-9295-7337D883DD1A Es werden hierfür nur zwei Modulvariablen gebraucht. Ein Sekundenzähler und eine Variable um den Fortschritt in der Tabelle zu merken. - Das Auslösen des Schalters zeigt, wie sie initialisiert werden müssen und startet den Sekundentimer, der auf autom. Neustart eingestellt ist. - Der Sekundentimer tickt einen Sekundenzähler. - Das Hochzählen des Sekundenzählers ruft das eigentliche Skript auf. Mehr gibt's da eigentlich nicht zu sagen. Es gibt einige Kommentare im Skript. Wen's verwirrt: der Sekundenzähler heißt SminuteAnim, weil bei Gebrauch der virtuellen Zeit eine echte Sekunde eine Minute in der kleinen Welt sein sollte/könnte. Vielleicht noch folgende Bemerkung: durch die Verwendung von $("objektname") in der Tabelle weiß die EV, dass sie die Objektnamen an dieser Stelle auch mitändern muß, falls man auf die Idee kommt, ein Objekt nachträglich nochmal umzubennen. Da muß man nicht drauf achten, das ändert er hier mit. Verwendet man das $ über Tastatur, (z.B. für einen Neueintrag), verlangt er unmittelbar ein Objekt aus der Auswahlliste. Man kann dies umgehen, indem man in einem externen Editor Einträge vorbereitet und dann einfügt. Das macht er klaglos mit. Gruß Andy
-
@EASY, mir hat z.B. Dein Container-Beispiel geholfen zu verstehen, wie man den Koordinatenzugriff einsetzt. Das habe ich alleine nicht hingekriegt. Da gab's nil-Fehler ohne Ende. Danke dafür! Jedes kleine Demo hier hilft weiter, bei anderen Verständnislücken zu schließen. Je kleiner das Beispiel, desto besser. Ich habe an meinem Beispiel sehr lang dran geknabbert, weil ich folgenden Fehler gemacht habe: AnimTable = { { Objekt = "Riesenrad", Animation = "Rad drehen", FuncEin = animplay, FuncAus = animstop }, { "Riesenrad", "Licht", animplay, animstop } } Ich dachte, er nimmt die in der ersten Zeile angegebenen Bezeichner als eine Art Template (Vorlage), um auf die anderen zuzugreifen. Also, AnimTable[2].Animation, dachte ich, zeigt auf "Licht". Falsch! Offensichtlich trennt er hier intern die Dinge auf. Diejenigen mit Bezeichner und die ohne. Das folgende Beispiel zeigt das auf: function animplay() end function animstop() end AnimTable = { -- { Objekt = "Riesenrad", Animation = "Rad drehen", FuncEin = animplay, FuncAus = animstop }, { "Riesenrad", "Rad drehen", animplay, animstop }, { "Riesenrad", "Licht", animplay, animstop } } print(AnimTable[2][2]) print(AnimTable[1][2]) So gibt er "LIcht" und "Rad drehen" aus. Setzt man die Kommentarzeichen hingegen auf die zweite Zeile, findet er "Rad drehen" mit Indexangabe nicht mehr! Also, selbst mit der Unterstützung von Götz' Tutorial sind da noch einige Dinge zu erforschen. Gruß Andy
-
Bist Du sicher, dass im Datum die Jahreszahl stimmt? Ich sollte auch mal schauen, ob sie bei mir die Bierdiebe endlich haben...
-
Hallo @Goetz, da es auch andere 'treffen' kann, erkläre ich es mal etwas genauer: Meine Anlage ist zeitgesteuert und soll später wie koriander's Anlagen mal wie ein Film ablaufen. Meine alte Silvester-Version hat das schon gemacht. Du hast also eine Zeitvariable, die jede Sekunde einmal vorwärts tickt und damit auf die Animationen losgeht, die auslösenden Schalter waren nur ein Beispiel. Soll er nun jedesmal zig Ereignisse abklappern, ob die Zeit gekommen ist? Das belastet die EV zu sehr und das Protokoll wird unlesbar. Fasst man alle Animationen in ein Skript zusammen, sieht's so aus: if value == 300 then $("Eurofima Deutschland 1").animations["Licht Beleuchtung Innenraum"]:play(0, 1) $("Eurofima Deutschland 2").animations["Licht Beleuchtung Innenraum"]:play(0, 1) $("Eurofima Deutschland 3").animations["Licht Beleuchtung Innenraum"]:play(0, 1) $("Eurofima Deutschland 4").animations["Licht Beleuchtung Innenraum"]:play(0, 1) $("Eurofima Deutschland 4").animations["Licht Schlusslicht hinten"]:play(0, 1) $("E 10 \"Bügelfalte\"").animations["Licht vorn weiß"]:play(0, 1) $("E 10 \"Bügelfalte\"").animations["Licht hinten rot"]:play(0, 1) $("Ae 6/6").animations["Licht weiss vorn oben"]:play(0, 1) $("Ae 6/6").animations["Licht weiss vorn links"]:play(0, 1) $("Ae 6/6").animations["Licht weiss vorn rechts"]:play(0, 1) $("Ae 6/6").animations["Licht rot hinten oben"]:play(0, 1) ... $("Ae 6/6").animations["Licht rot hinten links"]:play(0, 1) $("Ae 6/6").animations["Licht rot hinten rechts"]:play(0, 1) $("BR 80").animations["Scheinwerfer vorn weiß"]:play(0, 1) $("BR 80").animations["Scheinwerfer hinten rot"]:play(0, 1) $("Lichtscheibe Henschel oben").state = 1 $("Lichtscheibe Henschel unten links").state = 1 $("Lichtscheibe Henschel unten rechts").state = 1 end if value == 500 then $("A08 Wohnstallhaus").animations["Licht an/aus"]:play(0, 1) end if value == 502 then $("A10 Wohnhaus").animations["Licht an/aus"]:play(0, 1) end ... das sind alleine für 'Licht ein' 339 Zeilen. Entlastet das Protokoll, aber sonst nichts. Was tun? table verwenden, die 'Zeilen' zeitsortieren mit der Schaltzeit als ersten Eintrag und einen Index laufen lassen (mit next oder so). Dann schaut er sich *einen* Eintrag an, ob die Zeit gekommen ist, führt den aus, hüpft weiter, vielleicht noch einer, ansonsten raus aus der Routine. Den Index merkt er sich für den nächsten Tick. Blitzschnell! Immense Zeiteinsparung und diese Tabelle ist schön lesbar, eben weil sie nicht mit eingebauten Funktionen zugepfeffert ist. Hier geht mir gute Lesbarkeit und schnelle Editierbarkeit vor elegante Effizienz. Es sind ja, wie Du siehst, auch Schalter dabei (siehe Lichtscheiben). Die muß ich da auch irgendwie unterkriegen. Und ich brauche sogar noch Escapecodes (negative Werte anstelle der Zeit), um Spezialitäten auszulösen. Vielleicht brauche ich noch Parameter, weiß ich noch nicht. Bin nicht sicher, ob ich die table so kriege wie ich sie mir vorstelle. Läuft dieses Verfahren aber dann tatsächlich so wie gewollt, kann man auf ähnliche Weise das Movieskript mit den Kameraaufrufen gestalten. Ich bastel mal dran, dann kannst Du gerne noch mal drüber schauen. Und Danke, dass Du's hier schon getan hast, habe auf einen Kommentar von Dir gehofft. Deine Art und Weise werden wir bestimmt auch noch brauchen. Gruß Andy
-
Hier ist sie! Die erste Schaltereinheit to go. Drückt mal das rote Schalterchen. Nur das ist aktiv. Gruß Andy OnBoardSchalter.mbp p.s.: auch nur für V5, versteht sich.
-
Hallo, ich habe mal ein kleines Beispiel angehängt, wie man in V5 eine Lua-Tabelle (table) einsetzen kann. Ich denke, im Bereich der Animationen kann dies sehr hilfreich sein. Vielleicht auch im Bereich Blockdefinitionen etc., generell eigentlich überall dort, wo man sonst sehr viele Objekte mit vielen Objektvariablen füttern müßte. Ein table ist für einen schnellen Überblick und schnelle Editiermöglichkeiten wohl sehr hilfreich. Ich hab's jetzt nicht in den Katalog geladen, weil vielleicht noch weitere Erklärungen rein müßten. Die Kommentare in den zwei Skripten sollten aber eigentlich für sich sprechen. Weitere praktische kleine Demos rund um das Thema tables wären hier wohl sehr erwünscht. Gruß Andy Animationstabelle.mbp
-
I think people here make no difference from which countries things come. Beautiful and useful things are always welcome. So please continue! (Already used your containers and barrels ) greets Andy
-
Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung
Andy antwortete auf CC.SDLs Thema in Fragen zur Planung
Nee nee, das ist überhaupt nichts für den Anfang. Außerdem hat sie alle Anfängerfehler drin, die streit_ross gerade beschrieben hat. Später hat einfach der Platz gefehlt, das zu ändern. Die hauen sie mir heute noch um die Ohren! Das ist eigentlich nur noch ein EV-Forschungslabor. -
Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung
Andy antwortete auf CC.SDLs Thema in Fragen zur Planung
Auf meiner ersten kleinen Anlage habe ich die Tasten 0-9 auf Kamerapositionen gelegt, bei denen ich Signale und die wichtigen Weichen schalten konnte. Das erste Ding was mit EV automatisch funktionieren sollte, war der Bahnübergang - noch nicht mal für die Autos, nur auf und zu. So ging's los. Und dann sollte an den Signalen auch angehalten werden, und zwar nur aus einer Richtung. Und bei 'freie Fahrt' go go go. -
Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung
Andy antwortete auf CC.SDLs Thema in Fragen zur Planung
...und Du trägst keine Altlasten mit drin rum, die das Denken beeinflussen könnten. Ja, geh direkt auf V5. -
Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung
Andy antwortete auf CC.SDLs Thema in Fragen zur Planung
Hallo Claudia, was die EV angeht, sind wir bei V5 bei einer Art Neuanfang. Alte Muster müssen überdacht werden, neue müssen sich erst bilden. Die Möglichkeiten sind jetzt jedenfalls gewaltig. Nur mit diesen Möglichkeiten hat eigentlich noch keiner Erfahrung. Das heißt aber auch, dass fast alle Anlagen (die von fzonk und mir mal ausgenommen) in V4 mit ganz einfachen Methoden auskamen, und so auch in V5 laufen sollten. Aber es gibt jetzt z.B. die Kontaktpunkte, mit denen man ohne große Kopfstände Dinge machen kann, die auf die Fahrtrichtung einer Lok eingehen. Damit werden u.a. Kopfbahnhöfe attraktiver, oder kleine Lokalstrecken, die aus nur einem Gleis bestehen. Größere Rangiermanöver wird's geben. weil im Hintergrund auch richtig gerechnet werden kann. Im Straßenverkehr denke ich, da müssen wir fast wieder bei Null anfangen und uns sogar fragen, ob zwei- (oder mehrspurige) Fahrbahnen für 'intelligenten' Verkehr überhaupt verwendbar sind. Die Ansprüche steigen - so einen Bus an der Haltestelle kann man doch auch überholen usw. Vor einem halben Jahr haben wir uns wundexperimentiert an einer Abzweigung mit Feuerwehreinsatz. Mit den GBS-Dingen ist es so eine Sache. Ja, man kann sie nehmen um Abläufe zu schalten. Aber es bleibt das alte Problem: wenn ich das GBS im Bild habe, dann nicht die Anlage und umgekehrt. Vielleicht können wir einige Schaltelemente über die abfragbaren Daten der aktiven Kamera mitführen. Ob's geht, ob's ruckelt, ob's aus dem Bild geht, wenn man dreht oder zoomt, das weiß noch niemand, da es noch keiner probiert hat. Insgesamt sind wir da jetzt auch auf die Erkenntnisse von Experimentierfreudigen angewiesen. Meine Meinung: warte noch etwas, bis V5 sich stabilisiert hat und die volle Doku da ist, und die ersten Anderen ein wenig Erfahrung gesammelt haben, damit überhaupt Infomaterial da ist. Ralf macht's mit seiner Anlage ja genauso. Bastel weiter an der Umgebung. Warte mit der Steuerung. Soweit, wie ich die Dinge im Augenblick sehe. Es gibt da ein paar wesentlich erfahrenere Anlagenbauer, deren Meinung dazu mich auch interessieren würde. Gruß Andy -
Mahlzeit Neo, keine Fehlermeldung, nur Ideen: Wenn eine Gruppe umbenannt wird, könnte man den neuen Namen automatisch den eingebundenen Objekten als Präfix den Gruppennamen davorsetzen. Das verhindert, dass sich bei Kopien zuviele Namen verdoppeln. Wird der Name geändert, alten Namen (den vor Editierung merken) als Präfix löschen, neuen davor. Wird wieder 'Gruppe' eingegeben, nur das letzte Präfix löschen und damit wieder neutralisieren. Dann noch: Man kann eine Gruppe zwar als neues eigenständiges Objekt erzeugen, aber wie ich gesehen habe, gehen dabei auch die Objektvariablen verloren. Das ist nicht schön. Nehmen wir mal meine Seilbahnkonstruktion, zu der mit Tal/Bergstation, Gondeln, Masten etc. einiges dazugehört. Jetzt möchte ich die so in eine andere Anlage rüberbringen. Einfügen aus anderer Anlage geht ja, aber da kommen alle anderen Ebenen und was weiß ich auch noch rein, das alles wieder weggelöscht werden muß. Nicht gut. Als Gruppe aus dem Katalog wäre es prima. Das zugehörige Skript kann man ja über externen Editor rüberbringen. Aber, da sollten halt auch die OV überleben. Hoppla, das geht mit V5! Und auch über MBE Im/Export. PRIMA! Gruß Andy
-
Ich habe irgendwann angefangen mit direkten Koordinaten zu arbeiten, aber die Hilfsmittel bin ich auch schon alle durch. Die sind schon praktisch. Besonders, wenn man nicht rechtwinklig zum Universum steht. ps: Dreiecksberechnungen und sin/cos habe ich noch nicht gebraucht. Das geht jetzt los beim automatischen 'Durchhängen' der Seilbahngondel. Und geht schon mal los und schaut, wie Regler (nicht die für die Geschwindigkeitsansteuerung von Loks!) programmiert werden
-
Ralf, mach am Ende das erste MBS-Buch draus
-
There's more to be done, if you have more 'enter'-Events. Then you should use a keyword for all your objects that fulfill the set of object variables, or will get soon a nil-error. In V4 we filtered the type by asking if a specific object-variable is available at all. A keyword, set into all those objects that can come in here saves us from that. No other track would launch this event!