Maniac Mansion Mania Forum
MMM-Werkzeugkiste => Technik => Thema gestartet von: Bummels am 21. Januar 2011, 22:58:57
-
Ich halte mich an das Ags Handbuch, nur wenn ich wie darin beschrieben [ags]// script for hotspot1: LOOK AT HOTSPOT
if (my_counter == 0) {
Display("You see a bookshelf.");
}
if (my_counter == 1) {
Display("Looking closer, you see a book called Hamlet.");
}
if (my_counter == 2) {
Display("There is also a book called Harry Potter.");
}
if (my_counter == 3) {
Display("There is nothing else of interest on the shelf.");
}
if (my_counter < 3) {
my_counter += 1;
}[/ags] schreibe, bekomme ich an meiner Variabelen kein + drauf, also es bringt nichts.
Ich habe es dann so probiert:
[ags]int my_counter
if (my_counter == 0){
player.Say (" Ein Blatt");
}
my_counter += 1;
if (my_counter == 1) {
player.Say ("Ein tolles Platt! ");
}
usw. usw.[/ags]
Aber dann geht der das durch, d.h. er macht keine Pause. Der sagt sofotz "Ein Blatt" und "Ein tolles Platt!" hintereinander, ich muss garnicht nochmal gucken.
Kann mir wer helfen?
-
Logisch. Verschieb mal die Zeilen, in denen du my_counter hochzählst in die jeweilge if-Abfrage mit rein. Außerdem musst du die ifs mit einem else verbinden. Will sagen:
[ags]
int my_counter;
if (my_counter == 0)
{
player.Say (" Ein Blatt");
my_counter += 1;
}
else if (my_counter == 1)
{
player.Say ("Ein tolles Platt! ");
my_counter += 1;
}
.
.
.
[/ags]
Ich hoffe das funktioniert. Habe noch nicht viel Scriptingerfahrung.
-
[ags]int my_counter;
if (my_counter == 0){
player.Say ("Ein Blatt.");
my_counter += 1;
}
else if (my_counter == 1) {
player.Say ("Ein tolles Platt!");
my_counter += 1;
}[/ags]
Und er sagt immer nur "Ein Blatt".
Was mache ich falsch?
Ich benutzt ags 2.7.2.
Habe mal was von importieren und exportieren von Global-Script gehört. Hat das was damit zutun? habe nichts gemacht...
Edit:
Habe int exportiert / importiert. Geht jetzt :)
Danke an MacGyver; so gehts richtig.
-
Du musst das Hochzählen nicht in den if-Block mit reinnehmen.
Das Problem ist, dass Du die Variable innerhalb der Funktion deklariert hast, d.h. sie wurde jedesmal nach Beenden der Funktion gelöscht und beim nächsten Mal wieder mit 0 initialisiert.
Schreib einfach die Deklaration vor die Funktion:
[ags]int my_counter;
function dingens() {
// script for hotspot1: LOOK AT HOTSPOT
if (my_counter == 0) {
Display("You see a bookshelf.");
}
if (my_counter == 1) {
Display("Looking closer, you see a book called Hamlet.");
}
if (my_counter == 2) {
Display("There is also a book called Harry Potter.");
}
if (my_counter == 3) {
Display("There is nothing else of interest on the shelf.");
}
if (my_counter < 3) {
my_counter += 1;
}
}[/ags]
Mit import/export machst Du die Variable global, d.h. sie kann in jedem Skript verändert und gelesen werden. Das braucht man natürlich auf des Öfteren, ist hier aber nicht nötig.