Wie binde ich externen Text in ein Plugin ein? Ich will Missions-Infos in einem Window rausgeben.

  • Moin Leudde.


    Ich arbeite an einem Menü-Plugin. Ich will in ein Window meiner Menü-Szene externen Text einbinden.

    Es handelt sich um Missions-Text, den ich per Variable umschalten will. Von Mission zu Mission.

    Ich habe bereits mein Menü komplett fertig. Ich habe eine Bilddatei im selben Menü-Window, die ich per Variable schon umschalten kann.

    Ich habe ein Statistik-Window, deren Titel man in die Parameter schreibt. Dazu eine Variable des Statistik-Wertes, den man per Event hochschalten kann. Läuft alles super. Aber jetzt will ich längeren Text erstellen.


    Ich könnte den Missionstext in eine Variable schreiben und rausgeben, aber das erscheint mir höchst seltsam :D


    Wie mach ich das richtig?

  • Hmmm. Die Frage ist leider zu generell um eine genaue Antwort zu geben.


    Du könntest alle deine Text in einer Json Datei speichern und diese dann bei Spielstart laden.


    1) Erstelle in deinem data Ordner eine Datei namens "Mission.json". Dort können wir unsere Texte in einem Array ablegen.

    JavaScript
    1. [
    2. "Mission 1 Text",
    3. "Mission 2 Text",
    4. "Ich bin Mission Text 3",
    5. "Ich bin Mission Text 4.\nUnd ich habe mehrere Zeilen!\nYeah!"
    6. ]


    2) Lade die Datei.

    Um eine Json Datei einzulesen, können wir einfach die gleiche Funktion benutzen, die auch MV beutzt, um die Database Dateien zu laden.

    Dafür erweitern wir einfach die loadDatabase Funktion. Dadurch haben wir nach Game Start eine globale Variable namens $dataMission. Da wir die Datei mit einem Array gefüllt haben, können wir nun über einen Index die bestimmten Texte bekommen. $dataMission[3] würde uns den dritten Text zurückliefern.

    JavaScript
    1. var _DataManager_loadDatabase = DataManager.loadDatabase;
    2. DataManager.loadDatabase = function () {
    3. _DataManager_loadDatabase.call(this);
    4. DataManager.loadDataFile('$dataMission', 'Mission.json');
    5. };


    3) Einfach mal ein Beispiel.

    Der Code oben fügt ein Plugin Command hinzu mit dem wir einen Index bestimmen können, welcher Mission Text verwendet werden soll. Und der Einfachheit, gibt er ihn einfach aus.


    Mit dem Plugin Command "SetMissionText 3" würde nun auf der Console folgender Text ausgegeben werden: Ich bin Mission Text 3.


    Oder man benutzt eine Game Variable, die den Index des Text Arrays bestimmt. Gibt wie gesagt mehrere Wege.

    Vielleicht hilft dir das hier ja weiter. :) 

  • Auf jeden Fall wird das helfen :)


    Ich habe es momentan so arrangiert, das ich jede Zeile einzelnd rausgebe, durch jeweils eine Variable, die den Zeilentext beinhaltet.

    8 Zeilen = 8 Variablen


    Das funktioniert, ist aber Benutzer-Unfreundlich. Lieber eine Variable, die den gesamt Text umschaltet.


    Ich werde mich morgen mal damit befassen.


    Danke.:thumbup:

  • Danke waynee95 !


    Ich habe jetzt eine Book.json erstellt. Die Bücher als Objekte mit entsprechenden IDs und Textseiten gespeichert. Die Book.json IDs mit Item IDs verbunden. Wenn ich im Menü ein Buch-Item auswähle, wird jetzt der entsprechende Buch-Text rausgegeben.


    Super!