Jump to content

Andy

Mitglieder
  • Gesamte Inhalte

    5506
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Andy

  1. Andy

    Dream City

    Könnt ihr mir mal den Sportteil rübergeben? Und wird der Trimm Dich-Pfad jetzt gebaut oder nicht? Andy
  2. 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
  3. Du hast mit einer nicht freigeschalteten Version gespeichert? It's cool man! Andy
  4. Andy

    Neue Beta-Version V5

    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
  5. Andy

    Neue Beta-Version V5

    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
  6. 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
  7. 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
  8. @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
  9. Andy

    Dream City

    Bist Du sicher, dass im Datum die Jahreszahl stimmt? Ich sollte auch mal schauen, ob sie bei mir die Bierdiebe endlich haben...
  10. 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
  11. 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.
  12. 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
  13. 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
  14. 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.
  15. 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.
  16. ...und Du trägst keine Altlasten mit drin rum, die das Denken beeinflussen könnten. Ja, geh direkt auf V5.
  17. 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
  18. Andy

    Neue Beta-Version V5

    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
  19. Andy

    Dream City

    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
  20. Andy

    Dream City

    Ralf, mach am Ende das erste MBS-Buch draus
  21. Andy

    Neue Beta-Version V5

    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!
  22. Andy

    Neue Beta-Version V5

    The old _Trigger1 and _Trigger2 are automatically translated into the corresponding thing causing the event. So your command automatically should come in as something like that: Trains/Vehicle enters track/street any track Action: set variable Name [track]...switch1 ..status... = Value [track]...switch1...Reserve.. So your old Trigger2 are now [track], In my sample it's a switch causing the event, so in Trigger, you have to select switch - then indirections. notice the number and sequence of 'wheels' for the level of indirections. (the scroll bar shows, it goes deeper)
  23. Andy

    Andy's Projekt

    @Neo, kannst mal 'ne Flasche Sekt aufmachen. Die 'Mobile' läuft nun auf V5. Das heißt, Du hast da schon einiges richtig gemacht! Zum studieren hochgeladen. Ein paar Lua-Dinge sind drin, ist aber alles noch nicht großartig optimiert. Hauptsache, sie läuft. Es gibt auch noch keinen Kontaktpunkt! Entwurf: 0BC7A61B-E89E-421F-AE6A-F896AF8D04C3 Gruß Andy p.s.: ein Hinweis noch, wenn man das generelle Verhalten mal 'erahnen' will: Direkt nach dem Laden das Ereignisprotokoll öffnen, nicht starten, nur (bei offenem Protokoll) den Automatik-Button drücken. Jetzt 'fährt er hoch'. Er initialisiert die Fahrpläne für alle Loks. Bei Fahrplan05 trifft er auf die Startzeit 3:00 und behandelt deshalb sofort den Auftrag (da die Uhrzeit mit 3:00 beginnt). Ein weiterer Auftrag will eigentlich auch um 3:00 rein - geht aber nicht, da für den ersten noch etwas zu tun ist. Er geht auf 'delayed' und wird es wieder versuchen, wie er es auch bei einem geblockten Fahrweg tun würde. Damit hat man eigentlich das wichtigste Prinzip schon gesehen.
  24. Andy

    Neue Beta-Version V5

    und bei mir ist er aus einem Ereignis ausgestiegen, in dessen Bedingung ein Vergleich mit einer bereits gelöschten globalen Variablen stand, wobei er da kein 'attempt ... nil' geworfen hat! Wenn eine Variable gelöscht wird, sollte er erst einmal prüfen, ob die irgendwo noch verwendet wird, falls ja - nicht löschen, soll in Suche nach den Stellen suchen, wo sie auftaucht und anpassen (praktisch die Error-Stufe). Ist sie nicht mehr vorhanden, aber irgendwo (nicht als Teilstring sondern als kompletter String) noch verwendet, dann warnen! Dann könnte sie ja indirekt verwendet werden. Mit Löschoption. Beim Umbenennen wird die Errorstufe nicht gebraucht, die Warnstufe hingegen wäre sinnvoll. Gruß Andy
  25. Andy

    Tonis Modellbau

    Jaaaaaaaaa jetzt ist der Set komplett! Danke Danke Andy
×
×
  • Neu erstellen...