Inhaltsverzeichnis
Einführung
Das Spiel erwartet, daß Texte UTF-8 kodiert übergeben werden. Dies hat zur Folge, daß Texte einfach abgeschnitten werden, sobald man normale Umlaute verwendet. Eigentlich möchte man sich aber mit solchen technischen Details nicht herumschlagen, sondern einfach nur normale Texte schreiben…
Lösung
Damit man die Texte weiter wie bisher schreiben kann, gibt es eine Funktion, welches die Texte automatisch vor der Verwendung durch das Spiel umwandelt.
Um normale Texte in (NPC)Briefings und Messages verwenden zu können, braucht man in der FirstMapAction() einfach nur diese Funktion aufzurufen:
AutoUmlaut()
Dies muss gemacht werden, bevor eigene Funktion aufgerufen (Briefings erstellt) werden.
Nun gibt es allerdings noch einige wenige Fälle, in denen man Text ausserhalb von Briefings und Messages verwendet. Frei erfundenes Beispiel:
Spaghetti( "Mit Käse" ); local tFarben = { normal = "Weiß", natur = "Grün" }; Anpinseln( tFarben );
Hier würden die Umlaute nicht automatisch umgewandelt werden. Daher muss man eine Funktion aufrufen, damit dies gemacht wird:
Spaghetti( Umlaute( "Mit Käse" ) ); local tFarben = { normal = "Weiß", natur = "Grün" }; Anpinseln( Umlaute( tFarben ) );
Durch diese Aufrufe werden die Texte, die Umlaute enthalten, auch in diesen Sonderfällen korrekt vom Spiel angezeigt.
Benötigte Funktionen
Da die zuvor demonstrierten Funktionen nicht im Spiel vorhanden sind, müssen sie ins Script kopiert werden:
function Umlaute( _text ) local texttype = type( _text ); if texttype == "string" then _text = string.gsub( _text, "ä", "\195\164" ); _text = string.gsub( _text, "ö", "\195\182" ); _text = string.gsub( _text, "ü", "\195\188" ); _text = string.gsub( _text, "ß", "\195\159" ); _text = string.gsub( _text, "Ä", "\195\132" ); _text = string.gsub( _text, "Ö", "\195\150" ); _text = string.gsub( _text, "Ü", "\195\156" ); return _text; elseif texttype == "table" then for k,v in _text do _text[k] = Umlaute( v ); end return _text; else return _text; end end function AutoUmlaut() StartBriefingUmlauteOrig = StartBriefing; StartBriefing = function( _briefing ) StartBriefingUmlauteOrig( Umlaute( _briefing ) ); end CreateNPCUmlauteOrig = CreateNPC; CreateNPC = function( _npc ) CreateNPCUmlauteOrig( Umlaute( _npc ) ); end MessageUmlauteOrig = Message; Message = function( _text ) MessageUmlauteOrig( Umlaute( tostring( _text ) ) ); end end
Es fehlt ein Hinweis auf das einbinden von Umlauten per externen Editor und das sie sich auch in den Brifingserweiterungen befinden Ninobi