Autor Thema: Dialoge durch Variabeln beeinflussen  (Gelesen 8517 mal)

Offline judge

  • Bürger
  • Beiträge: 22
Dialoge durch Variabeln beeinflussen
« am: 30. März 2010, 13:16:07 Uhr »
Hallo Leute
ich habe mich vorgestern zum ersten Mal mit dem Geck beschäftigt, bin also totaler noob. Einige Tutorials habe ich mir schon angesehen - ich kann mittlerweile Häuser platzieren und mit der Außenwelt verbinden sowie Nav-Meshs und funktionierende Händler (dank Metzgers Tutorial) erstellen. 

Nun möchte ich einen einfachen Dialog erstellen in dem der NPC je nach Antwort des Spielers beim erneuten Ansprechen etwas anderes sagt. Ich habe mir überlegt, dass man dies durch die Abfrage von Variabeln regeln kann. Je nach dem, welche Antwort der Spieler wählt soll der Wert einer Variablen entsprechend gesetzt werden. Beim erneuten Ansprechen des NPC wird dann eben abgefragt, welchen Wert sie hat und dementsprechend erscheint dann der Text des NPC.

So hab ich mir das jedenfalls gedacht, in der Praxis klappt das bei mir natürlich nicht. Das dürfte wohl zum größten Teil daran liegen, dass ich mich mit Scripten eigentlich gar nicht auskenne und jetzt gerade meine ersten Erfahrungen mache. ..Ich hoffe, ihr könnt mir weiterhelfen, ich bin wie folgt vorgegangen (der Dialog ist auf die schnelle zusammengeschustert und dient nur dazu, mit der funktionnsweise überhaupt klar zu kommen).

Ich habe eine neue Quest erstellt und bei "Quest Data" folgendes Script eingefügt um überhaupt eine Variable zu definieren (eventuell habe ich da schon die ersten Fehler gemacht...)

scn MEINEQUESTSCRIPT
 
short MeineVariable

begin gamemode

end

Diese Variable soll nun je nach Dialogauswahl einen anderen Wert bekommen. (Momentan müsste der ja 0 sein, oder?)


Beim ersten Ansprechen erscheint folgender Dialog:
("say once" ist angeklickt)

SP: Hallo
NPC: Hallo, wie findest du meine Frisur?

Unter Choices habe ich "Auswahl1" sowie "Auswahl2" eingefügt.

Auswahl1 startet folgenden Dialog:
("say once" und "goodbye" ist angeklickt)

SP: Steht dir super!
NPC: Danke!
Unter "Result Script End" habe ich "set MeineVariable to 10" eingegeben. Es erscheint eine Fehler der sagt "Unknown variable 'MeineVariable'. Kann mir jemand sagen, was ich da falsch gemacht habe?

Auswahl2 startet folgenden Dialog:
("say once" und "goodbye" ist angeklickt)

SP: Sieht bescheuert aus.
NPC: Arschloch.
Unter "Result Script End" habe ich "set MeineVariable to 5" eingegeben. Gleicher Fehler wie oben.



Es gibt noch die zwei Topics "NPCErfreut" und "NPCBeleidigt" die je nach Antwort des Spielers beim erneuten Ansprechen des NPCs erscheinen sollen.

Bei "NPCErfreut" habe ich mir gedacht, dass bei "Result Script Begin" ne Abfrage wie "if meinevariable == 10" kommen muss um den Text zu zeigen, bei "NPCBeleidigt" dann eben "if meinevariable == 5"
Durch den obigen Fehler kann ich das aber noch nicht testen. Wäre das denn richtig oder habe ich da auch falsch gedacht?

Offline Metzger

  • Paladin
  • Beiträge: 719
  • Rattendompteur
    • Terminal 47 - Die LCARS-Datenbank
Re: Dialoge durch Variabeln beeinflussen
« Antwort #1 am: 30. März 2010, 14:44:27 Uhr »
Beim Result Script End musst du vorher noch angeben in welchem Script sich die Variable befindet. In deinem Fall wäre das "set MeineQuest.MeineVariable to 10". Außerdem musst du darauf achten dass du das Script als Questscript ausgewählt hast (zu finden im Scripteditor unter Script Type).
Variablen fragst du unter Conditions ab.

z.B.: 
Ja, die beiden anderen Topics kannst du mit der Variable ansteuern, aber halt unter Conditions und nicht unter Result Script.
« Letzte Änderung: 30. März 2010, 14:48:57 Uhr von Metzger »

Offline judge

  • Bürger
  • Beiträge: 22
Re: Dialoge durch Variabeln beeinflussen
« Antwort #2 am: 31. März 2010, 13:59:08 Uhr »
Ok, das mit “set meinequest.meinevariable” klappt und verursacht nun keine Fehlermeldung mehr, dafür schon mal danke.
Jetzt habe ich aber das Problem, dass das Spiel abstürzt sobald ich den NPC ein zweites Mal anspreche. Momentan sieht mein Testdialog so aus:

Greeting (sayonce ist markiert/ toplevel ist markiert)
NPC: Ich suche mein Lieblingsbuch, hilfst Du mir?      
-choice TextJa                                                          
-choice TextNein


TextJa
SP: Na klar.
NPC: Super, dann mach dich auf die Suche          
 -goodbye ist markiert
 -unter "result script end" meinevariable auf 10 setzen

TextNein
SP: Nee, lass mal.
NPC: Dann hau           
-goodbye ist markiert
 - unter "result script end"  meinevariable auf 5 setzen


Nachdem TextJa oder TextNein angezeigt wird, schließt der Dialog wie gewollt.
Beim erneuten Ansprechen des NPC sollte abhängig vom Wert der Variablen dann einer der beiden Dialoge erscheinen:


TextSuche (- unter condition wird abgefragt, ob meinevariable = 10 ist)
NPC: Mach dich wieder auf die Suche                                                           
 - goodbye ist markiert   

                  
TextNichtHelfen (-unter condition wird abgefragt, ob meinevariable = 5 ist)
NPC: Wenn Du mir nicht helfen willst, hau ab                                                 
 - goodbye ist markiert      


Der NPC sagt jedoch nur “Hallo” und dann stürzt das Spiel ab. Was habe ich falsch gemacht?

Offline Metzger

  • Paladin
  • Beiträge: 719
  • Rattendompteur
    • Terminal 47 - Die LCARS-Datenbank
Re: Dialoge durch Variabeln beeinflussen
« Antwort #3 am: 31. März 2010, 14:53:12 Uhr »
Da passt irgendwo wahrscheinlich eine Zuweisung nicht. Denn eigentlich müsste es klappen. Schau nach ob du sie dem richtigen NPC zugewiesen hast und dass unter Conditions "run on subject" ausgewählt ist. Außerdem ob die beiden Antworten unter greeting sind oder eigene topics. Bei mir hat es manchmal zu einem Fehler geführt wenn bei einem greeting goodbye aktiviert war.

Offline judge

  • Bürger
  • Beiträge: 22
Re: Dialoge durch Variabeln beeinflussen
« Antwort #4 am: 02. April 2010, 19:31:35 Uhr »
Mh, nachdem das mit den Variabeln einfach nicht funktionieren wollte, habe ich stattdessen einfach mit "set stage...." gearbeitet und diese Werte abgefragt und siehe da: es funktioniert. Keine Fehler mehr wenn ich meine selbst erstellten NPCs anspreche. Die Freude war jedoch von kurzer Dauer, denn jetzt stürzt FO3 jedes mal ab, wenn ich ein Gespräch mit einem anderen (nicht von mir erstellten) NPC  führen will.
Auf http://www.fallout3nexus.com/downloads/file.php?id=6665 hat anscheinend jemand das gleiche Problem mit seiner Mod:

*NOTE* Something with the conversations in this mod breaks the normal Fallout 3 conversation system. While this mod is loaded, you CANNOT speak with NPCs not directly associated with this mod without crashing Fallout 3 (including NPC companions).

Gibts irgendetwas, was man dagegen tun kann? Langsam frustet mich das Geck...

Offline Metzger

  • Paladin
  • Beiträge: 719
  • Rattendompteur
    • Terminal 47 - Die LCARS-Datenbank
Re: Dialoge durch Variabeln beeinflussen
« Antwort #5 am: 02. April 2010, 20:12:38 Uhr »
Am Besten ist du lädst die Datei irgendwo hoch. Dann kann ich sie mir mal ansehen.

Offline judge

  • Bürger
  • Beiträge: 22
Re: Dialoge durch Variabeln beeinflussen
« Antwort #6 am: 05. April 2010, 13:16:02 Uhr »
Am Besten ist du lädst die Datei irgendwo hoch. Dann kann ich sie mir mal ansehen.


Danke für das Angebot  #thumbsup aber ich hatte meine Testmod mittlerweile schon geschlöscht und noch mal ganz von vorne angefangen. Aus irgendwelchen Gründen funktionieren die Gespräche jetzt normal. Aber trotzdem danke.

Offline blatmalt

  • Outsider
  • Beiträge: 2
dialoge durch variabeln beeinflussen
« Antwort #7 am: 26. Dezember 2010, 22:14:53 Uhr »
ich hoffe mir kann jemand helfen, zB Metzger:
ich hab das gleiche wie judge beim thema  "dialogedurch variabeln beeinflussen" gemacht und durch die tipps von metzger verbessert und trotzdem kommt noch die gleiche Fehlermeldung. hat jemand ne ahnung warum???