Hallöschen und da sind wir wieder zu einem neuen Tut(orial) von mir!
In meinem Letzten Tutorial ging es um recht Einfache Dialoge die wir mithilfe des TTTS-Entities
gestaltet haben. Es ging Anfangs nur darum den Spieler zu begrüßen und zur Story zu leiten.
Dieses Tut beschäftigt sich mit etwas Anspruchsvolleren Dialogen in Kombination mit Emotes und
Interaktion mit Objekten. Deswegen werden wir eine kleine Exkursion zu den folgenden Entities machen:
- Scenery Object Interaction
- Scenery Object Remover
- System Kombonent: Dialog
Eigentlich kann man das Tutorial nicht wirklich mit dem Thema Dialogen weiterführen da alles wichtige schon vermittelt ist ... aber dazu später am ende mehr.
Um die Arbeitsweise zu verdeutlichen nehme ich mein derzeitiges Szenario an dem ich Arbeite.
Erweiterte Dialoge mit Interaktion
In einem Lager treffen wir auf einen Fyros Wächter namens Apoleus. Wir sprechen mit ihm ...
- Spieler: Hallo!
- Apoleus:Hallo Homin, kannst du mir einen gefallen tun?
- Spieler:Um was geht es denn?
- Apoleus:Siehst du den termitenhügel da drüben? Die Viecher krabbeln dauernd zu mir rüber und beißen mich. Übermittle ihnen mal meine *liebsten* Grüße!
- Spieler: Klar, mach ich!
- Apoleus: Jawohl, endlich kriegen die Viecher ihr Fett weg.
Spieler geht zum Termitenhügel und klickt ihn an. Er bekommt die Option „Termitenhaufen Zerstören“ angezeigt. Klickt er ein weiteres mal auf den Termitenhügel oder wählt die Option im Rechtsklickmenü aus, verschwindet der Termitenhügel.
Zeitgleich zum Verschwinden des Termitenhügels Jubelt(Emote) Apoleus und sagt:
„Jawohl! Feste drauf!“
Daraufhin geht der Spieler zurück zu Apoleus und spricht weiter mit ihm.
- Spieler: „Auftrag Ausgeführt!“
- Apoleus: Ha! Hab vielen Dank. Mir geht es schon gleich viel besser. Ich freu mich schon wenn mein Dienst zuende ist und ich ein Bad nehmen kann.“
- Spieler: „Also dann, auf wiedersehen!“
- Apoleus: „Tschüss, man sieht sich später!“
Aktion: Spieler klickt auf Apoleus – Zeitgleich kommt die Meldung:
- Apoleus: „Hallo Homin!“
- Spieler: „Und, gibt’s was neues?“
- Apoleus: „Bisher nicht, alles ruhig hier!“
- Spieler: „Dann bis Später!“
- Apoleus: „Man sieht sich!“
Hier ein Bild des Aufwands der Entities für diesen Dialog samt Minimission
Das Script dahinter
Der Anfang des Dialoges ist eine normale TTTS Verbindung bis zu dem Punkt Klar, mach ich!. Dieser TTTS, wenn er Success ist, aktiviert einen
- Scenery Object Interaktion Entitie – Kurz SOI
Hier ein Bild des SOI-Entities
Was sehen wir?
- Name: Der Name des Entities für das Spätere Verknüpfen
- Scenery Object: Auswahl des Objects ( kein NPC oder Mop ) zum Interagieren
- Aktive: Wenn Aktiv kann mit dem Objekt Interagiert werden.
- Repeatable: Wenn ausgewählt kann man so oft wie man will damit agieren.
- Contextual Text: Der Text der angezeigt wird wie man mit dem Object Interagiert.
Das TTTS(Apoleus_Dialog_1_3) aktiviert den SOI(Termitary_Trigger) sobald er Beendet(Success) ist. Der SOI ermöglicht nun mit dem Termitenhaufen zu agieren. So als ob man durch ein TTTS mit einem NPC spricht, kann man so mit einem Objekt „Sprechen“ bzw. Interagieren.
Sobald man mit dem Objekt interagiert hat, ist der SOI „Getriggert“ - im Event Editor der Paramter Trigger
- Termitary_Trigger -> Trigger
- Scenery Object Remover Entitie – Kurz SOR
Was sehen wir?
- Name: Name des Entities
- Aktiv: Ein SOR kann immer Aktiv sein. Ein Deaktivieren ist nicht nötig
- Scenery Object References: Anzahl an Objekte die du Löschen willst.
- Scenery Object 1: Das Objekt was Gelöscht werden soll.
Doch wie können wir nun das Objekt Löschen wenn doch der Entitie eh immer Aktiv ist?
Nun, das können wir ausschliesslich über ein Event machen da nicht vom Spieler direkt ansteuerbar.
(Der SOR heißt Termitary_Remover)
Wie oben schon geschrieben:
- When:
Termitary_Trigger -> Trigger - Happens:
Termitary_Remover -> Remove Scenery Objects
Wenn TTTS(Apoleus_Dialog_1_3) den SOI(Termitary_Trigger) Aktiviert und dieser Getriggert wird, das SOR(Termitary_Remover) den Hügel löscht.
Sobald der SOR die Objekte gelöscht hat, ist er nicht getriggert so wie der SOI. Bei ihm heißt es dann im When Parameter:
- Termitary_Remover -> Removed Objects
Der Emote – Die Systemkombonente Dialog
Um nun den Emote zu erklären der nun folgen würde, muss ich den Dialog Entite samt Editor ein wenig durchleuchten.
Zunächst das Dialog Entitie:
Was sehen wir?
- Name: Also das müsste mittlerweile jeder Wissen
- Autostart: Ist die Option Aktiviert startet der Dialog sofort wenn der Act Startet.
- Active: Kann eigentlich immer Aktiv bleiben.
- Edit Dialogs: Kleiner Button im Fenster oben Links.
Ist Autostart ausgewählt aber Aktive nicht, dann startet der Dialog nachdem das Entitie Aktiviert wurde. Ist Aktive ausgewählt aber Autostart nicht, startet der Dialog erst wenn man ihn per Event gezielt ansteuert. In diesem fall kann man bis zu einer gewissen Stelle vorspulen.
Der Dialog Editor:
Darin können wir unsere Dialoge basteln. Klicken wir auf New Chat dann haben wir folgende möglichkeiten:
Was sehen wir?
- After (x): Nach der Dialog Anfängt dauert es (x) bis die Nachricht erscheint
- Who: Wer die Nachricht von Say What sagt.
- Say What: Die Nachricht die Angezeigt wird.
- To who: Hier kann man einen NPC Eintragen, der sprechende dreht sich dann zu ihm hin.
- Emote: Dieser Emote wird zeitgleich mit der Nachricht ausgeführt.
- Pause at End: Wenn bei einer Chatoption ausgewählt stopt der Dialog hier und geht erst weiter wenn man ihn per Event Direkt ansteuert.
- Repeat Dialog: Wenn alle Chatoptionen durch sind und der Entitie auf Autostart steht, fängt der Dialog wieder von Vorne an.
- Dialog List: Sollten anderen Dialog-Entities vorhanden sein kann man sie herüber Auswählen und ebenfalls Verändern.
Unter Who kann man auch Broatcast Nachrichten versenden lassen
Repeat Dialog kann man benutzen um ähnlich wie bei Oblivion zufällige NPC Dialoge zu erstellen die sich immer wiederholen und einen kleinen Aufschluss darüber geben was die NPC über das Thema denken. Vorraussetzung ist ein Geschicktes Schalten von Aktive, Autostart und Repeat Dialog.
Hier sehen wir wie sowas in der Praxis aussieht:
Eine wichtige Funktion hierbei ist das {break} ! Der bisher einzige Scriptbefehl für Dialoge der Bekannt ist und genutzt werden kann.
Wenn man einen Gewaltig großen Text schreibt verschwindet dieser nach gewisser Zeit wieder samt Sprechblase, ebenso wenn man einen Dialog mit mehreren Chats erstellt! Dann könnte es sein dass das Gespräch zu schnell vorranschreitet ( weil jeder Spieler ließt unterschiedlich schnell ) und der Spieler muss deswegen nochmal in der Chatleiste nachlesen.
Hierbei hilft der Scriptbefehl {break} weiter! Durch den {break} kann man den Chat in viele kleine Portionen schneiden die der Spieler durch ein angezeigtes [x] Schliessen oder durch ein [>] fortführen kann.
Nun wissen wir wie man einen Dialog erstellt, was brauchen wir aber bei unserem derzeitigen Beispiel?
Nun, nachdem der Termitary_Remover das Objekt gelöscht hat muss dieser den Dialog starten.
Active ist Ausgewählt und ich spreche die Dialogstelle direkt an mit:
( Der Dialog für diese Szene heißt Apoleus_Dialog_for_Trigger )
- When
Termitary_Remover -> Removed Objects - Happens
Apoleus_Dialog_for_Trigger -> Goto Step -> (x) says (y)
Der nächste Dialog der nun immer wiederkommt wenn der Spieler zurückkehrt ( bis vielleicht was anderes geschieht? ) hat als einzigster Unterschied zusätzlich ein „Hallo Homin!“ im Wait Validation Text.
Somit hätten wir ein erweiterten Dialog gemacht.
Nun könnte ich ein Tutorial zu Komplexe Dialoge mit Erweiterten Funktionen schreiben, jedoch stellt sich hierbei der TTTS-Bug in den Weg der schon oft erwähnt wurde, nicht zuletzt in einem von mir erstellten Thread hier im Forum. Und solange dieser Bug besteht und nicht weitere Tests durchgeführt sind, erspar ich mir die Arbeit, da ich nicht weiß ob beim nächsten Patch oder erweiterung des Rings endlich möglich sein wird Sprechblasendialoge zu erstellen, so wie wir sie von Events her kennen.
Den ein großes Problem haben Dialoge die mit den TTTS erstellt wurden – sie nützen nur etwas bei
Gesprächen mit einer Einzelperson. Somit könnte nur ein Spieler einer Gruppe mit den NPCs Sprechen, die anderen müßten zu reinen Hack´Slash gehilfen degradiert werden. Etwas, was ich nicht gerade als guten ton eines Quests erachte!
Ich hoffe ich konnte einigen mit diesem Tutorial etwas weiterhelfen, auch wenn es im großen und ganzen nur ein Kursus in Sachen Entitie nutzung war.
Wie schon oben erwähnt werden meine nächsten Tutorials eher vom Umgang mit Entities und deren Funktion handeln da Dialoge nun am Ende ihrer macht sind.
Außerdem, wie gewünscht, ein paar Vorschläge zur Actnutzung und ein paar Vorschläge zur einheitlichen Sprache wenn es darum geht das sich zwei Ringler unterhalten und beide sich verständigen wollen ^__^ Aus erfahrung weiß ich das sowas richtig kompliziert werden kann!
Mit freundlichen Grüßen, Astrell Yagamoto =^_____^=