Ergebnis 1 bis 20 von 1418

Thema: Technik-Sammelthread für Probleme und Antworten

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    FUCK ! XD Ich wollte es erst "Mathe" schreiben argh
    ist ja auch egal >_>

    es geht - das ist alles was zählt danke nochmal

  2. #2
    Ich hab' derzeit folgendes Problem:
    Ich bin einfach zu blöd, ein einfaches Skript zu machen, bei dem es darum geht, schnell hintereinander die Enter-Taste zu drücken. Bei jedem Druck von Enter soll eine Variable um einen Punkt erhöht werden. Ich hab' das bis jetzt so gemacht:

    Code:
    Label 1
    Variable Oper: [ENTER] Set 0
    Key Input Proc: [ENTER]
    Branch If Var [ENTER] is 5
     Variable Oper: [ZÄHLER] + 1
     Wait 0.0
     Jump to Label 1
    End
    Ein Timer läuft, der nach 5 Sekunden einen Switch aktiviert, der das Ganze dann beendet. Sobald ich aber nur 1 mal Enter drücke, wird die Variable ZÄHLER aber automatisch immer wieder um 1 erhöht und der Zähler steht dann auf 11. Wenn ich öfter drücke (also wirklich ganz, ganz schnell) dann bekomme ich maximal 29 zusammen. Wenn ich nichts drücke, bleibt er auf 0.

    Wie kann ich es besser lösen?

    LG Mike

  3. #3
    ...
    Branch If Var [ENTER] is 5
    ..Variable Oper: [ZÄHLER] + 1
    ..Label 2
    ..Key Input Proc [ENTER] (ohne wait until key press)
    ..Branch If Var [ENTER] is 5
    ....Wait 0.0
    ....Jump to Label 2
    ..:End
    ..Jump to Label 1
    ...

  4. #4
    Ich weiß zwar nicht, was ich jetzt falsch gemacht habe, aber jetzt zählt es immer 5, egal wie viel ich drücke ^^ Wo gehört der Label 1 hin, damit ich zu Label 1 springen kann, der am Ende steht? Ich habe deinen "Code" jetzt in meine erste Bedingung getan.

    LG Mike

  5. #5
    Willst du "ist Key gedrückt" periodisch abfragen oder willst du die Anzahl der Tastendrücke (Drücken + Loslassen) detektieren? Das ist die wesentliche Frage.

  6. #6
    Diesen Teil aus deinem Code:

    Code:
    Branch If Var [ENTER] is 5
     Variable Oper: [ZÄHLER] + 1
     Wait 0.0
     Jump to Label 1
    ...ersetzt du durch meinen.

  7. #7
    @Corti: Ich will die Anzahl der Tastendrücke zählen.

    @Cherry: Gut, dann hab ich es nach deiner Beschreibung eh schon richtig gemacht gehabt. Es zählt komischerweise jetzt (egal wie oft ich drücke) immer 11.

    LG Mike

  8. #8
    Ist der Code den du gepostet hat, das komplette Event?

    Zeig uns mal sowohl das Tastenabfrage-Event als auch das Zeit-Mess-Und-Switch-Ausmach-Event.

    [Copypasta]
    Verwende für so etwas bitte den EasyEventExporter. Spart Arbeit und zeigt außerdem Eventeinstellungen an, die normal nicht sichtbar sind (z.B. Picturetransparenzen - oder hier die genauen Einstellungen vom Key Input Processing, etc.)

    1. das ganze Event kopieren (Rechtsklick->kopieren)
    2. EasyEventExporter öffnen
    3. Bei der Frage auf "Ja" klicken und die Datei "vbcode_lightbg.eft" im Ordner "ftemplates" auswählen (dadurch wird der Code im Forum gehighlighted
    4. Das Ergebnis dann hier reinkopieren

  9. #9
    Kurz:

    Taste wird gedrückt
    Script: ist die Taste gedrückt? if(ja) +1
    Script: ist die Taste gedrückt? if(ja) +1
    Script: ist die Taste gedrückt? if(ja) +1
    Script: ist die Taste gedrückt? if(ja) +1
    Script: ist die Taste gedrückt? if(ja) +1
    Script: ist die Taste gedrückt? if(ja) +1
    Script: ist die Taste gedrückt? if(ja) +1
    Taste wird losgelassen

    und verbessert:

    Taste wird gedrückt
    Script: ist die Taste gedrückt? if(ja) +1~ wait 0.0
    Script: ist die Taste gedrückt? if(ja) +1~ wait 0.0
    Script: ist die Taste gedrückt? if(ja) +1~ wait 0.0
    Script: ist die Taste gedrückt? if(ja) +1~ wait 0.0
    Script: ist die Taste gedrückt? if(ja) +1~ wait 0.0
    Taste wird losgelassen

    ...na, warum zählts nicht richtig?^^

  10. #10
    Das "Enter-Hämmern"-Event:
    Zitat Zitat von EasyEventExporter
    --- EVENT ---
    Type: Map event
    Name: EV0067
    Coordinates: (9, 0)
    Number of Pages: 2

    -- PAGE 1 --
    Start conditions:
    • Switch [75] == ON
    Sprite: z-objekte1 #0
    Facing direction: Down
    Animation frame: Center
    Transparent: No
    Trigger condition: Parallel process
    Event level: Same level as hero
    Forbid event overlap: No
    Animation type: Non-continuous
    Movement type: Stationary
    Movement frequency: 3
    Movement speed: 3
    - SCRIPT -
    <> Label: 1
    <> Change Variable: [3] = 0
    <> Key Input Processing: Var. [3], Keys: Decision
    <> Fork Condition: If Variable [3] == 5 then ...
    . <> Change Variable: [22] += 1
    . <> Label: 2
    . <> Key Input Processing: Var. [3], Keys: Decision
    . <> Fork Condition: If Variable [3] == 5 then ...
    . . <> Wait: 0,0 sec.
    . . <> Jump To Label: 2
    . . <>
    . : End of fork
    . <> Jump To Label: 1
    . <>
    : End of fork
    <>

    -- PAGE 2 --
    Start conditions:
    • Switch [76] == ON
    Sprite: z-objekte1 #0
    Facing direction: Down
    Animation frame: Center
    Transparent: No
    Trigger condition: Push key
    Event level: Same level as hero
    Forbid event overlap: No
    Animation type: Non-continuous
    Movement type: Stationary
    Movement frequency: 3
    Movement speed: 3
    - SCRIPT -
    <>
    und hier das Timer-Event:
    Zitat Zitat von EasyEventExporter
    --- EVENT ---
    Type: Map event
    Name: EV0069
    Coordinates: (10, 0)
    Number of Pages: 2

    -- PAGE 1 --
    Start conditions:
    • Switch [75] == ON
    Sprite: z-objekte1 #0
    Facing direction: Down
    Animation frame: Center
    Transparent: No
    Trigger condition: Parallel process
    Event level: Same level as hero
    Forbid event overlap: No
    Animation type: Non-continuous
    Movement type: Stationary
    Movement frequency: 3
    Movement speed: 3
    - SCRIPT -
    <> Change Timer: Set timer 1 to 0'5"
    <> Change Timer: Start timer 1
    <> Loop
    . <> Fork Condition: If Timer 1 <= 0'0" then ...
    . . <> Move Picture: #41, (160, 130), Mgn 100%, Tsp 100%/100%, 0,1 sec., Wait
    . . <> Erase Picture: #41
    . . <> Change Switch: [76] = ON
    . . <>
    . : End of fork
    . <> Wait: 0,0 sec.
    . <>
    : End of loop
    <>

    -- PAGE 2 --
    Start conditions:
    • Switch [76] == ON
    Sprite: z-objekte1 #0
    Facing direction: Down
    Animation frame: Center
    Transparent: No
    Trigger condition: Push key
    Event level: Same level as hero
    Forbid event overlap: No
    Animation type: Non-continuous
    Movement type: Stationary
    Movement frequency: 3
    Movement speed: 3
    - SCRIPT -
    <>
    Edit: Ach, jetzt muss ich mir Cortis Text auch noch schnell durchlesen xD Der ist in meinem Post derzeit noch nicht berücksichtigt ^^

    Edit: Weil meins nicht kapiert, wann Enter losgelassen ist? Ich kapiers trotzdem noch immer nicht.

    LG Mike

  11. #11
    Zitat Zitat von Mike Beitrag anzeigen
    Edit: Weil meins nicht kapiert, wann Enter losgelassen ist? Ich kapiers trotzdem noch immer nicht.
    Na das geht doch schon in Richtung Verständnis.

    Du zählst keinen Tastendruck, du guckst, ob gedrückt ist.

    Praktisch gehts so:

    Die Taste ist nicht gedrückt, dein Script guckt mehrmals pro Sekunde ob was ist und denkt sich "hey , ne, da is nix, kein Tastendruck".

    Dann wird die Taste gedrückt, dein Script guckt "hey, ist gedrückt" und addiert +1 und einen Bruchteil einer Sekunde später wieder "hey, ist gedrückt" und addiert +1 und einen Bruchteil einer Sekunde später....

    Was passieren sollte ist:
    Taste wird gedrückt
    Script: "hey, ist gedrückt" und addiert +1 ~ und einen Bruchteil einer Sekunde später
    Script: "hey, ist gedrückt, ist aber immernoch derselbe" und nix +1

    dann wird die Taste losgelassen und Script stellt fest: "hey, die Taste ist nicht mehr gedrückt, d.h. jetzt muss ich wieder aufpassen ob ein Tastendruck kommt"

    Wie löst man das technisch?
    Die Tasteneingabe in eine zweite Variable kopieren und dann den Zähler nur erhöhen wenn die Tasteneingabe deiner Decision entspricht, also "5" ist UND die vorherige Tasteneingabe auf 0 oder nirgendwas nicht-5 ist.

    So, damit solltest du es jetzt lösen können ;-)

  12. #12
    Corti, du irrst. Schau dir meinen Code mal genauer an. Wenn die Taste gedrückt ist, warte ich, bis sie wieder losgelassen ist.

  13. #13
    Zitat Zitat von Cherry Beitrag anzeigen
    Corti, du irrst.
    Cherry, wenn ich ihm eine Möglichkeit gebe, die funktioniert wird diese auch dann nicht weniger funktionierend oder gar falscher weil du eine leicht andere Variante vorgeschlagen hast. Ich hab mir deinen Code auch ehrlichgesagt gar nicht genau angesehn, ich hab nur gesehn, dass Mike zu viele Enters zählte, auch nach dem er beteuerte, deine Zeilen korrekt eingebaut zu haben, darum ging ich davon aus, dass sich an dem Problem selbst nichts geändert hat.

  14. #14
    Ich behaupte nicht, dass deine Methode falsch ist. Nur hast du behauptet, er würde den Fehler machen, ständig nur den Status abzufragen und dann zu zählen und nicht das Loslassen abzuwarten.
    Das scheint ja seit dem Einbau meines Codes nicht mehr der Fall zu sein.

    Ich hatte aber gerade eine andere Idee: Mir fiel gerade ein dass der Maker dazu neigt, Nuller bei regelmäßiger Key Input Proc Abfrage einzustreuen auch während man die Taste gedrückt hält. Eine Methode, die das umgeht, wäre diese:

    Statt...

    Code:
    . <> Label: 2
    . <> Key Input Processing: Var. [3], Keys: Decision
    . <> Fork Condition: If Variable [3] == 5 then ...
    . . <> Wait: 0,0 sec.
    . . <> Jump To Label: 2
    . . <>
    . : End of fork
    ... das einbauen:

    Code:
    Change Var [AndererZähler] = 0
    Label: 2
    Key Input Processing [ENTER]
    Branch If Var [ENTER] is 5
    ..Change Var [AndererZähler] = 0
    ..Jump to label 2
    :Else
    ..Change Var [AndererZähler] + 1
    ..Branch If Var [AndererZähler] < 3
    ....Jump to label 2
    ..:End
    :End

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •