Meines Erachtens muss das Ganze per AutoStart umgesetzt werden, um die restliche Hero-Bewegung zu blockieren.
Beispiel:
https://www.dropbox.com/s/0p4ql8dd9r...l%20Laufen.exe
Meines Erachtens muss das Ganze per AutoStart umgesetzt werden, um die restliche Hero-Bewegung zu blockieren.
Beispiel:
https://www.dropbox.com/s/0p4ql8dd9r...l%20Laufen.exe
Okay, danke für die Antwort.
Wenn ich das auf Autostart stelle und bei der Treppe angelangt bin,
dann kann der Held sich jedoch überhaupt nicht mehr von der Stelle bewegen.
Ich freue mich natürlich über weitere Denkanstöße!
Im Autostart-Event muss dann natürlich der komplette Bewegungsprozess des Helden geregelt werden. Also voraussichtlich die Bewegung nach Links und nach Rechts. Hast du dir das Beispiel hinter meinem Link angeschaut? Das funktioniert nämlich auf diese Art und Weise.
EDIT: Ein PP-Event lässt nebenbei noch die reguläre Bewegung des Helden zu, was nicht erwünscht sein sollte.
Ich habe mir natürlich auch dein Beispielprojekt angeschaut.
Jedoch kann ich mich dann wie gesagt nicht forbewegen.
Ich habe den Code in meinem Projekt dem deinen sehr ähnlich geregelt, aber es funktioniert damit jedenfalls bei mir nicht.
Falls das helfen sollte, schreibe ich den Code hier rein (ich bezweile allerdings, dass damit etwas komplett falsch ist, das den Password-Befehl ignorieren lässt:
--- EVENT ---
Type: Map event
Name: DiagonaleTreppen
Coordinates: (10, 1)
Number of Pages: 1
-- PAGE 1 --
Start conditions:
Switch [97] == ON
Variable [205] >= 1
Sprite: <Tileset> #0
Facing direction: Down
Animation frame: Center
Transparent: No
Trigger condition: Auto start
Event level: Below hero
Forbid event overlap: No
Animation type: Non-continuous
Movement type: Stationary
Movement frequency: 3
Movement speed: 3
- SCRIPT -
<> Fork Condition: If Variable [205] == 1 then ...
<> Fork Condition: If Hero is facing left then ...
<> Change Variable: [205] = 2
<>
: End of fork
<> Fork Condition: If Hero is facing right then ...
<> Change Variable: [205] = 3
<>
: End of fork
<>
: End of fork
<> Key Input Processing: Var. [186], Keys: Shift, Calc. keys
<> Wait: 0,0 sec.
<> Comment: ---------Treppe_nach_links_oben------
: -------------------------------------
<> Fork Condition: If Variable [205] == 2 then ...
<> Fork Condition: If Variable [186] == 2 then ...
<> Move Event: Hero, Frq 8, Pattern: Mv u/l
<>
: End of fork
<> Fork Condition: If Variable [186] == 3 then ...
<> Move Event: Hero, Frq 8, Pattern: Mv d/r
<>
: End of fork
<>
: End of fork
<> Comment: ---------Treppe_nach_rechts_oben------
: --------------------------------------
<> Fork Condition: If Variable [205] == 3 then ...
<> Fork Condition: If Variable [186] == 2 then ...
<> Move Event: Hero, Frq 8, Pattern: Mv d/l
<>
: End of fork
<> Fork Condition: If Variable [186] == 3 then ...
<> Move Event: Hero, Frq 8, Pattern: Mv u/r
<>
: End of fork
<>
: End of fork
<> Wait: 0,1 sec.
<>
Ich persönlich hätt kein Autostart-, sonder ein On-Touch-Event benutzt, das ich auf die Treppe gesetzt hätte. Das blockiert die Bewegung des Helden (was beim parallelen Prozess nicht der Fall ist). Das Event beinhält eine Tastenabfrage, gefolgt von der entsprechenden diagonalen Bewegung. Das Event muss man dann nur für jeden Treppenteil neu setzen und vor allem darauf achten, dass es auf "on touch" und nicht auf "on hero touch" steht, damit es auch ausgelöst wird, wenn der Held von einem Event bewegt wird (was beim Treppensteigen ja der Fall ist).
PS: überleg dir in deiner Abfrage auch, ob du das Menü auf der Treppe aufrufen willst, das musst du dann nämlich auch abfangen, nur mal so nebenbei als Tipp.
Geändert von R.F. (24.01.2013 um 19:34 Uhr)
Sicher gibt es hier unterschiedliche Lösungsansätze. Ich persönlich hätte es aber über ein Common Event geregelt, welches automatisch startet (Auto Start) unter der Bedingung, dass der entsprechende Schalter (in meinem Beispiel habe ich ihn "Treppe" genannt) aktiviert wird. Der Schalter wird beim Betreten der Treppe aktiviert, indem wir auf allen begehbaren Feldern der Treppe Events mit dem entsprechenden Befehl und der Startbedingung "On Hero Touch" platzieren. Das Skript des Common Events sieht dabei wie folgt aus:
Die Tastenabfrage fragt die vier Richtungstasten 1 - 4 sowie in meinem Beispiel noch die 6 (um auch auf der Treppe das Menü aufrufen zu können) ab. Werden die Richtungstasten 2 (links) oder 3 (rechts) gedrückt, bewegt sich der Held diagonal. Das klappt auch während einer ausführenden Bewegung ohne dabei die Taste neu drücken zu müssen. Wichtig ist, dass bei den beiden Tasten der Schalter deaktiviert wird - er wird ja erneut aktiviert, sobald der Held auf das nächste Treppen-Event kommt. Bei den Richtungstasten 1 (unten) und 4 (oben) deaktivieren wir den Schalter nicht. Der Hauptgrund hier ist, dass, wenn der Held sich entlang der Stufe beispielsweise nach unten (1) bewegen will, er sich aber schon am unteren Rand der Stufe befindet und somit nicht weiter gehen kann (Anmerkung: Bitte bei den Bewegungsbefehlen ein Häckchen bei "Ignored if cant be moved" setzen!), dann aktiviert der Schalter sich nicht erneut, da der Held ja kein neues Treppen-Event betritt, welches den Schalter aktivieren würde. Somit würde der nächste Schritt nach links oder rechts nicht diagonal verlaufen. Auch beim Aufrufen des Menüs lassen wir den Schalter aktiviert, da der Held sich ja auch hier in jedem Fall nicht bewegt.
Zusätzliche Anmerkung:
Ich persönlich regel sowas lieber immer über Common Events. Es gibt ja im ganzen Projekt sicherlich nicht nur eine Treppe. Und wenn man dann aus welchen Gründen auch immer nachträglich was am Skript ändern möchte, ist das mit einem Common Event deutlich komfortabler erledigt, als mit unzähligen einzelnen Map Events.
@R.F.
Hört sich zwar plausibel an, aber wenn ich das jetzt so machen würde, muss ich jedes Event ändern, auch bei den kleinsten Verbesserungen/Änderungen des Hauptscriptes.
Ein externes Autostart-Event hört sich schon allein wegen des Komfortes besser an.
PS: Danke für den Menühinweis
@Marche Radiuju
Das sieht nicht schlecht aus und ist per Common Event auch sinnvoller - ganz meine Meinung.
Deshalb habe ich es jetzt auch so gemacht.
Die Sache ist allerdings die: Ich habe jetzt nochmal ein Testprojekt für die Treppensache angefangen und das Commonevent eingestellt. Bei dem Testprojekt funktioniert es wunderbar.
Bei meinem Hauptprojekt jedoch funktioniert es nicht! Warum weiß ich nicht, denn ich habe eine leere Map erstellt und keine Events die die Tastenabfrage irgendwie beeinflussen(Auch keine aktiven Commonevents).
Wenn ich mir den Wert der Tastenabfrage per Nachricht ausgeben lasse erhalte ich 0.
Irgendetwas scheint also die Tastenabfrage außer Gefecht zu setzen, nur was?!
Da ich mal den Keypatch von Ineluki installiert hatte, dachte ich, dieser könnte damit zusammenhängen, deshalb habe ich die Dateiendung der harmony.dll und die der autorun.script Dateien geändert um den Patch auszuschalten (Ob er dennoch weiterhin irgendwie aktiv ist weiß ich nicht).
Falls es nicht daran liegt, muss es irgendetwas anderes sein, was den Tastenabfragebefehl beeinflusst.
Wenn jemand weiß, woran es liegen kann dann nur raus damit!
@Oktorok3: Wenn du Code vom EasyEventExporter hier einfügen willst, musst du im Exporter bei der Frage-Messagebox auf "ja" klicken und "vbcode_lightbg.eft" auswählen, dann erzeugt er gut lesbaren Forencode.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!Now all new and shiny:CherryShare | Patches und Tools | Programmwunschthread | www.cherrytree.at | Cherry = CherryDT
@Cherry
Ja, nur hat der EEE einen Fehler-> Wenn man das Event einließt, dann ein Template auswählt funktioniert es. Wenn man dann (z.B. weil man das Event geändert hat) es nochmal einließt und nochmal auf Export und ein Template auswählt, dann fügt es keinen Forencode mehr dazu ein (heißt, es kommt genauso heraus wie oben zu bewundern ist)
Achso, du meinst RMEventFactory, nicht den EasyEventExporter (was eh besser ist der EEE noch mehr Bugs als RMEF hat).
Ich kannte den Fehler bis jetzt nicht >> gefixt, neu runterladen: http://cherrytree.at/download/?did=11
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!Now all new and shiny:CherryShare | Patches und Tools | Programmwunschthread | www.cherrytree.at | Cherry = CherryDT
@all
Das Problem habe ich inzwischen jetzt auch gelöst-> Es hat daran gelegen, dass ich die Value-Version des Makers verwendet habe, welche die Richtungstasten beim Passwordeingabe-Befehl nicht erkennt (Abbruch und Enter werden allerdings erkannt und geben einen Wert aus!)
@RMFactory-> Alles klar, immer ein erhebendes Gefühl, wenn man unentdeckte Fehler enttarnt!