Maniac Mansion Mania Forum

MMM-Werkzeugkiste => Technik => Thema gestartet von: 1mal_volltanken am 06. Mai 2009, 12:40:39

Titel: Random für Unhandled
Beitrag von: 1mal_volltanken am 06. Mai 2009, 12:40:39
Hallo Leutz!

Wollte mal das Unhandled-Script etwas überarbeiten, so dass der Charakter auf jeweilige Aktion nicht immer das selbe sagt.
Ich hab das zunächst einmal mit der Aktion "CLOSE" gemacht, allerdings hat es dazu geführt, dass er bei der Aktion "Schließe" nun gar keinen Kommentar mehr abgibt.
Ich zeige Euch mal den Quellcode:
if (UsedAction (A_CLOSE))
    {
      int ran1=Random(4);
      if (GetGlobalInt(ran1 == 0))  DisplaySpeech (GetPlayerCharacter (), "Hier ist nichts zum zumachen.");
      if (GetGlobalInt(ran1 == 1))  DisplaySpeech (GetPlayerCharacter (), "Ähh...nein!");
      if (GetGlobalInt(ran1 == 2))  DisplaySpeech (GetPlayerCharacter (), "Das klappt so nicht.");
      if (GetGlobalInt(ran1 == 3))  DisplaySpeech (GetPlayerCharacter (), "Keine gute Idee.");
      if (GetGlobalInt(ran1 == 4))  DisplaySpeech (GetPlayerCharacter (), "Ich sollte mir etwas anderes überlegen!");
    }

Wer findet den Fehler?
Danke schon mal im voraus für die Hilfe. ;)

BG
der Volltanker

Titel: Re: Random für Unhandled
Beitrag von: Bòógieman am 06. Mai 2009, 12:57:24
je nachdem was du eigentlich vorhast solltest du entweder das GetGlobalInt vor dem == vergleich entfernen oder der funktion nur ran1 übergeben

== liefert Bool (true oder false) zurück, GetGlobalInt erwartet aber einen ganzzahligen index

EDIT: oder hast du gar die klammern falsch gesetzt?  ???
Titel: Re: Random für Unhandled
Beitrag von: 1mal_volltanken am 06. Mai 2009, 13:17:42
Top!

Ich habe einfach das GetGlobalInt entfernt und die 2 überschüssige Klammern entfernt und es funktioniert! ;)

Grundsätzlich kann man sich auch wohl die ganzen GetGlobalInts und SetGlobalInts schenken, denn "Int" ist ebenso gut und obendrein einfacher und weniger fehleranfällig. ;)


BG
der Volltanker

Titel: Re: Random für Unhandled
Beitrag von: Endres am 06. Mai 2009, 13:24:02
Einmal in AGS 3.x konform: ;)
if (UsedAction(eActClose)){
  int ran1=Random(4);
  if(ran1==0)player.Say("Hier ist nichts zum zumachen.");
  else if(ran1==1)player.Say("Ähh...nein!");
  else if(ran1==2)player.Say("Das klappt so nicht.");
  else if(ran1==3)player.Say("Keine gute Idee.");
  else if(ran1==4)player.Say("Ich sollte mir etwas anderes überlegen!");
}
else Unhandled();