Willkommen im Forum.
Nehme ich ihn aber heraus, schließe die Tür öffne sie erneut ist ein weiterer Schraubendreher da.
Wie kann ich das verhindern?
Du musst überprüfen, ob der Schraubenzieher bereits genommen wurde. Dafür gibt es grundsätzlich zwei Möglichkeiten:
1. Du überprüfst, ob der Spieler den Gegenstand im Inventar hat. Das geht ganz leicht.
if (player.HasInventory(iName))
{
// Code um den Gegenstand zu nehmen.
}
else
{
// Code wenn der Gegenstand bereits genommen wurde.
}
Statt iName musst den jeweiligen Namen des Items eintragen.
2. Du legst eine boolische Variable an und überprüfst den Wert dieser Variable.
bool hatSchraubenzieher;
Der Teil deklariert die Variable und kommt an den Anfang dem Room-Scripts, also noch vor der ersten
function.
Und dann wie oben weiter.
if (!hatSchraubenzieher)
{
// Code um den Gegenstand zu nehmen.
// ...
hatSchraubenzieher = true;
}
else
{
// Code wenn der Gegenstand bereits genommen wurde.
}
Wichtig ist dann natürlich, die Variable auf true zu setzen, sobald der Gegenstand genommen wurde.
Die erste Methode ist ideal, wenn der Spieler den Gegenstand das ganze Spiel über behält. Wenn man die Gegenstand verliert oder verlieren kann, muss die zweite Methode verwendet werden.
Weitere Idee beim öffnen einer weiteren Schranktür, soll was herausfallen und man erst dran kommen wenn
diese Tür verschlossen wurde, hier habe ich noch keine genaue Idee.
Habe ich das richtig verstanden: Der Spieler öffnet eine Schranktür -> nichts passiert. Anschließend schließt er die Schranktür wieder -> etwas fällt heraus? In dem Fall einfach eine boolische Variable anlegen wie oben (z.B. bool istRausgefallen;) und in der Schließen-Verzweigung dann soetwas schreiben:
...
else if (UserAction(eActClose))
{
Wait(5);
if (!istRausgefallen)
{
objectName.Visible = true;
istRausgefallen = true;
}
// Ab hier normal weiter, als wäre es bereis rausgefallen.
}
...
Ich nehme an, du realisiert das herausfallende Objekt als
object. Dann musst du es einfach nur mittels Visible einschalten.
Desweiteren soll Sandy Dave helfen, aber erst nachdem Dave sie gefunden hat. Sprich eine bestimmte Aktion voraus geht
Die Aktion wäre das Dave ein Objekt findet mit diesem Spricht danach soll Sandy aus diesem Raum im Spiel Starten und Das Objekt verschwunden sein natürlich auch nicht wieder erscheinen wenn man an den Ort zurück kehrt.
Ich habe jetzt nicht so ganz verstanden, was genau passieren soll, sobald Dave mit den Objekt interagiert hat. (Mit Objekten "sprechen" ist afaik nicht möglich.) So das Objekt verschwinden und Sandy stattdessen erscheinen oder ist Sandy einfach in einem Raum und hilft Dave erst, sobald mit dem Objekt interagiert wurde? Oder soll der Spieler dann Sandy steuern?