Jump to content

Andy

Mitglieder
  • Gesamte Inhalte

    5510
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Andy

  1. Andy

    Neue Beta-Version V5

    Nicht ärgern lassen Neo, da steht doch ein emoji dahinter.
  2. Andy

    Andy's Projekt

    Ist schon passiert. Der Sinn ist: ich habe da 20 Fahrpläne (für jede Lok einen). Jeder arbeitet eine eigene Auftragsliste ab - mit Abfahrtszeiten. Auch die Animationen laufen zeitgesteuert. Es gibt viele Fahrpläne, aber den Bottleneck Zielsucher. Da gibt's nur einen, damit mit den Pfadreservierungen nichts konkurriert. Um's kurz zu machen: jeder der 10 Subticks kann zwei Fahrpläne ticken, damit jeder Fahrplan einmal pro 'Minute' (in Echtzeit nur eine Sekunde) drankommt, durch die Phasenverschiebung der 10 Zehntel die EV aber entlastet wird. Gruß Andy
  3. Andy

    Neue Beta-Version V5

    Viele meiner Probleme werden sich lösen lassen, wenn ich z.B. mal allen relevanten Objektgruppen ein Schlagwort zuordne. Das wäre auch schön, wenn das im Zuge einer Mehrfachauswahl möglich wäre. Gibt's einen Lua-Befehl, über den man ein Schlagwort zuordnen kann? Dann könnte ich mir von V4 den XML-Auswerter schnappen, die Objektvariablenliste nehmen, ein wenig Textprocessing machen, einen Table generieren, als Lua-Code einfügen und dann einmalig ein Knöpfchen drücken, das mit dieser Sysiphos-Arbeit abnimmt. Ansonsten gilt für den Export. Das geht nur mit V5 komplett. Ab in die Apollo-Jubiläums-Rakete und .. Gruß Andy
  4. Herr und Frau Au auch!
  5. Pffft, dann rauchen die Blumenauer ihre Pflanzen eben selbst Angesichts der Klimaerwärmung werden sie sowieso auf Kaktus umsteigen.
  6. Andy

    Andy's Projekt

    Wichtig, zum Starten der Anlage den roten Automatik-Knopf drücken und dann laufen lassen (oder umgekehrt). Und nochwas Neo: Wenn Du nicht auf den ersten Blick erkennen kannst, was da los ist, dann laß es! Du hast wichtigere Dinge zu tun und ich werde die V5-Version sowieso voll auf den Kopf stellen. Dann wird halt erstmal alles deaktiviert, was stört und Modul für Modul umgebaut. Ich pack das! Gruß Andy
  7. Andy

    Andy's Projekt

    05BB3DF4-5B0A-485E-8D0F-8A4DC23309E9 als Entwurf hochgeladen. Das ist die V4-Version, die schön läuft. Auf V5 oben gezeigte Probleme. Unten angehängt die Version, aus der ich von dieser auf V5 eingelesenen alles rausgeworfen habe, was nicht für das Problem relevant ist. Hier ist alles okay. Ergänzung: Der Ticker ist ein 0,1s - Ticker, der die Variable Subticks incrementiert. Ist sie 10, wird die genullt und wird Subticks 0 wird Minute eins hochgezählt. Dementsprechend dann auch Stunde. Beides für die hintergründige virtuelle Zeit, die nicht der EV-virtuellen-Zeit entspricht, weil das Format für Berechnungen unbrauchbar ist/war. Dann trotzdem noch zwei Bilder: das Erste zeigt ein in obiger Version zusätzlich eingefügtes Ereignis, das die EP stoppen sollte. das Zweite zeigt, dass Minute auf 60 gekommen ist und dieses Ereignis nicht eingetreten ist. TickerMinimal.mbp
  8. Andy

    Andy's Projekt

    Ich hänge das mal hier rein, weil es den Beta-Thread möglicherweise zu stark belasten wird. Ich habe bereits mit dem einfachen Ticker Probleme. In der Anlage gibt es einen Ordner Syncticker (der genauso auch noch in der alten V4-Anlage im Katalog ist), der Ticker läuft in V4 prima. Er läuft auch prima in V5, wenn ich alles andere rauswerfe. Siehe Log-Ausschnitt. Der Syncticker ist ein 0,1 s Endlos-Ticker. Er zählt Subticks hoch, wenn das bei 10 ist wird es wieder genullt und dann soll genau das passieren. (Bedingung siehe Bild, die zweite Bedingung ist nur Kippschalter auf Ein). [20:50:14] Subticks (_Compatibility_Delay (2)): Ereignisse, "Syncticker" [20:50:14] Modul-Variable wird gesetzt -> Ereignisse, "Subticks", 0 [20:50:14] Tick Minute [20:50:14] Minute Überlauf [20:50:14] Minute Überlauf und Stunde Überlauf [20:50:14] Tick Minute (_Compatibility_Delay): Ereignisse, "Subticks", 0 [20:50:14] Modul-Variable wird gesetzt -> Ereignisse, "Minute", 27 So soll es sein! Wenn ich alles so lasse, wie es aus der V4-Anlage kommt und nichts lösche sieht es etwas anders aus. [20:03:29] Subticks (_Compatibility_Delay (2)): Ereignisse, "Syncticker" [20:03:29] Modul-Variable wird gesetzt -> Ereignisse, "Subticks", 0 [20:03:29] Tick Minute [20:03:29] Minute Überlauf [20:03:29] Minute Überlauf und Stunde Überlauf Das Tick Minute (_Compatibility_Delay) kommt nicht. Wird jedenfalls nicht angezeigt. Klar kommen nun noch andere Dinge, aber die Delay-Meldung fällt ganz aus. Gleichwohl wird Minute tatsächlich hochgezählt. Wäre ja verzeihbar, wenn ich anhand der Delay-Meldung nachvollziehen könnte, wann das blöde Ding es schafft irgendwann mal zufällig Minute auch auf 60 zu setzen was ja vollkommen unmöglich sein sollte. Das kann eigentlich nur passieren, wenn dieser rekursiv-Algorithmus das Kommando einschachtelt und in so einem Flow zweimal dran vorbeikommt und das Minuten-Delay noch nicht zugeschlagen hat, Minute also immer noch auf 59 steht, Bedingung immer noch wahr und poff. Eigentlich müßte ich dazu Tick Minute wenigstens mal eine Ebene eingerückter vorfinden. Ist aber nicht. Ehrlich, das ist mir zu hoch. Ich mach jetzt nochmal ein Event rein, das reagiert, wenn Minute auf 60 kommt und setze irgendwas Blödsinniges rein, was das Log sofort auf Stop zwingt. Mal sehen, ob ich's so fangen kann. Ansonsten bin ich da mit meinem Latein am Ende.
  9. Andy

    Neue Beta-Version V5

    Naja, es wird eine Objektvariable davon direkt beeinflusst. Und die dritte grüne Zeile bleibt auch genau so erhalten, wenn Schalterchen2 weg ist.
  10. Andy

    Neue Beta-Version V5

    Hallo Neo, nochmal kurz zurück auf den oben beschriebenen Flow. Mir wär's wirklich lieber gewesen, wenn eine Aktion ein Flag gesetzt hätte, dass noch mal ein Durchlauf nötig ist und erst am Ende des Gesamtcodes alles nochmal durchlaufen wird, solange Flags gesetzt sind. Das rekursive Verhalten ist verdammt schwer nachvollziehbar und außerdem gefährlich. Gruß Andy p.s.: Anhang bringt den Stack ganz einfach zum Überlaufen. Übrigens warnt er auch nicht, wenn ich Schalterchen2 weglösche, dass dies noch in Ereignissen drinhängt (wie es in V4 der Fall war). Und den Namen behält er auch noch bei (Kippschalter Aktionen - hier jetzt rausgelöscht). kompatestV5overflow.mbp
  11. Geben die die Polygone in Millionen an? Auf den ersten Blick sieht's doch minimal aus. Es könnten die Texturen sein, oder? Die sind vermutlich höherauflösend als wirklich nötig.
  12. Andy

    Neue Beta-Version V5

    Hallo, da ich da immer noch einem äußerst üblen Bug nachjage, muß ich mir einige Beispiele zurechtmachen. Kann ich, falls interessant, hier dann auch posten. Mit den hier angehängten Beispielen mache ich zum Einen einen Kompatibilitätstest eines nicht ganz einfachen Konstrukts, und dann schauen wir mal, wie V5 intern tatsächlich arbeitet! Wen das interessiert, Konzentration einschalten, ansonsten beim nächsten Poster weiterlesen. Also: Um was geht's: Ich habe hier einen Kippschalter mit zwei Schalterchen. Lege ich den Kippschalter um, triggert er das erste Schalterchen. Das zweite ist eigentlich nur da um Nebenwirkungen zu checken. Die beiden Ordner haben je zwei Ereignisse und die Ordner sind identisch, nur die Titel sind unterschiedlich. Auch hier ist der zweite Ordner nur da, um die Situtation noch etwas zu verkomplizieren. Beide Ereignisse arbeiten mit dem _Trigger1-Trick, sollen also universell einen schaltenden Schalter verarbeiten. Die Schalterchen haben eine Objektvariable mit dem Namen Wert, der am Anfang auf nix steht. Außerdem gibt es noch eine normale Variable namens count, die einfach nur hochzählt, wie oft da wirklich was gemacht wird. 1.Ereignis: der betätigte Schalter soll seine Objektvariable von nix auf A stellen, dann drückt er sich selbst nochmal 2.Ereignis: nun von A auf B und auch nochmal drücken, was dann keine Wirkung mehr haben sollte. kompatestV4V5 kann man in V4 laden. Kippschalter schalten, das Schalterchen1 endet mit Wert B. Fein. Aber wenn man sich count mal ansieht, das steht auf 6. wtf würde der Ami sagen. Ich will da jetzt gar nicht drauf eingehen, warum. Das Endergebnis ist wichtig und das ist wie gewünscht. kompatestV4V5 nun in V5 laden. Kippschalter schalten, das Schalterchen1 endet mit Wert B. Und count steht tatsächlich auch auf 6. Hölle, hölle, aber es ist kompatibel! Jetzt schmeiße ich mal alle Kompatibilitätsdelays raus. So geschehen in kompatestV5, was sich natürlich nur in V5 laden läßt. Nun mal Ereignisprotokoll einschalten und Kippschalter schalten. Jetzt wird's interessant. Das Schalterchen1 endet mit Wert B, aber count endet nun, wie es ein 'normaler' Programmierer erwarten würde, auf 2. Es sind nur zwei agierende Aktionen nötig gewesen! Noch viel interessanter ist nun aber, wie das Ergebnis zustande gekommen ist. Wie zu erwarten, schaltet das erste Ereignis in Ordner1 das Schalterchen auf A, aber - wer nun linear 'normal' weiterdenkt, sieht sich getäuscht - es ist NICHT sofort das zweite Ereignis des ersten Ordners und es ist NICHT das zweite Ereignis des zweiten Ordners das nun von A auf B setzt. Sondern: man sehe sich den Flow in der Ereignisprotokollierung an. Hier wird nun in der Tat mit rekursiven Aufrufen gearbeitet! d.h.: das von Ereignis 1 ausgelöste Selbstschalten des Schalterchens löst einen kompletten neuen Aufruf der EV aus! Es werden nun sofort erneut alle Ereignisse ausgeführt, die sich auf das Schalten eines Schalters beziehen! Wonach dann Ereignis 2 des ersten Ordners auf B setzt (aber halt erst, nachdem nochmal - natürlich jetzt ohne Auswirkung - über das erste Ereignis gelaufen wurde!). Bis der zweite Ordner mal drankommt, ist der Käse schon gegessen. Schalterchen steht schon auf B und es muß da nichts mehr gemacht werden. Also: die Funktionsweise muß nun verinnerlicht werden, denn sie bedeutet, dass da mitten in der Aktionsliste eines Ereignisses ganz schön viel mit einer Anweisung passieren kann. Irgendwie sehe ich da allerdings auch die Gefahr einer Endlosschleife mit immer tiefer laufendem Stack - also Crash... Gruß Andy ps.: Selbstverständlich ist mit diesen rekuriven Effekten diese Programmierung des Problems alles andere als ideal, denn insgesamt kümmert er sich um 17 Ereignisse. Die Lua-Version ist da optimaler... kompatestV4V5.mbp kompatestV5.mbp kompatestV5Lua.mbp
  13. Link Viel Spaß beim analysieren
  14. Moin Hans, deswegen warst Du so ruhig in letzter Zeit Irgendwo im Netz gibt's ein Video, wie ein anderes Team(!) diesen Hbf mit einem anderen System aufbaut. Kannst Du mal abschätzen, wo Du stehst und was noch kommt. Direkten Link finde ich jetzt nicht wieder, aber mit dem Suchbegriff Frankfurt Hbf virtuell findest Du noch Anschauungsmaterial ohne Ende. Gruß Andy
  15. Andy

    Neue Beta-Version V5

    Noch ein Beispiel zum Thema Kompatibilitätkonflikt. Es kann nämlich noch schlimmer kommen! Dann ist Neo machtlos! In V4 hatte ich z.B. Ringschuppentore erst diskret als Objekte benannt und konnte ihre einzige Animation 'Tore' einstellen. Später habe ich das verallgemeinert und benutzerdefiniert $($_Trigger2.Block).Lokschuppen als Objekt angegeben. Der Haken: weil da in Animationen noch 'Tore' drinstand, hat er's gefressen und auch gemacht. ABER: mit der späteren Objektangabe wäre es ihm selbst in V4 zu indirekt geworden. Er hätte da bei Neueintrag gar keine Animation mehr gefunden. Jo, und genau das passiert dann bei V5 auch. Fazit: ab einem bestimmten Punkt kann er gar keine Kompatibilität mehr aufbauen. Da muß der Anlagenautor eben die Anlage pflegen, wenn sie erhalten bleiben soll. Insbesondere, wenn er selbst vorher etwas inkompatibel war... Gruß Andy
  16. Sorry, mit VB kann ich nicht helfen. Was ich aber für die Ansteuerung sagen kann: Es gibt ja zwei Kanäle. Dementsprechend solltest Du zwei Threads anlegen! An den Ereigniskanal brauchst Du nichts senden, der ist nur für die Ausgabe zuständig. Vergiß beim Senden das abschließende CarriageReturn IM Sendestring nicht, sonst ist der Befehl nicht komplett und nichts passiert. Nach dem Senden mit der Receivefunktion auf die Antwort warten. Wenn mal die erste einfache Anweisung mit Antwort funktioniert, dann ist der Rest nur konzentriertes Studium der Wiki, was gesendet werden muß. Es ist dann fast einfach. String zusammenbasteln, wegschicken, lauschen, auswerten. Und außerdem: Teste nichts mit der neuen V5-Beta. Da ist die Schnittstelle noch Baustelle. Gruß Andy
  17. Siehst Du Manni etwa? Also...!
  18. Andy

    Neue Beta-Version V5

    Eigentlich... könnten wir das mit Lua alles selbst rechnen. Aber das wäre ja wieder aktives Terraforming. Hätte man Zugriff auf die Bodenplatten höhen/löcher/textur-Daten könnte mal sehr viele Dinge selbst machen, wie z.B. meine Idee mit der 'Sprühlok', sehr exakte Schnitte, eine komplette Bodenplatten-Datenverschiebung wenn die Bodenplatte mal nach links oder hinten erweitert wird etc., es könnten etliche Feature-Wünsche gestrichen werden - und es würden Daten weder erzeugt, noch gelöscht werden. Also - harmlos! Ich meine, Neo sollte da vielleicht doch einen Gedanken dran verschwenden (wenn die derzeitigen Funktionen stabil sind!). Ich habe übrigens jetzt nicht geschaut, ob das nicht vielleicht sogar schon möglich ist. Gruß Andy ps: @Neo. Wichtig: Ich habe mal auf meine mit V4 erstellte Anlage in V5 laufend meinen Logger mitlaufen lassen. Jeder Variablenname wird da auf der Schnittstelle von je 3 Anführungszeichen ummantelt. Nur, für den Fall, dass dies noch nicht aufgefallen ist.
  19. Ändere mal den Eintrag Deiner Lok OV Umschaltlok vom Typ Text in Typ Objekt und wähle dann dort die andere Lok an. p.s.: bin an einem noch fieseren Fehler dran. Könnte böse Überraschungen geben heute.
  20. VisualStudio ist eine Entwicklungsumgebung. Das sagt nichts darüber aus, mit welcher Programmiersprache Du arbeitest. Nur so läßt sich damit ja wohl gar nichts visualisieren. Bei C kann ich helfen, bei VB nicht. Andererseits hat EASY für VB ja doch alles gezeigt. Mittlerweile gibt's hier auch Posts, die beschreiben, wie man' s einfach mit Python macht. Also, hat das Kind 'nen Namen? Gruß Andy
  21. Andy

    Neue Beta-Version V5

    Bei der Ereignisprotokollierung, wenn die Variablenübersicht soviele Variablen beinhaltet, dass der Scrollbalken ran muß, springt dieser immer wieder sofort nach oben. Habe jetzt mal ein Funktionsskript auf oberstem Niveau geschrieben, und dann mal mehrere Ereignisse nach Lua gewandelt und in ein Lua-Skript eines Ordners (der ja jetzt Modul heißt, das muß man auch erstmal checken) zusammengefasst, dass das Erste verwendet. Das ist sehr sehr schön gelöst! Noch ein Wunsch: könnte man Dinge über das Selektionsfenster in eine Gruppe reinstecken bzw. rausholen? Es ist doch sehr umständlich das manuell im normalen Arbeitsbereich zu machen. Das Suchfenster im Selektionsfenster finde ich persönlich nicht so toll. Das war in V4 praktischer. Jetzt muß man die Suchebene immer wieder neu eingeben, in der man gerade arbeitet. Es wäre sogar noch viel schöner, wenn man z.B. bei einer Einzelauswahl eines Elements im Selektionsfenster direkt auf das Eigenschaftsfenster rübergehen könnte und da mal schnell eine Korrektur vornehmen kann, um dann im Selektionsfenster direkt mit dem nächsten Element weiterzumachen. Gruß Andy
  22. pffft. Meine Gärtnerei in Blumenau nimmt auch Online-Bestellungen an
  23. Andy

    Neue Beta-Version V5

    Hallo Neo, haben wir mittlerweile eine Tasten/Mausfunktion, die nur die z-Position der aktiven Kamera beeinflußt? Ich möchte doch auch mal in Tunnel oder sonstwas reinschauen. Gruß Andy
  24. Hehe, fehlt jetzt vom gleichen Typ nur noch die alte Milchkanne, an der jede Lokalbahn zum Blümchenpflücken anhalten muß
  25. Nanu? Da war doch was
×
×
  • Neu erstellen...