erst was nehmen wenn was benutzt wurde

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
der_Der

erst was nehmen wenn was benutzt wurde

Beitrag von der_Der »

ich habe folgendes problem:
ich möchte dass sich ein schlüssel der an einemn kaugummi festgeklebt ist est nehemn lässt wenn ein andere gegenstand mit dem schlüssel benutzt wurde! :evil:
Totoro
Profi-Abenteurer
Profi-Abenteurer
Beiträge: 915
Registriert: 26.07.2003, 19:10
Wohnort: Osaka

Beitrag von Totoro »

Variable einrichten, Anfangswert steht auf 0, wenn der andere Gegenstand damit benutzt wurde Wert auf 1 setzen, beim nehmen Variable abfragen, wenn der Wert auf 0 steht den Charakter etwas sagen lassen "Der klebt ja fest", wenn der Wert auf 1 steht das Objekt bzw. den Hotspot deaktivieren und den Inventory-Gegenstand dem Inventory hinzufügen.
der_Der

Beitrag von der_Der »

ja hab ich ja aber irgendiwe geht das net...was heißt "beim nehmen Variable abfragen"? :x
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Am Anfang des room scripts:

Code: Alles auswählen

int kaugummi;
Bei Use Inventory on Object (Schlüssel):

Code: Alles auswählen

if (character [GetPlayerCharacter ()].activeinv == x) {
kaugummi = 1;
// andere Anweisungen wie DisplaySpeech...
}
x= Zahl des "anderen Gegenstandes"


Bei Interact object (Schlüssel):

Code: Alles auswählen

if (kaugummi == 1) {
AddInventory (y);
}
else {
DisplaySpeech (EGO, "Er klebt fest");
}
y = Zahl des Schlüssels (nicht das Objekt, der Inventargegenstand)

Funktioniert aber nur, wenn du noch eine der älteren Versionen von AGS benutzt (< 2.7).

In AGS ist übrigens ein Handbuch integriert, da könnte man ja auch mal einen Blick reinwerfen :roll: . Variablen wirst du ohnehin immer wieder benötigen.
der_Der

Beitrag von der_Der »

das habe ich ja auch...ich benutze den mi2-gui kann das was damit zutun haben? ich habe nur wenn die variable auf so und so is sagt der nur "ich kann das nicht nehmen" und wenn auf ner anderen is hab ich im script geschriben: Addinventory(4); objactoff(0);
Benutzeravatar
Campusanis
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 108
Registriert: 06.01.2003, 13:22
Kontaktdaten:

Beitrag von Campusanis »

Ich habe ein ähnliches Problem. Das oben beschriebene hätte ich noch lösen können. Aber was ist, wenn sich das Rätsel in zwei verschiedenen Räumen abspielt und dabei kein Inventargegenstand vergeben wird?
Es sieht also so aus:
Ein Objekt in Raum A soll zu einem anderen werden, wenn in Raum B etwas bestimmtes gemacht wurde.
Ich kann die Variable ja dann nicht in irgendeinem Room Script initialisieren. Wo mach ich das denn dann?

Bin relativ neu in AGS Scripting, habe nur Erfahrung in Webscripten und Anfängerjava.
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Dafür gibt es globale Variablen.
Bis AGS 2.6x:

Code: Alles auswählen

SetGlobalInt(Nummer, Wert); 
und

Code: Alles auswählen

GetGlobalInt(Nummer);
Danach: Keine Ahnung :wink: .

Ich wiederhole mich nur ungern, aber in AGS ist ein Handbuch integriert (nicht böse gemeint) :wink:.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Danach: genauso.

Man kann aber auch eigene globale Variablen verwenden, einfach mal in der Hilfedatei bei import bzw. export nachschauen.
Use gopher repellent on funny little man
Benutzeravatar
AlphaBolley
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 53
Registriert: 07.03.2006, 15:52
Wohnort: Iserlohn
Kontaktdaten:

Beitrag von AlphaBolley »

@der_Der:
Was genau läuft denn jetzt falsch? Sagt der Charakter in jeder Situation "ich kann das nicht nehmen"?

Wenn du es wie von Floyd beschrieben gemacht hast, sollte es eigentlich funktionieren.
der_Der hat geschrieben: Addinventory(4); objactoff(0);
=> objectoff(0)
Ich denke mal, das ist nur ein Schreibfehler hier im Forum, denn sonst hättest du einen Übersetzungesfehler bekommen.
Sollte also nicht das Problem sein.

In den neuen AGS-Versionen hieße der Befehl übrigens

Code: Alles auswählen

object[0].Visible = false;
Aber die alten Befehle sollten eigentlich auch funktionieren
100,5% Sinnlos
Antworten