MMM-Werkzeugkiste > Technik

Hilfe bei Script genommenes Item erscheint erneut?

(1/3) > >>

dridrops:
Hallo zusammen,
bin neu hier und habe mal begonnen meine Ideen für ein MMM Projekt zu verwirklichen bzw erstmal zu testen.
Ich arbeite mit dem AGS 3.4.1 und dem SP vom dave: Dave-SP v1.1 AGS 3.4 (v1.1).
Das man zb. mit einem Schraubendreher eine Klemmende Schublade aufbekommt und ähnliches das läuft.
Nun möchte ich aber den Schraubendreher in einem Schrank oder so verstecken, funktioniert auch soweit.
Nehme ich ihn aber heraus, schließe die Tür öffne sie erneut ist ein weiterer Schraubendreher da.
Wie kann ich das verhindern?

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.

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. 

Bedanke mich schon mal für jede Hilfe und oder Script beispiele.

Cone Arex:
Willkommen im Forum.


--- Zitat ---Nehme ich ihn aber heraus, schließe die Tür öffne sie erneut ist ein weiterer Schraubendreher da.
Wie kann ich das verhindern?
--- Ende Zitat ---
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.

--- Code: ---if (player.HasInventory(iName))
{
  // Code um den Gegenstand zu nehmen.
}
else
{
  // Code wenn der Gegenstand bereits genommen wurde.
}
--- Ende Code ---
Statt iName musst den jeweiligen Namen des Items eintragen.

2. Du legst eine boolische Variable an und überprüfst den Wert dieser Variable.

--- Code: ---bool hatSchraubenzieher;
--- Ende Code ---
Der Teil deklariert die Variable und kommt an den Anfang dem Room-Scripts, also noch vor der ersten function.

Und dann wie oben weiter.

--- Code: ---if (!hatSchraubenzieher)
{
  // Code um den Gegenstand zu nehmen.
  // ...
  hatSchraubenzieher = true;
}
else
{
  // Code wenn der Gegenstand bereits genommen wurde.
}
--- Ende Code ---
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.


--- Zitat ---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.

--- Ende Zitat ---
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:

--- Code: ---...
else if (UserAction(eActClose))
{
  Wait(5);
  if (!istRausgefallen)
  {
    objectName.Visible = true;
    istRausgefallen = true;
  }
  // Ab hier normal weiter, als wäre es bereis rausgefallen.
}
...
--- Ende Code ---
Ich nehme an, du realisiert das herausfallende Objekt als object. Dann musst du es einfach nur mittels Visible einschalten.


--- Zitat ---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.
--- Ende Zitat ---
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?

Cmdr:

--- Zitat von: Cone Arex am 17. Juni 2018, 15:33:43 ---(Mit Objekten "sprechen" ist afaik nicht möglich.)

--- Ende Zitat ---

Das ist so nicht ganz richtig.
Richtig wäre :
Das "sprechen" mit Objekten ist in den Starterpacks codeseitig deaktiviert und für einen Anfänger nicht so einfach lösbar.

dridrops:
Erstmal danke für die Hilfen, werde mich gleich ran machen und testen.
Möchte halt nit zuviel verraten falls ich auf die Idee komme es zu veröffentlichen.
Heist aber ich muss das bei jedem Objekt machen was ich ins Inventar nehmen will, welche durch visible erst erscheinen sollen?
Beispiel 1 von dir kommt bei die zu öffnende Tür?
Ich teste mal, mal sehen was ich raus bzw hin bekomme.

Beim 2ten Hilferuf ist es das das Objekt ( ja ich verwirkliche es mit Objekte) durch öffnen der Schranktür
heraus fällt man aber erst dran kommt wenn sie geschlossen ist. Mit Visible kann ich das soweit verwirklichen muss aber
auch hier verhindern das der Gegenstand immer wieder erscheint.

Wegen Sandy, da steckt sie (Objekt) in dem Strahlenschutzanzug, wird irgendwann gefunden und soll dann mit gespielt werden können.
Wenn es zu umständlich ist das der Strahlenschutzanzug (Sandy) mir antwortet bzw ich ein richtiges Gespräch führen kann dann reicht
es mir wenn Dave allein was spricht das bekomme ich hin.

Danke
 

Cmdr:
Wenn der Strahlenanzug Sandy sein soll und auch reden soll, ist es besser, wenn du wirklich dafür Sandy nimmst und ihr eine neue View zuweist, die eben den Strahlenanzug darstellt.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln