PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Menü Aufruf - Enter und Esc gleichzeitig drücken



IndependentArt
24.08.2012, 12:09
ahoi,

kurz und knapp: ich habe in meinem spiel ein eigenes menü und dieses wird üblicherweise mit esc gerufen. jetz gibt es das problem, dass, wenn ich das menü rufe und gleichzeitig enter drücke, also irgendein event anspreche, dass dann zwar erstmal das kommt, das ich angesprochen hab, aber das nachdem das abgeschlossen ist, trotzdem noch das menü aufgerufen wird. bei einem kurzen dialog mag man da noch drüber hinwegsehen können. aber wenn sowas mal bei irgendeiner cutszene passiert kann das durchaus zu problemen führen. deswegen würd ichs schon gern anständig lösen.

was wäre also das übliche vorgehen um einen menü caller zu erstellen? :rolleyes:

TrueMG
24.08.2012, 12:29
Da stellt sich die schlichte Frage: Wieso drückst du Enter und Esc gleichzeitig? Mit zwei Eingaben erfolgen selbstverständlich auch zwei Reaktionen. Ein normaler Spieler würde so etwas für gewöhnlich nicht tun, daher ist ein Bugfix auch nicht wirklich notwendig.
ODER meinst du, dass du zB in einem Dialog aus irgendwelchen Gründen Esc drückst und dann eben nach dieser Box das Menü gerufen wird?

Ich würde ja spontan sagen: Deaktiviere das Menü vor Sequenzen, dann kann es auch nicht versehentlich aufgerufen werden. Wenn dein Menü über einen simplen Switch aktiviert wird, deaktiviere diesen zeitweilig.

[MG]

MajinSonic
24.08.2012, 13:17
Ich hab immer ein Event in den Common Events.

Vor einer Szene :

<>Call Event: BLOCKER AN

und nach der Szene

<>Call Event: BLOCKER AUS


Solltest du nämlich später mal Features hinzufügen, die ebenfalls bugs bei szenen auslösen können, so kannst du diese Nachträglich hiermit blocken lassen, ohne die ganzen events neu machen zu müssen.

LG
MajinSonic

IndependentArt
24.08.2012, 13:26
Da stellt sich die schlichte Frage: Wieso drückst du Enter und Esc gleichzeitig?

ich habs eben ausprobiert ^^ natürlich macht man das nicht. aber es stellt für doch eine gefahr dar, dass das spiel irgendwann mal - und das ist das was es für mich unter allen umständen zu vermeiden gilt - hängen bleibt.


Vor einer Szene :

<>Call Event: BLOCKER AN

und nach der Szene

<>Call Event: BLOCKER AUS

sowas hatte ich auch drin. also ich habs erstmal mit nem switch gemacht, der in dem event was man anlabert das menü aus macht. das verhindert zwar, dass man es während des dialogs rufen kann, aber es wird eben dann hinterher gerufen. und das passt mir nicht so recht ^^


Solltest du nämlich später mal Features hinzufügen, die ebenfalls bugs bei szenen auslösen können, so kannst du diese Nachträglich hiermit blocken lassen, ohne die ganzen events neu machen zu müssen.

das erscheint mir gemeinhin auf jeden fall ein intelligenter gedanke ^^ mal abgesehen von diesem "problem".


vielleich ist es aber auch, wie mg schon angedeutet hat, eine eigenschaft das makers, die ich hinnehmen sollte. und vielleicht bin ich ein wenig übermäßig paranoid o.o
ich hab jedoch auch in lachsens spielen mal nachgeschaut, der hat das iwie mit 2 events gemacht, allerdings bin ich da nicht so recht durchgestiegen. das eigentlich ruf-event war da ein autostart.

MajinSonic
24.08.2012, 14:04
Im Endeffekt machst du ein Parallel Process Call Event mit einem Switch...

In dem Code befindet sich dann die Tastenabfrage....und dann Call einfach das, was kommen soll.

Wenn der Switch aus ist, dann kannst du ESC hämmern bis zum umfallen...da passiert nix.
Man kann auch eine Doppelte sicherung ins Skript bauen.
BSP:


Common Event Parallel Process Switch [xxxx]

<>Key Input Processing (nur haken bei Cancel und den Wait haken)
<>Conditional Branche If Switch [xxxx] is ON<--- Der gleiche Switch wie der, oben neben dem Parallel Process
<> Call event: "Menü" oder sonst was
<>
else:
<>
End
<>


So wird TROTZDEM nochmal gefragt, ob der Switch an ist. Manchmal bleiben diese Parallel events laufen obwohl der switch aus ist...darum diese abfrage nochmal :D

Du siehst...wenn er an ist führt er es durch...ist er aus passiert nichts...

LG
MajinSonic

IndependentArt
24.08.2012, 15:35
Common Event Parallel Process Switch [xxxx]

<>Key Input Processing (nur haken bei Cancel und den Wait haken)
<>Conditional Branche If Switch [xxxx] is ON<--- Der gleiche Switch wie der, oben neben dem Parallel Process
<> Call event: "Menü" oder sonst was

ehm, wenn diese innere abfrage aber nach dem gleichen switch fragt, mit dem das event betrieben wird, kommt das event ja eh nicht bis zu der abfrage, wenn der switch off ist o_O sofern ich deine ausführungen richtig verstehe...

ich glaube, mein problem ist, dass der PP da weiter läuft, wo er gestoppt wurde.
das heißt, man hämmert auf esc, menü wird aktiviert, ganz kurz darauf hämmert man auf enter und der menü-PP wird unterbrochen. nach dem dialog den man mit enter aktiviert hat, wird der switch für das menü wieder an gemacht und das PP event läuft da weiter, wo es aufgehört hat, nämlich nach dem key input o_O
ich müsste also irgendeine den PP, der im hintergrund gestoppt ist, unterbrechen o_O *testen geh*

MajinSonic
24.08.2012, 23:05
Darum ist die doppelte abfrage drin... denn wenn das Event trotz des OFF weiterläuft, so passiert nichts mehr, da die abfrage ja ein OFF ergibt.

Also, wenn ein parallel process weiterläuft obwohl SWITCH ABC aus ist, dann kannst du aber IM CODE abfragen ob ABC an ist...sollte das nicht der fall sein...passiert nichts...

so hast du damit keine Probleme.

LG
MajinSonic

IndependentArt
25.08.2012, 09:36
das geht nicht. ich muss den switch ja wieder an machen nach dem dialog ^^
das wäre dann:
- menü/pp aktiviert
- pp unterbrochen von dialog, switch aus
- dialog zu ende, switch an
- pp läuft weiter - switch an? --> menü wird gerufen...

ich muss es ja wieder an machen, damit mans auch nach dem dialog wieder rufen kann.
----

aber ich habs jetz gelöst.
ich bin mir nicht mal sicher, warum es funktioniert, was mich auch schon wieder nervt, aber es funktioniert.
ich kann nur sagen, ich habs irgendwie mit einem PP gemacht, der dann einen autostart aktiviert, das ganze dann noch ein bisschen exakt mit waits verfeinert.

danke für die hilfe :)