Construction Set Dialoge einer Gruppe von NPCs zuordnen

Fellan

Freund des Hauses
Ein Tutorial dazu gibt es nicht, einen passenden Thread habe ich auch nicht gefunden, das nur mal vorweg. ;)

Ich möchte einer Gruppe von bestimmten NPCs Dialoge zuweisen. Dazu bin ich folgendermaßen vorgegangen:

  1. Eine Quest erstellt, Flag "Start Game Enabled" angeklickt. Keine Quest Stages, keine Quest Targets, keine Quest Conditions, einfach nur eine Quest mit "Start Game Enabled", Priority=10, sonst nichts
  2. Topics-Reiter: 13 neue Topics erstellt, einen, den der Spieler im Gespräch sieht, 12 weitere, die er dann als "Choices" bekommen soll
  3. Einer der 12 Choices ist dazu da, keinen Effekt zu haben und das Gespräch zu beenden, wenn man sich mal verklickt hat
  4. Sämtliche Choices haben ResultScripts, die sind aber schon alle kompiliert und das CS hat keine Fehler angezeigt
  5. Ich erstelle die Faction "RBDGiveBountyInfoFaction"
  6. Ich weise den NPCs, die später diese Dialoge haben sollen, die "RBDGiveBountyInfoFaction" zu
  7. Für alle neu erstellten Topics gibt es jetzt noch die Condition "GetInFaction==RBDGiveBountyInfoFaction"
Jetzt starte ich das Spiel, gehe zu den NPCs, die in der Faction sind, und siehe da: Geht nicht. Da auf der Quest aber noch ein Script liegt, der nur aktiv ist, wenn man ein Kopfgeld hat, gehe ich nach Bravil und haue ein paar Wachen auf den Kopf. Wieder zurück, aber die Topics sind noch immer nicht da.

Wenn ich den Script aus dem Quest entfernen würde bzw. ich einen neuen Quest erstellen würde, der keinen derartigen Script enthält bzw. einen anderen Script enthält, der Dialog funktionieren? Oder wo liegt mein Fehler bei der Erstellung und Zuweisung des Dialogs?
 
Hallo Fellan,

gib mal die Bedingung "GetIsPlayableRace == 1" in deine Quest ein und teste ob es dann funktioniert.

Gruß, Gert
 
Da auf der Quest aber noch ein Script liegt, der nur aktiv ist, wenn man ein Kopfgeld hat, [...]

Das verstehe ich nicht. Solange eine Quest läuft, ist auch das zugehörige Skript aktiv. Oder meintest Du das anders?

Wegen der fehlenden Dialoge: Hast Du daran gedacht, den ersten Topic auch irgendwo in einem Skript mittels AddTopic TopicID der Gesprächsauswahl des Spielers hinzuzufügen? Allein die Tatsache, dass der Topic in der Quest eingetragen ist reicht nicht aus. Die 12 Choices musst Du allerdings nicht extra "adden", die kommen dann von allein.

@Gert:
gib mal die Bedingung "GetIsPlayableRace == 1" in deine Quest ein

Das muss er nicht. Diese Bedingungen bei der Quest werden mittels AND mit den Bedingungen bei den einzelnen Topics verknüpft. Sind bei der Quest keine Bedingungen angegeben, gelten nur diejenigen der Topics.

Umgekehrt wäre es vielleicht sinnvoll die Fraktion bereits in den Bedingungen der Quest einzutragen, dann könnte Fellan sich das bei den einzelnen Topics sparen.

Grüße
Achim
 
Der Topic wird nicht mittels AddTopic hinzugefügt, nirgends. Wie würde denn der entsprechende Script aussehen? Würde der Script dauerhaft im Hintergrund laufen? Ich will, dass von Anfang an diese Topics, also das eine, das die Choices zur Auswahl gibt, von Anfang an bei den jeweiligen NPCs, die in der Faction sind, zu sehen ist. Wie erreiche ich das?
 
Ein eigenes Skript brauchst Du dafür nicht. So wie Du schreibst, hast Du ja bereits ein Questskript auf eben dieser Quest laufen. Darin z.B. könntest Du den Befehl unterbringen.

Code:
short Init

begin GameMode

   if Init == 0
      AddTopic TopicID

      ; ggf. weitere Initialisierungen

      set Init to 1
   endif
end

Im Grunde ist es aber ganz egal, in welchem Skript das AddTopic steht. Es muss lediglich irgendwo einmal ausgeführt werden.
 
Die Quest sieht der Spieler am Ende gar nicht, das ist sozusagen nur ein "Dummy" für die Script und eben die Topics. Da ich aber den Script nicht verändern will, werde ich wohl eine neue Quest mit deiner oben genannten Script erstellen.

Oder folgendes: Ist es möglich, bei Spielstart (egal ob Neustart oder Spiel laden) eine Script laufen zu lassen, die die Topics "addet" und dann nicht wieder auftaucht? So dass zwar die Topics in der Quest sind, aber von einem anderen Script "geaddet" werden, der beim Spielstart einmal anläuft, seine Arbeit erledigt und "verschwindet"? Wie würde ein solcher Script aussehen, oder ist sowas nicht möglich?
 
Weiß denn niemand einen Script, der Topics unabhängig von allem anderen "addet" und das direkt beim ersten Spielstart tut?

edit: Andere Frage: Gibt es eine Funktion, die es ermöglicht, Topics wieder zu LÖSCHEN (die Möglichkeit, sie danach wieder zu "adden", muss aber weiterhin bestehen!) bzw. mit einem anderen zu ersetzen?

edit²: Habe mir jetzt selbst einen Script erstellt und wundere mich doch sehr, dass das funktioniert:

Code:
scriptname RBDAddTopicsScript

short FirstRun

begin gamemode || menumode

if ( (FirstRun == 0) && (GetQuestRunning CharacterGen == 0))
    set FirstRun to 1
    AddTopic RBDBountyRegionMainT
endif

end
 
Zuletzt bearbeitet:
Mir ist immer noch nicht ganz klar, warum Du das unbedingt so kompliziert haben willst, mit dem extra Skript nur dafür, diesen einen Topic zu adden. Aber jeder so, wie er mag. :)

Und nein, man kann Topics m.W. nicht wieder entfernen. Wenn sie später nicht in der Gesprächsauswahl des Spielers erscheinen sollen, musst Du das über die Conditions des Topics regeln. Du könntest z.B. im Questskript eine Variable deklarieren und deren Wert mittels GetQuestVariable in den Conditions abfragen. Situationsabhängig setzt Du den Wert der Variable dann im Skript entsprechend.
 
Vielleicht, weil es die einzige Methode ist, die ich verstehe. Egal, so klappt es. Sobald das Spiel zum ersten mal mit dem Plugin zusammen gestartet wird, werden auch die Topics hinzugefügt. Perfekt.