View ändern bei erstem mal Raum betreten...

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

View ändern bei erstem mal Raum betreten...

Beitrag von Fightmeyer »

Hallo Leute,

meine Figur soll im ersten Raum, beim Start eine andere View verwenden.

Ich hab das so gemacht:

Code: Alles auswählen

function room_c() {
  // script for Room: First time player enters screen
  
  // Schlafanimation
	  player.LockView(13);
    player.Animate(13, 10,eRepeat,eNoBlock);
}
Das Probem ist, daß man trotzdem kurz vorher noch die normale View sieht. Und erst dann wechselt er zu der Schlafview.
Pack ich das ganze ins script für player enters screen before fadein klappt es. Da ich diese Animation aber nur beim allerersten mal brauche, wenn man den Raum betritt, würde ich das ganz gerne wie oben beschrieben machen und nicht über ne Hilfsvariable. Kriegt man das irgendwie gelöst?
Benutzeravatar
Sinitrena
Tastatursteuerer
Tastatursteuerer
Beiträge: 678
Registriert: 08.05.2004, 01:01
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Sinitrena »

Was ist denn so schlimm eine einzige Variable zu benutzen, die du noch dazu nur in diesem einen Raum brauchst? Ich weiß keinen Grund es nicht mit einer Variablen zu machen und mir fällt im Moment auch nichts ein, wie du den Effekt, den du im Moment hat, sonst vermeiden könntest, außer du machst zwei ansonsten vollkommen identische Räume, aber das wäre nun wirklich etwas bescheuert.
Also, verwende eine Variable, das macht nur ein paar Zeilen Script mehr und du brauchst sie ja wirklich nur in dem einen Raum, so dass da auch nichts kompliziertes dran ist.
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Okay. Dann werd ich das wohl so machen.
Dachte halt nur, daß man sich das sparen kann.
Danke.
Benutzeravatar
Sinitrena
Tastatursteuerer
Tastatursteuerer
Beiträge: 678
Registriert: 08.05.2004, 01:01
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Sinitrena »

Ich finde das immer wieder lustig: Den zusätzlichen Teil im Script hättest du schneller schreiben können als deine Anfrage hier im Forum :lol:
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
Benutzeravatar
Kaktus
Tastatursteuerer
Tastatursteuerer
Beiträge: 658
Registriert: 17.02.2006, 01:45
Wohnort: Wüstä
Kontaktdaten:

Beitrag von Kaktus »

Halle fightmeyer, du könntest es auch so machen, in dem du in den vorherigen Raum beim Raumwechsel folgendes schreibst.

Code: Alles auswählen


  EnterRoom(Schlafzimmer, x, y, dir);

if (!HasPlayerBeenInRoom(Schlafzimmer)) {
  // Schlafanimation 
     player.LockView(13); 
    player.Animate(13, 10,eRepeat,eNoBlock); 
}

Dann bräuchtest du keine zusätzliche int.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Das geht nicht, da Raumwechsel am Ende des Skriptes ausgeführt werden. Das heißt wiederum, dass die Animation im Room Script des Schlafzimmers stehen muss, womit sich HasPlayerBeenInRoom() wiederum leider nicht mehr verwenden lässt.

Wie man es dreht und wendet, etwas zusätzliches Skripting ist immer nötig. Der kürzeste Weg ist immer noch die Variable.
Use gopher repellent on funny little man
strazer
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 35
Registriert: 17.06.2005, 14:22

Beitrag von strazer »

Das Problem ist, das "First time enters room"-Event wird erst ausgeführt, nachdem der Fadein zu Ende ist.
Es gibt leider (noch) kein "First time enters room (before fadein)"-Event, d.h. du musst es tatsächlich selbst skripten.

KhrisMUC, Kaktus' Idee finde ich aber gut, da spart man sich eine Variable.
Könnte man nicht in die "Player enters room (before fadein)" des Schlafzimmers schreiben:

Code: Alles auswählen

// Player enters room (before fadein)

if (HasPlayerBeenInRoom(player.Room) == false) { // =First time player enters room
  // Schlafanimation
  player.LockView(13); // man könnte auch den View-Skriptnamen nehmen, z.B. SCHLAF
  player.Animate(13, 10, x, eRepeat, eNoBlock); // Loop 13, Delay 10? Und einen Parameter vergessen. Überprüfen!
}
Das ! kann man so leicht übersehen, deshalb schreibe ich es gerne als =false aus.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Leider nicht:
This command will always return 1 if you ask it about the current room;
Wäre vielleicht was für den Tracker, das die Variable, die HasPlayerBeenInRoom() überprüft, erst nach den drei enters screen-Interactions auf true gesetzt wird.

Nachtrag: Animate sollte auch nicht in (before fadein) stehen ;)
Use gopher repellent on funny little man
Antworten