Startseite · Forum · Wiki 28. März 2024 17:09
Goldene Bahnschranke
Die Goldene Bahnschranke des Jahres 2023 hat erhalten:
blank
» Privatbahn NPZ «

Die "Goldene Bahnschranke" des Monats Januar 2024 hat erhalten:
blank
» Museumszug: "Junee shu... «

quest Hast Du schon für die
"Goldene Bahnschranke"
des Monats Februar gestimmt ?
» hier geht's zur Abstimmung «
Stimmen bisher: 5
Online Stats


Besucher Heute: 733
Max. Onlinerekord: 56
Max. Tagesrekord: 11494
Besucher Gestern: 389
Besucher Monat: 32678
Besucher Gesamt: 1280298

Letzten 24h: 
























bahnschranke.tt4u.de - Diskussionsforum
 Benutzername  Passwort  Angemeldet bleiben
RegistrierenForumsuche
Thema ansehen
bahnschranke.tt4u.de > Bildschirmschoner
->> Traffic
Vorheriges Thema Nächstes Thema

 
Autor V4.19: Neue Funktionen   1  # 10  top
godeny
Admin


User Avatar



Beiträge: 433

Ort: Budaörs - Ungarn
Eingetreten: 21.12.06
Status: Offline
Eingetragen am 22.09.2016 14:46
Es gibt viele Neuheiten, ich schreibe lieber getrennte Forumsbeiträge über die einzelne Themen.

Makros mit Parametern: bisher gab es nur bei den Präprozessor-Makros ( %DEF() ) die Möglichkeit an die Makros Parameter zu übergeben. Ab Version 4.19 geht das mit den Laufzeit-Makros ( $DEF ) auch.
Innerhalb des Makro-Textes dienen die Zeichenpaare $1 $2 ... $9 als Platzhalter für die Parameter. Falls man den Makro mit Parametern aufrufen möchte, dann schreibt man einen $ vor der Name:
Code
$DEF ZUG1=LOK,$1,WAGEN

Beim Aufruf ohne $
Code
C=ZUG1;

wird daraus
Code
C=LOK,,WAGEN;

(die zwei Kommas nebeneinander stören bei einem Zugdefinition nicht.)
Beim Aufruf
Code
C=$ZUG1(POSTWAGEN);

entsteht
Code
C=LOK,POSTWAGEN,WAGEN;

Die aktuelle Parameter sind mind KOmma getrennt. Will main innerhalb des Parameterwertes einen Komma übergeben, muß man den Parameter in Klammern setzen (aber die Klammern werden auch übergeben). Also,
C=$ZUG1((POSTWAGEN,GEPAECKWAGEN));
generiert
C=LOK,(POSTWAGE,GEPAECKWAGEN),WAGEN;
- hier stört der zusätzlicher Klammer nicht.

Die $1 .. $9, wirken auch innerhalb von Modifikatoren ( z.B. [O:LADUNG,$1,0] ), was nicht selbstverstänlich ist. Bisher wurden die Modifikatoren unverändert durch die Auswertung durchgeleitet, nur in dem Moment, wenn sie verarbeitet werden (der entsprechende Fahrzeug/Gebäude, der den Modifikator hat, wird gerade gezeichnet).

Bearbeitet von godeny am 22.09.2016 14:47
godeny http://traffic.pxtr.de
Autor RE: V4.19: $   2  # 10  top
godeny
Admin


User Avatar


Themenstarter

Beiträge: 433

Ort: Budaörs - Ungarn
Eingetreten: 21.12.06
Status: Offline
Eingetragen am 22.09.2016 15:09
Die folgende Werte kann man in Bewegungszeilen und in manche Parametern ersetzen lassen:

$W - Breite des Fensters / Bereiches, in dem die aktuelle Zeile oder Sektion läuft
$H - Höhe des Fensters / Bereiches, in dem die aktuelle Zeile oder Sektion läuft
$VH - Höhe der Fahrzeuge (58 Pixel, oder bei anderen Maßstaben kommt der Wert aus der Fahrzeugliste, oder kann man mid den VH= / IMGY= Parameter verändern)
$AB - Platz über den Fahrzeugbereich - der Wert des AB= Parameters
$BL - Platz unter den Fahrzeugbereich - der Wert des BL= Parameters

$MIX(N,LST) - war schon in früheren Versionen vorhanden, wählt aus der LST liste Fahrzeuge/Hintergrundelemente so lange aus, bis der Anzahl N erreicht ist.

$FLG(FLAG,TRUEPART,FALSEPART) - auch schon i früheren Versionen enthalten, bedingte Ausdruck abhängig von den Vorhandenseit eines Flag ( FLG= ) Wertes. Die FLags dienen in erste Linie für den Auswahl aus Pools.

$EVAL(EXPRESSION) - wird mit den Ergebnis eines arithmetischen Ausdrucks ersetzt.

$IF(EXPRESSION, TRUEPART, FALSEPART) - abhängig von dem Ergebnis eines Ausdruckes wird die erste oder Zweite Möglichkeit gewählt. In dem Ausdruck können die übliche arithmetische und logische Operationen und Vergleiche, Klammer verwendet werden: + - * / < = > <= != <> >= & && | || ! ~ .

$IFVAR(NAME, TRUPART, FALSEPART) - prüft, ob eine Variable vorhanden ist, und welchen Wert hat.Wenn der numerischer Wert 0 ist,oder die Variable leer oder nicht vorhanden ist, wird der FALSEPART verwendet, bei anderen Zahlen, oder wenn die Variable keine Zahl ist, wird der TRUEPART verwendet.

Was ist eine Variable ? Kommt später!
godeny http://traffic.pxtr.de
Autor RE: &IF   3  # 10  top
godeny
Admin


User Avatar


Themenstarter

Beiträge: 433

Ort: Budaörs - Ungarn
Eingetreten: 21.12.06
Status: Offline
Eingetragen am 22.09.2016 15:55
Die Laufzeit-Makros müssen als eine Name da sein, und ihren Wert wird so geliefert, als der Inhalt des Makros in Klammern stehen würde. Das gleiche gilt für die $XXX -Werte (mit Ausnahme von $1-$9): sie müssen als Name da stehen, und was sie zurückgeben, zählt, als in Klammern stehen würde. So kann man aber keinen "noch ein Auswahl" - Konstrukt machen.

Wenn innerhalb derAuswahl

Code
A|B|C


B ein Makro ist, der manchmal einen Wagen darstellt, manchmal leer ist, dann, wenn es leer ist, besteht die Möglichkeit, das die ganze Auswahl nichts zurückgibt. Meißtens wollen wir aber, dass der Auswahl entweder kleiner oder größer ist, manche Elemente stehen ab und nicht zum Auswahl, aber der Auswahl sollte immer einen Fahrzeug oder Hintergrundkonstrukt zurückgeben.

Dazu dient der &IF(BEDINGUNG,TRUEPART,FALSEPART) Konstrukt.
Es wird als erstes in dem Moment ausgewertet, wenn die Analyse des Parameters anfängt, und - was noch wichtiger ist - sein Wert wird nicht in verdeckten Klammern eingebunden.
Also,
Code
A &IF(BEDINGUNG,|B) |C

sieht - abhängig von der Bedingung - entweder als A|B oder als A|B|C aus.

Als Bedingung kann ein Ausdruck stehen mit der selben Oparationmöglichkeiten, wie bei $EVAL.
Names (hier ohne $) bedeuten auch die selbe: W, H, VH, AB, BL . Flags frägt man mit FLG(FLAGNAME) ab, Variablen einfach die Variablenname hinschreiben.

Es gibt auch einen
Code
&FLG(FLAG,TRUEPART,FALSEPART)

bedingter Ausdruck, der Ähnlicherweise fast alles (ausser einen Komma, der nicht innerhalb Klammern steht) als TRUEPART oder FALSEPART beinhalten kann. Es ist dann nur eine Abkürzung von
Code
&IF(FLG(FLAG),TRUEPART,FALSEPART)
godeny http://traffic.pxtr.de
Autor RE: Variablen, dynamisch Segmentierungsbefehle   4  # 10  top
godeny
Admin


User Avatar


Themenstarter

Beiträge: 433

Ort: Budaörs - Ungarn
Eingetreten: 21.12.06
Status: Offline
Eingetragen am 22.09.2016 16:26
Dass man die Variablen abfragen kann, haben wir schon gesehen ($IF, &IF). Wie stellt man sie aber ein ?

Es gibt eine neue Parameter, VAR= , dahinter können die Zuweisungen stehen, mit Komma getrennt, z.B.:
Code
VAR=BGTYPE=3,BGUP=53;

So ein Parameter kann in der Bewegungszeilen stehen, aber auch in der Segmentierungsbefehlen, wie $GROUP, $SECTION. In der Segmentierungsbefehlen wirken sie sofort (also falls etwas hier asugewertet wird, wie z.B. BG= und FG= in einem $GROUP), aber sie werden an die enthaltene weitere Segmentierungsbefehlen und Bewegungszeilen weitergegeben.

Bisher (bis Version V4.18) waren die Parameterlisten der Segmentierungsbefehlen nur ein mal, ganz am Anfang ausgewertet, die ERgebnisse dann eventuell an die enthaltene innere Segmentierungsbefehle weitergegeben. Ab Version 4.19 wird die Parameterliste dann ausgewertet, wenn der $SECTION / $GROUP Platz an dem Bildschirm bekommt, und anfängt zu laufen. Also, steht irgendwo ein Zufallsauswahl, oder werden Parameterwerte in Laufzeit dazu genommen, was die aktuelle Werte verändern kann, werden die neue, aktuelle Werte vererbt.

Dazu kommt, dass auch die Segmentierungsbefehle ab Version V4.19 den Parameter POOL= haben können. In einem Pool können nicht nur Bewegungszeilen stehen, sondern auch andere Dinge, z.B. Hintergrunddefinitionen, oder reine Parameter. Wer die Datei poolsec.ttt in Version 4.19 anschaut, findet ganz am Anfang einen Pool:
Code
$SPOOL N=RWMODE; SEQ=RSEQ;
AB=5; VAR=BGTYPE=0; DIS=5; ST=0.4;
AB=25; VAR=BGTYPE=2; DIS=10; ST=0.5;
AB=25; VAR=BGTYPE=3,BGUP=83; DIS=20; ST=1;
AB=100; VAR=BGTYPE=4,BGUP=158; DIS=20;
AB=340; VM=HEAD,JUMP; DX=5000; VAR=BGTYPE=5,BGUP=398; DIS=50;
$ENDPOOL

und dann:
Code
$SECTION LC=1; POOL=RWMODE;


Aus dem RWMODE Pool wird geholt, wie sollen die einzelne Bewegungen dargestellt werden: wie viel Platz braucht man oberhalb der Fahrzeuge, ob eine extra breite virtuelle Bereich auf dem Bildschirm bewegt sein soll (VM= , DX= ), und der frisch eingeführte VAR= -Befehl.
Wer dann in der Datei BG_DEF.TTT nachschaut, findet dort $IF und &IF-Befehle, die diese Variablenwerte BGTYPE und BGUP abfragen.Abhängig von BGTYPE wird entweder gar keine Hintergrund generiert (alte MM&MM-Styl), nur Bahndamm und Oberleitung (bisherige Traffic-Styl), oder eine volle, zufällige Hintergrund mit unterschiedlichen Höhen. Und manche Hintergründe können nicht in breite, andere nich in hohe Streifen verwendet werden - dazu die höhen- oder breiten-abhängige Auswahl von Hintergründen.
godeny http://traffic.pxtr.de
Autor RE: V4.19: Neue Funktionen   5  # 10  top
godeny
Admin


User Avatar


Themenstarter

Beiträge: 433

Ort: Budaörs - Ungarn
Eingetreten: 21.12.06
Status: Offline
Eingetragen am 22.09.2016 16:28
Falls ich etwas vergessen habe (also Ihr etwas in der mitgelieferten Fahrplandateien findet, was noch unbekannt ist), oderetwas nicht ganz klar ist, fragt ihr !
godeny http://traffic.pxtr.de
Autor [WMIX: ]   6  # 10  top
godeny
Admin


User Avatar


Themenstarter

Beiträge: 433

Ort: Budaörs - Ungarn
Eingetreten: 21.12.06
Status: Offline
Eingetragen am 23.09.2016 07:56
Eine, von der vorherigen Themen unabhängige Sache habe ich vergessen: nur in Hintergrund-Definitionen gibt es eine [WMIX:<Breite>,<Bild1>,<Bild2>, ... ] . Es sieht aus, als ein Modifikator (also was hinter einzelne Bilder oder im Falle von Hintergrunddefinitionen auch hinter Bildergruppen stehen würde), ist aber keine: steht als ein selbsständiges Bild da. Bedauere, so war die einfachste die Durchführung so lange auszuzögern, bis es sinn hat.

Es ist der große Bruder von $MIX() : aus der Liste nimmt zufällig Bilder so lange, bis der gesamte Länge der Bilderreihe den Wert der ersten Parameter erreicht. Es gibt mehrere Varianten:
[WMIXS: ] verwendet jedes Bild nur ein mal. Falls der Gesamtlänge der Bilder die gewünschte Gesamtbreite nicht erreicht, wird die erstellte Bilderreihe kürzer, als die gewünschte Länge.
[WMIXF: ] fängt an die Bilder noch mal zu verwenden, wenn es zum Ausfüllen der gewünschte Länge braucht.
[WMIX: ] ist mit [WMIXS: ] identisch.
Falls die gewünschte Länge nicht genau erreicht wird (was üblicherweise der Fall ist), dann wird die erstellte Bilderreihe ein bischen länger, als die gewünschte Länge.

Steht an der Stelle der gewünschten Lánge kein Wert ( z.B.: [WMIXF:,Haus1,Haus2,Haus3] ), oder stehen dort zwei Punkte ( .. ), dann füllt [WMIX: ] die gesamte Länge des Bildschirms / Bewegungszeilenbreite aus.
Bearbeitet von godeny am 23.09.2016 07:58
godeny http://traffic.pxtr.de
Autor RE: V4.19: Neue Funktionen   7  # 10  top
Ulrich
Erfahrener


User Avatar



Beiträge: 158

Ort: Berlin
Eingetreten: 25.07.12
Status: Offline
Eingetragen am 08.10.2016 10:31
Sehr Schön – funktioniert tadellos. Bei der Gelegenheit möchte ich darauf aufmerksam machen,
dass es eine Dokumentation mit dem Umgang von Traffic gibt. Die gibt es hier hier zu lesen.
Auf dieser Seite findet auch dem Internet-basierten Installer von Traffic.
Die Installation funktioniert problemlos und ist empfehlenswert.

Grüße
Ulrich
Bearbeitet von Ulrich am 08.10.2016 20:32
Autor RE: V4.19: Neue Funktionen   8  # 10  top
MartinG
Spezialist


User Avatar



Beiträge: 286

Ort: Hamburch
Eingetreten: 29.12.06
Status: Offline
Eingetragen am 25.12.2016 19:10
Es gibt im hauseigenen Wiki auch eine allmählich wachsende Traffic-Sektion, an der ich gelegentlich arbeite. Die ist nicht so sehr als Einführung in Traffic in der Art eines Kochbuchs gedacht wie als Nachschlagewerk in der Art der in Traffic eingebauten Hilfe.
Autor RE: V4.19: Neue Funktionen   9  # 10  top
MartinG
Spezialist


User Avatar



Beiträge: 286

Ort: Hamburch
Eingetreten: 29.12.06
Status: Offline
Eingetragen am 03.04.2019 22:50
Was ist eigentlich der Unterschied (auch in der Verwendung) zwischen &IF und $IF?
Autor RE: V4.19: Neue Funktionen   10  # 10  top
godeny
Admin


User Avatar


Themenstarter

Beiträge: 433

Ort: Budaörs - Ungarn
Eingetreten: 21.12.06
Status: Offline
Eingetragen am 12.05.2019 10:30
&IF wird während das Einlesen durchgeführt.
$IF nur dann, wenn die Zeile verwendet wird.

Hauptgrund für $IF ist der laufende Arbeit um Traffic in Browsers laufen zu lassen: Fahrplan und Fahrzeugliste auf einem Server, heruntergeladen wird nur das was für die aktuelle Szene benötigt wird. Dann geht es nicht mehr, das schon vorab, bei der Einlesen der Fahrplandateien entschieden wird, ob etwas für eine Benutzer benötigt wird, oder nicht.
godeny http://traffic.pxtr.de
 
Springe zu Forum:
Ähnliche Themen wie "V4.19: Neue Funktionen" [18]
Thema Forum Antworten Letzter Beitrag
Neueste oder vollständigste .stb file Traffic 3 04.12.2023 11:49 von godeny
Die neue Kategorie 1px = 5cm Traffic 6 24.03.2023 03:50 von Ulrich
Fehler in der neuen Traffic-Version Traffic 3 20.04.2021 18:38 von godeny
Neue Aufgaben - zu zeichnen Vorbildfotos 3 15.07.2015 19:57 von Fahrwegmessung
Bildgrüße: Frohes neues Jahr! Vorbildfotos 0 02.01.2013 00:20 von wtsi2k
Weitere ähnliche Themen wie "V4.19: Neue Funktionen"
Thema verlinken
URL:
BB-Code:
HTML:
Spenden
Anmelden
Bahnhofsuhr
Shoutbox
Du musst Dich einloggen, um eine Nachricht zu schreiben.

bullet HvdWant offline
29.02.2024 - 20:36
Auch im Februar mehr als 50 neue Zeichnungen. Jetzt mal anschauen.
http://www.sitebyhans.de/40674.html
bullet HvdWant offline
01.02.2024 - 20:37
Allein im Januar schon mehr als 50 neue Zeichnungen. Du solltest es mal anschauen, oder?
https://www.sitebyhans.de/40674.html
bullet Staedteexpressfahrer offline
01.01.2024 - 22:23
Prosit Neujahr und alles Gute für 2024 !!
bullet Till Mandt offline
18.11.2023 - 21:02
Halloooo-hoo! Ich dachte, ich mach' mal wieder was Neues!
bullet HvdWant offline
01.10.2022 - 19:58
Hier etwas neues: http://www.sitebyhans.de/40674.html
cookies   Cookie-Control :
Diese Webseite verwendet Cookies für die techn. Funktionalität und um Inhalte zu personalisieren und deiner Erfahrung anzupassen.
Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du den Einsatz von Cookies.       » Hier mehr lesen zum Datenschutz «
Cookies akzeptieren