Maniac Mansion Mania Forum

MMM-Werkzeugkiste => Technik => Thema gestartet von: blount am 13. April 2010, 00:55:21

Titel: Mehrfachdialoge Deluxe :-)
Beitrag von: blount am 13. April 2010, 00:55:21
Ich wüsste gerne wie ich Mehrfachdialoge anlege. Konkret meine ich damit:

- Schau an "Radio" - Antwort: Es ist ein altes Radio ohne Funktion
- Schau an "Radio" - Antwort: Wie gesagt es ist ein altes Radio
- Schau an "Radio" - Antwort: Es ist und bleibt ein altes Radio
- Schau an "Radio" - Antwort: Ich sag dazu nix mehr!
- Benutze Lichtschalter (Licht geht aus (weiß wie das geht))
- Schau an "Radio" - Antwort: Es ist zu Dunkel um etwas zu sehen, aber ich denke das müsste das Radio sein.

im AT Forum steht etwas in der Art, das aber nicht wirklich Mehrfach Dialoge darstellt (da werden objekte an und abgeschlatet, aber ich will ja für ein Objekt bzw. Hotspot mehrere Dialoge machen).
Titel: Re: Mehrfachdialoge Deluxe :-)
Beitrag von: Bòógieman am 13. April 2010, 08:06:58
mach dir eine globale int variable deren wert die anzahl der ausgeführten "schau an radio" speichert
beim A_LOOK_AT überprüfst du dann ganz einfach diese variable mit if else auf alle möglichen zustände und gibst je nach wert einen anderen kommentar
und für das licht machst du eine globale bool oder überprüfst irgendwie sonst den zustand des lichts

zB
if(gl_bLightOff)    // ist das licht ausgeschaltet?
  player.Say("Es ist zu Dunkel um etwas zu sehen, aber ich denke das müsste das Radio sein.");
else if(gl_iLookAtRadio == 0)    // erstes mal schau an
  player.Say("Es ist ein altes Radio ohne Funktion.");
else if(gl_iLookAtRadio == 1)   // zweites mal schau an
  player.Say("Wie gesagt es ist ein altes Radio.");
else if(gl_iLookAtRadio == 2)   // drittes mal schau an
  player.Say("Es ist und bleibt ein altes Radio.");
else if(gl_iLookAtRadio >= 3)   // alle schau an ab dem dritten mal
player.Say("Ich sag dazu nix mehr!");
gl_iLookAtRadio++;

ich weiß jetzt nicht, ob AGS den switch-befehl unterstützt, aber wenn, dann kommt gleich ein post von jemand anders der sich über den if-else code beschwert :P ;)
Titel: Re: Mehrfachdialoge Deluxe :-)
Beitrag von: rulaman am 18. April 2010, 21:56:14
AGS kann noch keinen switch-Befehl, von daher...

Ich persönlich würde noch die Befehle klammern.

if(gl_bLightOff)    // ist das licht ausgeschaltet?
{
  player.Say("Es ist zu Dunkel um etwas zu sehen, aber ich denke das müsste das Radio sein.");
}
else if(gl_iLookAtRadio == 0)    // erstes mal schau an
{
  player.Say("Es ist ein altes Radio ohne Funktion.");
}
else if ...

Fügt man später noch einen Befehl hinzu, läuft man nicht Gefahr den Zweiten nicht wie gewünscht ausgeführt zu bekommen, besonders beim letzten else.
Außerdem erhöht es die Übersichtlichkeit. Aber das muss jeder selber wissen.
Titel: Re: Mehrfachdialoge Deluxe :-)
Beitrag von: KhrisMUC am 20. April 2010, 09:11:47
Da gabs auch mal ein praktisches Modul:
http://www.bigbluecup.com/yabb/index.php?topic=27947.0