Standardisiertes Schema beim Umgang mit Sonderansagen: Unterschied zwischen den Versionen

Aus LOTUS Wiki DE
Wechseln zu: Navigation, Suche
K (1 Version importiert: Init)
(Updated from LOTUS Lexicon on 2025-01-21)
 
Zeile 1: Zeile 1:
[[Category:Lexikon]]
{{ArticleMetadata
[[Category:Unvollständige Seiten]]
|author=DrBlackError
[[Category:Unformatierte Seiten]]
|created_date=2021-02-19T23:58:43+01:00
 
|modified_date=2021-03-10T12:57:08+01:00
Ein kleines Tutorial zur Implementierung von Sonderansagen in der ANNOUCEMENT-Klasse.
|source_url=https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/
Es wurde gemeinsam ein Konzept entwickelt, um die Sonderansagen mit in der 'ANNOUNCEMENT' - Klasse auszuliefern. Dies soll primär dazu dienen, dass alle IBIS Geräte mit der gleichen FIS-Datei die gleichen Sonderansagen abspielen können, ohne dass für jedes IBIS eine neue spezielle FIS angelegt werden muss. Diese Informationen werden innerhalb der Zusatz-Strings vermerkt.
}}
 


Ein kleines Tutorial zur Implementierung von Sonderansagen in der ANNOUCEMENT-Klasse.


Es wurde gemeinsam ein Konzept entwickelt, um die **Sonderansagen** mit in der **'ANNOUNCEMENT' - Klasse** auszuliefern. Dies soll primär dazu dienen, dass **alle IBIS Geräte mit der gleichen** [[https://www.lotus-simulator.de/lexikon/index.php?entry/155-fis/&synonym=126|FIS]]-Datei die gleichen Sonderansagen abspielen können, ohne dass für jedes IBIS eine neue spezielle [[https://www.lotus-simulator.de/lexikon/index.php?entry/155-fis/&synonym=126|FIS]] angelegt werden muss. Diese Informationen werden **innerhalb der Zusatz-Strings** vermerkt.


 


[[https://www.lotus-simulator.de/index.php?attachment/18172-screenshot-28988jvb-png/|[[File:https://www.lotus-simulator.de/index.php?attachment/18172-screenshot-28988jvb-png/ "screenshot_28988jvb.png"|https://www.lotus-simulator.de/index.php?attachment/18172-screenshot-28988jvb-png/ "screenshot_28988jvb.png"]]]]


 


Hierfür gilt folgendes:
Hierfür gilt folgendes:


 


{| class="wikitable"  Variable | Typ | Beschreibung 
---|---|--- 
EventID | integer | LOTUS-Interne ID, um Fahrgastinteraktionen zu triggern. 
z.B. [[https://www.lotus-simulator.de/lexikon/index.php?entry/290-fahrg%C3%A4ste/|Fahrgäste]] treten nach Ansage aus der Tür. 
Text | string | Text, welcher den Inhalt der Sonderansage beschreibt. Sollte kurz gehalten werden. 
Kann im IBIS-Gerät angezeigt werden. Dieser Text ist immer in Anführungszeichen "" zu setzen. 
ContentUserID |  integer | Die Content-User-ID der erstellten Sonderansage. 
ContentSubID |  integer | Die Content-Sub-ID der erstellten Sonderansage. 
Code |  integer | Numerischer Code, der bei einem IBIS mit Ziffernblock eingegeben werden kann. 
z.B. 753 
Target |  integer | Zielbestimmung der Audio-Ausgabe. Hierbei wird zwischen Innen (0), Außen (1) 
oder beide (2) unterschieden. Diese Liste kann auch erweitert werden um 
individuelle Ausgabequellen anzusprechen. 
|}


Variable Typ Beschreibung
 
EventID integer LOTUS-Interne ID, um Fahrgastinteraktionen zu triggern.
z.B. Fahrgäste treten nach Ansage aus der Tür.
Text string Text, welcher den Inhalt der Sonderansage beschreibt. Sollte kurz gehalten werden.
Kann im IBIS-Gerät angezeigt werden. Dieser Text ist immer in Anführungszeichen "" zu setzen.
ContentUserID integer Die Content-User-ID der erstellten Sonderansage.
ContentSubID integer Die Content-Sub-ID der erstellten Sonderansage.
Code integer Numerischer Code, der bei einem IBIS mit Ziffernblock eingegeben werden kann.
z.B. 753
Target integer Zielbestimmung der Audio-Ausgabe. Hierbei wird zwischen Innen (0), Außen (1)
oder beide (2) unterschieden. Diese Liste kann auch erweitert werden um
individuelle Ausgabequellen anzusprechen.
 


Das ganze wird im INI-Format verfasst. Hierbei werden Blöcke mit den jeweiligen Daten gebildet. Dieser startet immer mit
Das ganze wird im INI-Format verfasst. Hierbei werden **Blöcke mit den jeweiligen Daten** gebildet. Dieser startet immer mit


[SpecialAnnouncement]. Darauf folgt dann der Aufbau, der im unten stehenden Spoiler zu erkennen ist. Anschließend folgt eine Leerzeile und der nächste Block beginnt.
`[SpecialAnnouncement]`. Darauf folgt dann der Aufbau, der im unten stehenden Spoiler zu erkennen ist. Anschließend **folgt eine Leerzeile und der nächste Block beginnt.**


Du kannst auch Kommentare in jeder Zeile einleiten. Dies funktioniert wie folgt:
Du kannst auch Kommentare in jeder Zeile einleiten. Dies funktioniert wie folgt:


; Kommentar
`; Kommentar`


 


Zudem existiert ebenfalls die Möglichkeit eine Sektion als `[SpecialAnnouncementDefaults]` zu deklarieren. Hier kann man generell geltende Werte der oben stehenden Tabelle festlegen.


Zudem existiert ebenfalls die Möglichkeit eine Sektion als [SpecialAnnouncementDefaults] zu deklarieren. Hier kann man generell geltende Werte der oben stehenden Tabelle festlegen.
 


Hier nochmal ein konkretes Beispiel vom Aufbau von 2 Blöcken und dem Default-Block:


Code: Aufbau


Hier nochmal ein konkretes Beispiel vom Aufbau von 2 Blöcken und dem Default-Block:
  1. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_1_9fb946|]]; Global geltende Werte
  2. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_2_9fb946|]][SpecialAnnouncementDefaults]
  3. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_3_9fb946|]]ContentUserID=5750029
  4. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_4_9fb946|]]
  5. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_5_9fb946|]]; Erste Sonderansage
  6. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_6_9fb946|]][SpecialAnnouncement]
  7. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_7_9fb946|]]EventID=7
  8. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_8_9fb946|]]Text="Aus Lichtschranke treten"
  9. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_9_9fb946|]]ContentSubID=13001
  10. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_10_9fb946|]]Code=753
  11. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_11_9fb946|]]Target=0
  12. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_12_9fb946|]]
  13. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_13_9fb946|]]; Zweite Sonderansage
  14. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_14_9fb946|]][SpecialAnnouncement]
  15. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_15_9fb946|]]EventID=9
  16. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_16_9fb946|]]Text="Ausbildungsfahrt, nicht einsteigen"
  17. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_17_9fb946|]]; Abweichende CUID
  18. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_18_9fb946|]]ContentUserID=5750030
  19. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_19_9fb946|]]ContentSubID=13002
  20. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_20_9fb946|]]Code=42
  21. [[https://www.lotus-simulator.de/lexikon/index.php?entry/297-standardisiertes-schema-beim-umgang-mit-sonderansagen/#codeLine_21_9fb946|]]Target=1


Code: Aufbau
; Global geltende Werte
[SpecialAnnouncementDefaults]
ContentUserID=5750029
; Erste Sonderansage
[SpecialAnnouncement]
EventID=7
Text="Aus Lichtschranke treten"
ContentSubID=13001
Code=753
Target=0
; Zweite Sonderansage
[SpecialAnnouncement]
EventID=9
Text="Ausbildungsfahrt, nicht einsteigen"
; Abweichende CUID
ContentUserID=5750030
ContentSubID=13002
Code=42
Target=1
Alles anzeigen
Alles anzeigen


Bild dazu


Freundlicherweise wurde von Teneberus ein fertiges Script zur Verfügung gestellt, um die Elemente der Liste auszulesen und in einem Array zu speichern (Skript ist im Anhang zu finden). Dieses Script sollte 1:1 in den Code eingelesen werden. Anschließend sind die Inhalte eines SpecialAnnouncement-Elements mit folgenden Variabeln aufrufbar:
[[https://www.lotus-simulator.de/index.php?attachment/18173-screenshot-290vekjr-png/|[[File:https://www.lotus-simulator.de/index.php?attachment/18173-screenshot-290vekjr-png/ "screenshot_290vekjr.png"|https://www.lotus-simulator.de/index.php?attachment/18173-screenshot-290vekjr-png/ "screenshot_290vekjr.png"]]]]


 


Freundlicherweise wurde von Teneberus ein fertiges Script zur Verfügung gestellt, um die Elemente der Liste auszulesen und in einem Array zu speichern (Skript ist im Anhang zu finden). Dieses Script sollte **1:1 in den Code eingelesen werden.** Anschließend sind die Inhalte eines SpecialAnnouncement-Elements mit folgenden Variabeln aufrufbar:
 
{| class="wikitable"


Variabelname
Variabelname


Typ
| Typ |
Zu erwartender Inhalt


SpecialAnnouncement[0].EventID integer
Zu erwartender Inhalt 
7
 
SpecialAnnouncement[0].Text string Aus Lichtschranke treten
---|---|--- 
SpecialAnnouncement[0].ContentUserID integer 0 (Weil nicht definiert, stattdessen sollte die Default abgefragt werden)
SpecialAnnouncement[0].EventID | integer
SpecialAnnouncementDefaults.ContentUserID integer 5750029
| 7
SpecialAnnouncement[0].ContentSubID integer 13001
SpecialAnnouncement[0].Text | string | Aus Lichtschranke treten
SpecialAnnouncement[0].Code integer 753
SpecialAnnouncement[0].ContentUserID | integer | 0 (Weil nicht definiert, stattdessen sollte die Default abgefragt werden)
SpecialAnnouncement[0].Target integer 0
SpecialAnnouncementDefaults.ContentUserID | integer | 5750029
SpecialAnnouncement[1].EventID integer 9
SpecialAnnouncement[0].ContentSubID | integer | 13001
SpecialAnnouncement[1].Text string Ausbildungsfahrt, nicht einsteigen
SpecialAnnouncement[0].Code | integer | 753
SpecialAnnouncement[1].ContentUserID integer 5750030
SpecialAnnouncement[0].Target | integer | 0
SpecialAnnouncement[1].ContentSubID integer 13002
SpecialAnnouncement[1].EventID | integer | 9
SpecialAnnouncement[1].Code integer 42
SpecialAnnouncement[1].Text | string | Ausbildungsfahrt, nicht einsteigen
SpecialAnnouncement[1].Target integer 1
SpecialAnnouncement[1].ContentUserID | integer | 5750030
SpecialAnnouncement[1].ContentSubID | integer | 13002
SpecialAnnouncement[1].Code | integer | 42
SpecialAnnouncement[1].Target | integer | 1
|}


 


Vergiss nicht: der Array-Index fängt immer bei 0 an. Also der erste Eintrag ist immer mit [0] aufrufbar, der zweite mit [1], usw.
Vergiss nicht: der Array-Index fängt immer bei 0 an. Also der erste Eintrag ist immer mit [0] aufrufbar, der zweite mit [1], usw.


 


**Was passiert, wenn ich was falsch mache?** ****


Was passiert, wenn ich was falsch mache?
 
 
 


Prinzipiell ist der Parser von Teneberus gut geschrieben. Also wenn du nach einem Element vergisst ihm einen Wert zuzuweisen, z.B. EventID= schreibst, wird der nicht vorhandene Wert durch -1 ersetzt. Wenn du beim Text die Anführungsstriche "" weglässt, wird der Text trotzdem richtig zugewiesen.
Prinzipiell ist der Parser von Teneberus gut geschrieben. Also wenn du nach einem Element vergisst ihm einen Wert zuzuweisen, z.B. `EventID=` schreibst, wird der nicht vorhandene Wert durch -1 ersetzt. Wenn du beim Text die Anführungsstriche "" weglässt, wird der Text trotzdem richtig zugewiesen.


Falls du ein ganzes Element weglassen solltest, ist beim Aufruf von diesem einfach kein Inhalt vorhanden oder eine 0 (bei Integer).
Falls du ein ganzes Element weglassen solltest, ist beim Aufruf von diesem einfach kein Inhalt vorhanden oder eine 0 (bei Integer).


 


 


 


 


 
**Mögliche kommende Änderungen:**
 
 
 
Mögliche kommende Änderungen:


Hinzufügen eines weiteren Strings, der an Innenanzeigen gebroadcastet werden kann.
Hinzufügen eines weiteren Strings, der an Innenanzeigen gebroadcastet werden kann.

Aktuelle Version vom 21. Januar 2025, 22:56 Uhr

Vorlage:ArticleMetadata

Ein kleines Tutorial zur Implementierung von Sonderansagen in der ANNOUCEMENT-Klasse.

Es wurde gemeinsam ein Konzept entwickelt, um die **Sonderansagen** mit in der **'ANNOUNCEMENT' - Klasse** auszuliefern. Dies soll primär dazu dienen, dass **alle IBIS Geräte mit der gleichen** [[1]]-Datei die gleichen Sonderansagen abspielen können, ohne dass für jedes IBIS eine neue spezielle [[2]] angelegt werden muss. Diese Informationen werden **innerhalb der Zusatz-Strings** vermerkt.


[https://www.lotus-simulator.de/index.php?attachment/18172-screenshot-28988jvb-png/ "screenshot_28988jvb.png"]


Hierfür gilt folgendes:


---|---|--- EventID | integer | LOTUS-Interne ID, um Fahrgastinteraktionen zu triggern. z.B. [[3]] treten nach Ansage aus der Tür. Text | string | Text, welcher den Inhalt der Sonderansage beschreibt. Sollte kurz gehalten werden. Kann im IBIS-Gerät angezeigt werden. Dieser Text ist immer in Anführungszeichen "" zu setzen. ContentUserID | integer | Die Content-User-ID der erstellten Sonderansage. ContentSubID | integer | Die Content-Sub-ID der erstellten Sonderansage. Code | integer | Numerischer Code, der bei einem IBIS mit Ziffernblock eingegeben werden kann. z.B. 753 Target | integer | Zielbestimmung der Audio-Ausgabe. Hierbei wird zwischen Innen (0), Außen (1) oder beide (2) unterschieden. Diese Liste kann auch erweitert werden um individuelle Ausgabequellen anzusprechen.


Das ganze wird im INI-Format verfasst. Hierbei werden **Blöcke mit den jeweiligen Daten** gebildet. Dieser startet immer mit

`[SpecialAnnouncement]`. Darauf folgt dann der Aufbau, der im unten stehenden Spoiler zu erkennen ist. Anschließend **folgt eine Leerzeile und der nächste Block beginnt.**

Du kannst auch Kommentare in jeder Zeile einleiten. Dies funktioniert wie folgt:

`; Kommentar`


Zudem existiert ebenfalls die Möglichkeit eine Sektion als `[SpecialAnnouncementDefaults]` zu deklarieren. Hier kann man generell geltende Werte der oben stehenden Tabelle festlegen.


Hier nochmal ein konkretes Beispiel vom Aufbau von 2 Blöcken und dem Default-Block:

Code: Aufbau

 1. [[4]]; Global geltende Werte
 2. [[5]][SpecialAnnouncementDefaults]
 3. [[6]]ContentUserID=5750029
 4. [[7]]
 5. [[8]]; Erste Sonderansage
 6. [[9]][SpecialAnnouncement]
 7. [[10]]EventID=7
 8. [[11]]Text="Aus Lichtschranke treten"
 9. [[12]]ContentSubID=13001
 10. [[13]]Code=753
 11. [[14]]Target=0
 12. [[15]]
 13. [[16]]; Zweite Sonderansage
 14. [[17]][SpecialAnnouncement]
 15. [[18]]EventID=9
 16. [[19]]Text="Ausbildungsfahrt, nicht einsteigen"
 17. [[20]]; Abweichende CUID
 18. [[21]]ContentUserID=5750030
 19. [[22]]ContentSubID=13002
 20. [[23]]Code=42
 21. [[24]]Target=1

Alles anzeigen

Bild dazu

[https://www.lotus-simulator.de/index.php?attachment/18173-screenshot-290vekjr-png/ "screenshot_290vekjr.png"]


Freundlicherweise wurde von Teneberus ein fertiges Script zur Verfügung gestellt, um die Elemente der Liste auszulesen und in einem Array zu speichern (Skript ist im Anhang zu finden). Dieses Script sollte **1:1 in den Code eingelesen werden.** Anschließend sind die Inhalte eines SpecialAnnouncement-Elements mit folgenden Variabeln aufrufbar:


Variabelname

Zu erwartender Inhalt

---|---|--- SpecialAnnouncement[0].EventID | integer

7

SpecialAnnouncement[0].Text | string | Aus Lichtschranke treten SpecialAnnouncement[0].ContentUserID | integer | 0 (Weil nicht definiert, stattdessen sollte die Default abgefragt werden) SpecialAnnouncementDefaults.ContentUserID | integer | 5750029 SpecialAnnouncement[0].ContentSubID | integer | 13001 SpecialAnnouncement[0].Code | integer | 753 SpecialAnnouncement[0].Target | integer | 0 SpecialAnnouncement[1].EventID | integer | 9 SpecialAnnouncement[1].Text | string | Ausbildungsfahrt, nicht einsteigen SpecialAnnouncement[1].ContentUserID | integer | 5750030 SpecialAnnouncement[1].ContentSubID | integer | 13002 SpecialAnnouncement[1].Code | integer | 42 SpecialAnnouncement[1].Target | integer | 1


Vergiss nicht: der Array-Index fängt immer bei 0 an. Also der erste Eintrag ist immer mit [0] aufrufbar, der zweite mit [1], usw.


    • Was passiert, wenn ich was falsch mache?** ****


Prinzipiell ist der Parser von Teneberus gut geschrieben. Also wenn du nach einem Element vergisst ihm einen Wert zuzuweisen, z.B. `EventID=` schreibst, wird der nicht vorhandene Wert durch -1 ersetzt. Wenn du beim Text die Anführungsstriche "" weglässt, wird der Text trotzdem richtig zugewiesen.

Falls du ein ganzes Element weglassen solltest, ist beim Aufruf von diesem einfach kein Inhalt vorhanden oder eine 0 (bei Integer).





    • Mögliche kommende Änderungen:**

Hinzufügen eines weiteren Strings, der an Innenanzeigen gebroadcastet werden kann.