PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Input Password/Check Key Input funktioniert nicht



Oktorok3
22.01.2013, 23:27
Bei dem Versuch, mit der Tasteneingabefunktion das diagonale Laufen auf Treppen möglich zu machen,
bin ich daran gescheitert, dass ab dem Befehl mit der Tasteneingabefunktion, diese nicht funktioniert.
Betrete ich die Treppe, wird eine Variable auf 1 gestellt, welche ein Paralleles Map-Event aktiviert und je nachdem in welche Richtung man gerade schaut die Variable für die Tasteneingabe (Links oder Rechts) auf die dafür entsprechende Bedingung einstellt.
Wenn ich "Warten bis Taste gedrückt" eingestellt habe, geht es nicht mehr weiter bzw. habe ich das Gefühl, das der Maker den Befehl einfach ignoriert, denn wenn ich mir danach eine Nachricht ausgeben lassen will, kommt es nie dazu.
Ich kann währenddessen jedoch die ganze Zeit normal weiterlaufen.

Ich habe natürlich geschaut, ob irgendein Common-Event oder eines der anderen Map-Events das weiterlaufen des parallelen Treppenevents blockiert. Entdecken konnte ich jedoch nichts dergleichen.

Woran es weiterhin liegen kann habe ich keinen Plan, aber vielleicht kommt ja jemandem dieses Problem bekannt vor, bzw. hat jemand eine Idee.

BlueGesyr
23.01.2013, 00:11
Meines Erachtens muss das Ganze per AutoStart umgesetzt werden, um die restliche Hero-Bewegung zu blockieren.
Beispiel:
https://www.dropbox.com/s/0p4ql8dd9r9vync/Diagonal%20Laufen.exe

Oktorok3
24.01.2013, 16:45
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!

BlueGesyr
24.01.2013, 17:43
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.

Oktorok3
24.01.2013, 19:44
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.
<>

R.F.
24.01.2013, 20:31
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.

Marche Radiuju
24.01.2013, 23:04
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:

http://s7.directupload.net/images/130124/keyeb6yz.png

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.

Oktorok3
25.01.2013, 15:49
@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!

Cherry
25.01.2013, 18:09
@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.

Oktorok3
25.01.2013, 19:36
@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)

Cherry
29.01.2013, 15:22
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

Oktorok3
29.01.2013, 19:53
@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!