Date: Fri, 21 Jan 2000 14:47:12 +0100 (MEZ) From: Holger Kremss <jur94ewp@studserv.uni-leipzig.de> Short: Output-Hook Type: Feature State: New Hi Lars! Ich haette mal ne Bitte und die Frage, ob es moeglich waere, sowas einzubauen. Und zwar haette ich gerne ne Applied-Funktion, oder besser natuerlich nen Driver-Hook, der alles bekommt, was ein Spieler an text gesendet bekommt. Also im grund so aehnlich, wie das catch_tell und catch_msg machen, aber eben unmittelbar vor der Ausgabe an den Socket und fuer ALLEN Text. Und zwar waere das ne Moeglichkeit, Umlaute zu filtern, die bestimmte Leute auch heute noch nicht auf ihren Terminals sehen koennen. Also der Hook wuerde zum Beispiel folgendes machen: (string)str=player->modify_output(str); In modify_output wuerde man dann alle 'umlaute' und 'sz' umwandeln, so dass der Spieler eben 'ae' und 'ue' statt den Umlauten bekommt. Ich hab mich im WL immerwieder dafuer eingesetzt, Umlaute zugaenglich zu machen, aber da einige leider immernoch Terminals haben, die damit nichts anfangen koennen oder englische Consolen usw, wo sie die auch nichtmal tippen koennen, waere das eine Moeglichkeit. Ich habe mit catch_tell() und catch_msg() rumexperimentiert und festgestellt, dass da immer einiges nicht ankommt. Und zwar all die tell_object() die im Spieler erzeugt werden. Und das sind in unserer Lib sehr viele. Eine andere Moeglichkeit gibt es leider nicht. Und die gesamte Lib umschreiben, dass man mit catch_tell und so arbeiten kann, darauf hab ich ehrlich gesagt keine Lust *stoehn*. Waer doch bestimmt simpel so einen Hook (analog modiy_command) zu machen, oder? Und bestimmt auch nicht zu viel Aufwand... Leider hab ich die aktuellsten Driver-Sourcen nicht hier, aber ich denke mir, alle Textausgaben werden an einer einheitlichen Stelle gemacht. Wenn es doch eine Moeglichkeit jetzt schon gibt, die mir entgangen ist, dann waer ich ueber jeden Tip dankbar. :-) Danke und Byebye! Holger Hi Lars. Ich haette noch einen Vorschlag zu meiner letzten Mail. Ich hab mir nochmal gedanken gemacht, wie das umlaute-parsen am besten zu realisieren ist und bin drauf gekommen, dass es besser ist, die Eingabe des Spielers umzuwandeln in Spezialzeichen und erst bei der Ausgabe das wieder umzuwandeln. Das ist deshalb besser, weil der Umlaut ue nur ein zeichen lang ist, wohingegen 'ue' 2 Zeichen lang ist und dann kommen unsere ganzen zeilenumbrueche durcheinander. Also bei der Eingabe ue -> "u und dann bei der Ausgabe dann Spieler-individuell in Umlaute oder eben ue ae oe umwandeln. Dann werden die Umbrueche nur vielleicht kuerzer, nicht etwa laenger und fuer die strlen-spezifischen Sachen muss ich mir dann auch noch was einfallen lassen. ;-) Lange Rede kurzer Sinn: Neben dem output-Hook waer noch ein Input-Hook schoen. Also wo alles veraendert werden kann, was reinkommt. Nicht nur Commands (modify_command()) sondern auch all das, was an input_to() geht usw. Eben _alles_. Also meine Bitte nochmal zusammengefasst. 2 Hooks, einer fuers Input-Modifizieren und einer fuer Output-Modifizieren. :-) Wenn Du keine Lust hast, das zu machen, muss ich mich vielleicht doch mal selbst ranwagen, aber ich glaub das koennte dann dauern... Holger@Wunderland