Ergebnis 1 bis 15 von 15

Thema: Ineluki's Mauspatch div. Fragen

  1. #1

    Ineluki's Mauspatch div. Fragen

    Ich spiele derzeit wieder ein wenig mit dem Mauspatch von Ineluki herum und da sind (erstmal) drei Fragen aufgetaucht:

    1. Gibt es eine Möglichkeit zu verhindern, dass die Maus, bzw. der Mauszeiger, im Spiel sofort in eine bestimmte Ecke (bei mir rechts unten, vll. ist das immer so?) verschwindet, sondern standardmässig ersteinmal in der Mitte bleibt?

    2. Wie erstelle ich einen Mauszeiger, der aus zwei Teilen besteht. Aus einem Teil, der nicht transparent ist (dem Zeiger selbst zB.) und einem animierten, transparentem Teil. Bis jetzt habe ich nämlich das Problem, dass durch die Animation (in der sich "Waits" befinden) die Bilder nicht ständig, sondern im Abstand von einem Wait mit 0.1 aktualisiert werden und dadurch der transparente Teil hinter dem nicht transparentem her ist Sieht etwas komisch aus.

    3. Nehmen wir als Beispiel an, ich habe drei Menüpunkte (zB. Start/Laden/Beenden) die ich mit Tastatur UND Maus auswählen kann. Wie kann ich es nun machen, dass, wenn der Mauszeiger auf einem Punkt steht (zB. "Start") und dieser nun hervorgehoben ist, als Zeichen der aktuellen Auswahl, zB. mit einer anderen Schriftfarbe und ich dann mit der Tastatur auf "Laden" gehen will, dass sich die Maus dann nicht einmischt und eben "Laden" ausgewählt wird? Derzeit ist es so, dass ich mit der Maus zB. auf "Laden" fahre, mit der Tastatur aber auf "Start" will, dass der Punkt nur ganz kurz auf "Start" hüpft, da die Maus ja ständig ihre Position überprüft und dadurch die Auswahl wieder auf "Laden" setzt. Ich will aber, dass sich die Maus erst dann wieder einmischt, wenn ich sie bewege =/ Ist das irgendwie möglich?

    Danke schon einmal im Voraus!

    LG Mike

  2. #2
    Zur 3. Frage würde ich das so angehen, dass du die X und Y Koordinaten der Maus zwischenspeicherst, und diese dann mit den aktuellen Koordinaten vergleichen lässt (mit einem 0.0 Wait Abstand, vllt. auch mehr). Sollten die 'zwischengespeicherten' und die 'aktuellen' Koordinaten NICHT übereinstimmen, wurde der Cursor demnach bewegt.

    Diese Abfrage würde ich dann als Bedingung nutzen, ob der Menüpunkt durch den Cursor aktualisiert werden soll.

  3. #3
    @Kyuraan: Ha, das versuche ich dann am Nachmittag mal Danke!

    LG Mike

  4. #4
    Sorry für den Doppelpost, aber zur zweiten Frage habe ich bisher diese zwei Lösungen gefunden:
    1. Jede Animationsstufe mehrmals anzeigen lassen um so eine Verzögerung zu erreichen.
    2. Mehrere Eventseiten (jede Seite mit einer Stufe der Animation), die durch eine Variable gesteuert werden, die immer ein 0.1 Wait dazwischen hat.

    Mehr fallen mir momentan nicht ein. Jetzt habe ich wenigstens auch Zeit, die Lösung zu Frage 3 von Kyuraan zu versuchen ^^

    Edit:
    Cherry hat mir im Kami auch einen Tipp gegeben, der performancetechnisch der Beste ist

    LG Mike

    Geändert von Mike (05.12.2011 um 19:15 Uhr)

  5. #5
    Erneut eine Frage:

    Ich habe fünf Menüpunkte (nennen wie sie einfach 1, 2, 3, 4 und 5 ^^). Wenn ich mit der Maus über einen Menüpunkt (welcher durch ein Picture angezeigt wird) fahre, wird dieser durch ein anderes Picture ersetzt. Das funktioniert bisher auch ohne Probleme. Nur will ich das noch etwas genauer machen, was die Koordinaten angeht.

    Punkt 1:
    Wenn ich mit der Maus auf der x-Achse zwischen 189 und 293
    und auf der y-Achse zwischen 61 und 78 bin, soll zB. die Variable "Menü" auf 1 gesetzt werden.

    Punkt 2:
    Wenn ich mit der Maus auf der x-Achse zwischen 182 und 300
    und auf der y-Achse zwischen 91 und 108 bin, soll zB. die Variable "Menü" auf 2 gesetzt werden.

    Punkt 3:
    Wenn ich mit der Maus auf der x-Achse zwischen 198 und 283
    und auf der y-Achse zwischen 121 und 138 bin, soll zB. die Variable "Menü" auf 3 gesetzt werden.

    Punkt 4:
    Wenn ich mit der Maus auf der x-Achse zwischen 187 und 294
    und auf der y-Achse zwischen 151 und 168 bin, soll zB. die Variable "Menü" auf 4 gesetzt werden.

    Punkt 5:
    Wenn ich mit der Maus auf der x-Achse zwischen 177 und 304
    und auf der y-Achse zwischen 181 und 198 bin, soll zB. die Variable "Menü" auf 5 gesetzt werden.

    Bei allen anderen Positionen soll die Varibale "Menü" auf dem Wert bleiben, den sie zuletzt hatte.

    Wie mache ich das jetzt am besten? ^^

    LG Mike

  6. #6
    fork if x >= 189 then
    ...fork if x <= 293 then
    ......fork if y >= 61 then
    .........fork if y <= 78 then
    ............change var menü = 1
    .........end
    ......end
    ...end
    end

  7. #7
    So hab ich es derzeit sogar ^^ Irgendwo muss ich mich dann aber mit den "Else"-Fällen vertan haben, denn es funktioniert nur Menüpunkt 1 und nachher keiner mehr =/ Obwohl alle fünf Bedingungen gleich aussehen.

    LG Mike

  8. #8
    Das mit dem "else" kann man auch lassen. Man kann auch einfach alle 5 Menüpunkte (wie Cherry gezeigt hat) nacheinander abfragen.

    if bla
    .if bla
    ..if bla
    ...if bla
    ....var = 1
    ...end
    ..end
    .end
    end
    if bla
    .if bla
    ..if bla
    ...if bla
    ....var = 2
    ...end
    ..end
    .end
    end
    usw...

  9. #9

  10. #10
    Hallo! Ich hole meinen (über ein Jahr alten) Thread mal wieder hoch, weil ich ein paar Probleme habe, die ich nicht hinbekomme.

    Die beschriebenen Probleme von oben sind im Grunde immer noch die selben! Ich habe dieses Projekt, an dem ich damals mit dem Mauspatch herumgespielt habe, gelöscht, weil es damals wirklich nur zu Testzwecken war. Daher kann ich mich nicht mehr an die einzelnen Scripte erinnern und das Problem mit dem animierten Mauszeiger kann ich nicht lösen, weil der Tipp, den mir Cherry damals gegegen hat, im Kamikaze-Board stand, welches ja leider nicht mehr existiert.

    Meine Probleme sind also:
    1. Der Mauszeiger besteht aus mehreren Teilen. Von diesen Teilen soll ein Teil animiert sein. Der Mauszeiger besteht aus insgesamt 4 Bildern (Zeiger selbst + Animation aus 3 Bildern). Das Problem ist, nach wie vor, dass sich durch die Animation und derer Waits (die Animation möchte ich mit Move Picture machen, damit nicht immer jedes Bild neu angezeigt werden muss) der Animierte Teil nachhängt und nicht auf gleicher Höhe mit dem Zeiger selbst bleibt. Der Mauszeiger bleibt immer bestehen und die Animation passiert dadurch, dass immer nur eines der drei Bilder der Animation nicht zu 100% transparent ist.

    2. Gibt es eine Möglichkeit zu verhindern, dass der Mauszeiger in eine Ecke rutscht, sondern in der Mitte bleibt? (Dafür habe ich nie eine Lösung gefunden!)

    3. Nehmen wir als Beispiel an, ich habe drei Menüpunkte (zB. Start/Laden/Beenden) die ich mit Tastatur UND Maus auswählen kann. Wie kann ich es nun machen, dass, wenn der Mauszeiger auf einem Punkt steht (zB. "Start") und dieser nun hervorgehoben ist, als Zeichen der aktuellen Auswahl, zB. mit einer anderen Schriftfarbe und ich dann mit der Tastatur auf "Laden" gehen will, dass sich die Maus dann nicht einmischt und eben "Laden" ausgewählt wird? Derzeit ist es so, dass ich mit der Maus zB. auf "Laden" fahre, mit der Tastatur aber auf "Start" will, dass der Punkt nur ganz kurz auf "Start" hüpft, da die Maus ja ständig ihre Position überprüft und dadurch die Auswahl wieder auf "Laden" setzt. Ich will aber, dass sich die Maus erst dann wieder einmischt, wenn ich sie bewege =/ Ist das irgendwie möglich? (Die Lösung die mir Kyuraan damals gegeben hat, müsste funktionieren (so wie ich mich erinnere, habe ich das auch irgendwie geschafft). Leider bekomme ich es jetzt aber einfach nicht mehr hin.)

    LG Mike

  11. #11
    Zitat Zitat
    Das Problem ist, nach wie vor, dass sich durch die Animation und derer Waits (die Animation möchte ich mit Move Picture machen, damit nicht immer jedes Bild neu angezeigt werden muss) der Animierte Teil nachhängt und nicht auf gleicher Höhe mit dem Zeiger selbst bleibt.
    Bei allen Bestandteilen einen Nullwait verwenden.

    Zitat Zitat
    2. Gibt es eine Möglichkeit zu verhindern, dass der Mauszeiger in eine Ecke rutscht, sondern in der Mitte bleibt? (Dafür habe ich nie eine Lösung gefunden!)
    Was anderes als ITP benutzen.

  12. #12
    Zitat Zitat von MagicMaker Beitrag anzeigen
    Bei allen Bestandteilen einen Nullwait verwenden.
    Dann läuft die Animation zu schnell ab :/

    Zitat Zitat von MagicMaker Beitrag anzeigen
    Was anderes als ITP benutzen.
    Welche Alternativen gäbe es für den 2k3 + ForceHarmony?

    LG Mike

  13. #13
    Zitat Zitat von Mike Beitrag anzeigen
    Dann läuft die Animation zu schnell ab :/
    Dann zeige doch jedes Animationsframe mehrfach an.

  14. #14
    Power Patch, DynRPG mit Tastatur-&Maus-Plugin, Power Mode 2003

    @Animation: Ich würde es so machen:
    Am Anfang alle Animationsframes gleichzeitig anzeigen, mit Transparenz 100%.
    Bei jedem Frame (= in einem Loop mit Wait 0.0 bzw. in einem Parallel Process ohne Wait 0.0, weil ein PP einen impliziten 1-Frame-Wait am Ende hat):

    Eine Variable ("Framecounter") jeden Frame um 1 erhöhen.
    Framecounter in eine andere Variable ("Animationsframenummer") kopieren
    Animationsframenummer durch Geschwindigkeit der Animation dividieren (in (Spiel)Frames, z.B. 6 für 6/60=0,1 Sekunde pro Animationsframe)
    Animationsframenummer modulo Anzahl der Animationsframes rechnen
    Alle Animationsframebilder mit Move Picture an die aktuelle Mausposition verschieben (ohne Wartezeit), dabei aber für jedes Animationsframe einen Branch machen ob Animationsframenummer 0 (fürs erste Frame), 1 (fürs zweite Frame), etc. ist - wenn ja, Transparenz 0% verwenden, sonst Transparent 100%.

    Pseudocode:

    ANZEIGEN DER BILDER (bei Spielstart/Mapwechsel):
    Show Picture #1, AniFrame1, 100% Trans
    Show Picture #2, AniFrame2, 100% Trans
    Show Picture #3, AniFrame3, 100% Trans

    AKTUALISIEREN DER BILDER (in einem Loop mit Wait 0.0, oder in einem PP ohne Wait 0.0):
    Change Var Framecounter += 1
    Branch If Framecounter == 9999999 <<<< Das ist nur ein Überlaufschutz, ansonsten würde der Mauszeiger nach ~46 Stunden Spielzeit nicht mehr animieren
    ..Change Var Framecounter = 0
    End Case
    Change Var Animationsframenummer = Framecounter
    Change Var Animationsframenummer /= 9 (Geschwindigkeit = 9/60=0,15 Sekunden pro Animationsframe)
    Change Var Animationsframenummer Mod= 3 (Anzahl Animationsframes)
    Branch If Animationsframenummer == 0
    ..Move Picture #1, MausX/MausY, 0% Trans
    Else Case
    ..Move Picture #1, MausX/MausY, 100% Trans
    End Case
    Branch If Animationsframenummer == 1
    ..Move Picture #2, MausX/MausY, 0% Trans
    Else Case
    ..Move Picture #2, MausX/MausY, 100% Trans
    End Case
    Branch If Animationsframenummer == 2
    ..Move Picture #3, MausX/MausY, 0% Trans
    Else Case
    ..Move Picture #3, MausX/MausY, 100% Trans
    End Case

    Geändert von Cherry (19.02.2013 um 13:37 Uhr)

  15. #15
    Zitat Zitat von BlueGesyr Beitrag anzeigen
    Dann zeige doch jedes Animationsframe mehrfach an.
    Davon hat mir Cherry damals abgeraten, weil es Performance frisst. Weiß jetzt allerdings nicht mehr, ob das nur auf Show Picture oder auch auf Move Picture bezogen war.

    Edit:
    Oh, mal sehen was Cherry da schreibt ^^

    Edit:
    Das muss ich dann Zuhause sofort versuchen, wenn die Zeit reicht.
    Bzgl. Power Patch, DynRPG mit Tastatur-&Maus-Plugin, Power Mode 2003: Spielt es eine Rolle, ob ForceHarmony und IKP bereits verwendet werden oder kann ich alles zusätzlich patchen?

    LG Mike

    Geändert von Mike (19.02.2013 um 13:38 Uhr)

Berechtigungen

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