Maniac Mansion Mania Forum
MMM-Werkzeugkiste => Technik => Thema gestartet 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
-
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? ???
-
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
-
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();