Hofdatei
Hinweis: Dieser Artikel wurde noch nicht ins Englische übersetzt!
Die Hofdatei ist eine einfache Textdatei und dient dem Bus als Informationsort, für die im und am Bus möglichen Anzeigen. Sie enthält die IBIS-Codes für die Endstellen, alle Endhaltestellen und Haltestellen, sowie die möglichen Routen. Ohne eine passende Hofdatei, kann ein Bus keinerlei Informationen erhalten, was dieser auf einer Map, als Fahrziel oder andere Informationen, anzeigen soll. Die Hofdatei muß sich im Ordner des Busses befinden und dient dem Spielerbus, sowie dem KI-Bus (mit Fahrplan) als Grundlage zum Anzeigen des Fahrzieles.
Hier soll es um den Aufbau einer Hofdatei gehen, wie man eine Hofdatei erstellt und es soll die "universelle Hofdatei" erklärt werden.
Inhaltsverzeichnis
- 1 Hofdateien für Omsi
- 1.1 Was ist eine Hofdatei
- 1.2 Aufbau einer Hofdatei
- 1.2.1 Allgemeiner Aufbau einer Hofdatei - interne Informationen für Omsi
- 1.2.2 Aufbau des ersten Bereiches einer Hofdatei
- 1.2.3 Aufbau des zweiten Bereiches einer Hofdatei - Endstellenliste
- 1.2.4 Aufbau des dritten Bereiches einer Hofdatei - Haltestellenliste
- 1.2.5 Aufbau des vierten Bereiches der Hofdatei - Routenlisten
- 2 Die Universelle Hofdatei.
- 2.1 Was bedeutet "Universelle Hofdatei" ?
- 2.2 Wie man eine "universelle Hofdatei" umsetzen kann.
- 2.3 Quellen
- 2.4 Einen herzlichen Dank
Hofdateien für Omsi
Was ist eine Hofdatei
Eine Hofdatei ist die Grundlage, um einen Bus auf einer Linie einer Map fahren zu können. Ohne Hofdatei kann der Bus keine Informationen anzeigen (Matrix, Rollbänder) und dadurch steigen keine Fahrkunden ein. Diese beinhaltet eine Liste der Endhaltestellen einer Karte (alle Endstellen, ob auf der Map vorhanden oder nicht), alle auf der Map vorhandenen Haltestellen und die Routen der einzelnen Linien. Sie dient lediglich der Information der Anzeigen und die Audiowiedergabe der Haltestellen / Endstellen im und am Bus. Die in der Hofdatei eingetragenen Routen geben nicht den Linienverlauf in Omsi vor, dies wird über den Fahrplan im Editor gestellt. Aber die Hofdatei dient der Informationsausgabe für die Zielanzeigen im Bus, die Innenanzeigen im Bus, die Anzeigen im Informationsgerät (IBIS, IBIS 2, EFAD, Atron, INIT usw) und die Texturnamen der Rollbandtexturen, sowie den passenden Ansagen. Eine Hofdatei muß im Busordner vorliegen (in keinem Unterordner des Busses) und muß als Endung .hof haben. Diese Datei kann mit einem Editor oder Schreibprogramm erstellt werden, muß aber dann als Textdatei.txt abgespeichert werden. Schlußendlich wird dann der Dateiname .txt gelöscht und durch .hof ersetzt.
Aufbau einer Hofdatei
Man kann reinschreiben was man möchte, solange es nicht am Zeilenanfang steht (einmal TAB drücken) da es sonst zu Fehlermeldungen beim einlesen der Hofdatei kommen kann. Alles was nicht am Zeilenanfang steht, wird von Omsi nicht erkannt und daher nicht beachtet.
Allgemeiner Aufbau einer Hofdatei - interne Informationen für Omsi
In der Hofdatei ist dies ein wiederkehrender Prozess. In eckigen Klammern werden Befehle geschrieben und direkt darunter die Strings. Ein String ist ein Eingabewert der einen Verweis auf Punkte einer Map haben kann, oder einen Informationswert für eine Anzeige. Der Aufbau der einzelnen Befehle erklärt sich später bei den einzelnen Bereichen einer Hofdatei.
Eine Hofdatei gliedert sich in 4 Bereiche
- Teil - Informationen zur Hofdatei
- Teil - Liste der Endhaltestellen
- Teil - Liste der Haltestellen
- Teil - Linienlisten der einzelnen Routen
Aufbau des ersten Bereiches einer Hofdatei
Der erste Bereich enthält Informationen, wo sich bestimmte Ordner befinden, die der Bus später benötigt, wie Rollbandtexturen, Steckschildtexturen oder Ansagen, Anzahl der verwendeten Strings in den Bereichen 2 und 3. Der erste Befehl ist der Name der Hofdatei, so wie diese später im Auswahlmenü angezeigt wird. Der Name sollte passend zur Map sein und, falls die Chronologiefunktion benutzt wurde, auch die Zeit. Bedenke dabei, daß auch andere User die eine Strecke erstellen den gleichen Namen nutzen könnten, wenn deren Strecke zum Beispiel real ist, während die eigene fiktiv erstellt wurde.
[name] Spandau 1990 [servicetrip] Betriebsfahrt
Servicetrip gibt an, was ein Bus schildern soll, wenn er nicht auf einer Linie fährt. Das sind unter anderem Ein- und Aussetzfahrten. Dazu muß Betriebsfahrt später eingetragen werden und als "nicht einsteigen" markiert werden, mit dem Befehl: [addterminus_allexit].
[global_strings] 4 Spandau_old Spandau Spandau_90 3
Mit dem Befehl [Global_Strings] wird angegeben, wie die Ordner heißen, die Informationen zu der Karte haben. Diese Strings sind festgelegt:
4 - sagt an wieviele Strings unter diesem Befehl folgen Spandau_old - Name des Unterordners der die Ansagen der Karte enthält. Dieser Unterordner muß unter Vehicles\Announcements angelegt werden. Diese einzelnen Ansagen der Haltestellen und Endhaltestellen, sollten im Audioformat .wav enthalten sein. Die Dateinamen der Audiofiles sollten einen Bezug zur Haltestelle / Endhaltestelle haben. Spandau - Unterordner im Ordner Anzeigen für die Rollbandtexturen Spandau_90 - Unterordner für die zusätzlichen Seitenschildtexturen. 4 - Ibis-Specialcode die auf dieser Map verwendet werden können. Diese Zahl gibt an, welche Liniencodes mit Buchstaben auf speziellen Linien genutzt werden.
- 4= 900'er-Linien (Anzeige der Linie N.. oder ..N)
- 5= 800'er-Linien (Anzeige der Linie X)
- 6= 500'er-Linien (Anzeige der Linie M)
Dieser Bereich ist nur für Omsi 2 wichtig, in Omsi 1 hingegen entfällt dieser Befehl und die Eintragungen, weil sich die entsprechenden Dateien in den Unterordnern des jeweiligen Busses befinden.
Die folgenden Befehle werden nicht in eckigen Klammern geschrieben. Sie enthalten nur die Information, wieviele Strings in den Bereichen 2 und 3 folgen, damit Omsi genau erkennt, wieviele Strings ausgelesen werden sollen. Wichtig ist dies bei Omsi 2, da hier in den Bereichen 2 und 3 der Hauptbefehl nur einmal geschrieben werden muß.
Stringcount_terminus 7 Stringcount_busstop 5
Terminus gibt den Bereich an, der für die Endstellen vorgesehen ist. Und Busstop bleibt damit nur für die Haltestellenliste. Die genaue Anzahl richtet sich nach den geschriebenen Strings. Wichtig wird dies für eine "Universelle Hofdatei", die für alle verwendeten Anzeigesysteme in den Bussen Verwendung finden. Man kann bis 999 Strings verwenden, alles darüber hinaus, wird mit einem Fehler von Omsi quittiert, da normal nicht so viele Strings benötigt werden können. Es richtet sich ja nach den unterschiedlichen Anzeigesystemen der Busse, nicht um jeden einzelnen Bus selbst.
Aufbau des zweiten Bereiches einer Hofdatei - Endstellenliste
In dieser Liste werden die Anzeigen für die Busse geschrieben, wie diese die entsprechenden Endstellen später anzeigen sollen. Wichtig hierbei ist, daß die Buchstabenanzahl nicht überschritten wird, weil sonst die Ziele nicht vollständig angezeigt werden. Welche Buchstaben genau angezeigt werden können, entscheidet der Font der Anzeigegeräte. Beinhaltet dieser Font nur Großbuchstaben, muß die Anzeige in Großbuchstaben gesetzt werden. Das gleiche gilt für Umlaute, Satzzeichen oder Symbole.
Der Aufbau dieses Bereiches kann zwei Formen annehmen. Für Omsi 1 gilt nur eine Form, wobei bei Omsi 2 beide Formen genutzt werden können. Der Übersicht wegen, wird hier die alte Schreibform (untereinander gegliedert) gezeigt. Um eine Hofdatei zu erstellen empfielt sich die Verwendung eines Schreibprogrammes wie Office Word. Für die neuere Schreibform wie in Omsi 2 empfiehlt sich ein Tabellenprogramm wie Exel, da hier die Anzeigen nacheinander, getrennt von einem Tabulator gesetzt wird. Jeder gesetzte Abstand des Tabulator's, setzt den nächsten string fest. Aus beiden Programmen, kann man diese Hofdatei als Textdatei abspeichern und die Dateiendung umbenennen.
In dem zweiten Bereich gibt es nur zwei Befehle, die wiederrum das Verhalten der Fahrkunden steuert. [addterminus] bedeutet, daß die Fahrkunden einsteigen könne, spätestens beim erreichen dieser Endstelle den Bus verlassen müssen, [addterminus_allexit] bedeutet, egal was die Anzeige zeigt, es darf nicht eingestiegen werden. Direkt darunter kommen zwei Informationen und darauf folgend die Strings:
addterminus_allexit] 123 Name der Endstelle String 0 String 1 String 2 String 3 String 4 String 5 String 6
Gemäß der Vorgabe im ersten Bereich der Hofdatei unter [stringcount_...] kann man hier die Strings für die Anzeigesysteme schreiben. Die ersten beiden Punkte unter dem Befehl sind fest vorgegeben und beinhalten nichtangezeigte Informationen. Besonders wichtig ist hier die richtige Stringanzahl. Stehen hier mehr Strings als unter "Stringcount_terminus" eingetragen, werden die folgenden Strings nicht beachtet (gelten also als nicht vorhanden). Außerdem ist zu Beachten, daß die Stingzählung bei NULL beginnt und nicht bei Eins. Das bedeutet, daß sieben Strings ausgelesen werden, von String 0 bis String 6.
123 - die 3-stellige Zahl gibt dieses Ziel einen IBIS-Code. Da man im Ibis keine Buchstaben eingeben kann, werden alle Ziele mittels Code identifiziert. Welchen Code ein Ziel bekommt ist dabei egal, solange der Code für ein einziges Ziel eingetragen wird. Das Ziel kann zwar mit dem Code mehrmals in der Liste erscheinen, aber ein bestimmter Zahlencode darf nicht zwei unterschiedliche Ziele beinhalten.
Gefolgt vom Namen der Endstelle. Hierbei erhält jede Endstelle einer Map seinen eigenen Zahlencode für das IBIS. Der Name der Endhaltestelle, der hier eingetragen wurde, muß dem Endstellenwürfel im Editor entsprechen. Sind diese nicht gleich, wird diese Endstelle nicht mit dem Ziel in Verbindung gebracht und ignoriert. Das bedeutet, daß diese Endstelle (im Editor) keinen IBIS-Code besitzt und daher nicht geschildert werden kann. Im Ibis wird eine Endstelle angezeigt, aber diese existiert für Omsi garnicht.
Nun folgen die Strings der einzelnen Anzeigen. Diese Strings werden für die jeweiligen Anzeigegeräten in den Script-Dateien festgelegt. Die Verwendung welcher String für welche Anzeige genutzt wird, ist frei, sollte aber sinnvoll eingetragen werden, damit die Hofdatei für andere Busse genutzt werden kann.
Das folgende Beispel, zeigt die Eintragungen einer ANNAX-Matrix, Rollbandanzeige, IBIS 1 und IBIS 2 Gerät:
[addterminus] 123 Endhaltestelle BHF KIESELSTEIN Bahnhof Kieselstein Bhf. Kieselstein Rollbandtextur.tga Bahnhof Kieselstein
Aufgeschlüsselt bedeuten die Eintragungen (hier am Beispiel eines MAN SD 202) folgende Punkte am Bus:
[addterminus] 123 - Durch Eingabe dieses Zahlencode in das IBIS, Atron, EFAD, etc. bei der Taste Ziel, wird die gewählte Endhaltestelle angezeigt. Endhaltestelle - hier muß der korrekte Name der Endstelle wie im Editor eingetragen werden. BHF KIESELSTEIN - Anzeige für das IBIS 1 (max. 16 Zeichen [incl. Leerzeichen] und nur Großbuchstaben, weil es im Font des IBIS 1 nur Großbuchstaben gibt. Bahnhof - Anzeige der oberen ANNAX-Zeile an der Front des Busses. Hier dürfen ebenfalls nur 16 Zeichen vorhanden sein, und Buchstaben in Groß- und Kleinschrift. Kieselstein - Anzeige der unteren ANNAX-Zeile an der Fahrzeugfront. Hier dürfen ebenfalls nur max. 16 Zeichen erstellt werden. Bhf. Kieselstein - Zielanzeige an der einzeiligen Seitenmatrix (ANNAX-Seite) mit max. 16 Zeichen. Rollbandtextur.tga - Name der Rollbandtextur im Ordner Anzeigen. Wichtig: die Dateiendung muß richtig eingetragen werden. Bahnhof Kieselstein - Anzeige für das IBIS 2-Gerät (Groß- und Kleinschreibung, max. 20 Zeichen).
Die hier gezeigte Schreibweise kann für Omsi 1 und Omsi 2 verwendet werden. Um bei Omsi 1 kurze Namen zu zentrieren, sollte man Leerzeichen verwenden. Für Omsi 2 ist es ratsam, hinter einer Eintragung ein Tabulator zu setzen. Wurden alle Endstellen, die auf der Map vorhanden sind geschrieben, können alle Endstellen geschrieben werden, die nicht auf der Map sind, aber von Linien die auf der Map fahren (KI-Linien) geschrieben werden. Der Präfix "_allexit" hinter dem Befehl addterminus sorgt dafür das keine Fahrkunden einsteigen und eventuell im Bus sitzende Fahrkunden, nach der Eingabe, sofort aussteigen.
Die Reihenfolge der eingetragenen Endstellen, bestimmt später die Reihenfolge der Rollbandtexturen, wenn man diese in einem Bus manuell einstellt (also nicht über das Omsi-Menü).
Aufbau des dritten Bereiches einer Hofdatei - Haltestellenliste
In dieser Liste ändert sich lediglich der Befehl und die Anzeige-Orte im Bus. Es gibt nur ein Befehl der eine weitere Haltestelle hinzufügt. Und es werden nur Haltestellen geschrieben, die vom Spieler bedient werden können (unabhägig, ob diese Haltestellen auf der Map existieren oder nicht).
[addbusstop] Haltestelle BUSPLATZ AM WALD Busplatz Am Wald Busplatz am Wald
Hier wieder die Aufschlüßelung der Eintragungen:
[addbusstop] Haltestelle - Name der Haltestelle wie im Editor und Name der Audiodatei der Ansage (ohne Dateiendung). BUSPLATZ AM WALD - Anzeige für das IBIS 1 Gerät Busplatz - Innenanzeige erste Sicht vor dem Umschalten. Am Wald - Innenanzeige zweite Sicht nach dem Umschalten, die beiden Anzeigen werden im Takt automatisch umgestellt und zentriert. Busplatz am Wald - Name der Haltestelle für das IBIS 2.
Die Reihenfolge der einzelnen Haltestellen ist dabei irrelevant. Die Ausstiegspunkte der Endstellen werden genauso mit eingetragen, wie alle anderen Haltestellen. Damit erscheinen die Endstellen also in beiden Listen, was hauptsächlich den Ansagen, der Innenanzeige und der Anzeige im IBIS dient.
Damit ist dieser kurze Abschnitt schnell geschafft.
Aufbau des vierten Bereiches der Hofdatei - Routenlisten
Hier werden nun, für jede einzelne Route die Liste in der Reihenfolge der abzufahrenden Haltestellen eingetragen. Die richtige Reihenfolge ist nicht für die Linie entscheidend, sondern der Fahrplan, so wie er im Editor erstellt wurde. Die richtige Reihenfolge wird aber benötigt, wenn die Ansagen der Haltestellen passen sollen und die Anzeigen in den Businternen Informationsgeräten. Schreibfehler oder die falsche Reihenfolge führt bei Bussen mit automatischer Haltestellenweiterschaltung nicht zu Fehlern im Bus, da nur der Bus diese Daten ausließt.
Zur Definition: Eine Route ist der Weg von einer Endstelle zu einer anderen, also der wahre Anfangs- und Endpunkt einer Linie in einer Richtung. Zwei Routen sind nötig um einen Umlauf zu definieren. Bestehend aus der Hintour und der Rücktour. Es wird also lediglich eine Route je Liste geschrieben, kein kompletter Umlauf.
Dieser Bereich teilt die Liste in 2 Gruppen auf. Hier gibt es auch wieder zwei festgelegte Befehle. Im ersten Teil [infosystem_trip] befinden sich die Information, der Linie und Routennummer, wo eine Linie beginnt und wo diese endet sowie den IBIS-Code welches Zeil geschildert werden soll. Das hat zur Folge, das es vollkommen ausreichend ist, wenn man nur die Linie und die Route im IBIS einträgt, daß Ziel und die Linie werden dann bereits bei einer Matrix geschildert. Rollbänder müßen hingegen, manuell oder über das Menü eingestellt werden. In der ersten Gruppe befinden sich also die Informationen für die Route und in der zweiten Gruppe [infosystem_busstop_list] die Liste der Haltestellen.
[infosystem_trip] 901 Busplatz-Kieselstein 123 9 ................ [infosystem_busstop_list] 5 Busplatz Busplatz Am Wald Einsteindorf Krankenhaus Bhf Kieselstein
Dies soll nur eine kurze Liste darstellen die rein fiktiv ist, um zu erklären was wo steht. Hier geht es um die Linie 9 und die erste Route. Nun geht es wieder um die Aufschlüsselung der einzelnen Zeilen:
[infosystem_trip] - Dieser Befehl sagt aus, daß hier Infos zur folgenden Route stehen. 901 - Die Linie und die Routennummer. Also Linie 9 und die erste Route. Diese Zahl "kann" auch 6-stellig sein (also 4-stellig, die Liniennummer und 2-stellig für die Route), während die Route 2-stellig sein "muß". Busplatz-Kieselstein - Diese Zeile wird nicht ausgelesen, sie dient nur der Orientierung, von welche Route jetzt die Liste folgt. 123 - IBIS-Code der Zielendstelle (also in diesem Beispiel "Kieselstein"). 9 - Wiederholung der Liniennummer. ................ [infosystem_busstop_list]- Dieser Befehl sagt aus, das hier die Liste der Haltestellen kommt (inclusive Anfangs- und Endhaltestelle) 5 - Anzahl der Haltestellen insgesamt. Beginnend bei der Zahl 1 (nicht NULL) Busplatz - erste Haltestelle (also die Einstiegshaltestelle) Busplatz Am Wald Einsteindorf Krankenhaus Bhf Kieselstein - Endhaltestelle, wo die Fahrkunden aussteigen sollen.
Dies wird nun für jede, im Editor erstellte Route eingegeben, allerdings nur für die Linien, die auch vom Spieler gefahren werden können. KI-Busse brauchen dies nicht, da KI-Busse keine Ansagen, Innenanzeigen oder sonstige Infos tragen, außer die Außenanzeigen (die aber aus der Endstellenliste ausgelesen werden). Die geschriebene Anzahl der Haltestellen muß mit der tatsächlichen Anzahl der eingetragenen Haltestellen übereinstimmen, sonst werden weitere Haltestellen nicht angezeigt oder angesagt, oder die Fahrkunden steigen alle zu früh aus.
Es müßen nicht alle Linien geschrieben werden. einige gesonderte Linien kommen auch ohne Linienlisten aus. Dann gibt es aber weder eine Anzeige noch Ansagen, was z.B. bei kurzeitigen Linien gedacht ist oder Zielen die zu einer bestimmten Zeit nicht in einer Matrix oder Röllbänder existierten, wie zum Beispiel die Linie E522 in Spandau, zwischen November 1989 und Dezember 1990.
Sonstiges: Wenn ein Ziel, über das Steckschild angezeigt werden soll (nur in Omsi 2)
Wenn es keine Anzeigen im Bus geben soll, sondern die Ziele nur über ein Steckschild angezeigt werden sollen, muß der IBIS-Code über eine 4-stellige Nummer verfügen. 4-stellige IBIS-Codes können nicht im IBIS eingetragen werden. Daher bleibt die Anzeige leer, aber die Linie bleibt erhalten und das Steckschild fungiert als Anzeigen-Ersatz, womit auch die Fahrkunden einsteigen.
Die Universelle Hofdatei.
Dieser Abschnitt richtet sich an alle Personen die einen Bus bauen, Anzeigegeräte erstellen und komplette Add-Ons produzieren.
Was bedeutet "Universelle Hofdatei" ?
Wie der Name schon vermuten läßt, bedeutet Universell = Vielseitig! Also eine einzige Datei die vielseitig eingesetzt werden kann. Diese vielseitigkeit bezieht sich hierbei (in Bezug auf Omsi) für alle Gruppen von Anzeigegeräten, die in den Bussen verbaut wurden. Es wird nie eine einzige Hofdatei für alle Map's geben, aber es ist Möglich, eine Hofdatei für jede einzelne Map anzulegen, wenn diese nicht in einem Busordner eingestellt wird, sondern in einem seperaten Ordner, wie die Ansagen (Announcement) oder die Rollbandtexturen (Anzeigen).
Wenn eine "universelle Hofdatei" sinnvoll wäre, hätten M+R Software diese umgesetzt.
M+R Software haben eine universelle Hofdatei mit Omsi 1 eingeführt. Es geht also nicht um etwas neues, sondern vielmehr um die Rückkehr zum Anfang, Back to Basic. Zwei unterschiedliche Anzeigegeräte (Rollband und ANNAX-Matrix) und zwei unterschiedliche Informationssteuergeräte (IBIS 1 und IBIS 2). Wer meint das die beiden IBIS-Geräte nicht unterschiedlich wäre, sollte sich nur mal die Anzeigen ansehen. Wärend das IBIS 1 nur Großbuchstaben anzeigen kann und die Anzeige auf maximal 16 Anzeigestellen begrenzt ist, kann das IBIS 2 Groß- und Kleinbuchstaben anzeigen und 20 Anzeigestellen vorweisen. Dafür wurde beiden Geräten, unterschiedliche String zugewiesen. Neue Busse mit neuartigen Anzeigesystemen haben die Strings benutzt, die für die ANNAX-Anzeige vorgesehen waren und mußten dafür umgeschrieben werden. Andere Busse nutzen die Strings, die bereits für die IBIS-Geräte eingestellt wurden. Dazu wurden die Strings umgeschrieben. Stellt man diese Hofdatei in einem MAN SD 202, erhält man teilweise unerwünschte Anzeigeformen.
Sinn und Zweck einer "universellen Hofdatei".
Seitdem Omsi 2011 erschienen ist, sind viele weitere Busse erschienen. Nicht alle haben eine Rollbandanzeige oder eine ANNAX-Matrix. Neue Anzeigen sind auch nicht erst mit Omsi 2 erschienen, wie die Krüger-Matrix. Es gab schon die BUSE-Vollmatrix, die Busfanat-Vollmatrix oder Flipdot-Anzeige. Auch andere Informationsgeräte im Bus, haben ihren Platz in Omsi gefunden. Alle Anzeige- und Informationsgeräte brauchen die Hofdatei als Informationsquelle. Für fast jede Konfiguration von Anzeige-Geräten & Informationssteuergeräten, muß die Hofdatei angepasst werden. Möchte man nun einen anderen Bus nehmen, der eines der beiden verwendeten Geräte nicht besitzt, muß eine neue Hofdatei angefertig oder die vorhandene Hofdatei umgeschrieben werden.
Das mag insgesamt nicht schwer sein, aber nicht alle User haben dazu Zeit oder die Fähigkeit eine entsprechende Hofdatei zu erstellen. Mit einer universellen Hofdatei kann jeder Bus, unabhängig vom verwendeten Anzeige- und Informationssteuergerät, eine einzige Hofdatei für eine Karte verwenden. Bei einführung eines neuen Anzeigesystems oder eines neuen Informationssteuergerätes braucht der User nur noch eine Hofdatei aus einem anderen Bus kopieren, ohne verher nachfragen zu müßen, oder testen zu müßen, welche Hofdatei eigentlich am besten passt. Das ist nichtnur für Buserbauer und Mapersteller sinnvoll, sondern ganz besonders für Paywarehersteller, da somit gewährleistet ist, daß wirklich alle Busse auf jeder Karte einsetzbar sind, ohne zuvor eine Hofdatei erstellen oder im Internet suchen zu müßen.
Vor- & Nachteile einer universellen Hofdatei.
Es gibt für eine universelle Hofdatei, natürlich einige Vorteile, aber leider auch einige Nachteile. Hier soll aufgezeigt werden, daß eine Umstellung durchaus sinnvoll ist und die Umstellung auch lohnt. Bei der Umsetzung einer universellen Hofdatei reicht es nicht aus, einfach die Hofdfatei ansich, zu erweitern. Es müßen auch einige Kleinigkeiten in den jeweiligen Bussen geändert werden.
Vorteile einer universellen Hofdatei:
- Eine Hofdatei passt für alle Busse, unabhängig vom verwendeten Anzeige- & Informationssystem.
- Es werden auch alle verwendeten Informationsgeräte und Anzeigen im Bus unterstützt.
- Bei neuen Bussen mit bisher veröffentlichten Systemen, passt die universelle Hofdatei.
- Eine universelle Hofdatei ist unabhängig vom verwendeten Hofsystem (also für Omsi 1 oder Omsi 2).
- Diese Hofdatei kann bei Bussen mit neuen Systemen leicht angepasst/ erweitert werden.
- Bei neuen Bussen muß der User lediglich die Hofdatei in den Busordner einsetzen.
- Alle Busse werden dadurch leichter für alle Karten kompatibel.
- Ein Ziel kann unterschiedliche Anzeigen erhalten, die auf den unterschiedlichen Systemen angezeigt werden.
- Eine universelle Hofdatei kann durch kopieren/ einfügen schnell ergänzt und erweitert werden.
- Es muß nichtmehr getestet werden, welche Hofdatei für einen Bus passender ist.
- Bei Maps, kann ein User alle Busse problemlos einsetzen.
Nachteile einer universellen Hofdatei:
- Einige bereits erstellte Hofdateien werden überflüssig (und auch die haben Arbeit und Zeit gekostet).
- Die Übersichtlichkeit innerhalb einer Hofdatei leidet (hauptsächlich beim Hofformat in Omsi 2).
- Bei nichtabsprache, welche Strings verwendeten werden können, kann es zu Problemen/ Streitigkeiten kommen.
Insgesamt bleibt aber die Anzahl der verwendeten Strings, innerhalb eines kleinen und leicht überschaubaren Rahmen.
Wie man eine "universelle Hofdatei" umsetzen kann.
Um eine universelle Hofdatei umzusetzen, muß man lediglich drei Dinge beachten:
- Welche vorhandenen Strings kann ich nutzen, ohne die Strings in der Hofdatei umstellen zu müssen?
- Welche neuen Strings kann ich verwenden, die noch nicht von anderen Geräten ausgelesen werden?
- Wie kann ich neue Geräte auf weitere Strings umsetzen?
Im folgenden geht es um bereits verwendete Strings, neu verwendete Strings und Strings die dadurch bereits vergeben sind und wie man das Auslesen der Strings beeinflußt.
Veränderungen in der Hofdatei.
Welche Strings bereits umgesetzt und ausgelesen werden.
M+R Software haben bereits angefangen, neue Strings zu verwenden, als Omsi 2 eingeführt wurde. Hier wurden lediglich weitere Strings in der Hofdatei umgesetzt und neue Informationsteile auf die neuen Strings eingestellt. Busfanat hat auf bitten einer umsetzung, die von ihm erstellte Busfanat's-Vollmatrix, sofort auf andere neue Strings umgesetzt. Auch Perontinus hat die von ihm entworfenen Überlandbusse MAN ÜL 242, 272, 292 und 312, auf bereits neue und erweiterte Strings umgestellt.
Im folgendem, soll es um die Stringsvergabe gehen und um die Anpassungen im Bus.
Bereit's verwendete Strings.
Bisher wurden die Strings in der Hofdatei, bis zum String 12 erweitert und festgelegt:
[addterminus] 123 Endhaltestelle String 0 - Anzeige IBIS 1 (nur Großbuchstaben, maximal 16 Zeichen) String 1 - Anzeige ANNAX-Matrix obere Zeile (maximal 16-Zeichen) String 2 - Anzeige ANNAX-Matrix untere Zeile (maximal 16-Zeichen) String 3 - Anzeige Seiten-ANNAX-Matrix, wenn diese einzeilig ist (maximal 16-Zeichen) String 4 - Rollbandtextur.tga String 5 - Anzeige IBIS 2 (Groß- & Kleinbuchstaben, maximal 20-Zeichen) String 6 - Texturname für Steckschild (wenn Ziel in Matrix nicht darstellbar ist, oder nicht angezeigt werden soll) String 7 - Texturname für Bildanzeige in Krüger-Matrix (Krüger+) String 8 - Frontanzeige für ANNAX-Matrix (Groß- & Kleinbuchstaben, maximal 15-Zeichen) String 9 - Heckanzeige für ANNAX-Matrix (maximal 4-Zeichen) String 10 - IBIS-Code für Gegenroute für künftige Ikarus-Beschilderung (Ikarus 280.02) String 11 - Anziege für [http://www.omnibussimulator.de/forum/index.php?page=Thread&threadID=13846&pageNo=1[[Busfanat's-Vollmatrix]]] obere Zeile (oder Komplettanzeige, Wenn diese Zeile leer ist, wird String 1 ausgelesen) String 12 - Anzeige für [http://www.omnibussimulator.de/forum/index.php?page=Thread&threadID=13846&pageNo=1[[Busfanat's-Vollmatrix]]] untere Zeile (falls erforderlich, Wenn diese Zeile leer ist, wird String 2 ausgelesen) String 13 - weitere String wurden noch nicht festgelegt
Hinzufügen und erweitern von zusätzlichen Strings.
Um weitere Strings einzubinden sollte man sich vorher überlegen:
- Wieviele Strings brauche ich für die im Bus verwendete Frontanzeige?
- Benötige ich seperate Strings für eine anders anzeigende Seitenanzeige?
- Soll die Heckanzeige seperat und unabhängig der anderen Anzeigen, Informationen darstellen?
- Brauche ich einen zusätzlichen Strings für ein im Bus verbautes Informationssteuergerät?
- Können einige Anzeigeräte bereits vergebene Strings auslesen ohne das diese Strings angepasst oder geändert werden müßen?
- Wie einigt man sich auf neue zusätzliche Strings.
Man kann im offiziellen Omsi-Forum die künftige Verwendung neuer Strings ankündigen und diese in den Scripten des Fahrzeug's einstellen. Wer ganz sicher gehen möchte, kann sich im offiziellen Omsi-Forum an den User <<Tatra>>, via PN wenden und die Verwendung weiterer Strings abklären. Oder via E-Mail an: e_marko@web.de - das gilt für neue und auch bereits erschienende Fahrzeuge.
Veränderungen in den BusScripten
Welche Scripte betroffen sind
Hauptsächlich finden sich die Änderungen, nur in zwei Scripten wieder. Zum einen muß das Auslesen des Zieles in den Scripten der Matrixanzeige stattfinden. Diese Scripte haben im Dateinamen meist den Präfix: Matrix, Rollband`` oder ähnliches und die Dateiendung lautet immer auf osc.
Zum anderen finden sich Änderungen in dem jeweils verbauten Informationssteuergerät wieder. Die Dateinamen der verwendeten Steuergeräte sind noch unterschiedlicher als bei der Matrix. Teilweise sind die Scripte zum Steuern der Informationsanlage mit den Fahrkartendruckern zusammengelegt, da es in einigen Bussen kombinierte IBIS-Fahrkartendrucker gibt, wie dem EFAD, INIT, Atron etc, muß man hier eventuell nach mehreren Präfixen suchen:
- IBIS
- IBIS_2
- EFAD
- Atron
- Ticketprinter
- Printer
Aber auch hier lautet die Dateiändungen generell: osc.
Die jeweils in den Bussen verbauten Informationssteuergeräten, steuern alle Informationsgeräte die es im Bus gibt, also nicht nur die äußeren Matrix-Anzeigegeräte, sondern auch die inneren Haltestellenanzeigen. In diesen dazugehörigen Scripten werden auch die jeweils benannten Strings angegeben, welche ausgelesen werden sollen.
Die Befehle zum Auslesen bestimmter Strings.
Zum Auslesen der entsprechenden Strings gibt es zwei Befehle:
- (M.V.GetTerminusString)
Zum Auslesen eines bestimmten Strings aus der Endstellenliste (2.Bereich einer Hofdatei)[addterminus]
- (M.V.GetBusstopString)
Zum Auslesen eines bestimmten Strings aus der Haltestellenliste (3.Bereich einer Hofdatei) [addbusstop]
Nur diese beiden Befehle sind für das Auslesen eines bestimmten Strings zuständig. In diesem Bezug finden sich leider nicht immer die entsprechenden nummerierten String, was das umstellen sehr erschwert.
Einstellungen zum Auslesen der Strings.
Als Beispiele sollen hier die Stringeinstellungen im IBIS 1 des MAN SD 200 und des IBIS 2 des SD 202 dienen, sowie die Stringeinstellungen der ANNAX-Matrix.
IBIS 1
Das IBIS 1 ließt den String 0 aus der Endstellenliste [addterminus]:
{macro:IBIS_RefreshTerminusText} (L.L.IBIS_TerminusIndex) 0 (M.V.GetTerminusString) (S.$.IBIS_terminus_name) {end}
und den String 0 aus der Haltestellenliste aus:
'Sonst zeige die Bushaltestelle (S.L.IBIS_busstop_index) 0 (M.V.GetBusstopString) (S.$.IBIS_busstop_name)
Die hier eingestellten Ziffern NULL, stehen für den String 0 in beiden Listen.
IBIS 2
Für das IBIS 2 Gerät sind es zwei verschiedene Strings die ausgelesen werden. In der Endstellenliste ist es String 5:
{macro:IBIS_RefreshTerminusText} (L.L.IBIS_TerminusIndex) 5 (M.V.GetTerminusString) (S.$.IBIS_terminus_name) {end}
und String 3 in der Haltestellenliste:
'Sonst zeige die Bushaltestelle (L.L.IBIS_busstop_index) 3 (M.V.GetBusstopString) (S.$.IBIS_busstop_name)
Die hier gezeigten Ziffern 5 und 3 weisen auf die Strings hin, die die Information für das IBIS 2 Gerät enthält.
Innenanzeige
Auch die Innenanzeige des MAN SD 202 (D92) ließt bestimmte Strings aus. Diese findet sich ausschließlich in der Haltestellenliste (3.Bereich) der Hofdatei. Da die Innenanzeige zwei unterschiedliche Informationen anzeigen kann, die im zeitlichen Interval umschaltet, finden sich dort natürlich 2 Strings:
{macro:IBIS_LCD-refresh} 'Formatierung der D92-Innenanzeige (L.L.IBIS_LCD-zeile) 1 = (L.L.IBIS_busstop_index) 2 (M.V.GetBusstopString) $length 0 > && {if} (L.L.IBIS_RouteIndex) 0 >= {if} (L.L.IBIS_LCD-zeile) (L.L.IBIS_busstop_index) 2 (M.V.GetBusstopString) (S.$.IBIS_cabindisplay) {endif} {else} (L.L.IBIS_RouteIndex) 0 >= {if} (L.L.IBIS_LCD-zeile) (L.L.IBIS_busstop_index) 1 (M.V.GetBusstopString) (S.$.IBIS_cabindisplay) {endif} {endif} {end}
Hier erkennt man, daß aus der Haltestellenliste zwei unterschiedliche Strings ausgelesen werden sollen. Für die Innenanzeige sind in der Hofdatei die String 1 und 2 vorgesehen.
Rollbandanzeige
Für das Rollband gibt es nur einen String der ausgelesen werden soll:
'Aktualisierung der Strings für das Austauschen der Texturen: (L.L.rlbnd_ziel) trunc s0 "..\..\Anzeigen\Rollband_SD79\" 1 (M.V.GetDepotStringGlobal) $+ "\" $+ (S.$.Rollband_Tex_H) l0 4 (M.V.GetTerminusString) $+ (S.$.Rollband_Tex_V) (L.$.Rollband_Tex_H) l0 1 + 4 (M.V.GetTerminusString) $+ (S.$.Rollband_Tex_H) 'Internen Index aktualisieren: (M.L.rollband_refreshIntIndex) {endif} {endif}
Hier steht der String der ausgelesen werden soll, direkt vor dem Befehl (M.V.GetTerminusString) und zeigt auf den String 4. Für Rollbandbusse, sollte dieser String beibehalten werden (unabhängig von der Form der Rollbandtextur), da jeder Bus im Unterordner Anzeige seine eigene Rollbandtextur benutzt kann, wenn sich die Form der Textur von den Formen anderer Rollbandbusse unterscheidet. Bei bereits vorhandenen Maps, sollte man die Dateinamen der Rollbandtexturen, aus einer vorhandenen Hofdatei abschreiben. So ist gewährleistet, daß man keinen seperaten String benötigt, um die richtigen Texturen anzeigen zu lassen. Wichtig ist auch die Beachtung der verwendeten Dateiendungen.
ANNAX-Matrix
Damit auch die Außenanzeige (Matrix) die richtigen Strings ausließt, muß in der Scriptdatei matrix.osc oder einer ähnlich lautenden Datei, die Matrix auf die richtigen Strings gesetzt werden.
{if} "xxx" 30 random 1 (M.V.GetTerminusString) 10 $SetLengthL $+ "xxx" $+ "@" $+ "xxx" 30 random 2 (M.V.GetTerminusString) 10 $SetLengthL $+ "xxx" $+ "@" $+ $+ "xxx" 30 random 3 (M.V.GetTerminusString) 10 $SetLengthL $+ "xxx" $+ $+ (S.$.Matrix_NewTerminus) {else} "yxyxyxyxyxyxyxyx@xyxyxyxyx @zzzzzzzzzzzzzzzz" (S.$.Matrix_NewTerminus) {endif}
Bei den Bussen MAN SD 200 sowie SD 202, stehen diese Einträge zweimal drin. Und es gibt natürlich auch 3 Strings die Ausgelesen werden müßen. Die auszulesenden String stehen auch hier wieder direkt vor dem Befehl (M.V.GetTerminusString) und beziehen sich bei den MAN SD-Bussen auf die Drei verbauten Matrix-Zeilen.
- String enthält die Information der oberen Zeile der Front-Anzeige (maximal 16 Zeichen),
- String enthält die Information der unteren Zeile der Front-Anzeige (maximal 16 Zeichen), was eine erweiterung für die obere Zeile darstellt und
- String befindet sich seitlich am Bus. Hier gibt es nur eine Zeile (maximal 16 Zeichen).
Wenn sich die Seitenmatrix am Bus von der vorderen unterscheidet, sollte ein seperater String verwendet werden, da man auf der Front-Matrix mehr Informationen unterbringen kann als an der Seite.
Die Verwendung des 3. Strings entfällt, wenn sich die Front-Anzeige und die Seiten-Anzeige gleichen. Dann werden für die Seiten-Anzeige ebendfalls die Strings 1 & 2 ausgelesen, damit das angezeigte Ziel identisch ist.
Steckschild
Für das Steckschild gilt der gleiche Befehl, aber abhängig vom verwendeten IBIS-Code. Soll statt einer Anzeige in der Matrix oder einer vewendeten Rollbandtextur, ein Steckschild in der Frontscheibe verwendet werden, Sollte der IBIS-Code in der Hofdatei 4-stellig sein. Also ein IBIScode größer als die Zahl 1.000, setzt den auszulesenden String um auf den String 6, wo sich die Texturname des Steckschildes befinden sollte, daß Verwendtet werden soll.
' Trigger für Steckschild {trigger:bus_matrix_change_steckschild} (L.L.matrix_steckschild_index) 1 + (S.L.matrix_steckschild_index) 1000 + (M.V.GetTerminusIndex) (S.L.matrix_steckschild_Termindex) (M.L.matrix_setsteckschild) (M.L.matrix_refreshIntIndex) {end} {macro:matrix_setsteckschild} (L.L.matrix_steckschild_Termindex) s0 0 >= {if} l0 6 (M.V.GetTerminusString) (S.$.Matrix_SchildFrnt) 1 $SetLengthL $StrToFloat 1 max (S.L.matrix_steckschild_vis) "..\..\Anzeigen\SteckSchilder\" (L.$.Matrix_SchildFrnt) $+ (S.$.Matrix_SchildFrnt) {else} 0 (S.L.matrix_steckschild_index) (S.L.matrix_steckschild_vis) "" (S.$.Matrix_SchildFrnt) {endif} {end}
Im oberen Bereich dieses Abschnittes, steht die Zahl 1000, was darauf hindeutet, daß das Steckschild verwendet werden soll. Im unteren Abschnitt folgenden dann der Verweis auf den String 6 für die richtige Textur des Steckschildes und darunter der Pfad, wo sich die Steckschilder befinden.
Auslesen von zusätzlichen String, mit der Möglichkeit von "Ersatz-Strings". Die Busfanat-Vollmatrix.
Der folgende Abschnitt ist von Busfanat erstellt worden und soll zeigen, wie man Ersatzstrings verwendet. Diese Möglichkeit kann in allen Bussen umgesetzt werden, solange diese, die Anzeigen einer ANNAX-Matrix sauber anzeigen können (für die BUSE-Vollmatrix ungeeignet). Wärend eine ANNAX-Matrix nur wenige Möglichkeiten bietet ein Ziel anzuzeigen, gibt es andere Anzeigen, die die Möglichkeit bieten, ein und das selbe Ziel unterschiedlich darzustellen. Eine Variante bietet die Krüger+ Anzeige. Hier kann statt eines Ziels das nur über Buchstaben verfügt, mittels Textur auch Zeichen dargestellt werden. Diese Anzeige verwendet dann den String 7 und beinhaltet ebenfalls einen Texturdateinamen.
Eine andere, raffinierte Möglichkeit bietet die Busfanat's-Vollmatrix. Diese beschränkt sich nicht nur auf 2 Strings, sondern bietet zusätzlich die Möglichkeit 2 originale Strings als Ersatz zu verwenden. Die Busfanat's-Vollmatrix ermöglicht Teile der Zielinformation besonders darzustellen, ohne Bildtexturen zu verwenden. Mit zusätzlichen Befehlen, hinter der Information kann ein Ziel Großgeschrieben werden oder Invertiert dargestellt werden. Diese Vollmatrix kann aber auch Ziele so darstellen, wie es die ANNAX-Anzeige ermöglicht. Dazu brauchen die String 1 und 2 nicht kopiert werden, da die Busfanat's-Vollmatrix diese String mitausließt.
Grundlegende Funktion der Busfanat-Vollmatrix :
Soll eine Ziel besonders dargestellt werden, schreibt man in String 11 und 12 das Ziel wie gewünscht ein und mittels Befehlen werden diese Ziele dann verändert.
String 11: Bahnhof*B String 12: Kieselstein
Hier wird das Wort "Bahnhof", dick geschrieben, während der "Kieselstein" normal dargestellt wird.
String 11: Pause*I String 12:
Hier wird das Wort "Pause" invertiert. Dabei erscheinen die Buchstaben dunkler als die umgebung, wo die Dot's erscheinen.
Die erweiterte Funktion der Busfanat's-Vollmatrix.
Wenn das gewünschte Ziel so angezeigt werden soll, wie in einer ANNAX-Matrix, bedarf es bei dieser Möglichkeit keinen besonderen Aufwand, da die Busfanat's-Vollmatrix, die String 1 und 2 ebenfalls ausließt. Stehen in den Strings 11 und 12 Informationen drin, werden die Informationen aus den Strings 11 und 12 ausgelesen und dargestellt. Bleiben diese beiden String leer, werden die Informationen aus den Strings 1 & 2 ausgelesen und diese in der Matrix gezeigt.
' WENN die Zielanzeige wechseln soll (L.L.Matrix_TerminusIndex) 1 (M.V.GetTerminusString) (S.$.Matrix_Hofdatei_oben) (L.L.Matrix_TerminusIndex) 2 (M.V.GetTerminusString) (S.$.Matrix_Hofdatei_unten) (L.L.Matrix_TerminusIndex) 11 (M.V.GetTerminusString) "" $= ! {if} (L.L.Matrix_TerminusIndex) 11 (M.V.GetTerminusString) (S.$.Matrix_Hofdatei_oben) {endif} (L.L.Matrix_TerminusIndex) 12 (M.V.GetTerminusString) "" $= ! {if} (L.L.Matrix_TerminusIndex) 12 (M.V.GetTerminusString) (S.$.Matrix_Hofdatei_unten) {endif}
Zuerst ließt das Script der Busfanat-Vollmatrix die Strings 1 und 2 aus. Bevor die Matrix die Anzeige umstellt, ließt das Script die Strings 11 und 12 aus der Hofdatei aus. Bleiben diese Zeilen leer, wird das zuerst eingelesene Ziel auf der Matrix dargestellt. Wenn aber in der Zeile 11 und 12 Informationen enthalten sind, werden die Informationen die zuerst aus den Strings 1 und 2 ausgelesen wurden, überschrieben und durch die neuen Informationen ersetzt.
Weitere Informationen zur Busfanat's-Vollmatrix, findet ihr im Omsi-Forum.
Quellen
- Busfanat's-Vollmatrix,
- Perotinus MAN ÜL's und MB O 307 Bahnbus,
- Hofdatei Spandau von M+R Software aus Omsi 1 & Omsi 2,
- Offizielles Omsi-Forum
Einen herzlichen Dank
geht an
- Busfanat,
- Perotinus,
- Marcel Kuhnt,
- Davidps,
- Danny,
- Nuorahino,
- Janine,
Anhang
Ich würde mich freuen, wenn man diese "universelle Hofdatei" wieder umsetzen könnte. Es ist wirklich keine neue Idee, da Marcel Kuhnt und Rüdiger Hofmann, diese mit Omsi 1 schon richtig umgesetzt haben. Durch neue Busse, Maps und kompletten Add-On's wurden bereits vergebenen Strings überschrieben und die Hofdatei für speziell diese Busse umgeschrieben. Somit gibt es in Omsi heute für eine Map, mehrere verschiedene Hofdateien, die jeweils nur für eine Gruppe von Bussen passen. Für das einfache und schnelle Umsetzen einer universellen Hofdatei sollte besonders die Kommunikation verbessert werden, nicht nur zwischen den Usern, sondern besonders zwischen den Firmen die Add-On's herstellen. Leider war es mir in der Vergangenheit nicht möglich, den Kontakt zu einer Softwareschmiede herzustellen. Bei einer anderen Firma konnte ich Kontakt herstellen, aber eine Umsetzung wurde nicht angestrebt oder um Hilfe gebeten. Während einige User dem ganzen Thema der "universellen Hofdatei" offen gegenüber standen, reagierten Firmen garnicht oder zeigten sich uninteressiert. Marcel Kuhnt und Janine stehen dieser Idee positiv gegenüber und unterstützten mich, hier das Thema Hofdatei zu veröffentlichen. Busfanat stellte die von ihm entwickelte Vollmatrix sehr schnell um. Auch Perotinus stellte seine neu erstellten Busse MAN ÜL nach Absprache und mit Hilfe von Busfanat um. Die ersten Schritte sind damit getan und ich danke Busfanat und Perotinus recht herzlich, für ihre großartige Mitarbeit und die Umsetzung. Und ich hoffe das es in Zukunft mehr Gehör findet um eine "universelle Hofdatei" umsetzen zu können. Denn diese dient allen und die Vorteile sollten, eigentlich überwiegen.
geschrieben von Tatra 23:34, 8. Sep. 2014 (MEST) Beitrag fertig.