Maniac Mansion Mania Forum
MMM-Werkzeugkiste => Technik => Thema gestartet 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).
-
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 ;)
-
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.
-
Da gabs auch mal ein praktisches Modul:
http://www.bigbluecup.com/yabb/index.php?topic=27947.0