Hauptmenü

Neuigkeiten:

Bitte unterstützt uns und bestellt über diese Links bei Amazon  oder HumbleBumble!

Probleme beim Öffnen und Schließen eines Objekts

Begonnen von Splattermaster, 25. Juli 2007, 12:07:04

Vorheriges Thema - Nächstes Thema

Splattermaster

hi,
hab mal selber probiert eines meiner probleme zu lösen...hat aber nicht so 100%ig geklappt.
vielleicht könnt ihr ja helfen.
also, ich möchte gern einen objekt (einen vorhang) aufziehen und mit schliessen wieder schließen.
so, das klappt auch alles.
habe jeweils einen view (loop1) mit dem öffnen sowie einen view (loop2) zum schliessen erstellt.

nun zum problem : wenn der vorhang mit ziehen geöffnet wird und ich ihn, obwohl er offen ist, nochmal ziehe, geht er zu und gleich wieder auf! das gleiche, wenn er geschlossen ist!
kann mir jemand helfen?  ???

mfg
splattermaster  ???

Bòógieman

hört sich so an, als ob du zb beim öffnen immer die selben aktionen durchführst

das objekt sollte halt wissen, ob es geöffnet oder geschlossen ist (kann man ja zur not auch aus der gerade gesetzten view auslesen)

bei den actions des objekts solltest du dann mit einer IF den status abfragen
wenn zB beim öffnen der vorhang schon offen ist, solltest du deinen char einen kommentar abgeben lassen, anstatt nochmals den vorhang zu öffnen  ;)

im pseudo-code ca so:


if(vorhang_offen == true)
{
  player.say("Na sicher nicht nochmal!");
}
else
{
  // öffnen view & co
}
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

Splattermaster

hi,
hier nochmal mein script welches ich verwende:

// script for Object 0 (Vorhang): Any click on object

if (MovePlayer (217,121)) {
FaceDirection (player.ID, DIR_RIGHT);
Wait (5);

if (UsedAction (A_LOOK_AT)) {
    player.Say ("Ein großer roter Vorhang");
}

else if (UsedAction (A_CLOSE)) {
    oVorhangi.SetView (1);
    oVorhangi.Animate (2, 9, eOnce);
    aufgezogen=true;
     }
else if (UsedAction (A_PULL)) {
    oVorhangi.SetView (1);
    oVorhangi.Animate (1, 9, eOnce);
    Wait (5);
    aufgezogen=true;
     }
else Unhandled ();
}
}


vielleicht hilft das ja?

mfg
splattermaster

KhrisMUC

So vielleicht?

// script for Object 0 (Vorhang): Any click on object

if (MovePlayer (217,121)) {
  FaceDirection (player.ID, DIR_RIGHT);
  Wait (5);

  if (UsedAction (A_LOOK_AT)) {
    player.Say ("Ein großer roter Vorhang");
  }

  else if (UsedAction (A_CLOSE) || UsedAction(A_PUSH)) {
    if (!aufgezogen) player.Say("Der ist schon zugezogen.");
    else {
      oVorhangi.SetView (1);
      oVorhangi.Animate (2, 9, eOnce);
      aufgezogen=false;
    }
  }

  else if (UsedAction (A_PULL) || UsedAction(A_OPEN)) {
    if (aufgezogen) player.Say("Der ist schon aufgezogen.";)
    else {
      oVorhangi.SetView (1);
      oVorhangi.Animate (1, 9, eOnce);
      Wait (5);
      aufgezogen=true;
    }
  }
 
  else Unhandled ();
}

Splattermaster

perfekt   :D
klasse...dank an euch  ;)

mfg
splattermaster

steve-o-mat

Statt...


if (MovePlayer (217,121)) {
  FaceDirection (player.ID, DIR_RIGHT);
  Wait (5);


...könnte man aber auch wieder...

if (any_click_move (217,121,DIR_RIGHT))

...nutzen ;)

KhrisMUC

Stimmt, man sollte diese ganzen Kleinigkeiten wirklich mal irgendwo gesammelt festhalten.

Splattermaster

oh ja,
ist wesentlich compakter als das ganze gedönz dran...  ;D

Rocco

Zitat von: KhrisMUC in 25. Juli 2007, 13:22:28
Stimmt, man sollte diese ganzen Kleinigkeiten wirklich mal irgendwo gesammelt festhalten.

wäre ja kein problem, mach einen thread auf dazu.  :)