TheDude hatte hier ein komisches Problem bei dem ein Faceset nicht angezeigt wurde, obwohl es gesetzt wurde:
Ein Beispielprojekt, was das demonstriert, wäre hier: https://cherryshare.at/f/ElLtXw/Project1.zipZitat von TheDude
Wenn man das Autostart-Event links oben löscht, funktioniert es.
Hat wohl hiermit zu tun, Zitat aus der Hilfedatei:
Aber die Art, wie das gemacht wird, ist nicht ideal, weil Faces in Wahrheit keine Eventzugehörigkeit haben sondern global sind. Es wird einfach immer dann, wenn ein neues Event in den Hauptinterpreter (in welchem Autostart- und Action-Key/Touch-Events ausgeführt werden) geladen wird, oder wenn der Hauptinterpreter das Ende eines Events erreicht, das Faceset gelöscht.Zitat
Es wird davon ausgegangen, dass in Parallel Process Events (die einen eigenen Interpreter haben) keine Dialoge passieren, weil deren Ablauf im Vergleich zum restlichen Spiel nicht genau zeitlich steuerbar wäre (eben weil sie parallel laufen in einem eigenen Interpreter pro PP-Event und nicht den Hauptinterpreter exklusiv verwenden können wie andere Events), und sie ja auch jederzeit unterbrochen werden können wenn ihre Startbedingung nicht mehr aktiv ist (im Gegensatz zu Events im Hauptinterpreter, die immer komplett laufen).
Was hier also passiert ist folgendes:
* Map wird geladen
* Events werden abgehandelt:
... * Parallel Processes Interpreter werden abgehandelt, das bewirkt dass in deinem PP-Event das Face gesetzt wird und die Nachrichtsanzeige initiiert. Da das aber ein grafisches Update und eine Animation beinhaltet, wird der Interpreter zu dem Zeitpunkt freigegeben und wartet (in dem Fall bis beim nächsten Zyklus die Message irgendwann wieder fertig ist und der nächste Befehl ausgeführt werden kann). Face ist momentan gesetzt.
... * Hauptinterpreter wird abgehandelt. Der hat momentan noch kein aktives Event geladen, und schaut sich um welches Event ausgeführt werden soll. Das wird das Autostart-Event. Er lädt das Event, und das Laden eines Events in den Hauptinterpreter bewirkt das Löschen des Face, wie oben erklärt. Face ist momentan gelöscht.
* Messagebox wird aktualisiert - Das Spiel sieht dass eine Messagebox von einem Event initialisiert wurde, und rendert die Box. Das Face ist aber bereits gelöscht!
Das Problem existiert nicht wenn du in 2 PPs Face+Text machst, weil nämlich Messagebox-relevante Befehle gar nicht erst ausgeführt werden wenn gerade eine Box offen (oder im Öffnen begriffen) ist. Aber das Löschen des Face beim Laden eines Events in den Hauptinterpreter überprüft das nicht. (Das könnte man vielleicht patchen.)
Die Moral der Geschichte: Keine Dialoge in PPs packen, die sind nicht dafür gedacht. Wenn ein Dialog von einem PP ausgelöst werden soll, dann sollte stattdessen besser ein Switch gesetzt werden, der ein Autostart-Event oder Map-Event auslöst, sodass das entsprechende Event im Hauptinterpreter läuft und andere Hauptinterpreter-Events blockiert. ("Call Event" hilft da nicht, weil das würde nur bewirken, dass das Unterevent auch im Interpreter von seinem aufrufenden PP-Event abgehandelt wird, nicht im Hauptinterpreter.)