PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Selbsterstellte Dialoge funktionieren nicht



Nimbus
20.06.2009, 17:35
Wie der Titel schon sagt funktionieren bei mir die Dialoge nicht.

Also ich geh ganz normal im CS auf Quests, erstell da ein neues Topic stell alles im ersten Reiter ganz normal ein. Dann geh ich auf Topics erstell da auch neu, geb dafür einen neuen Text, sag wer dieses Topic haben soll und des erscheint net ingame.

Nun des ungefähre Aussehen:

EditorId: Hunter
TopicText: Jäger
Info Flags #R... NPC Disposition Conditions
Die Jagd... 1 Hunter GetIsID Hunter==1

Response Text
Die Jagd ist nicht einfach, man braucht viel Ausdauer.

Result Scripts
-

Conditions
Target FunctionName FunctionInfo Comp Value
no GetIsID Hunter == 1

Master of Worlds
21.06.2009, 02:24
Wie der Titel schon sagt funktionieren bei mir die Dialoge nicht.

Also ich geh ganz normal im CS auf Quests, erstell da ein neues Topic stell alles im ersten Reiter ganz normal ein. Dann geh ich auf Topics erstell da auch neu, geb dafür einen neuen Text, sag wer dieses Topic haben soll und des erscheint net ingame.

Nun des ungefähre Aussehen:

EditorId: Hunter
TopicText: Jäger
Info Flags #R... NPC Disposition Conditions
Die Jagd... 1 Hunter GetIsID Hunter==1

Response Text
Die Jagd ist nicht einfach, man braucht viel Ausdauer.

Result Scripts
-

Conditions
Target FunctionName FunctionInfo Comp Value
no GetIsID Hunter == 1

Was genau funktioniert denn nicht ? Kannst du die Mod dann nicht mehr speichern, erscheinenen die Dialoge nicht ingame bei deinem Jäger usw. ? :)

Mfg Master of Worlds

Nimbus
21.06.2009, 07:39
ups vergessen also die Dialoge erscheinen nicht ingame ich kann es ganz normal speichern

Muecke49
21.06.2009, 08:52
Jedes Topic muss dem NPC auch erst hinzugefügt werden.

Dafür darfst Du jedoch im Topicfenster nicht die Funktion "Add Topic" ganz rechts im Fenster verwenden. Die ist leider verbuggt.:( (Add Choice kann man übrigens verwenden.)

Am besten beim Greeting im Resultscriptfenster das Topic mit folgendem Script hinzufügen:
"MeinNPCReferenz".addTopic "MeinTopic"

Oder Du bringst diese Zeile in einem anderem Script unter, damit das Topic zu einem passenden Zeitpunkt erscheint.:)

bg2408
21.06.2009, 09:18
"MeinNPCReferenz".addTopic "MeinTopic"

Referenz kann weggelassen werden, es ist immer AddTopic TopicID, Rest wird ignoriert :).

SirTroy
21.06.2009, 09:29
Kann es vllt auch sein das du am Anfang eine Condition gesetzt hast die nicht erfüllt wird?
Ich hatte z.B. ausversehen mal eine 0 anstatt eine 1 bei GetIsPlayableRace gesetzt und so hat die Quest garnicht erst angefangen.

Nimbus
21.06.2009, 13:14
@ Mücke ich hab es über Script gemacht
@ SirTroy ich schau mal nach

Schattenläufer
21.06.2009, 13:33
Also das Hauptproblem ist erstmal, dass das Topic nicht auftaucht. Muecke49s Antwort war schon genau richtig, ich werde versuchen das noch ein wenig auszuführen.

Erstmal ein kleiner Tipp: Zu Testzwecken würde ich dir empfehlen, dass du einfach alle Conditions, die du eingegeben hast, löschst. So kannst du ganz klar und deutlich sehen, ob das Script funktioniert hat, das du geschrieben hast.

Noch ein Tipp: Es gibt eine Mod namens "Lore Dialogue 300", kennst du die? Als ich angefangen habe, Dialoge zu schreiben, habe ich mir für die technischen Aspekte einfach ein paar Mal diese Mod angesehen. Denn die Mod deckt viele Bereiche des Dialogsystems ab.
Download bei TESNexus (http://www.tesnexus.com/downloads/file.php?id=25091)
Wenn du diese Mod im CS öffnest, wirst du bei Quests irgendwo die eine Quest finden, in der die Topics der Mod sind.

Bei dieser Mod kannst du auch gut sehen, wie das Hinzufügen von Topics funktioniert. Sieh dir dazu das Script an, das der Quest gegeben wurde (im ersten Reiter ist irgendwo so ein Scroll-Down-Menü, bei dem ein Scriptname zu sehen ist - rechts davon ist ein Button, mit dem du das Script öffnen kannst).
Du wirst sehen, dass das Script im Grunde ganz simpel ist, da immer wieder das Gleiche geschieht.

Ich habe dieses Script mal grob für dich hingeschrieben. Es sieht so aus:


ScriptName NimbusHunterTopicScript ; kann man frei wählen

short DoOnce ; Siehe (1)

Begin GameMode

If DoOnce = 0 ; Siehe (3)
AddTopic Hunter ; Der Spieler kann nun das Topic "Hunter" ansprechen
Set DoOnce to 1 ; Siehe (4)
EndIf ;Siehe (5)
End

Erklärungen:
1) Am Anfang wird eine Short-Variable erstellt (die den Namen DoOnce trägt, aber das ist egal).
2) Danach wird dem Script gesagt, dass es nur im GameMode laufen soll.
3) Die "If ..."-Zeile sagt im Grunde: Wenn die gerade eben erstellte Variable gleich 0 ist (wenn also noch nichts mit ihr passiert ist), dann führe eine Reihe von Befehlen aus.
4) Der letzte dieser Befehle ist "Set DoOnce to 1". Was bedeutet das? Naja, die Variable DoOnce wird auf 1 gesetzt, das heißt das nächste Mal, wenn das Script bei (3) abfragt, ob die Variable gleich 0 ist, wird es feststellen, dass dem nicht so ist, und folglich alle Befehle innerhalb der Klammer "If..."/"EndIf" überspringen. Das Skript wird also effektiv nur ein einziges Mal ausgeführt.
(5) Am Ende der Liste von Befehlen steht die "EndIf"-Zeile; die sagt, dass die darunterstehenden Befehle nicht mehr diese Bedingung erfüllen müssen.
(6) Der einzige Befehl, der darunter steht, ist der "End"-Befehl. Der sagt nur: Hier ist der Teil des Skripts, der im GameMode laufen soll, zu Ende (in diesem Fall ist das aber das komplette Skript!)

Das kannst du im Grunde direkt kopieren und als neues Script speichern.

Was passieren wird: Egal welchen NPC du ansprichst, er wird das Thema "Hunter" haben. Warum? Na weil du hoffentlich zu Testzwecken vorher alle Bedingungen von deinem Thema entfernt hast. Wenn das Thema erscheint, dann ist alles in Butter. Du kannst dann wieder die Conditions hinzufügen, so dass nur noch der eine NPC aus deiner Mod dieses Thema anbietet.

bg2408
21.06.2009, 13:45
Das Skript wird also effektiv nur ein einziges Mal ausgeführt.Ähnlich wie in Morrowind wird bis zum return-Statement das gesamte Script durchgearbeitet. Nur sorgt der DoOnce-Schalter dafür, dass die Operation nicht mehrfach ausgeführt wird - das Script nudelt aber fröhlich weiter (und verbraucht Ressourcen).

Lösung: Am Ende Stopquest QUESTID einfügen.

Schattenläufer
21.06.2009, 15:14
Lösung: Am Ende Stopquest QUESTID einfügen.
Problem: Dann verschwinden aber auch die Dialoge aus dieser Quest wieder.
Also, steht zumindest so beim CS Wiki, ich habs selbst noch nie ausprobiert. Machst du das so bei Dialog-Quests?

bg2408
21.06.2009, 15:36
Problem: Dann verschwinden aber auch die Dialoge aus dieser Quest wieder.
Also, steht zumindest so beim CS Wiki, ich habs selbst noch nie ausprobiert. Machst du das so bei Dialog-Quests?
Deshalb erstellt man ja auch zwei Quests: Eine mit Script, eine ohne - und in der ohne liegen dann die Dialoge.

Grundsätzlich sollten Quests, die Dialoge haben, niemals ein laufendes Script haben. Laufende Scripts gehören immer und ohne Ausnahme in "dummy"-Quests. Erspart eine Menge Arbeit ;).

Schattenläufer
21.06.2009, 16:56
:D Okay, das macht Sinn. Wieder was gelernt - dann werde ich gleich mal meine eigenen Dialog-Quests ein bisschen umgestalten.

Nimbus
23.06.2009, 13:37
sry das ich solang auf mich warten lasse. ich hab ein tut durchgearbeitet in dem steht das mein Script reichen sollte (abgesehen natürlich davon das kein Topic genannt ist).

Nimbus
08.07.2009, 20:52
so jetzt hab ich es endlich geschafft zumindest fast, denn noch immer liegt irgenwo ein Fehler vor >:(. wenn ich ein eigenes GREETING erstell und einen eigenen Char und dem Char des Greeting zuteile benutzt der des net, statdessen sagt er "Ich habe keine eigene Begrüßung" oder so ähnlich wenn ich es aber irgendeinem anderen Char zuteile benutzt er des weiß jemand warum?

Muecke49
09.07.2009, 08:46
Edit: Erste Antwort gelöscht, da erst den Beitrag falsch verstanden......*schäm*


Hrmm, hat dieser NPC eine eigene Rasse? Wenn er dieses Greeting nicht nutzt, doch andere schon, dann stimmt noch irgendwas mit den Conditions nicht. Das müssen nicht mal die Conditions des Greetings sein, es können auch die Conditions der Quest sein. Wenn Du dort eine Condition mit PlayableRace eingegeben hast, kann da der Hund schon begraben liegen, falls dieser NPC keine der Vanillarassen hat, sondern eine eigens erstellte.
Check also mal die Conditions im Greeting und vor allem auch in der Quest, welche den Dialog trägt.

Nimbus
09.07.2009, 17:35
Conditions stimmen ich hab zum Test mal einfach einen Waldelf erstellt -> die Condition Playable Race stimmt also sonst stimmen sie auch die einzige weitere Bedinung ist nämlich GetIsId und dann ID meines Test NPC und Value ist auf 1

Rosebud
09.07.2009, 20:24
Wenn dein Char eine eigene Rasse ist, musst du ihm bei der Race-Erstellung, ich glaube auf der ersten Seite (wenn nicht, geh die anderen Reiter durch) bei Voice, die Stimme einer Oblivion-Rasse (also Redguard oder Nord z.B.) zuordnen. Oder du machst für deinen Char eine eigene Sprach-Aufnahme, ansonsten kommt immer der unten genannte Spruch.

Nimbus
09.07.2009, 21:27
ich hab ne eigene Sprachaufnahme gemacht

Muecke49
10.07.2009, 10:39
Hrmm, die Quest mit dem Greeting ist auch bereits am laufen?
Wenn die Quest noch nicht aktiv ist,kann der char auch das Greeting noch nicht nutzen.

Liegt auf dem NPC ein Script oder kommt der NPC in einem anderen Script vor?
(das ist zwar weit hergeholt, doch so langsam gehen mir die Optionen aus, warum er das Greeting nicht nutzen sollte, wenn es bei anderen NPCs auch schon geklappt hat.)

Nimbus
10.07.2009, 14:10
ne es liegt kein Script vor aber ich probier mal was aus

EDIT: hab´s geschafft is nur bei diesem einen PlugIn net gegangen hab eine neue TestPlugIn gemacht dann gings