PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RMXP: Held muß sich verstecken



kunst79
20.10.2016, 21:59
Hallo zusammen,

ich steh mal wieder auf dem Schlauch und brauch Euere Hilfe :/ Folgende Situation: Der Held möchte in ein Gebäudem, aber die Tür ist verschlossen. Um in das Gebäude reinzukommen, muß er draußen am Gebäude-Eck einen Stromhebel bewegen. Nach einiger Zeit kommt jemand aus der Tür und geht direkt zu dem Stromkasten.

Nun zu meinem Problem: der Feind darf den Helden nicht erwischen. Der Held darf also nicht in Sichtweite des Feindes sein, sonst gibt's eine Standpauke. Wenn der Held sich z.B. hinter der Kiste versteckt, die rechts von der Tür steht (der Stromkasten ist links von der Tür), sieht der Feind den Helden nicht, der Feind geht zum Stromkasten und der Held kann bequem ins Gebäude rein.

Wie löse ich das am Besten? Ich kenne das Hide and Seek-Script von Hüpfende Kokusnuss, aber wie verwende ich es in diesem konkreten Fall (falls das überhaupt geht)?

Eddy131
20.10.2016, 22:10
Zur Not mach doch einfach eine Eventseite pro Feld die der Typ geht und speicher da einfach jeweils alle Felder ab, die der Typ sehen kann. Hält sich der Held nicht dort auf, geht der Typ weiter, ein Schalter wird umgelegt, die nächste Eventseite wird aktiv, und so weiter.
Wenn du das nur einmal brauchst und der Weg nicht allzu lang ist könnte das sogar die simpelste und am schnellsten zu erstellende Lösung sein.
Ansonsten lass den Typen einfach permanent alle Felder in bestimmten Richtungen überprüfen (5 Felder in Blickrichtung, 2 Zur Seite und dann noch bis 3 die Schräg vor ihm z.B.) Wenn die Heldenposition mit der Position dieses Areals übereinstimmt, dann hat er ihn. Sollte mit dem Maker recht simpel zu erstellen sein. Hindernisse werden per Event bestimmt und unterbrechen die Sichtlinie. Fertig.

Das Script von Hüpfende Kokosnuss kenn ich nicht, da kann ich dir leider nichts zu sagen.

sorata08
21.10.2016, 07:26
Aus der Erklärung im Script:

Dieses Script sorgt dafür, dass ihr eine Art Versteckspiel
ganz einfach basteln könnt. Wie z.B. bei Zelda Ocarina of Time oder in
etlichen anderen Spielen.
Es gibt hier 2 Arten von Events, die neuerdings sogar Kombiniert werden
können:

Seek-Events ("Suchende Events"): Diese haben eine Sichtweite, sie schauen
immer geradeaus. Wenn sie den Spieler
sehen, führen sie ihren Code aus.
Hide-Events ("Versteck-Events"): Steht ein Hide-Event zwischen dem Spieler
und einem Seek-Event, so wird der Code des
Seek-Events nicht ausgeführt.

Wie richte ich ein Seek-Event ein?

Ein Seek-Event ist einfach ein parralleler Prozess, der eine Bedingung
abfragt. Die Bedingung:
Geh auf Conditional Branches, dann Seite 4. Wähle Script. Trage folgendes ein:

seek(Sichtweite, ID des ersten Hide-Events, ID des letzten Hide-Events)

Fertig. Siehe Demo.


Wie richte ich ein Hide-Event ein?

Erstell einfach ein leeres Event. Das ist alles. Aber:
Du solltest alle Hide-Events hintereinander erstellen. Warum? Weil ein Hide-Event
durch seine Event-ID zum Hide-Event wird. Bei den Seek-Events hast du ja 2
Event-IDs angegeben. Die Events mit diesen beiden IDs und alle Events, deren ID
dazwischen liegt, sind automatisch Hide-Events.

Gibt es noch andere Hide-Möglichkeiten?

JA! Lege eine Terrain-ID fest, alle Tiles mit dieser Terrain-ID werden so behandelt,
als stände ein Hide-Event darauf. Die Terrain-ID lässt sich in Zeile 90 festlegen.

Du müsstest also die Kiste als Event anlegen oder ein Tile mit einer Terrain-ID (die du im Script definierst (bei mir ist das Zeile 99)) versehen.
Der NPC, der nach dem Spieler sucht, hat dann einen Parallel Process und festgelegte Moveroute. Im Eventcode selbst wird halt die Bedingung abgefragt und dann mit Switch auf eine weitere Eventseite umgestellt, in der der NPC auf den Spieler reagiert (rennt auf ihn zu oder sagt nur "Hey!" mit Schwarblende und Reset des Rätsels).

MfG Sorata

kunst79
21.10.2016, 20:13
Danke für Deine Antwort Sorata. Wenn ich den NPC als Paralell Prozess verwende, funktioniert das Erwischen nur beim Rückweg ins Gebäude und auch nur, wenn ich direkt vor dem NPC stehe.

Ich verwende das Script ja bereits erfolgreich an anderer Stelle im Spiel, aber da sind die NPC ja als "Action Button"-Event (wie im Original ja auch) und dort haben die NPC's keine weiter Aufgabe als zufällig in der Gegend rumrennen. Das ist ja bei diesem Event hier anders. Wahrscheinlich ist die Lösung ganz einfach und ich hab einfach nur ein Brett vorm Kopf...

sorata08
21.10.2016, 21:05
Ich habe es bei mir umgesetzt (siehe Anhang) und es funktioniert auch mit NPCs auf einer Custom MoveRoute:

23713

23712

Zwei Dinge die du aber hierbei beachten musst:

Die Sichtlinie des NPCs ist wirklich nur eine gerade Linie in Blickrichtung. Ich habe z.B. 5 Felder genommen. Entsprechend musst du hier einige Abstriche in der realistischen Umsetzung hinnehmen.
Mit einer festen Move Route wird es natürlich eher schwer (ohne andere Scripte sogar fast unmöglich), den NPC direkt auf den Spieler zuzubewegen. Je nach dem Design deines Gameplays reicht es aber vielleicht auch einfach, wenn sich eine sichtbare Reaktion beim NPC zeigt (Animation + Textbox z.B.) und dann ggf. alles zurückgesetzt wird und der Spieler das ganze nochmal versuchen darf (der Held benutzt eine Rauchbombe oder entkommt knapp)


MfG Sorata

kunst79
22.10.2016, 10:04
Ich zeig Dir mal, wie das bei mir aussieht...
Event 1 ist also vorm Stromkasten.
Event 2 ist der NPC, der zunächst nicht sichtbar ist, weil er ja anfangs im Gebäude ist.

sorata08
22.10.2016, 10:27
Ich würde dem NPC/Parallel Process unter Autonomous Movement auf Custom stellen und darüber seine Route regeln. Das Herauskommen aus der Tür würde ich noch zum Stromkasten-Event packen.
Im Parallel Process selbst würde ich dann einfach nur seine Position abfragen, wenn er z.B. wieder zurückgehen soll usw.
Versuch mal, das so aufzuteilen, vielleicht funktioniert die Verarbeitung im Maker dann besser?

MfG Sorata

kunst79
22.10.2016, 13:50
Ich danke Dir, jetzt klappt es! Klar, macht ja auch Sinn was Du schreibst, aber ich hatte echt ein Brett vorm Kopf :/ VIELEN Dank :)

kunst79
22.10.2016, 14:50
Nachtrag: in meinem Projekt hab ich ein Problem, daß der NPC startet, auch wenn ich nichts mach und nur in der Gegend rumsteh. Ich hab aber darauf geachtet, daß die Switch-Namen die Gleichen wie in dem hier geposteten Einzelprojekt sind. Ich bin alles zig mal durchgegangen, es entspricht alles genau dem, wie in dem Einzelprojekt. Ich hab auch auf die Auslöse-Bedingungen geachtet. Es ist alles haargenau wie in dem Einzelprojekt und dort funktioniert alles genau so wie es soll. Hast Du da auch noch eine Idee?

sorata08
23.10.2016, 11:20
Kannst du nochmal Screenshots der beteiligten Events (und der Eventseiten) machen und hier posten?

MfG Sorata

kunst79
23.10.2016, 16:12
Hier sind die Screenshots. Aus welchem Grund auch immer, setzt er den Switch, der den Strom abstellt, automatisch auf ON.