Ergebnis 1 bis 11 von 11

Thema: RM2K: Maus-Patch-Koordinaten-Abfragen funktionieren nicht.ERST DURCHLESEN DANN POSTEN

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Verzweifle nicht, ich hab die Lösung

    Sowas ähnliches habe ich mit DynRPG schonmal gebastelt, der Trick ist hier den Event IDs und den Call Commonevent auszunutzen.
    (Vorsicht das ist alles in Pseudo Code jetzt, zur Not kann ich mal schaun ob ich das Projekt noch hab und es dir schicken.)

    (Ich gehe mal davon aus, dass die Events Gegner sein sollen)
    Vorbereitung:
    Du solltest dir im Klaren sein, wieviel Gegner es maximal in einem Kampf geben soll, aus deinem ersten Post nehme ich mal an es sind 17. Jetzt legst du 17 Events hintereinander an, wichtig dabei, dass deren Event ID fortlaufend ist. (d.h. von z.B. 20-37)
    Optimal ist es auch, wenn die Events hohe Event IDs besitzen, denn wenn du den Get Event ID-Befehl auf ein Feld benutzt auf dem mehrere Events liegen wird nur die höchste ID der Events zurück gegeben! (afaik)


    Für die Mausabfrage benutzt du einen Parallelen Prozess. Du fragst die X- und Y-Koordinaten des Cursors ab und dann rechnest du sie ins Maker-Koordinatensystem um (einfach /16). Anschließend speicherst du die Event-ID an Maus-X-Grid und Maus-Y-Grid.
    Nun fragst du ab, ob die Event ID größergleich deiner ersten Gegner-Event-ID (hier 20) und kleinergleich der größten ist (hier 37). Wenn ja => roten Cursor anzeigen, wenn nein => grauen.
    Jetzt speicherst du die aktuellen Grid-Koordinaten in zwei Variablen (Grid-X-Old & Grid-Y-Old). In deinem Parallelen Prozess fragst du ab, ob sich die Grid-Position im Vergleich zu Grid-Old verändert hat, denn wenn nicht hast du das Feld bereits gecheckt und brauchsts ja nicht nochmal machen
    Ans Ende kannst du (glaube ich) einen 0.0 Wait für die Performance packen.

    (Achtung Pseudo-Code)
    Code:
     
    Maus-Grid-X = Maus-Pos-X /16
    Maus-Grid-Y = Maus-Pos-Y/16
    
    if (Maus-Grid-X != Grid-X-Old || Maus-Grid-Y != Grid-Y-Old)
       Grid-X-Old = Grid-X-Old
       Grid-Y-Old = Grid-Y-Old
       Event ID = Get Event ID (Maus-Grid-X, Maus-Grid-Y)
       If (19 < Event ID < 38)
          Cursor rot anzeigen
       else
          Cursor grau anzeigen
       end
    end 
    
    Wait 0.0
    Ein einfacher Trick, um anklickbare Events zu machen ist, wenn du in den obigen Code noch einen Schnipsel mit dem Call Common Event einfügst und die erste Seite des Events aufrufst, dass du mit Get Event ID gespeichert hast.
    Code:
    if (Switch: Rechts Klick = ON)
       Page ID = 1
        If (19 < Event ID < 38)
          Call Common Event (Event ID, Page ID)
        end
    end

  2. #2
    Hab nicht wirklich ne Ahnung aber...
    ...vielleicht kommt ja der Maker nicht klar, dass du in so vielen Parallelen Prozessen gleichzeitig immer wieder die Variablen MausX und MausY auslesen willst...
    Vielleicht blockiert sich der Read Befehl oder was immer das ist, dann mit den anderen... u.U. gibts ja eine Lösung alle Events in einem Event zu testen ^^°

  3. #3
    Du hast da tatsächlich einfach ein Synchronisationsproblem: Die Events laufen gleichzeitig (intern blockweise, darum passiert bei 2 Events anscheinend noch nix), verwenden bei dir also gleichzeitig die Variablen 0002 und 0003, was natürlich nicht gehen kann.

  4. #4
    Puh... schwere Geburt. Habs hinbekommen, Danke Leute.

Berechtigungen

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