Martin Drescher hat in den anderen Thread vorgeschlagen, wier sollten ?ber die M?glichkeiten der Fahrplansprache reden. Die Dokumentation ist leider nicht auf aktuellstem Stand - und ich weiss oft nicht, womit soll ich mich besch?ftigen - Bilder sammeln, Fahrplan erweitern, Hinterg?nde sammeln und zusammenstellen, Dokumntation schreiben, Program erweitern - so alles l?uft ein bischen langsam.
Zwischen der zuletzt dazugekommenen Fahplandatei-M?glichkeiten mein Wunderwaffen sind der AP= ; Parameter (Additional Parameters) und die Pools.
Author
RE: Tips und Tricks für die Fahrplandatei von Traffic
Hab auch mal wieder was. Und zwar hatte ich das Problem, daß ich gern die schönen Berliner Stadtbahnvorder- und -hintergründe realistisch bedienen wollte. Jetzt haben Bahnhöfe wie Friedrichstraße oder Zoo vier Ferngleise, zwei für die eine Richtung, zwei für die andere. Normalerweise müßte man sich pro Fahrtrichtung für ein Gleis entscheiden, das angefahren wird, um wirksam und sicher zu verhindern, daß in eine Richtung zwei Züge gleichzeitig verkehren.
Dann kam Zoltán mit der neuen Steuerung per Impuls, d. h. daß man Züge in einer $SCENE darauf warten lassen kann, daß ein Impuls ausgelöst wird, und wiederum Züge Impulse auslösen lassen. Bei Fahrt nach rechts könnte man einen nach rechts fahrenden Zug vorm Erscheinen auf dem Bildschirm mit [WI:N=Rechts;B=1;] auf einen Impuls namens "Rechts" warten lassen und nach Verlassen des Bildschirms mit [SI:N=Rechts;] diesen Impuls auslösen lassen. Der Impuls gilt dann immer nur für einen Zug. Wenn man nun zwei Pfade anlegt mit derselben Fahrtrichtung und demselben Impuls, fährt immer nur in einem Pfad ein Zug.
Ist aber noch doof, weil die Züge jetzt immer wechselweise vor und hinter dem Bahnsteig fahren. Um das aufzulockern, bauen wir "Nullzeilen" ein, die die Impulse verarbeiten, ohne einen Zug über den Bildschirm zu schicken.
So, jetzt kommt meine Erweiterung. Ich will nämlich auch mal auf beiden Gleisen eines Bahnsteigs einen Zug stehen haben. Der Trick: zwei Impulse pro Fahrtrichtung. Einer erlaubt es einem Zug, auf den Bildschirm zu fahren, der wird ausgelöst, sobald ein Zug am Bahnsteig hält; ein anderer erlaubt es ihm, vom Bahnsteiggleis abzufahren, das ist dann der, der ausgelöst wird, wenn ein Zug den Bildschirm verläßt.
Das kann man aber noch weiter würzen. Was, wenn bestimmte Züge durchfahren? Die müssen dann, wenn sie auf den Bildschirm fahren wollen, auch gleich die Impuls-Erlaubnis haben, das Bahnsteiggleis zu verlassen. Entsprechend lösen sie dann beide Impulse nach Verlassen des Bildschirms aus.
Zwecks besserer Gleiswahl-Würfelei habe ich die Nullzeilen verdoppelt.
Mit den "Nullzeilen" meine ich Bewegungszeilen, die so tun, als ob ein Zug durchfährt, aber keinen durchfahren lassen und trotzdem die für die nächste Fahrt erforderlichen Impulse auslösen.
Normal wäre ja die Abfolge mit den beiden Bahnsteiggleisen ungefähr so:
Zug fährt vorne
Zug fährt hinten
Zug fährt vorne
Zug fährt hinten
Zug fährt vorne
Zug fährt hinten
...
Der Grund ist, wenn ein Zug, der vorne fährt, einen Einfahrimpuls auslöst, wartet auf diesen Einfahrimpuls ja nur ein Zug, der hinten fahren wird. Vorne fährt ja schon einer. Und umgekehrt.
Mit den Nullzeilen kann das aufgelockert werden, so daß es aussieht, als wenn vorne oder hinten mehrere Züge hintereinander fahren. Es passiert ja schon was, die Impulse müssen ja ausgelöst und dann wieder verarbeitet werden, also wird eine entsprechende Bewegungszeile abgefahren. Die ist aber so gestaltet, daß sie keine Fahrzeuge über den Bildschirm schickt, indem die Bewegungsart auf M=0 (M=NULL) gesetzt wird. Hat gegenüber M=1 und einem "leeren" Zug (einem Zug, der nur aus einem transparenten Bild besteht) den Vorteil, daß es keine Zeit kostet, also nicht auffällt.
Zug fährt vorne
Kein Zug fährt hinten
Zug fährt vorne
Zug fährt hinten
Kein Zug fährt vorne
Zug fährt hinten
Kein Zug fährt vorne
Zug fährt hinten
...
Martin
Author
RE: Tips und Tricks für die Fahrplandatei von Traffic
Wenn man einen der Erzzüge zwischen Hamburg-Hansaport und Salzgitter (a.k.a. "Beddinger" a.k.a. "Erzengel") auf dem heutigen Stand nachbilden will, also mit einteiligen Wagen (Faals) und zweiteiligen Wagen (Falrrs) bunt durchmischt, hat man ein Problem. Unter normalen Umständen ist es ziemlich unmöglich, genau vorher zu bestimmen, daß es exakt 40 Wagen werden.
Man könnte den Zug fest zusammenstellen, aber das wäre nicht "traffic-like". Wenn, dann zufällige Reihung.
Man könnte das Ganze mit $MIX machen und in dem Mix die Zahl der ein- und zweiteiligen Wagen so verteilen, daß 40 dabei rauskommen, z. B. 30 Wagen insgesamt, davon 10 zweiteilig und 20 einteilig.
Aber zum einen wird das eine sehr lange Zeile, und zum anderen wollen wir ja die Zahl der Einzel- und Doppelwagen auch zufällig bestimmen.
Die dritte Variante ist schon vielversprechender: Wir nehmen immer 40 Wagen, das sind zufällig ein- oder zweiteilige Wagen, und begrenzen die Länge in Pixeln. Ein Wagen ist 151 Pixel lang, egal, wer ihn gezeichnet hat. 40 Wagen sind also 6040 Pixel lang. Das Ganze sähe dann so aus:
Code
$DEF Faalx=[MP:6040]1:Falrrs|2:Faals
Tja, aber wenn der Zug nun bei 39 Wagen ist und als nächstes ein zweiteiliger Falrrs aufgerufen wird, wird der nicht angehängt, weil der Zug sonst zu lang wäre, und die Garnitur hätte nur 39 Wagen.
Jetzt kommt der Trick: Wir wenden zwei Längenbegrenzungen an.
Zunächst mal siehe oben. Dabei kommt ein Zug mit entweder 40 oder 39 Wagen raus. Das ganze Konstrukt packen wir in noch eine Längenbegrenzung, in der grundsätzlich immer ein Einzelwagen angehängt wird, solange noch einer angehängt werden kann.
Wenn aus der ersten Längenbegrenzung nun eine 39-Wagen-Garnitur kommt, kann der eine Wagen noch mit drangehängt werden, und wir haben 40 Wagen. Wenn aus der ersten Längenbegrenzung schon ein 40-Wagen-Zug kommt, kann der eine Wagen nicht mehr mit drangehängt werden, und wir bleiben bei 40 Wagen.
Martin
Author
RE: Tips und Tricks für die Fahrplandatei von Traffic
In Traffic selbst kann man ja leider die Zuglänge nicht zufällig bestimmen.
Code
[MP:(500-675)]
geht nicht,
Code
[MP:500-675]
geht auch nicht. Das einzige, was geht, ist die Länge per AP davorzustellen, denn was für APs einer Zeile angehängt werden, das kann man zufällig auswählen.
Die kann man sich jetzt direkt in den Fahrplan einbauen, besser ist aber, einen Include-Fahrplan draus zu machen und sie überall einzubauen, wo man Güterzüge fährt.
Wenn man jetzt einen maximal 500 m langen Zug haben will, hängt man einfach
Code
AP=MP500
an die Fahrplanzeile mit dem Zug.
Wenn man einen zufällig 500-675 m langen Zug haben will:
.
Anwendungsgebiet sind besonders Güterzüge, die man dann erheblich länger definieren kann, als sie letztlich erscheinen, um immer eine gewisse Länge erreichen zu können, die dann aber mit der maximalen Pixellänge gestutzt werden.
Martin
Author
RE: Tips und Tricks für die Fahrplandatei von Traffic
Aus der Kategorie "Dein Freund, der AP" ein neuer Trick:
Angenommen, wir haben eine Halteposition HaltHier. Nur mal so rein exemplarisch. Die kann aus einem Vorder- oder Hintergrund heraus definiert sein oder eine Prozentzahl.
Jetzt wollen wir Züge aber nicht immer genau da halten lassen, sondern ungefähr da, sagen wir, plus/minus zwei Meter = 20 Pixel.
Blöd: Traffic kann hier kein "plus/minus", sondern von der Halteposition nur entweder eine Zahl abziehen (P=HaltHier-(0-20)) oder eine Zahl dazuaddieren (P=HaltHier+(0-20)). Sowas wie P=HaltHier+(-20-20) geht nicht.
Das kann man umschiffen, indem man Traffic sagt, es soll entweder addieren oder subtrahieren. Weil das aber nicht in einer und derselben Positionsangabe geht, machen wir zwei und lassen Traffic zwischen den beiden wählen. Das geht, indem wir jede davon in einen AP packen.
Code
AP=[P=HaltHier-(0-20)]|[P=HaltHier+(0-20)]
Martin
Author
RE: Tips und Tricks für die Fahrplandatei von Traffic
Ähnlich wie FILELEVEL kann man in Traffic auch noch andere Sachen abfragen.
WINDOWHEIGHT bzw. WINY fragt die Höhe der von Traffic belegten Bildschirmfläche ab, WINDOWWIDTH bzw. WINX die Breite. So kann man beispielsweise mit
Code
{WINY>=300?
}
Zeilen auf Situationen beschränken, in denen der genutzte Bereich mindestens 300 Pixel hoch ist.
Analog kann man auch die Ausmaße des ganzen Bildschirms abfragen mit SCREENHEIGHT/SCREENY und SCREENWIDTH/SCREENX.
In welchem Modus Traffic läuft, kann auch abgefragt werden:
FULLSCREENMODE bzw. FULL ist 1 im Vollbildmodus.
WINDOWMODE bzw. WIN ist 1 im alten Fenstermodus.
APPBARMODE bzw. STRIPE ist 1 im Streifenmodus.
MINIAPPMODE bzw. MINI ist 1 im Minimodus.
This website uses cookies for the technical Functionality and content to personalize and customize your experience. If you continue to be on this site, you accept the use of cookies. » Read more about privacy «