Ein paar Fragen

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Syntax:
Character.Walk(int x, int y, optional BlockingStyle, optional WalkWhere);

Statt cBernard.Walk(229, 129); schreibst Du cBernard.Walk(229, 129, eBlock);
Bernard läuft los, und erst, wenn er angekommen ist, wird der nächste Befehl im Skript ausgeführt. (RTFM!!)

Bezüglich des anderen Problems:
Die allererste Zahl im Funktionsaufruf von any_click_on_door() ist die GlobalInt der Tür, in diesem Fall 4, die zweite Zahl ist die Nummer des Objekts im betreffenden Raum.

Du musst also in die Player enters screen (before fadein)-Interaction des oberen Flurs folgendes schreiben:

Code: Alles auswählen

if (cBernard.PreviousRoom==[Raumnummer von Britneys Zimmer]) {
  SetGlobalInt(4,2);  // abschließen
  ObjectOff(1);  // offene Tür nicht mehr anzeigen
}
Jetzt sollte Bernard auch die Standardantwort geben, dass die Tür verschlossen ist, wenn man versucht, sie zu öffnen.
Use gopher repellent on funny little man
Sandy
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 166
Registriert: 14.08.2005, 11:04
Kontaktdaten:

Beitrag von Sandy »

khrismuc hat geschrieben:Syntax:
Character.Walk(int x, int y, optional BlockingStyle, optional WalkWhere);

Statt cBernard.Walk(229, 129); schreibst Du cBernard.Walk(229, 129, eBlock);
Bernard läuft los, und erst, wenn er angekommen ist, wird der nächste Befehl im Skript ausgeführt. (RTFM!!)
Danke das habe ich schon mal geändert.

Was heißt eigentlich RTMF?
khrismuc hat geschrieben: Bezüglich des anderen Problems:
Die allererste Zahl im Funktionsaufruf von any_click_on_door() ist die GlobalInt der Tür, in diesem Fall 4, die zweite Zahl ist die Nummer des Objekts im betreffenden Raum.

Du musst also in die Player enters screen (before fadein)-Interaction des oberen Flurs folgendes schreiben:

Code: Alles auswählen

if (cBernard.PreviousRoom==[Raumnummer von Britneys Zimmer]) {
  SetGlobalInt(4,2);  // abschließen
  ObjectOff(1);  // offene Tür nicht mehr anzeigen
}
Jetzt sollte Bernard auch die Standardantwort geben, dass die Tür verschlossen ist, wenn man versucht, sie zu öffnen.
Ok habe jetzt bei Player enters screen (before fadein) folgendes reingeschrieben.

Code: Alles auswählen

if (cBernard.PreviousRoom==3) {
  SetGlobalInt(4,2);
  PlaySound(2);
  ObjectOff(1);
}
kann die Tür aber immer noch öffnen.
Was ich nicht verstehe ist, das du geschrieben hast das die zweite Zahl die Zahl des Objectes ist und das ist bei der Tür 1, aber wenn ich die 2 durch 1 ersetzte geht es auch nicht.

Oder habe ich das jetzt falsch verstanden?!
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Ich hab es nicht ausprobiert, ich hab nur im global script in die Funktion geschaut, da heisst es:

Code: Alles auswählen

else if (UsedAction (A_OPEN)) {
  if ((GetGlobalInt (GI) == 0) || ((GetGlobalInt (GI) == 2) && (key == -1))) {
    if (any_click_move (x, y, dir)) {
      PlaySound (opensound);
      ObjectOn (obj);
      SetGlobalInt (GI, 1);
    }
  }
  else if (GetGlobalInt (GI) == 2) {
    if (any_click_move (x, y, dir)) {
      DisplaySpeech (GetPlayerCharacter (), door_islocked);
     }
  }
}
Deswegen bin ich davon ausgegangen, dass die Tür abgeschlossen ist, wenn man die GlobalInt auf 2 setzt. Reicht aber nicht ganz, siehe unten.

Ich verstehe deinen letzten Absatz nicht ganz.
Der 2. Parameter ist die Objektnummer. Die Hintergründe zeigen geschlossene Türen, wenn eine Tür im Spiel geöffnet wird, schaltet das Skript das Objekt ein, dass die offene Tür zeigt.

Ich hab mir das Skript gerade nochmal angesehen, der Knackpunkt ist der key-Parameter.
Statt any_click_on_door(...) musst Du folgendes schreiben:

Code: Alles auswählen

SetDoorStrings("", "", "");
any_click_on_door_special(4, 1, 45, 134, DIR_LEFT, 3, 271, 133, DIR_LEFT, 2, 3, -2, 0);
Die -2 am Ende sagt dem Programm, dass der Spieler keinen Schlüssel für die Tür hat.

RTFM!=Read the fucking manual! ;)
Use gopher repellent on funny little man
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Sandy: Hat es funktioniert?
Use gopher repellent on funny little man
Antworten