Construction Set Dialoge verknüpfen

E

Ehemaliger Benutzer

Gast
Hallo! Ich hätte eine Frage (mal wieder ;) ).
Wie kann ich einen NPC mit Hilfe des CS längere Dialoge sprechen lassen.
Das CS ist wie ein billiges SMS Tool und lässt nur 512 Zeichen zu. :(
Da ich vermute, dass es keine Möglichkeit gibt, habe ich mich entschieden, zu splitten.
Deshalb frage ich nun: Wie kann ich Dialoge im CS so verküpfen, dass es möglich ist, am Ende dem NPC die Dialoge in der richtigen Reihenfolge sprechen zu lassen (z.B. durch ein rotes weiter).

Wer meine Frage nun nicht verstanden hat, dem versuche ich es nochmal plastischer zu erklären. Im Construction Set, gibt es ein "Dialogue" Icon. Ich klicke rauf und lande bei Dialogue mit der Kartei Topics. Ich möchte meinen NPC x, den ich vorher über die ID ausgewählt habe, nun beispielsweise am Ende im Gespräch, beim Anklicken eines Themas "W" den Dialog "Y" mit mehr als 512 Zeichen, gefolgt von Dialog "Z" mit 126 Zeichen sprechen lassen, da die Dialoge Z und Y wegen der Zeichengrenze nicht zusammengefasst werden können. Wie geht das?? Bitte keine: "Warum willst du überhaupt...?" Gegenfragen!

Es wäre wirklich toll, wenn mir jemand erklären könnte, wie das ginge, da der blöde Editor aus einem Grund nicht mehr als 512 Zeichen zulässt.

 
Du kannst in etwa so agieren:

Dialogzeile Teil 2:
Speaker XY, Function Choice = 1
"...dies ist der zweite Teil des Textes"

Dialogzeile Teil 1:
Speaker XY
"dies ist der erste Teil des Textes"
im Result:
Choice "Weiter" 1

Die Zeichenbegrenzung auf 4 Zeilen liegt wohl an der Grösse des Dialog-Fensters- sonst muss man ja bei langen Texten immer wieder hoch scrollen.
 
  • Like
Reaktionen: 1 Person
wenn's noch länger als zwei Blöcke werden soll, tja dann schreib bei Dialog-Zeile 2 im Result einfach wieder

choice "weiter" 2

und darüber den nächsten Textteil mit der Condition: Function Choice = 2. Denk daran die Conditionen möglichst weit einzugrenzen denn es gibt nur Choice von 0 bis 9. Daher könnte die Bedingung Function Choice=1 mit Tagebuchstand ABC=10 oder anderen Bedingungen gemeinsam verwendet werden damit Du unter diesem Gesprächsthema möglichst viele weitere Choices verwenden kannst.

Choice kannst Du natürlich auch benutzen um den Spieler etwas auswählen zu lassen, z.B.

"Was möchtet Ihr haben?"
Result
choice "ein Schwert" 1 "eine Axt" 2


die Choice-Antworten müssen immer über der vorhergegangenen Dialog-Zeile stehen sonst gerätst Du evtl. in eine Dialog-Endlosschleife.
Also würdest Du die beiden nächsten Dialogzeilen über der Frage einsetzen:
Function Choice = 1
"Hier Euer Schwert"
Result: Player->addItem Sword 1

Function Choice = 2
"Hier, Eure Axt"
Result: Player->addItem Axe 1

Ein anderer Tipp für lange Texte/Vorgeschichten:
Übergib dem Spieler ein Buch/eine Schriftrolle mit dem Text/der Geschichte die Du erzählen willst. Die Bücher kann Spieler in aller Ruhe zu Hause am Kamin lesen/sammeln etc. Nimm einfach ein beliebiges Book aus dem Object-Window, gebe ihm eine neue ID, ändere den Namen (sag ja, Du willst ein neues Objekt erstellen).
In dieses Buch kannst Du Romane schreiben, ich glaube bis zu 2147483648 Zeichen...
Dann schreib in den DIalog :
"Lest dieses Buch"
Result: Player->AddItem "deineNeueBuchID" 1


An die Moderation:
Thread sollte ins CS-Forum verschoben werden
 
Zuletzt bearbeitet:
Nun ja eigentlich sollte mein Vivec einfach nur etwas mehr Story hinzufügen, denn ich finde, für ein Gott weiß er mir zu wenig. Das mit choise 1-9 wusste ich nicht. Ich kann nur hoffen, dass es nicht mit anderen choices im Thema(z.B. Almalexia) "kollidiert". So wie ich die Sache verstanden habe, nimmt result die Funktion dessen ein, was man in "C" als & bezeichnet. Insgesamt sind es bei mir 7 Dialogzeilen(ja, ich hab nen halben Aufsatz geschireben) in Almalexia eingefügt worden. Das bedeutet, dass wenn man Vivec auf das Thema Almalexia anspricht, als Ergebnis nun 8x Weiter zu drücken sei, bevor er das Thema abschließt. Da das Thema Almalexia bei Vivec aber noch andere Varianten bietet, werde ich wohl nicht umhin kommen choise 1-9 häufiger zu verwenden(zusätzlich zu den ohnehin schon vorhandenen choices).

EDIT: Eigentlich schließt sich dann auch die Frage an, ob man, falls man den Wert doppelt nutzen kann, nicht auch choice 7 stets für der char "Weiter" verwenden kann, da es ja stets zum nächsten Function Choice = 7 leiten soll. Obwohl ich mir eigentlich nicht vorstellen kann, dass das Programm da differenzieren kann. Ich vermute mal entweder der char oder die Ziffer müssen anders, sein sonst gibts nen Fehler.

Ich stell mir das so vor:
TOPIC
Almalexia:

DialogthemaA1-4 -------- weiter 1-weiter 2----weiter 3---weiter ----4 nix
----------------------------nix ---choice1 ----choice2-- choice3 ----choice 4

DialogthemaB1-4 ----- weiterb 1 weiterb 2---- weiterb 3----- weiterb 4---- nix
-------------------------nix----- choice1-- ---choice2 ------ choice3 ---choice 4

Sodass ich in der Lage bin die Ziffern innerhalb eines suptopics zweimal zu verwenden, sonst muss ich mir was anderes einfallen lassen.
 
Zuletzt bearbeitet von einem Moderator:
Nein-nein-nein...

Choice funktioniert anders.
Zu jedem Topic (blaues Highlight) kannst Du die Choices von 0 bis 9 verwenden.

Dazu wird die Liste oben in der Mitte von oben nach unten durchgegangen (umgedreht bei persuasion) und die erste die alle Bedingungen erfüllt wird ausgewählt (im kompletten mittleren Bereich: Speaker Condition, lila markiert die Zeile wo "Function Choice = 1" einzustellen wäre)

Also alles unterhalb der Dialog-Liste oben in der Mitte betrifft die oben ausgewählte Dialog-Zeile.

Das Result (grün) kann Script-Befehle enthalten die zur augenblicklich oben gewählten Zeile gehören. Dort rein schreibt man Sachen wie Choice, GoodBye, Journal XY 123 etc. Dort rein schreibst Du
Choice "weiter" 1 ["überspringen" 9]

Du kannst auch nach 3 "weiter"s einen Tagebucheintrag im Result vornehmen und die nächsten 3 "weiter" wieder mit Nummern 1-3 versehen und den Tagebucheintrag in der Zeile unter der lila gefärbten als zusätzliche Bedingung verwenden. Ist zwar Blödsinn aber erklärt hoffentlich das Prinzip.

Würdest Du einfach immer Choice "Weiter" 7 verwenden würde immer nur die oberste Zeile angezeigt.
Das ginge nur wenn Du zu jeder Zeile im Result einen neuen Tagebucheintrag machst und die Bedingung des vorangegangenen Tagebucheintrags zusätzlich zu Function Choice = 7 (unter der lila gefärbten Zeile) einsetzt.
 

Anhänge

  • dialog.png
    dialog.png
    11,6 KB · Aufrufe: 139
Zuletzt bearbeitet:
  • Like
Reaktionen: 1 Person
Choice funktioniert anders.
Zu jedem Topic (blaues Highlight) kannst Du die Choices von 0 bis 9 verwenden.
wie oft?

Ich bezog mich auf die Frage, ob ich innerhalb des blau unterlegten Topics auch die Ziffern 0-9 mehrmals verwenden kann, wenn die "Worte" vor den Ziffern unterschiedlich sind oder alternativ, innerhalb zweier verschiedener Info response Zeilen innerhalb desselben Topics(blau) die Ziffern mit den selben Worten verwenden kann(sowohl bei den scripten, als auch bei den Functions)?

Oder einfach ausgedrückt: kann man innerhalb eines Topics, bei den verschiedenen Info/Responsezeilen, die Ziffern 0-9(von den Choices natürlich) häufiger als 1x benutzen (z.B. bei den Results).
 
Zuletzt bearbeitet von einem Moderator:
Du kannst jede Choice-Nummer so oft nehmen wie Du willst. Du musst nur dafür sorgen das sie zum richtigen Zeitpunkt erscheinen, d.h. die Bedingungen im mittleren Fenster-Bereich so genau wie möglich festlegen, z.b. willst Du das Vivec Dir was anderes zu "Almalexia" erzählt wenn Du sie getötet hast. Stellst also unter den Bedingungen ein

Zeile 1
Bedingung:
ID Lord_Vivec
Function Choice = 9
Text:
"Ich bin ja schon ruhig"

Zeile 2
Bedingung:
ID Lord_Vivec
Function Choice = 2
Text:
"blabla, blabla"

Zeile 3
Bedingung:
ID Lord_Vivec
Dead Almalexia > 0
Function Choice = 1
Text:
"blabla, sie war eine blabla"
Result:
Choice "Weiter" 2 "Ihr langweilt mich" 9

Zeile 4
Bedingung:
ID Lord_Vivec
Function Choice = 1
Text:
"blabla, sie ist eine blabla"
Result:
Choice "Weiter" 2 "Ihr langweilt mich" 9

Zeile 5
Bedingung:
ID Lord_Vivec
Text:
"Was wollt Ihr hören?"
Result:
Choice "erzählt was" 1 "nichts" 9

in der vierten Zeile ist die Bedingung "Almalexia schon tot" bzw. "noch nicht tot" nicht mehr nötig da sie ja durch die darüber ausgefiltert wurde.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: 1 Person
Super! Genau das war es was ich hören wollte, denn dann kann ich doch das so machen, wie ichs mir vorgestellt hatte. Der Editor ist klüger als ich dachte.

EDIT: Du scheinst dich ziemlich gut aus zu kennen. Vllt. hast du ja Lust auch mal hier rein zu schauen:
 
Zuletzt bearbeitet von einem Moderator:
Da rein geschaut hab ich schon vor ein paar Tagen. Ich kenn mich aber mit dem Inhalt einzelner PlugIns nicht aus - dafür aber den Original-MW-Inhalt ziemlich auswendig.

Wir könnten auch (Beispiel oben siehe Zeile 1) die ID "Lord_Vivec" weglassen, dann wäre das die Antwort für alle NPC-Dialogpartner wenn man auf Choice 9 klickt. (gesetzt den Fall sie haben eine Dialogzeile zum Thema "Almalexia" die im Result Choice "xyz" 9 enthält und die unterhalb von Zeile 1 steht)

Dabei wieder aufpassen: Für Kreaturen (wo Lord Vivec eine von ist) muss zu jeder Dialog-Zeile die ID eingesetzt werden. Für NPC-Dialoge kann man IDs weglassen so das mehrere NPCs mit gleichen Bedingungen gleiche Antworten geben.
 
Zuletzt bearbeitet:
Klar. Dann könntest Du choice 9 (Gespräch abbrechen) ohne ID verwenden, dann wäre Choice 9 für alle Gesprächspartner zum Thema "Almalexia" ein Ende des Gesprächs.
 
Dialogzeile Teil 2:
Speaker XY, Function Choice = 1
"...dies ist der zweite Teil des Textes"

Dialogzeile Teil 1:
Speaker XY
"dies ist der erste Teil des Textes"
im Result:
Choice "Weiter" 1

Eine Frage noch zur Copile-Reihnfolge. Ich konnte daraus entnehmen, dass du den zweiten Teil des Textes stets nach oben gemacht hast. Nun hab ich das nicht immer so gemacht (eher umgekehrt) und auch die Funktion Choice x, welche zum nächsten Teil des Textes leiten sollte bei Function/Variable z.B. in die dritte Reihe getan, wenn zei und eins schon "besetzt" waren.

Frage: Macht das was aus oder ist es dem Kompiler egal?
Hinweis: Wär blöd, wenn nicht. Hab nämlich gestern den ganzen Abend/Nacht damit zugebracht zu übersetzen.

Ich muss jetzt erstmal Schlaf nachholen ^^. Wenn du willst, kannst du auch mal hier gucken. Ich hätte da noch ne Frage bezüglich der Hyperlinks.
 
Zuletzt bearbeitet von einem Moderator:
Du kannst die Reihenfolge der Dialogzeilen ganz einfach ändern. Markiere die gewünschte Zeile und verschiebe sie mit Pfeil-Rechts/Links-Tasten runter oder rauf.

In welche der sechs Zeilen Du die Bedingungen (Function Choice) einstellst ist egal. Du kannst auch die oberen 5 freilassen und nur die unterste verwenden- egal.

Nur die Reihenfolge der Text-Zeilen selbst ist wichtig. Du hast richtig beobachtet: was zuerst gesagt wird steht unten. Was danach gesagt werden soll darüber. Es würde nicht funktionieren wenn
Zeile 1
ohne Bedingung
"blabla"
Result:
Choice "weiter" 1

Zeile 2
function Choice = 1
"fortsetzung"

- nach jedem Weiter-Klick würde wieder Zeile 1 kommen. Du hängst in einer Endlos-Schleife.

Die auf Function Choice = 1 eingeschränkte Zeile muss also vor (über) der uneingeschränkten stehen.

Sieh nochmal zum Beispiel von gestern abend:

Beim ersten Durchlauf - gestartet durch klick auf Thema ("Almalexia") - ist die Function Choice zu diesem Thema ja nicht aktiviert worden. Daher wird die Zeile in der eine Choice als Bedingung gesetzt ist ignoriert und die nächste(darunter) die alle Bedingungen erfüllt (erst Zeile 5) wird ausgegeben.

Sobald der Spieler "erzählt was" oder "nichts" anklickt ist das beinahe als würde er erneut auf "Almalexia" klicken. Dann wird das Thema wieder von oben nach unten auf die nächste passende Zeile durchsucht aber die Bedingung Function Choice = X ist diesmal erfüllt, somit wird die Zeile, die der vom Spieler angeklickten Choice entspricht ausgegeben. Es könnte also "erzählt was"-> entspricht Choice 1 oder "nichts"-> entspricht Choice 9 sein.

Je nachdem ob Almalexia tot ist oder nicht wird bei klick auf "erzählt was" (Choice 1) mit Zeile 3 oder 4 fortgesetzt oder bei klick auf "nichts" (Choice 9 ) wird Zeile 1 ausgegeben weil der Compiler dann wieder von oben nach unten durchjagt und das nächste passende raussucht.

Zeilen 3/4 stellen den Spieler wieder vor die Wahl "weiter" 2 oder "Gesprächsende" 9. Er klickt auf eines der zur Auswahl stehenden Worte- wieder wird von oben nach unten auf eine passende Zeile durchsucht.

Die den Choices zugeordneten Worte sind egal. D.h. Du kannst hinschreiben:
Choice "weiter" 7 "abbrechen" 9
irgendwo anders
Choice "fortsetzen" 7 "Halt's Maul!" 9
7 bleibt 7 und 9 bleib 9. Wortlaut wirklich schegal.
 
Zuletzt bearbeitet:
Das hatte ich alles schon verstanden. Das Problem ist, dass es immer so ein nervigen Arbeitsaufwand bedeutet, alles durch zu kontrollieren, ob man auch jede Zeile richtig verküpft hat. Ach na ja egal ich mache mich jetzt rann. Was wirklich spannend wird ist, meine neu erstellten Dialoge, neu zu verlinken, sodass auch der richtige Link beim richtigen Topic ankommt. Aber danke erstmal für deine Hilfen bisher