Maus auf Event (ID und BILD)
Ich habe ein Problem. ;__;
Meine Scriptschnipsel funktionieren nüch ;3;
Das Script soll folgendes können
Ein Cursor mit aktuellen Mauskoordinaten ist schon vorhanden.. Es soll prüfen, ob der Cursor (Spitze) sich auf der Grafik eines beliebigen Event's befindet. Wenn er sich auf einer Grafik befindet, soll die ID des Event's in eine Variable gespeichert werden.
Klickt man jetzt auf die linke Maustaste, werden die Koordinaten der Maus in zwei Variabeln abgespeichert (x,y). Nach dem Klick soll geprüft werden, ob sich diese Koordinaten auf dem sichtbaren Teil des Bitmap's des Event's befinden, wenn sie sich auf dem sichtbaren Teil befinden soll etwas ausgeführt werden.
Mögliche Hilfen
Ich hoffe das sich das hier jemand zur Brust nimmt und eine saubere Lösung parat hat.
Danke :3
Mit süßen Grüßen,
Rajika
Meine Scriptschnipsel funktionieren nüch ;3;
Das Script soll folgendes können
Ein Cursor mit aktuellen Mauskoordinaten ist schon vorhanden.. Es soll prüfen, ob der Cursor (Spitze) sich auf der Grafik eines beliebigen Event's befindet. Wenn er sich auf einer Grafik befindet, soll die ID des Event's in eine Variable gespeichert werden.
Klickt man jetzt auf die linke Maustaste, werden die Koordinaten der Maus in zwei Variabeln abgespeichert (x,y). Nach dem Klick soll geprüft werden, ob sich diese Koordinaten auf dem sichtbaren Teil des Bitmap's des Event's befinden, wenn sie sich auf dem sichtbaren Teil befinden soll etwas ausgeführt werden.
Mögliche Hilfen
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class Scene_Map
def in_graphic?(x,y)
id = 0
for sprite in @spriteset.character_sprites
if sprite.character.is_a?(Game_Event)
x1 = sprite.x
y1 = sprite.y
x2 = sprite.x + sprite.bitmap.width
y2 = sprite.y + sprite.bitmap.height
if x > x1 && y > y1 && x < x2 && y < y2
id = sprite.character.id
end
end
end
return id
end
end |
|
|
Quellcode |
1 2 3 4 |
@id = $scene.in_graphic?(@cursor.x,@cursor.y) @event_sprite = $scene.spriteset.character_sprites[@id] @eventgetroffen = @event_sprite.bitmap.get_pixel(@cursor.x-@event_sprite.x,@cursor.y-@event_sprite.y) print @eventgetroffen |
Ich hoffe das sich das hier jemand zur Brust nimmt und eine saubere Lösung parat hat.
Danke :3
Mit süßen Grüßen,
Rajika
Benutzerinformationen überspringen
Motto: Was zählt ist nicht das eigene Leben, sondern es aufs Spiel zusetzen.
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
class Scene_Map
def in_graphic?(x,y)
for sprite in @spriteset.character_sprites
x1 = sprite.x
y1 = sprite.y
x2 = sprite.bitmap.width
y2 = sprite.bitmap.height
if Rect.new(x1,y1,x2,y2).inside?(x, y)
return sprite.character.id
end
end
return -1
end
end
class Spriteset_Map
attr_reader :character_sprites
end
class Rect
def inside?(x, y)
return ((x >= self.x) and (x < self.x+width) and
(y >= self.y) and (y < self.y+height))
end
end |
Abfrage:
|
|
Quellcode |
1 2 3 4 5 |
id=$scene.in_graphic?(@cursor.x,@cursor.y)
if id >= 0
print "Event #{id} wurde ausgewählt"
else
end |


YAams
Random Signatur