Suche Tutorial

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

Suche Tutorial

Beitrag von Gast »

Ich suche ein Tutorial bei dem genau erklärt wird wie man einen Schlüssel mit einer Tür benutzt.

Gibt es das irgendwo oder gibt es vielleicht irgendwo ein Demo Game wo ich mir das ansehen kann.
Helli78
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 178
Registriert: 28.07.2005, 16:46

Beitrag von Helli78 »

hilfe lesen.

AGS Hilfe im Programm
AGS Webseite -> Hilfesystem
unter g**gle.de suchen.
suchfunktion des forums benutzen.
Gast

Beitrag von Gast »

Die Suche des Forums habe ich schon benutzt und da was in den Themen drin steht geht einfach nicht.

Ich habe es Schritt für Schritt gemacht, funktioniert auch soweit. Nur wenn ich dann aus dem Raum raus will für den ich den Schlüssel gebraucht habe muss ich erst die Tür öffnen, bevor ich raus kann (obwohl die Tür offen ist) und wenn och dann draussen bin und wieder in den Raum gehen will (für den ich den Schlüssel gebraucht habe), muss ich erst wieder den Schlüssel draus verwenden (obwohl die Tür offen ist) bevor ich wieder in den Raum komme.

Ich weiß das ich das mit Variablen machen kann aber ohne ein Beispiel Script oder ein Demo Game wo ich mir das mal ansehen kann weiß ich einfach nicht wie ich es machen soll.

Kann nicht einer seine Episode als Beispiel Game zur Verfügung stellen in dem sowas vorkommt. Es kann auch nur der Raum sein, das ist mir egal ich muss es nur mal sehen um es zu verstehen.

Achja die Hilfe im Programm ist nicht gerade hilfreich, den dort steht es auch nicht drin wie ich einen Inventar-Gegenstand mit einer Tür benutze.

Was soll ich bitte in Goggle eingeben " Schlüssel mit Tür benutzen" da lande ich wo möglich noch auf der Seite einer Psychatrie.
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

ich geh mal davon aus du sprichst von Maniac Mansion Episoden, denn das geht aus deinen posts nicht 100% hervor.
Ich hab hier ein Originalzitat von LucasFan zum Thema Türen, vielleicht hilfts dir:
LucasFan hat geschrieben:Tür-Scripts in MMM
--------------------

Im Prinzip ist es ganz einfach:

function any_click_on_door (int GI, int object, int x, int y, int dir, int nr_room, int nr_x, int nr_y, int nr_dir)

Int GI – der verwendete GlobalInt für die Tür
int object – Nummer des Objekts/Hotspots der Tür
int x – Koordinaten um zur Tür zu gehen
int y – Koordinaten um zur Tür zu gehen
int dir – Richtung in die er schauen soll
int nr_room – Zielraum nach “durchschreiten” der Tür
und der Rest wie das Gleiche zuvor, nur halt für den Zielraum

Was man nicht vergessen darf, ist die in der Funktion verwendeten GlobalInts den Öffne/Schließe-Funktionen zuzuweisen, damit es per Rechtsklick funktioniert. Im Globalen Script findest du die Funktion VariableExtensions. Da stehen Zeilen wie diese:

if ((r == 1) && (h == 4)) OpenCloseExtension (3, location);

Die besagt, dass in Raum 1 (r=1) eine Tür ist, die den Hotspot 4 (h=4) hat und den GlobalInt 3 benutzt. Und das war’s dann auch schon. Auf diese Art und Weise erspart man sich ne Menge Arbeit. Zu beachten ist, dass man das Objekt, das eine offene oder geschlossen Tür darstellen soll, zu „nicht clickable“ macht, so das es nicht den Hotspot der Tür verdeckt. Man öffnet und schließt quasi immer den selben Hotspot, da das Objekt zwar zu sehen ist, aber nicht damit interagiert werden kann. Hoffe ich konnte für etwas Klarheit sorgen. Auf den ersten Blick mag das alles etwas verwirrend sein, aber man spart sich so die ganzen A_OPEN und A_CLOSE Funktionen wie bei der Schublade.
Gast

Beitrag von Gast »

Das weiß ich schon aber das hilft mir bei meinem Problem "Wie ich einen Schlüssel mit einer Tür benutze" nicht.

Diese Funktion kenne ich und verwende sie auch, aber daran liegt mein Problem nicht.

Und ja es ist eine MMM Episode
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Die Funktion, die Du brauchst, ist diese hier:

Code: Alles auswählen

any_click_on_door_special (int GI, int object, int x, int y, int dir, int nr_room, int nr_x, int nr_y, int nr_dir, int opensound, int closesound, int key, int closevalue)
1. Du gehst in das Script der Tür, die verschlossen werden soll.
Dort steht normalerweise dies:

Code: Alles auswählen

any_click_on_door (int GI, int object, int x, int y, int dir, int nr_room, int nr_x, int nr_y, int nr_dir)
(natürlich mit den entsprechenden Parametern)
Diese Funktion macht folgendes:

Code: Alles auswählen

SetDoorStrings ("", "", "");
any_click_on_door_special (GI, object, x, y, dir, nr_room, nr_x, nr_y, nr_dir, 2, 3, -1, 0);
2. Mit genau diesem Code ersetzt Du jetzt die any_click_on_door-Funktion, wobei Du natürlich die Parameter der alten Funktion übernehmen musst.
Die special-Funktion hat vier Parameter mehr, wichtig ist der dritte. Du änderst die "-1" einfach in die Nummer des Schlüssel-items.
Zusätzlich kannst Du mit dem SetDoorStrings-Befehl die Messages ausgeben, die gesagt werden sollen.
Z.B. so:

Code: Alles auswählen

//  SetDoorStrings (string lookat, string islocked, string wrongitem)
SetDoorStrings ("", "Die Tür ist verschlossen. Mist!", "Damit werde ich die Tür kaum aufschließen können...");
Sag Bescheid, obs funktioniert hat :)
Use gopher repellent on funny little man
Gast

Beitrag von Gast »

OK soweit habe ich das verstanden, aber die Tür ist nicht verschlossen ich kann sie immer noch öffnen.

Hier mal das was ich eingefügt habe

Code: Alles auswählen

SetDoorStrings("", "Die Tür ist verschlossen. Mist!", "Damit werde ich die Tür kaum aufschließen können...");
any_click_on_door_special (20, 1, 140, 134, DIR_RIGHT, 22, 40, 134, DIR_RIGHT, 2, 2, 10, 0);
Habe ich was vergessen?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Du nicht, aber ich:
Die GlobalInt der Tür, also Nr. 20, muss auf 2 gesetzt werden, sonst ist die Tür nicht verschlossen. (0=offen, 1=zu, 2=verschlossen)
Mach das am besten in der game_start.

Edit: es sollte am Ende "...2, 3, 10, 0);" heissen, sonst wird beim Zumachen der Öffnen-Sound gespielt.
Use gopher repellent on funny little man
Gast

Beitrag von Gast »

khrismuc hat geschrieben:Du nicht, aber ich:
Die GlobalInt der Tür, also Nr. 20, muss auf 2 gesetzt werden, sonst ist die Tür nicht verschlossen. (0=offen, 1=zu, 2=verschlossen)
Mach das am besten in der game_start.
Wie meinst du das jetzt genau, muss ich die 20 durch 2 ersetzten?

Und was soll ich genau in game start mache, denn mit dem Teil habe ich noch nicht gearbeitet und weiß nicht was ich da machen muss.
Gast

Beitrag von Gast »

Ok ich habe nun am Schluss aus der o eine 2 gemacht aber ich kann die Tür immer noch öffenen, aber wenn ich sie dann schließe und wieder öffnen will kommt das die Tür verschlossen ist.

Warum aber nicht vorher?

Dann gibt es noch ein Problemchen. Wenn ich ihm Raum war und die Tür zu mache (von außen) und sie wieder öffnen will, kommt auch das sie geschlossen ist, ist das normal?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Du öffnest das global script und suchst die Zeile mit

Code: Alles auswählen

function game_start() {
Alle Befehle, die in dieser Funktion stehen, werden am Anfang des Spiels einmal ausgeführt.
Wenn Deine Hauptperson z.B. den Gegenstand Nr. 5 von Anfang an dabei haben soll, würdest Du den Befehl

Code: Alles auswählen

AddInventory(5);
dort hinein schreiben.

In diesem Fall jetzt musst Du

Code: Alles auswählen

SetGlobalInt(20,2);
reinschreiben.
Damit wird die Globale Int Nr. 20 auf den Wert 2 gesetzt.
Use gopher repellent on funny little man
Gast

Beitrag von Gast »

THX das hat funktiniert jetzt weiß ich endlich auch wie das geht.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Anonymous hat geschrieben:Ok ich habe nun am Schluss aus der o eine 2 gemacht
Nein, Du hättest aus der 2 eine 3 machen sollen.
So muss es aussehen:

Code: Alles auswählen

any_click_on_door_special (20, 1, 140, 134, DIR_RIGHT, 22, 40, 134, DIR_RIGHT, 2, 3, 10, 0);
Die vier zusätzlichen Parameter sind diese hier:
int opensound, int closesound, int key, int closevalue

opensound: Nummer der Sounddatei mit dem Öffnen-Sound (2)
closesound: Nummer der Sounddatei mit dem Schließen-Sound (3)
key: Nummer des Inventaritems, das die Tür aufschließt, bzw. -1, wenn die Tür immer aufgehen soll, oder -2, wenn die Tür kaputt ist und gar nicht aufgehen soll
closevalue: Nachdem die Tür geschlossen wird, wird die GlobalInt der Tür, also deren Zustandsvariable, wieder auf diesen Wert gesetzt. 2 entspricht verschlossen, 0 entspricht zu.

Da du aus der Null am Ende eine 2 gemacht hast, ist die Tür wieder verschlossen gewesen, nachdem Du sie zugemacht hast.
Use gopher repellent on funny little man
Gast

Beitrag von Gast »

khrismuc hat geschrieben:
Anonymous hat geschrieben:Ok ich habe nun am Schluss aus der o eine 2 gemacht
Nein, Du hättest aus der 2 eine 3 machen sollen.
So muss es aussehen:

Code: Alles auswählen

any_click_on_door_special (20, 1, 140, 134, DIR_RIGHT, 22, 40, 134, DIR_RIGHT, 2, 3, 10, 0);
Die vier zusätzlichen Parameter sind diese hier:
int opensound, int closesound, int key, int closevalue

opensound: Nummer der Sounddatei mit dem Öffnen-Sound (2)
closesound: Nummer der Sounddatei mit dem Schließen-Sound (3)
key: Nummer des Inventaritems, das die Tür aufschließt, bzw. -1, wenn die Tür immer aufgehen soll, oder -2, wenn die Tür kaputt ist und gar nicht aufgehen soll
closevalue: Nachdem die Tür geschlossen wird, wird die GlobalInt der Tür, also deren Zustandsvariable, wieder auf diesen Wert gesetzt. 2 entspricht verschlossen, 0 entspricht zu.

Da du aus der Null am Ende eine 2 gemacht hast, ist die Tür wieder verschlossen gewesen, nachdem Du sie zugemacht hast.
Habe ich alles wieder geändert, trotzdem danke für die belehrung kann ich immer mal gebrauchen wenn ich wieder was nicht verstehe oder falsch gemacht habe. :D
Antworten