• Anmelden

1

Donnerstag, 17. Dezember 2009, 15:44

[Suche] Map per Event zentrieren sodass mehr sichtbar wird und umgekehrt

Hallo liebe Community,
Ich suche nach einem Script womit ich per Event die Map zentrieren kann, sodass man mehr von der Karte sieht, z.B. um eine Übersicht von der Map zu bekommen. Das soll natürlich dann auch wieder zum Ausgangspunkt gebracht werden können (normalzustand).
Ich habe als Beispiel ein Bild gemacht, das natürlich nur schnell und unsauber gemacht wurde.
Es wäre schön wenn man im CallScript einen bestimmten -/+Zoom Faktor einstellen kann und auch die Geschwindigkeit in der sich die Karte vergrößert/verkleintert. Der Spieler soll dabei im Mittelpunkt bleiben
»ChrisX930« hat folgendes Bild angehängt:
  • schlechtesBeispiel.PNG
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

2

Mittwoch, 30. Dezember 2009, 00:40

ich bäuchte immernoch so ein Script für mein RPG. Habe schon überall gesucht, aber nirgens was gefunden
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

3

Mittwoch, 30. Dezember 2009, 02:34

Wie genau meinst du das? Willst du nur ne kleine Ansicht? Oder willst du auf der GEsammtansicht auch laufen können?
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

4

Donnerstag, 31. Dezember 2009, 15:44

ich möchte nur, dass das ganze Gebiet dann angezeigt wird + die position des Charakters. Natürlich wäre das n perfekter weg die Map mit Charakterposition anzeigen zu lassen anstatt Fotos der ganzen map zu machen und zurechtzuschnippeln
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

5

Samstag, 2. Januar 2010, 11:51

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
class Game_System
  attr_accessor :minimap
  alias_method (:old_initialize, :initialize)
  def initialize()
    old_initialize()
    @minimap = false
  end
end
 
class Scene_Map
  alias_method(:old_update, :update)
  def update()
    old_update()
    unless Input.trigger?(Input::B) && $game_system.minimap
      $game_system.minimap = false
      $game_system.menu_disabled = false
    end
  end
end
 
module Show_Map
  def self.complete(events=false)
    width = $game_map.width
    height = $game_map.height
    @minimap = Sprite.new()
    @minimap.zoom_x = 640.0 / (width * 32)
    @minimap.zoom_y = 480.0 / (height * 32)
    @minimap.bitmap = Bitmap.new(width * 32, height * 32)
    map_pic = RPG::Cache.tileset($game_map.tileset_name)
    $game_map.width.times do |x|
      $game_map.height.times do |y|
        3.times do |i|
          x1   = ($game_map.data[x, y, i] - 384) % 8
          y1   = ($game_map.data[x, y, i] - 384) / 8
          rect = Rect.new(x1*32, y1*32, 32, 32)
          @minimap.bitmap.blt(x*32, y*32, map_pic, rect)
        end
      end
    end
    bmp = RPG::Cache.character($data_actors[1].character_name, 0)
    x = $game_player.x * 32
    y = $game_player.y * 32
    rect = Rect.new(0, 0, bmp.width / 4, bmp.height / 4)
    @minimap.bitmap.blt(x, y, bmp, rect)
    $game_system.menu_disabled = true
    $game_system.minimap = true
    if events
      $game_map.events.each do |i|
        next if i.nil?
        bmp = RPG::Cache.character(i[1].character_name, 0)
        rect = Rect.new(0, 0, bmp.width / 4, bmp.height / 4)
        @minimap.bitmap.blt(i[1].x * 32, i[1].y * 32, bmp, rect)
      end
    end
    loop do
      Graphics.update()
      Input.update()
      if Input.trigger?(Input::B)
        break
      end
    end
    @minimap.dispose()
  end
end


Aufrufbar im Call Script mit...

Ruby Quellcode

1
Show_Map.complete()

...(Ohne Eventbilder)
Mit Eventbilder so:

Ruby Quellcode

1
Show_Map.complete(true)


Im Spiel verschwindet das Bild mit der Taste Enter.
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

6

Samstag, 2. Januar 2010, 13:11

Also, ich habe mal ne Map zum test gemacht (60x60). Das gaze sieht aber ziemlich merkwürdig aus:
»ChrisX930« hat folgendes Bild angehängt:
  • bugg.PNG
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

7

Samstag, 2. Januar 2010, 13:44

Wenn du das Script gerade ausbesserst: durch dein simples übereinander legen, gehen sämtliche Prioritäten verlohren und es wird nur nach Layer sortiert, ausserdem werden nicht die exakten Frames der Chara-Grafiken genommen was bei SupportEvents mit verschiedenen Grafiken im Set, etwas komisch wirkt. Auch ist die Koordinaten Berechnung der Charas nicht ganz stimmig.
(Achte auf die ox,oy und die Eventseiten Grafik)
Könntest du gleich mit ausbessern. =)

8

Samstag, 2. Januar 2010, 13:51

passend wäre das natürlich schon was Playm sagte :D
Aber was Frames angeht ist eigentlich total egal.
Es soll nicht EXAKT so aussehen wie die Karte, sondern halt die Events mit dem Ursprungsframe "Nah vorne, bzw. unten schauen"
Sind die Autotiles Animiert muss dies nicht auf der Minimap so aussehen :D
Nur die aktuelle Charakter+Eventpositionen sollten stimmen ;)
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

9

Samstag, 2. Januar 2010, 15:12

@palym
Hab die Fehler die du jetzt so aufgezählt hast mal alle beseitigt, bis auf das mit der Priorität, was meinst du damit? Also fals es always_on_top war, dass hab ich jetzt beachtet...

ansonsten
@Thema
Hier das verbesserte script:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
class Game_System
  attr_accessor :minimap
  alias_method (:old_initialize, :initialize)
  def initialize()
    old_initialize()
    @minimap = false
  end
end
 
class Scene_Map
  alias_method(:old_update, :update)
  def update()
    old_update()
    unless Input.trigger?(Input::B) && $game_system.minimap
      $game_system.minimap = false
      $game_system.menu_disabled = false
    end
  end
end
 
class Game_Character
  attr_accessor :always_on_top
end
 
module Show_Map
  def self.complete(events=false)
    width = $game_map.width
    height = $game_map.height
    @minimap = Sprite.new()
    @minimap.zoom_x = 640.0 / (width * 32)
    @minimap.zoom_y = 480.0 / (height * 32)
    @minimap.bitmap = Bitmap.new(width * 32, height * 32)
    map_pic = RPG::Cache.tileset($game_map.tileset_name)
    $game_map.width.times do |x|
      $game_map.height.times do |y|
        3.times do |i|
          if self.autotile(x, y, i)
            next
          end
          x1   = ($game_map.data[x, y, i] - 384) % 8
          y1   = ($game_map.data[x, y, i] - 384) / 8
          rect = Rect.new(x1*32, y1*32, 32, 32)
          @minimap.bitmap.blt(x*32, y*32, map_pic, rect)
        end
      end
    end
    priority = []
    if events
      $game_map.events.each do |i|
        next if i.nil?
        if i[1].always_on_top
          priority.push(i)
          next
        end
        self.draw_event(i)
      end
      priority.each do |i|
        self.draw_event(i)
      end
    end
    bmp = RPG::Cache.character($data_actors[1].character_name, 0)
    x = $game_player.x * 32
    y = $game_player.y * 32 - (bmp.height / 4 - 32)
    yy = bmp.height / 4 * ($game_player.direction / 2 - 1)
    rect = Rect.new(0, yy, bmp.width / 4, bmp.height / 4)
    @minimap.bitmap.blt(x, y, bmp, rect)
    $game_system.menu_disabled = true
    $game_system.minimap = true
    loop do
      Graphics.update()
      Input.update()
      if Input.trigger?(Input::B)
        break
      end
    end
    @minimap.dispose()
  end
 
  def self.draw_event(i)
    rect = 0
    bmp = RPG::Cache.character(i[1].character_name, 0)
    for x in [2, 4, 6, 8]
      for y in 0..3
        unless i[1].direction == x && i[1].pattern == y
          next
        end
        x = (x / 2 - 1) * 32
        y = y * 32
        rect = Rect.new(x, y, bmp.width / 4, bmp.height / 4)
        x = i[1].x * 32
        y = i[1].y * 32 - (bmp.height / 4 - 32)
        @minimap.bitmap.blt(x, y, bmp, rect)
      end
    end
  end
 
  def self.autotile(x, y, i)
    return false if $game_map.data[x, y, i] > 383 || $game_map.data[x, y, i] == 0
    c = -1
    str = nil
    for ii in [47, 95, 143, 191, 239, 287, 335, 385]
      next if str != nil
      c += 1
      if ($game_map.data[x, y, i] - 48) < ii
        str = $game_map.autotile_names[c]
      end
    end
    map_pic = RPG::Cache.autotile(str)
    rect = Rect.new(32, 64, 32, 32)
    @minimap.bitmap.blt(x*32, y*32, map_pic, rect)
    return true
  end
end


Kann man noch immer mit dem selben Code aufrufen und es sollte jetzt auch alles funktionieren, bis auf dass die Autotiles nich richtig angezeigt werden, da es zu viel Arbeit/ zu Kompliziert währe es richtig zu machen...
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

10

Samstag, 2. Januar 2010, 16:12

Spoiler: @Hindi
Der Fehler der anscheinend noch drin ist: ein Bodentile mit Prirität 0, liegt über der Baumkrone (Priorität 5) wenn es auf einem höheren Layer gemappt wurde, und Events liegen sowieso über allem drüber.
Ich rede von der in der Database/Tileset einstellbaren Priorität. Diese wird nicht berücksichtigt.
Wusstest du nicht das man für jedes Tile eine eigenen Priorität einstellen kann? Die zusammen mit der Y Koordinate bestimmt die Z-Koordinate.
Nebenbei: Setzte die Scripte besser in Spoiler, zumindest ich, finde das übersichtlicher.
Um Autotiles anzuzeigen schau dir das Pixelmovement Script oder den Tilemaprewrite an, dort ist die Technik übersichtlich anzusehen.
zum Lesen den Text mit der Maus markieren

11

Samstag, 2. Januar 2010, 16:52

Spoiler: @Hindi
Der Fehler der anscheinend noch drin ist: ein Bodentile mit Prirität 0, liegt über der Baumkrone (Priorität 5) wenn es auf einem höheren Layer gemappt wurde, und Events liegen sowieso über allem drüber.
Ich rede von der in der Database/Tileset einstellbaren Priorität. Diese wird nicht berücksichtigt.
Wusstest du nicht das man für jedes Tile eine eigenen Priorität einstellen kann? Die zusammen mit der Y Koordinate bestimmt die Z-Koordinate.
Nebenbei: Setzte die Scripte besser in Spoiler, zumindest ich, finde das übersichtlicher.
Um Autotiles anzuzeigen schau dir das Pixelmovement Script oder den Tilemaprewrite an, dort ist die Technik übersichtlich anzusehen.
zum Lesen den Text mit der Maus markieren


Genau das mir aurade aufgefallen.
Das Problem ist nur, das ich die Ebenen ziemlich durcheinander gemacht habe, und es würde alles auf der MiniMap voll komisch aussehen
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

12

Samstag, 2. Januar 2010, 16:57

@palym
Das wusste ich noch nich xD, jetzt schon seit 5 Jahren dabei aba das ist mir noch nie aufgefallen^^, ich editiere es dann wieder hier rein.
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

13

Mittwoch, 6. Januar 2010, 00:59

hier besteht immernoch interesse :D
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

Social Bookmarks