Handbuch

STS Handbuch

Stellwerksim Handbuch

Webseiten-Werkzeuge


stellwerksim:editor:zug-designer:zuege:namensmuster

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

stellwerksim:editor:zug-designer:zuege:namensmuster [2016/03/13 11:58] – Externe Bearbeitung 127.0.0.1stellwerksim:editor:zug-designer:zuege:namensmuster [2019/01/19 16:55] (aktuell) – Ersetzt durch stellwerksim:erbauer:zugbau:namensmuster DevonFrosch
Zeile 1: Zeile 1:
-====== Das Namensmuster ====== 
  
-===== Grundlagen ===== 
-Mit dem Namensmuster wird festgelegt, welchen Namen ein erzeugter Zug bekommt. Der Name muss dabei für jeden Zug eindeutig und einmalig sein, der gleiche Name kann also nicht für mehrere Züge vergeben werden. Das Namenssystem ist unabhängig vom Fahrplanjahr! Wird beim Zugscript-Lauf festgestellt, dass ein Name bereits von einem anderen Zug (__auch wenn dieser in einem oder mehreren anderen Fahrplanjahr verkehrt__) verwendet wird, so wird der Name vom System umgeschrieben.  **Diese doppelten Namen sind dann zeitnah zu korrigieren und ein neuer Zugscript-Lauf zu beantragen** 
- 
- 
- 
------- 
-===== Syntax ===== 
-Für das Namensmuster gibt es einen festen Syntax, mit dem mehrere Züge eines Templates unterschiedliche Namen bekommen können. Dabei kann mit Variablen und Rechenoperatoren festgelegt werden, wie beim Zugscriptlauf die Namen ermittelt werden. 
- 
- 
-==== Aufbau ==== 
-Ein Namensmuster kann aus einem oder mehreren Blöcken bestehen. Mehrere Blöcke werden durch ein Leerzeichen abgetrennt. Es gibt zwei Arten von Blöcken: 
-  * **Feste Blöcke**: diese sind bei allen erstellten Zügen gleich. Diese Blöcke können aus beliebigen Ziffern, Buchstaben oder Trennstrichen bestehen. 
-  * **Variable Blöcke**: diese Blöcke sind für jeden erstellten Zug anders. In diesen Blöcken dürfen nur Ziffern, Rechenoperatoren und Variablen enthalten sein - **Buchstaben sind nicht zulässig**. 
-Außerdem kann im Namensmuster ein Prozentzeichen (%) angegeben werden. Zeichen hinter dem Prozentzeichen werden den Spielern nicht angezeigt. So können mehrere Züge erstellt werden, die für den Spieler den gleichen Namen haben (z. B. damit alle S-Bahnen den gleichen Namen haben können) 
- 
- 
-==== Variable Blöcke ==== 
-Durch die variablen Blöcke können die Zugnummern variiert werden. Dazu können Zahlen und Variablen durch Rechenoperatoren verknüpft werden. Als Rechenoperatoren stehen die Addition (+), die Subtraktion (-) und die Multiplikation (*) zur Verfügung. **Die Division kann nicht verwendet werden (Ausnahme siehe unten)** 
- 
-=== Variablen === 
-Für die Rechnungen stehen mehrere Variablen zur Verfügung, die vom System automatisch vergeben werden: 
-^ Variable ^ Bedeutung ^ 
-^  $i  | Laufende Nummer über alle Züge des aktuellen Scriptlaufs (von 0 an gezählt) | 
-^  $zi  | Laufende Nummer über alle Züge des Zugtemplates (von 0 an gezählt) | 
-^  $ti  | Laufende Nummer über alle Züge des aktuellen takt()-Befehls (von 0 an gezählt) | 
-^  $zid  | Die vom System vergebene eindeutige ID des Zuges | 
-^  $sec  | Die Minutenzahl seit 0:00, welche der Abfahrtszeit am ersten Halt im ersten Stellwerk entspricht. | 
-^  $time  | Abfahrtszeit des Zuges am Referenzbahnsteig als vierstellige Zahl (z. B. 1252) | 
- 
-<note info>Während $zi zur Verwendung im Namensmusterfeld gedacht ist, sollte $ti nur im takt()-Befehl verwendet werden.</note> 
- 
-=== Wichtiger Hinweis === 
-**In variablen Blöcken darf keine führende Null verwendet werden.** Dies führt zu unberechenbaren Ergebnissen. 
- 
-Folgendes ist also **nicht** zulässig: 
- 
-  RB 012345+$zi*2 
- 
-Allerdings funktioniert das folgende Beispiel: 
- 
-  RB 0 12345+$zi*2 
- 
- 
-==== Beispiele für gültige Befehlen ==== 
-Nach den theoretischen Grundlagen nun ein paar praktische Beispiele für gültige Namensmuster: 
-  * ''IC 500+$zi'' 
-  * ''S1 % $time'' 
-  * ''ICE 100+$zi*3'' 
-Folgende Namensmuster sind hingegen **falsch**: 
-  * ''A$zi'' (Variablen und Buchstaben sind nicht im gleichen Block zulässig) - **richtig:** ''A $zi'' 
-  * ''ALX86701+$zi*2'' (Variablen und Buchstaben sind nicht im gleichen Block zulässig) - **richtig:** ''ALX 86701+$zi*2'' 
-  * ''$time$zi'' (Zwei Variablen müssen entweder durch Leerzeichen getrennt oder durch Rechenoperator verbunden werden) - **richtig:** ''$time $zi'' 
- 
- 
-==== Beispiele für die erstellten Zugnamen ==== 
-Das Namensmuster ''S2 $zi+2 % $time'' produziert folgende Züge: 
-<code> 
-S2 2 % 0700 
-S2 4 % 0720  
-S2 5 % 0740 
-S2 6 % 0800 
-S2 7 % 0820 
-S2 8 % 0840 
-</code> 
-Das Namensmuster ''7103+$zi*4 % Solothurn'' produziert folgende Züge: 
-<code> 
-7103 % Solothurn 
-7107 % Solothurn 
-7111 % Solothurn 
-7115 % Solothurn 
-7119 % Solothurn 
-7123 % Solothurn 
-7127 % Solothurn 
-</code> 
- 
- 
- 
------- 
-===== Einbindung des Namensmusters in das Template ===== 
-Für die Einbindung des Namensmusters in ein Zugtemplate gibt es zwei Möglichkeiten: 
-  * Eingabe im Feld //Namensmuster// der Stammdaten des Zugtemplates 
-  * Eingabe innerhalb der takt()-Befehle 
- 
-<note erfahrung>Bei Templates mit nur einer ZS-Zeile sollte das Namensmuster in das entsprechende Feld eingetragen werden.</note> 
- 
- 
-==== Eingabe im Feld Namensmuster ==== 
-Im Feld Namensmuster kann ein Namensmuster festgelegt werden, welches dann für alle Züge des Templates gilt. 
- 
-{{:stellwerksim:editor:zug-designer:zuege:zugstammdaten001.png|}} 
- 
- 
-==== Eingabe innerhalb des takt()-Befehls ==== 
-Alternativ kann das Namensmuster auch direkt im takt()-Befehl (siehe [[stellwerksim:editor:zug-designer:zuege:zugscript|Kapitel ZugScript]]) festgelegt werden. Somit können für das gleiche Template mehrere Namensmuster verwendet werden. 
-**Dabei ist folgendes zu beachten:** 
-  * Das Feld //Namensmuster// der Stammdaten __muss__ leer bleiben. 
-  * Alle Züge müssen mit dem takt()-Befehl erstellt werden. Der loop()-Befehl darf __nicht__ verwendet werden. 
-  * Es muss für alle takt()-Befehle ein Namensmuster angegeben werden. 
-**WICHTIG: In jeder Takt-Befehl-Zeile kann der Parameter NAME nur einmal vorkommen** 
- 
- 
-=== Besonderheiten bei den Variablen === 
-Bei der Verwendung von Namensmustern im takt()-Befehl sollte als Variable für die laufende Nummer **$ti** verwendet werden. Nur **$ti** fängt für jeden Befehl neu zu zählen an. 
- 
-=== Beispiele === 
-Im folgenden Beispiel werden die nur zweistündig verkehrenden Zwischenzüge (06:30...) in das Nummernschema der stündlich verkehrenden Züge eingereiht: 
-<code> 
-takt(60,ID=1,GLEIS=1,MILZEIT=0600..1200,NAME=RB 2000+$ti*4); 
-takt(120,ID=1,GLEIS=1,MILZEIT=0630..1230,NAME=RB 2002+$ti*8); 
-</code> 
-Es würden folgende Züge erstellen: 
-<code> 
-RB 2000 (06:00) ($ti = 0) 
-RB 2004 (07:00) ($ti = 1) 
-RB 2008 (08:00) ($ti = 2) 
-RB 2012 (09:00) ($ti = 3) 
-RB 2016 (10:00) ($ti = 4) 
-RB 2020 (11:00) ($ti = 5) 
- 
-RB 2002 (06:30) ($ti = 0) 
-RB 2010 (08:30) ($ti = 1) 
-RB 2018 (10:30) ($ti = 2) 
-</code> 
- 
-Die Verwendung von **$zi** würde hier unerwartete Ergebnisse produzieren: 
-<code> 
-takt(60,ID=1,GLEIS=1,MILZEIT=0600..1200,NAME=RB 2000+$zi*4); 
-takt(120,ID=1,GLEIS=1,MILZEIT=0630..1230,NAME=RB 2002+$zi*8); 
-</code> 
-Es würden folgende Züge erstellen: 
-<code> 
-RB 2000 (06:00) ($zi = 0) 
-RB 2004 (07:00) ($zi = 1) 
-RB 2008 (08:00) ($zi = 2) 
-RB 2012 (09:00) ($zi = 3) 
-RB 2016 (10:00) ($zi = 4) 
-RB 2020 (11:00) ($zi = 5) 
- 
-RB 2050 (06:30) ($zi = 6) !!! 
-RB 2058 (08:30) ($zi = 7) !!! 
-RB 2066 (10:30) ($zi = 8) !!! 
-</code> 
-  
------- 
-===== Hinweise für Fortgeschrittene ===== 
-Die folgenden Hinweise sollen denen dienen, die sich schon mit den grundlegenden Funktionen des Namensmusters vertraut gemacht haben und auch vor komplexeren Namensmustern nicht zurückschrecken. 
-  
-  
-==== Berechnungen auf Basis der Stunde ==== 
-Die Division (/) ist normalerweise beim Namensmuster nicht zugelassen, da hier Zahlen entstehen können, die keine ganze Zahl sind. Diese sind als Zugname nicht zulässig. In Zusammenhang mit dem Befehl floor() ist sie jedoch zulässig. Dieser Befehl schneidet die Nachkommastellen ab, so dass sich immer Ganzzahlen ergeben. 
-Bei der Nutzung der Division sind zwei Punkte zu beachten: 
-  * Die Division darf nur __innerhalb__ des floor()-Befehls erfolgen. 
-  * Es darf nicht zweimal das gleiche Ergebnis entstehen. 
- 
- 
-Sinnvoll ist diese Möglichkeit z. B., wenn der Name anhand der Stunde berechnet werden soll, zu der er verkehrt. Der Befehl ''floor($time/100)'' ergibt die Stunde am Referenzbahnsteig. Ein Beispiel: 
-Das Namensmuster ''**IC 775+floor($time/100)*4**'' mit dem takt()-Befehl ''**takt(120,ID=583,GLEIS=2,MILZEIT=0705..1106,MILZEIT=1705..2106);**'' 
-ergibt folgende Züge: 
-<code> 
-IC 803 (07:05) 
-IC 811 (09:05) 
-IC 819 (11:05) 
-IC 843 (17:05) 
-IC 851 (19:05) 
-IC 859 (21:05) 
-</code> 
-Am Beispiel des ersten Zuges sei das Verfahren erläutert: 
-  * **$time** ist die Abfahrtszeit des Zuges am Referenzbahnsteig in der Form ''0705''. 
-  * **$time/100** ergibt somit **7,05** 
-  * **floor($time/100)** schneidet die Nachkommastellen ab, wir haben **7** als Ergebnis 
-  * **floor($time/100)*4** multipliziert das mit 4 - also haben wir **28** 
-  * **775+floor($time/100)*4** addiert dann 775 dazu - so dass sich die Zugnummer **803** ergibt 
-Weitere Informationen zu diesem Berechnugnsverfahren gibt es im [[http://www.stellwerksim.de/forum/viewtopic.php?f=87&t=11035|Tipps & Tricks-Forum]]. 
- 
-====== 
-{{page>:editor:vorlage:navi#standard&noheader&nofooter&noeditbtn}} 
stellwerksim/editor/zug-designer/zuege/namensmuster.1457866715.txt.gz · Zuletzt geändert: 2016/03/13 11:58 von 127.0.0.1