"Topf"-Abfrage
- ManiakFreak
- Tastatursteuerer
- Beiträge: 510
- Registriert: 01.06.2005, 16:13
- Wohnort: Thun (CH)
- Kontaktdaten:
"Topf"-Abfrage
Ich möchte gerne zwei Gegenstände (eine Banane und einen Apfel) bei AGS in einen Topf tun. Aber ich will, dass man die Reihenfolge des "Reintuns" selbst wählen kann, aber am Schluss in beiden Fällen eine Meldung kommt, wie z.B.: "Hmmmm.... Leckeres Birchermüsli!"
Ich weiss, dass man irgendwie eine Abfrage braucht, weiss aber nicht nach welchem Begriff ich im AGS-HELP fragen soll.
Kann mir jemand helfen?
Ich weiss, dass man irgendwie eine Abfrage braucht, weiss aber nicht nach welchem Begriff ich im AGS-HELP fragen soll.
Kann mir jemand helfen?
Nein, Karussell fahren brauche ich nicht, mir wird schon allein von der Erdrotation schlecht.
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
global script:
script header:
Jetzt hast Du zwei globale Variablen, mit denen Du überprüfen kannst, wie weit das Müsli ist.
room script:
Diese Funktion wird nach jeder Zutat aufgerufen und überprüft, ob das Müsli fertig ist.
any_click_on topf:
Und das ist der code für den Topf.
Code: Alles auswählen
int zutaten;
int muesli_fertig;
export zutaten, muesli_fertig;
Code: Alles auswählen
import int zutaten;
import int muesli_fertig;
room script:
Code: Alles auswählen
function muesli_check() {
if (zutaten==3) {
muesli_fertig=1;
player.Say("Hmmmm.... Leckeres Birchermüsli!");
...
}
}
any_click_on topf:
Code: Alles auswählen
...
[else] if (UsedAction(LOOK_AT)) {
...
if (zutaten==0) {
player.Say("Da sind nur die Körner drin.");
}
else if (zutaten==1) {
player.Say("Der Apfel ist drin, fehlt noch die Banane.");
}
else if (zutaten==2) {
player.Say("Die Banane ist drin, fehlt noch der Apfel.");
}
else if (zutaten==3) {
player.Say("Das Müsli ist endlich fertig.");
}
}
else if (UsedAction(A_USE_INV)) {
if (player.activeinv==iApfel.ID) {
...
player.LoseInventory(iApfel);
zutaten++;
muesli_check();
}
else if (player.activeinv==iBanane.ID) {
...
player.LoseInventory(iBanane);
zutaten++;
zutaten++;
muesli_check();
}
...
}
Zuletzt geändert von KhrisMUC am 26.10.2005, 18:56, insgesamt 1-mal geändert.
Use gopher repellent on funny little man
-
- Tastatursteuerer
- Beiträge: 554
- Registriert: 28.09.2005, 19:13
Ich würde sicherheitshalber nicht einfach hochzählen, da sich hier eine Fehlerquelle einschleichen kann, wenn man mehrere Äpfel bekommen kann (sei es gewollt oder durch einen Fehler). Dann könnte man nämlich auch mit 2 Äpfeln ein Apfel-Banane-Müsli erstellen.
Ich würde die int für die Zutaten auf folgende Werte setzen:
0 = keine Zutat drin
1 = Apfel drin
2 = Banane drin
3 = Beides drin/Müsli fertig
Bei "Benutze Apfel mit Topf":
Bei "Benutze Banane mit Topf":
Auf diese Weise kann man auch die Figur sagen lassen, welche Zutat sich bereits im Topf befindet, wenn sie diesen anschaut.
"Müsli fertig" müsste keine eigene int sein, hier kann man einfach überprüfen ob int zutaten auf 3 steht.
Ich würde die int für die Zutaten auf folgende Werte setzen:
0 = keine Zutat drin
1 = Apfel drin
2 = Banane drin
3 = Beides drin/Müsli fertig
Bei "Benutze Apfel mit Topf":
Code: Alles auswählen
if (zutaten==0) {
-Apfel aus Inventory entfernen-
zutaten = 1;
}
else if (zutaten==1) {
-Figur sagen lassen: "Apfel ist schon drin"-
}
else if (zutaten==2) {
-Apfel aus Inventory entfernen-
-Figur sagen lassen: "Hmmmm.... Leckeres Birchermüsli!"-
zutaten = 3;
}
else if (zutaten==3) {
-Figur sagen lassen: "Mein Müsli ist doch schon fertig."-
}
Code: Alles auswählen
if (zutaten==0) {
-Banane aus Inventory entfernen-
zutaten = 2;
}
else if (zutaten==1) {
-Banane aus Inventory entfernen-
-Figur sagen lassen: "Hmmmm.... Leckeres Birchermüsli!"-
zutaten = 3;
}
else if (zutaten==2) {
-Figur sagen lassen: "Banane ist schon drin"-
}
else if (zutaten==3) {
-Figur sagen lassen: "Mein Müsli ist doch schon fertig."-
}
"Müsli fertig" müsste keine eigene int sein, hier kann man einfach überprüfen ob int zutaten auf 3 steht.
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
1. ich wollte es elegant machen
2. ich bin eben davon ausgegangen, dass das Spiel fehlerfrei programmiert wird und man somit keine zwei oder mehr Äpfel nehmen kann
3. in deinem code müssen ein paar "else"s vor die ifs, sonst gibts fehler
btw: hab meinen code editiert
2. ich bin eben davon ausgegangen, dass das Spiel fehlerfrei programmiert wird und man somit keine zwei oder mehr Äpfel nehmen kann
3. in deinem code müssen ein paar "else"s vor die ifs, sonst gibts fehler
btw: hab meinen code editiert
Use gopher repellent on funny little man
- ManiakFreak
- Tastatursteuerer
- Beiträge: 510
- Registriert: 01.06.2005, 16:13
- Wohnort: Thun (CH)
- Kontaktdaten:
- Dusty D.
- Hobby-Archäologe
- Beiträge: 153
- Registriert: 18.04.2004, 20:03
- Kontaktdaten:
Wofür gibbt datt eigentlich bitweise operatoren, Kinners?!
Bei "benutze apfel mit topf":
Bei "benutze banane mit topf" dann entsprechend mit OR 2
Dann könnte man noch den muesli-check einbauen:
"Schau an topf":
Nebeneffekt: Man hat jederzeit in der GlobalInt(x) parat, ob(!=0) und welche(||y) Items im Topf sind und ob das Muesli fertig(>NoOfItemsForMuesli) ist oder nicht.
Bei "benutze apfel mit topf":
Code: Alles auswählen
int temp=GetGlobalInt(x); // x=zutaten im topf
if (temp || 1) {
DisplaySpeech(ego,"Apfel ist schon genug drin!");
}
else {
SetGlobalInt(x,temp|1); // apfel in topf
LoseInventory(apfel);
}
Dann könnte man noch den muesli-check einbauen:
"Schau an topf":
Code: Alles auswählen
DisplaySpeech(ego,"Im Topf sehe ich...");
if(GetGlobalInt(x)||1) DisplaySpeech(ego,"Apfel...");
if(GetGlobalInt(x)||2) DisplaySpeech(ego,"Banane...");
if(GetGlobalInt(x)>2) DisplaySpeech(ego,"Also quasi ein fertiges Muesli!");
if(GetGlobalInt(x)==0) DisplaySpeech(ego,"Nix!");
-
- Komplettlösungsnutzer
- Beiträge: 35
- Registriert: 17.06.2005, 14:22
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
Ja, weil | immer wahr wäre. Aber die Frage hat sich anscheinend schon geklärt.
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet