Maniac Mansion Mania Forum
MMM-Werkzeugkiste => Technik => Thema gestartet von: Splattermaster am 25. Juli 2007, 12:07:04
-
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 ???
-
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
}
-
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
-
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 ();
}
-
perfekt :D
klasse...dank an euch ;)
mfg
splattermaster
-
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 ;)
-
Stimmt, man sollte diese ganzen Kleinigkeiten wirklich mal irgendwo gesammelt festhalten.
-
oh ja,
ist wesentlich compakter als das ganze gedönz dran... ;D
-
Stimmt, man sollte diese ganzen Kleinigkeiten wirklich mal irgendwo gesammelt festhalten.
wäre ja kein problem, mach einen thread auf dazu. :)