Zwei Probleme mit Event-Handling in XP

Kinta

Rebusmind is dead
Mitglied seit
06.08.2003
Beiträge
2.661
Ich versuche mich gerade ein wenig an Puzzle-Design im Lufia-Stil.
Ich habe mehrere Schieberätsel gebastelt, bei denen man Kisten auf bestimmte Felder schieben muss. Die Position der Kiste frage ich mit zwei Variablen für die Koordinaten ab.
Nun zu meinem ersten Problem: Wenn ich die Kiste gegen eine Wand schiebe, wird sie zwar nicht weiter bewegt, da das Move Event das verhindert, allerdings wird dennoch die Koordinate hochgezählt, was natürlich alles verfälscht. Kennt jemand einen Weg, dies zu verhindern?

Problem Nummer 2: Ich habe auch ein Rätsel, wo mehrere Events einen Block darstellen (stellt es euch wie einen Tetris-Stein aus mehreren Events vor). Nun sollen sich alle Events bewegen, wenn eins verschoben wird. Das klappt auch schon, allerdings funktioniert das nicht mehr, wenn ich die Events so verschiebe, dass z.B. ein Event gegen eine Mauer prallt und der Rest nicht. Dann gehen nämlich die Events, die sich bewegen können weiter und zerstören die Form. Kann ich irgendwie dafür sorgen, dass die Form immer erhalten bleibt?

Ich hoffe, ich habe es gut genug erklärt, ansonsten muss ich noch Screenshots machen.

Die ersten zehn Helfenden bekommen alle Lösungen für die nächsten Quizthreads von mir! :D
(nur Spaß, versucht es erst gar nicht!)

Kinta
 

Yok

Hooded Hunter
Mitglied seit
09.04.2008
Beiträge
1.847
Ich habe das mit dem Verschieben von Steinen immer so gemacht:

Action Button
Set move Route
This Event: Move Away from Player
Player: Move one Step forward

Damit gab es bei mir eigentlich nie Probleme mit den Variablen. Ich habe keine Ahnung ob du für das verschieben Conditional Branches angelegt hast, aber ich finde es so eigentlich einfacher. Aber wieso verändern sich die Variablen bzw. Koordinaten wenn das Event schon an der Wand ist??? Kann es sein, das der Befehl: "ignore if can't move" oder "direction fix" nicht eingestellt ist?

Bei deinem zweiten Problem........oh...das ist komplizierter als es aussieht. Ich würde es so machen, das wenn die Blöcke eine bestimmte Koordinate erreichen, das dann ein Switch eingestellt wird. Das könnte natürlich auch zu kompliziert sein...oder vlt. auch gar nicht funktionieren.

Also hier die Idee:

@>Conditional Branch
Control Variables: 0001: Block1_x=this events map_x
Control Variables: 0002: Block1_y=this events map_y
Switch 0001=on

else
@
branch end

Anstatt x und y muss man dann halt die Koordinaten der Map eingeben, diese befinden sich unten in der Mitte.

Ich habe nie sowas kompliziertes gemacht und kann für nichts garantieren, aber so legt man jedenfalls Koordinaten fest. Falls sich also die Koordinaten x und y übereinanderbefinden, wird der switch umgelegt und die Blöcke können nicht mehr geschoben werden, nun müsste man halt nur noch einstellen, dass sie trotzdem noch nach oben und unten geschoben werden können...

Conditional Branch
Switch 0001 is on
Player is facing up
usw...

Ach ist das kompliziert. Sowas ist mir ja noch nie unter gekommen...öhm...viel Glück ^^
 
OP
OP
Kinta

Kinta

Rebusmind is dead
Mitglied seit
06.08.2003
Beiträge
2.661
Damit gab es bei mir eigentlich nie Probleme mit den Variablen. Ich habe keine Ahnung ob du für das verschieben Conditional Branches angelegt hast, aber ich finde es so eigentlich einfacher. Aber wieso verändern sich die Variablen bzw. Koordinaten wenn das Event schon an der Wand ist??? Kann es sein, das der Befehl: "ignore if can't move" oder "direction fix" nicht eingestellt ist?
Ja, generell mache ich das Verschieben genauso, allerdings soll das Event ja auf eine bestimmte Stelle der Map geschoben werden, damit sich eine Tür öffnet. Dazu brauche ich Koordinaten, die überprüfen kann. Die Bewegung wird schon ignoriert, wenn sie nicht möglich ist, aber dennoch wird ja der Rest des Events ausgeführt, was auch die Erhöhung der Koordinaten betrifft.
Es hilft auch nichts, wenn ich einen Switch in das Move Event einfüge, da wirklich nur die Sachen ignoriert werden, die nicht ausführbar sind, d.h. auch wenn das Event blockiert ist, wird der Switch angeschaltet.

Bei deinem zweiten Problem........oh...das ist komplizierter als es aussieht. Ich würde es so machen, das wenn die Blöcke eine bestimmte Koordinate erreichen, das dann ein Switch eingestellt wird. Das könnte natürlich auch zu kompliziert sein...oder vlt. auch gar nicht funktionieren.

Also hier die Idee:

@>Conditional Branch
Control Variables: 0001: Block1_x=this events map_x
Control Variables: 0002: Block1_y=this events map_y
Switch 0001=on

else
@
branch end

Anstatt x und y muss man dann halt die Koordinaten der Map eingeben, diese befinden sich unten in der Mitte.

Ich habe nie sowas kompliziertes gemacht und kann für nichts garantieren, aber so legt man jedenfalls Koordinaten fest. Falls sich also die Koordinaten x und y übereinanderbefinden, wird der switch umgelegt und die Blöcke können nicht mehr geschoben werden, nun müsste man halt nur noch einstellen, dass sie trotzdem noch nach oben und unten geschoben werden können...

Conditional Branch
Switch 0001 is on
Player is facing up
usw...

Ach ist das kompliziert. Sowas ist mir ja noch nie unter gekommen...öhm...viel Glück ^^
Ähm, so ganz schlau bin ich da nicht draus geworden, scheint auch recht umständlich zu sein, da ich ne Menge an Gegenständen in der Map habe und die alle abfragen müsste. Außerdem soll die Form auch erhalten bleiben, wenn ich zwei Event-Blöcke gegeneinander schiebe.

Aber vielen Dank für deine Hilfe! Weiß vielleicht jemand noch ein paar gute Tipps?

Kinta
 
Oben