PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem [kA bei was genau^^]



.matze
26.12.2006, 01:45
Joar, nun ich war dabei ein wenig mit dem Maker herumzuexperimentieren und durch die Diebe X-Mas Version bin ich dann schließlich auf die Idee gekommen ein Schlösserknacksystem zu machen/probieren.
Joar und folgendes sind meine vergeblichen Versuche:
(hoffe man kann alles gut lesen und sich gut zurechtfinden, sind größe Bilder des Codes)

http://img413.imageshack.us/img413/3073/hilfetechnikzc3.png
http://img222.imageshack.us/img222/4134/hilfetechnik3ka4.png
http://img157.imageshack.us/img157/2749/hilfetechnik2qc3.png
So joar und das Problem ist eben das das ganze immer nur einmal geht (also immer nur eine Battelanimation kommt und je nach dem ob die richtig gedrückt worden ist oder nicht kommt dann halt "war wohl nichts" oder eben "juhu^^" ich habs jetzt mehrmals durchgeschaut aber einfach keinen Fehler gefunden, was wohl daran liegt das ich was technik betrifft nicht gerade bewandert bin.

achja und wenn ich gerade schon dabei bin, wie kann ich es machen das man nicht wie hier beim diesem beispiel, da muss man 3.0 sec warten egal wann man die taste drückt, sondern das es weiter geht sobald die taste gedrückt wird oder nach 3 sec? (schlecht formulierter satz ich weis, ist eben spät)

Aldinsys
26.12.2006, 18:32
achja und wenn ich gerade schon dabei bin, wie kann ich es machen das man nicht wie hier beim diesem beispiel, da muss man 3.0 sec warten egal wann man die taste drückt, sondern das es weiter geht sobald die taste gedrückt wird oder nach 3 sec? (schlecht formulierter satz ich weis, ist eben spät)

Beim 2003er gibts dafür die Option Wait until Key Pressed für den Key Input Processing Befehl. Da musst du nur ein Häckchen anfügen und schon wird bis zur Tasteneingabe gewartet und nach dieser folgen sofort die nächsten Befehle.

Phönix Tear
27.12.2006, 00:58
Joa, da es schon spät ist und ich nicht ganz genau weiß wie dein Schlösserknacken-System am Ende aussehen soll, kann ich im Moment nur deine zweite Frage beantworten. Wenn ich dich richtig verstanden habe willst du wissen: "Wie kriege ich es hin das der Maker maximal 3 Sekunden auf die Tasteneingabe des Spielers wartet?"
Das kann man folgendermaßen machen (geht sicher auch anders, so ist es aber am leichtesten zu verstehen ^^° (und zu mehr bin ich heute Abend / Morgen) auch nicht fähig...):

<>Change Variable "Zähler", set 0
<>!Lable 1!
<>Enter Password "Tasteneingabe" [(1,2,3,4 ; 5 ; 6) | Do not wait until key hit]
<>Fork Variable "Tasteneingabe" = 0
<><>Change Variable "Zähler" +1
<><>Wait 0,0 secs
<><>Fork Variable "Zähler" < 180
<><><>Goto !Lable 1!
<><>End:
<>End:
<>
<>Dein Code der auf der Tasteneingabe beruht
<>
Habs gerade noch getestet und es funzt. Nachteile: Man braucht jedes mal einen Lable. Eine weitere Möglichkeit wäre natürlich ein weiteres Event einzuschalten welches die 3 Sekunden abwartet. Das ist imo aber noch umständlicher...

Wenn ich morgen dazu Zeit finde werde ich mich gerne selber mal an einem Schlösser knacken probieren und den Code dann hier posten. Vorher müsste mir nur noch jemand erklären wie genau das aussehen soll ^^°.

mfg
Phönix Tear

Edit:
Brauchst du ne Erklärung was der Code macht? Wenn ja:
Ich benutze hierbei eine einfache Schleife mit Zähler. Diese wird 180 mal durchlaufen und jedes Mal getestet ob der Spieler eine Taste gedrückt hat. Wenn ja wird die Schleife beendet und der Folgecode kann durchlaufen. Sollte der Wert in der Tastenabfrage-Variable immer noch 0 sein, es ist also keine Taste gedrückt worden, wird die Zähler Variable um 1 erhöht und so lange zurück zum Anfang der Schleife gesprungen, bis entweder eine Taste gedrückt wurde, oder die Zählervariable den Wert 180 hat, also 3 Sekunden vergangen sind (180 x 0,0 Sekunden = 30 x 0,1 Sekunde = 3 Sekunden). Mehr passiert eigentlich garnicht ;)

Edit 2:
*Pfff*, jetzt hat mir das doch keine Ruhe gelassen. Ich habs jetzt selber mal ausprobiert und es funktioniert. In deinem Skript konnte ich so nämlich auch keinen Fehler sehen ^^°.
Also hier mein eigener Code mit dem oben beschriebenen Wartezyklus:

<>Change Variable "Richtige Versuche", set 0
<>
<>!Lable 1!
<>
<>Fork Variable "Richtige Versuche" < 10
<><>Change Variable "Random Richtung", set [Random 1-4]
<><>Fork Variable "Random Richtung" = 1
<><><>Show BA "unten" at 'Hero'
<><>Else:
<><>Fork Variable "Random Richtung" = 2
<><><>Show BA "links" at 'Hero'
<><>Else:
<><>Fork Variable "Random Richtung" = 3
<><><>Show BA "rechts" at 'Hero'
<><>Else:
<><>Fork Variable "Random Richtung" = 4
<><><>Show BA "oben" at 'Hero'
<><>End:
<><>
<><>Change Variable "Zähler", set 0
<><>!Lable 2!
<><>Enter Password "Tasteneingabe" [(1,2,3,4) | Do not wait until key hit]
<><>Fork Variable "Tasteneingabe" = 0
<><><>Change Variable "Zähler" + 1
<><><>Wait 0,0 secs
<><><>Fork Variable "Zähler" < 180
<><><><>Goto !Lable 2!
<><><>End:
<><>End:
<><>
<><>Fork Variable "Random Richtung" = "Tasteneingabe"
<><><>Play SF "Sound für richtig"
<><><>Change Variable "Richtige Versuche" + 1
<><><>Goto !Lable 1!
<><>Else:
<><><>Play SE "Sound für falsch"
<><><>Change Variable "Richtige Versuche", set -1
<><>End:
<>End:
<>
<>Fork Variable "Richtige Versuche" = -1
<><>Show Msg: "Das war wohl nix!"
<>Else:
<><>Show Msg: "Schloss erfolgreich geknackt!"
<>End:
<>
Hmm, ja, was gibst da viel zu erklären?
Zu beginn wird abgefragt ob man bereits 10 mal richtig gedrückt hat. Wenn nicht wird eine neue zufällige Richtung festgelegt und dem Spieler diese per BA angezeigt. Dann kommt der Code von oben. Dieser wartet maximal 3 Sekunden auf die Tasteneingabe. Wurde eine Taste gedrückt oder sind die 3 Sekunden vorbei wird abgefragt ob die Tasteneingabe richtig war. Wenn ja wird die Anzahl der richtigen Versuche um 1 erhöht, wenn nicht wird diese auf -1 gesetzt. Dies hat weiter keine Bedeutung, soll nur am Ende klar machen das man es nicht geschafft hat. Dadurch das in diesem Fall der Fork Condition das "Goto Lable 1" fehlt wird auch die Fork verlassen, welche prüft ob bereits 10 Richtige Versuche vorliegen, und damit kommt es zur abschließenden Kontrolle. Diese wird also nur erreicht wenn entweder etwas falsches, oder 10 mal etwas richtiges gedrückt wurde. Dementsprechend muss sie auch nur abfragen ob die Anzahl der richtigen Versuche bei -1 liegt, dem Erkennungszeichen das der Versuch gescheitert ist. Wenn ja wird dem Spieler dies klar gemacht. Wenn nein hat er das Schloss erfolgreich geknackt...

Hoffe das hilft dir weiter ;)

mfg
Phönix Tear

.matze
27.12.2006, 14:03
omg danke echt geil :) :A :A :A

(muss wohl noch ein bisschen arg üben um gut zu werden^^)