• Anmelden

1

Freitag, 29. Februar 2008, 22:19

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


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

Anemone

Rekrut

Motto: Was zählt ist nicht das eigene Leben, sondern es aufs Spiel zusetzen.

  • Nachricht senden

2

Samstag, 1. März 2008, 11:46

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

3

Samstag, 1. März 2008, 19:06

Das funktioniert leider nicht wirklich ._.
Die Bimaps von Events werden als ganze Charsets genommen..
Hat jemand vielleicht eine andere Idee?

4

Sonntag, 2. März 2008, 17:05

Hallo,
willst du nur wissen ob ein Spiel auf das Feld geklickt hat, wo das Event rumgeistert oder pixelgenau das Event erwischt hat?

Gruß Sven
:information: YAams
:rainbow: Random Signatur
Bild





Weitere Informationen | Download
Mit Support für RGSS Project 1!
Bild

5

Sonntag, 2. März 2008, 17:16

Pixelgenau
Ich will wissen ob man mit den Koordinaten auf dem Bild des Events getroffen hat.. zusätzlich sollen die transparenten Stellen weggelassen werden.
Ja hört sich schwer an, aber es liegt halt nur an den Bitmaps der Events.. ._.

Social Bookmarks