Nachdem es lange Zeit sehr schwierig war, mit der "incoming question" und verschiedenen callback-Scripts (die dann noch nicht einmal auf einem Objekt gestartet wurden) mit dem Spieler zu kommunizieren, wobei die Nachricht nicht als popup gesendet werden konnte, dafür aber ins Nachrichtenlog geschrieben wurde, wurde mir die Sache zu bunt.
Mit X3 v2.5 wurden dem Spiel erstmals die Möglichkeiten hinzugefügt, dem ganzen Blödsinn ein Ende zu setzen. Ich habe eine library geschrieben, die:
- durch einen einzigen Scriptcall eine Antwort vom Spieler erfragt und direkt zurückgibt
- auf dem spezifischen Objekt läuft und kein Jonglieren mit globalen und lokalen Variablen mehr erfordert
- sobald die Frage gesendet wird, diese als popup auf dem Bildschirm erscheinen lässt
- nichts von dieser ganzen Nutzerinteraktion im Nachrichtenlog vermerkt.
Download:
[ external image ]
Schnellanleitung (für Scripter):
* Paket herunterladen und readme lesen (engl. readme)
* Scriptdateien in den "scripts"-Ordner schieben, MD-dateien in "director"
* Script "lib.st.md.message.ask" aufrufen, um eine Frage zu stellen
* Vorsicht:
** wenn der Spieler eine Frage nicht beantwortet, können Stunden vergehen, bis er das tut. In dieser Zeit können keine weiteren Fragen gestellt werden; zum Zeitpunkt der Antwort könnte die Fragesituation sich schon geändert haben.
** Die Returnvariable ist stets string oder integer, nie ein Objekt oder irgendetwas derartiges.
Beispiel: Einfaches Script, das dem Spieler etwas Geld anbietet und es ihm überweist, sofern er es haben möchte:
Textfile:
[ external image ]
Scriptfile (empfohlene Lösung):
[ external image ]
Scriptfile (alternative Lösung):
[ external image ]
Changelog:
1.0 initial release
1.5 bugfix: errors could ocurr (leading to no questions being asked anymore) when an object that was just asking a question got destroyed. Added code to handle this situation in lib.st.md.message.ask.xml