• Anmelden

1

Dienstag, 16. März 2010, 13:03

Karten script ala Ocarina of Time

Hallo
Ich suche schon seit längeren nach einen MiniMap Script i Style von Ocarina of Time Bild
einfach und nur schematisch niicht wie diese aus Pixelmovement.
Und wenn ich schon einmal frage würde ich gerne wissen ob jemand ein gutes Mapscript kennt vo agezeigt wird wo man ist ambesten wieder so wie bei Ocarina auf Time im Pausemenü.
Ich hoffe ihr könnt mir helfen.

Danke
  • Shadows

    Infos folgen
  • TLoZ Master of Seasons

    Bald mehr infos

Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

2

Dienstag, 16. März 2010, 18:17

Ich hoffe das passt vorerst so... Fals du noch iwas haben willst oder so, frag einfach :D
Spoiler: Script (wiedermal ein neues Update) Menufix

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
##############################
# Linkminimapscript by Hindi##
##############################
 
class Game_Map
  attr_accessor(:map)
end
 
class Scene_Map
  alias_method(:old_old_old_main, :main)
  def main
    $minimap = Minimap.new
    old_old_old_main
    $minimap.dispose
  end
  alias_method(:old_old_old_update, :update)
  def update
    $minimap.update
    old_old_old_update
  end
end
 
class Game_Event
  attr_reader(:name)
end
 
# Das Script kannst du ganz einfach mit $minimap.visible = true oder false
# ein- oder ausblenden, was du dann in ein Callscript einfügst
 
# Zoom kannst du mit $minimap.zoom = 0.3 für das Spielfield in 30%tiger größe
# also orginalgröße * 0.3
 
# Unterm Spiel können die Farben für Benutzerdefinierteeinstellungen auch
# verändert werden mit $minimap.ac usw.
 
class Minimap
  # Hier kannst du die Farben der Events verändern:
  def c_normal
    return Color.new(0, 0, 0)
  end
  def c_blue
    return Color.new(0, 0, 255)
  end
  def c_yellow
    return Color.new(255, 255, 85)
  end
  def c_green
    return Color.new(85, 119, 0)
  end
  def c_red
    return Color.new(255, 85, 52)
  end
  def c_custom1
    return Color.new(0, 0, 0) # Hier kannst du Farben verändern
  end
  def c_custom2
    return Color.new(0, 0, 0) # Hier kannst du Farben verändern
  end
  def c_custom3
    return Color.new(0, 0, 0) # Hier kannst du Farben verändern
  end
  def c_custom4
    return Color.new(0, 0, 0) # Hier kannst du Farben verändern
  end
  def c_custom5
    return Color.new(0, 0, 0) # Hier kannst du Farben verändern
  end
 
 
 
  @@visible = false; def self.visible=(var); @@visible = var; end
  def self.visible=(var)
    @@visible = var
  end
  @@x = 10; def self.x=(var); @@x = var; end
  @@y = 10; def self.y=(var); @@y = var; end
  @@zoom = 0.3; def self.zoom=(var); @@zoom = var; end
  @@player = true; def self.player=(var); @@player = var; end
  @@events = true; def self.events=(var); @@events = var; end
  @@refresh_map = false ; def self.refresh_map=(var); @@refresh_map = var; end
  @@ac = Color.new(100, 100, 100) # Farbe für ein Feld das nicht passierbar ist
  def self.ac=(var)
    @@ac = var
  end
  @@uc = Color.new(200, 200, 200) # Farbe fpr eub Fekd das passierbar ist
  def self.uc=(var)
    @@uc = var
  end
  @@pc = Color.new(300, 300, 300) # Farbe für den Player
  def self.pc=(var)
    @@pc = var
  end
  @@ec = Color.new(50, 50, 50) # Farbe für ein Event (noch nicht eingebaut
  def self.ec=(var)
    @@ec = var
  end
  @@opa = 150 # Transperenz
  def self.opa=(var)
    @@opa = var
  end
 
  def change_event_color(event_id, to)
    return if $game_map.map.events[event_id].nil?
    e = $game_map.map.events[event_id]
    if to == ""
      unless e.name[-2] == 35
        e.name[-2] = ""
        e.name[-1] = ""
      end
    else
      if e.name[-2] != 35
        e.name += '#'
        e.name += to.to_s
      else
        e.name[-1] = to.to_s[-1]
      end
    end
    show_events
  end
 
  def initialize
    @map_id = -1
    show_minimap
    show_player if @@player
    @minimap.x = @@x
    @minimap.y = @@y
    update
  end
 
  def update
    if @@refresh_map
      @@refresh_map = false
      refresh_minimap
    end
    unless @@visible
      if @minimap.visible || @player.visible
        @minimap.visible = false
        @player.visible = false
        unless @events.nil? || @events.empty?
          @events.each do |i|
            next if i.nil?
            i.visible = false
          end
        end
      end
      return
    end
    @minimap.x = @@x
    @minimap.y = @@y
    @minimap.opacity = @@opa
    @player.opacity = @@opa
    @minimap.visible = true
    @player.visible = true
    unless @events.nil? || @events.empty?
      @events.each do |i|
        next if i.nil?
        i.visible = true
        i.zoom_x = @@zoom
        i.zoom_y = @@zoom
      end
    end
    refresh_player if @@player
    if $game_map.map_id != @map_id
      @map_id = $game_map.map_id
      if $game_map.map_id != @map_id
        @map_id = $game_map.map_id
        @events.each {|i| next if i.nil?; i.bitmap.dispose}
      end
      show_events if @@events
      refresh_minimap
    end
    refresh_events if @@events
    @minimap.zoom_x = @@zoom
    @minimap.zoom_y = @@zoom
    @player.zoom_x = @@zoom
    @player.zoom_y = @@zoom
  end
 
  def show_minimap
    refresh_minimap
  end
 
  def show_player
    @player.bitmap.dispose unless @player.nil?
    @player = Sprite.new
    @player.z = 1002
    @player.bitmap = set_point(@@pc)
    refresh_player
  end
 
  def show_events
    @events.each {|i| next if i.nil?; i.bitmap.dispose} unless @events.nil?
    @events = []
    $game_map.map.events.each_value do |i|
      if i.name[-2] != 35
        set_event_point(i, c_normal)
        next
      end
      case i.name[-1]
      when 48 then next
      when 49 then set_event_point(i, c_blue)
      when 50 then set_event_point(i, c_red)
      when 51 then set_event_point(i, c_yellow)
      when 52 then set_event_point(i, c_green)
      when 53 then set_event_point(i, c_custom1)
      when 54 then set_event_point(i, c_custom2)
      when 55 then set_event_point(i, c_custom3)
      when 56 then set_event_point(i, c_custom4)
      when 57 then set_event_point(i, c_custom5)
      end
    end
  end
 
  def refresh_events
    @events.each do |i|
      index = @events.index(i)
      next if $game_map.events[index].nil?
      i.x = @minimap.x + $game_map.events[index].x * 32 * @@zoom
      i.y = @minimap.y + $game_map.events[index].y * 32 * @@zoom
    end
  end
 
  def refresh_player
    x = $game_player.x
    y = $game_player.y
    @player.x = @minimap.x + x * 32 * @@zoom
    @player.y = @minimap.y + y * 32 * @@zoom
  end
 
  def refresh_minimap
    @minimap.bitmap.dispose unless @minimap.nil?
    @minimap = Sprite.new
    @minimap.z = 1000
    width = $game_map.width
    height = $game_map.height
    @minimap.bitmap = Bitmap.new(width*32, height*32)
    rect = Rect.new(0, 0, 32, 32)
    map_data = $game_map.data
    width.times do |x|
      height.times do |y|
        if $game_map.passable?(x, y, 0)
          c = 0
          3.times do |d|
            if map_data[x, y, d] == 0
              c += 1
            end
          end
          next if c == 3
          @minimap.bitmap.blt(x*32, y*32, set_point(@@ac), rect)
        else
          @minimap.bitmap.blt(x*32, y*32, set_point(@@uc), rect)
        end
      end
    end
  end
 
  def set_point(c)
    b = Bitmap.new(32, 32)
    b.fill_rect(0, 0, 32, 32, c)
    return b
  end
 
  def set_event_point(event, c)
    @events[event.id] = Sprite.new
    @events[event.id].bitmap = set_point(c)
    @events[event.id].x = @minimap.x + event.x * 32 * @@zoom
    @events[event.id].y = @minimap.y + event.y * 32 * @@zoom
    @events[event.id].z = 1002
    @events[event.id].zoom_x = @@zoom
    @events[event.id].zoom_y = @@zoom
  end
 
  def dispose
    @minimap.bitmap.dispose
    @player.bitmap.dispose
    unless @events.nil?
      @events.each do |i|
        next if i.nil?
        i.bitmap.dispose
      end
    end
  end
end

(Zeile 44 - 56)
Der Syntax für die Color farben sieht so aus:

Ruby Quellcode

1
Color.new(red, green, blue)

Fals du bei den Farben sperat zu dem Opacity für die Sprites noch ne transperenz dazu machen möchtest kannst du auch noch optional den Alphalvl angeben:

Ruby Quellcode

1
Color.new(red, green, blue, alpha)

Alle zahlen gehen von 0-255.

Update!!!
Jetzt kannst du bei Events noch hintenhin schreiben #1 für Color 1, oder #2 für color 2, das geht von 1-9, mit #0 hast du ein unsichtbares Event (nicht auf der Karte sichtbar) wenn du hingegen gar nix dahinter schreibst hast du ne standartfarbe, im moment noch schwarz, kannst du aber alles im Script ändern. Wenn du die Events ausstellen willst, also so dass man gar nix mehr sieht, kannst du schreiben [ruby}Minimap.events = false; true[/ruby]
Und du kannst mit

Ruby Quellcode

1
$minimap.change_event_color(event_id, to)
die Farbe eines Events verändern, ein Bsp.:

Ruby Quellcode

1
 $minimap.change_event_color(1, 5)
verändert das Event Nr. 1 zu der Farbe 5

Ruby Quellcode

1
 $minimap.change_event_color(1, "")

<== macht standat Farbe

Ruby Quellcode

1
 $minimap.change_event_color(1, 5)

<== macht das Event unsichtbar
zum Lesen den Text mit der Maus markieren


EDIT:
Ist vielleicht unverständlich, aba mit hinter ein Event schreiben meine ich, den Namen eines Events, die letzten 2 Buchstasben müssen # + irgendeine Zahl sein also z.B.:
Hildegard#2

UPDATE!!!
Version 2.0, nochmal komplett überarbeitet :D, is aba noch net ganz fertig... Hab nur noch versucht auf ein paar Anzeigebugs die Kenai genannt hat einzugehen.
Spoiler: 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
################################################################################
# Minimap like Zelda v.2.0 Beta by Hindi :D                                    #
################################################################################
 
 
class Game_Temp
  class Minimap_data
    attr_accessor(:x, :y, :zoom, :opa,
                  :player, :events,
                  :refresh_map,
                  :visible)
    attr_accessor(:uc, :ac, :pc, :ec)
    def initialize
      @x = 10
      @y = 10
      @zoom = 0.3
      @opa = 150
      @player = true
      @events = true
      @refresh_map = false
      @visible = false
      @ac = Color.new(200, 200, 200)
      @uc = Color.new(100, 100, 100)
      @pc = Color.new(300, 300, 300)
      @ec = Color.new(50, 50, 50)
    end
  end
  alias_method(:old_old_old_initialize, :initialize)
  attr_accessor(:minimap)
  def initialize
    old_old_old_initialize
    @minimap = Minimap_data.new
  end
end
 
class Spriteset_Map
  alias_method(:old_old_old_initialize, :initialize)
  alias_method(:old_old_old_update, :update)
  alias_method(:old_old_old_dispose, :dispose)
  def initialize
    old_old_old_initialize
    refresh_minimap
    show_player
    show_events
    update
  end
 
  def refresh_minimap
    ac = $game_temp.minimap.ac
    uc = $game_temp.minimap.uc
    @minimap.bitmap.dispose unless @minimap.nil?
    @minimap = Sprite.new(@viewport3)
    @minimap.z = 1
    @minimap.x = $game_temp.minimap.x
    @minimap.y = $game_temp.minimap.y
    width = $game_map.width
    height = $game_map.height
    @minimap.bitmap = Bitmap.new(width*32, height*32)
    passable = Bitmap.new(32, 32)
    passable.fill_rect(0, 0, 32, 32, ac)
    passenable = Bitmap.new(32, 32)
    passenable.fill_rect(0, 0, 32, 32, uc)
    rect = Rect.new(0, 0, 32, 32)
    map_data = $game_map.data
    width.times do |x|
      height.times do |y|
        if $game_map.passable?(x, y, 0)
          c = 0
          3.times do |d|
            if map_data[x, y, d] == 0
              c += 1
            end
          end
          next if c == 3
          @minimap.bitmap.blt(x*32, y*32, passable, rect)
        else
          @minimap.bitmap.blt(x*32, y*32, passenable, rect)
        end
      end
    end
    @minimap.visible = $game_temp.minimap.visible
  end
 
  def show_player
    pc = $game_temp.minimap.pc
    @player.bitmap.dispose unless @player.nil?
    @player = Sprite.new(@viewport3)
    @player.z = 1
    @player.bitmap = Bitmap.new(32, 32)
    @player.bitmap.fill_rect(0, 0, 32, 32, pc)
    @player.visible = $game_temp.minimap.visible
    refresh_player
  end
 
  def show_events
    ec = $game_temp.minimap.ec
    @events.each {|i| i.bitmap.dispose} unless @events.nil?
    @events = []
    $game_map.events.keys do |i|
      @events[i] = Sprite.new(@viewport3)
      @events[i].z = 1
      @events[i].bitmap = Bitmap.new(32, 32)
      @events[i].bitmap.fill_rect(0, 0, 32, 32, ec)
      @events[i].visible = $game_temp.minimap.events
    end
  end
 
  def refresh_player
    z = $game_temp.minimap.zoom
    x = $game_player.x
    y = $game_player.y
    @player.x = @minimap.x + x * 32 * z
    @player.y = @minimap.y + y * 32 * z
    @player.zoom_x = z
    @player.zoom_y = z
  end
 
  def refresh_events
    z = $game_temp.minimap.zoom
    @events.each do |i|
      index = @events.index(i)
      i.x = @minimap.x + $game_map.events[index].x * 32 * z
      i.y = @minimap.y + $game_map.events[index].y * 32 * z
      i.zoom_x = z
      i.zoom_y = z
    end
  end
 
  def update
    old_old_old_update
    return @c = 1 if @c.nil?
    if $game_temp.minimap.player
      @player.visible = true
      refresh_player
    else
      @player.visible = false
    end
    if $game_temp.minimap.events
      @events.each {|i| i.visible = true}
      refresh_events
    else
      @events.each {|i| i.visible = false}
    end
    if $game_temp.minimap.refresh_map
      $game_temp.minimap.refresh_map = false
      refrseh_minimap
    end
    @minimap.visible = $game_temp.minimap.visible
    if $game_temp.minimap.player
      @player.visible = $game_temp.minimap.visible
    end
    if $game_temp.minimap.events
      @events.each {|i| i.visible = $game_temp.minimap.visible}
    end
    @minimap.x = $game_temp.minimap.x
    @minimap.y = $game_temp.minimap.y
    @minimap.opacity = $game_temp.minimap.opa
    if $game_temp.minimap.player
      @player.opacity = $game_temp.minimap.opa
    end
    if $game_temp.minimap.events
      @events.each {|i| i.opacity = $game_temp.minimap.opa}
    end
    if $game_map.map_id != @map_id
      @map_id = $game_map.map_id
      refresh_minimap
    end
    z = $game_temp.minimap.zoom
    @minimap.zoom_x = z
    @minimap.zoom_y = z
  end
 
  def dispose
    @minimap.bitmap.dispose
    @player.bitmap.dispose
    unless @events.nil?
      @events.each do |i|
        i.bitmap.dispose
      end
    end
    old_old_old_dispose
  end
end
zum Lesen den Text mit der Maus markieren

Spoiler: Anleitung
Hier könnt ihr die Minimap nun mit

Ruby Quellcode

1
$game_temp.minimap.visible = true/false

ein- bzw. ausblenden lassen.
Mit

Ruby Quellcode

1
2
$game_temp.minimap.x = 50
$game_temp.minimap.y = 50

könnt ihr die Minimap verschieben.
Mit

Ruby Quellcode

1
$game_temp.minimap.opa = 0-255

könnt ihr die Transperentz verändern.
Mit

Ruby Quellcode

1
2
$game_temp.minimap.player = true/false
$game_temp.minimap.events = true/false

könnt ihr Player bzw. Events ein- bzw. ausblenden lassen.
Mit

Ruby Quellcode

1
$game_temp.minimap.refresh_map = true/false

könnt ihr die Map neuaufbauen lassen, fals ihr mal Veränderungen an der Map vornehmt.
zum Lesen den Text mit der Maus markieren


Und das wars :D Bugs bitte melden und ich würde mich auch über positive sowohl auch konsturiktive Kritik freuen :D


PS um diesen scheiß hänge Fehler wenn ihr die Minimap ausblendet zu beseitigen, könnt ihr entweder jedesmal ein true hinten hin setzten oder ihr fügt dieses Script hier noch ein:
Spoiler: Antiaufhängen

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Interpreter
  def command_355
    script = @list[@index].parameters[0] + "\n"
    loop do
      if @list[@index+1].code == 655
        script += @list[@index+1].parameters[0] + "\n"
      else
        break
      end
      @index += 1
    end
    result = eval(script)
    return true
  end
end
zum Lesen den Text mit der Maus markieren

Wenn ihr das Script einfügt, kann es auch behilflich sein fals ihr irgendwelche anderen Scripte einfügt. Also ich Rate euch dazu das einzubaue :D
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

Dieser Beitrag wurde bereits 14 mal editiert, zuletzt von »Reborn« (20. April 2010, 22:19)


3

Dienstag, 16. März 2010, 20:50

Ich danke dir sehr^^Damit ist das Projekt einen riesen schritt weiter.
Nur ich habe noch zwei fragen
1.Hast du das jetzt extra gescriptet??Wenn ja dann danke ich dir nochmal das du dir die mühe gemacht hast.
2.Erklärt der screen ;)
Und wenn das Item menü aufgerufen wird dan ist die map immernoch da aber das bekomm ich bestimmt iwie hin ist nur die position.


MfG
coolbib
PS Credits gibts auf jedenfall^^
»coolbib« hat folgendes Bild angehängt:
  • screeeeeeeeef.png
  • Shadows

    Infos folgen
  • TLoZ Master of Seasons

    Bald mehr infos

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »coolbib« (16. März 2010, 20:50)


Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

4

Dienstag, 16. März 2010, 22:57

Spoiler: 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
##############################
# Linkminimapscript by Hindi##
##############################
 
class Scene_Map
  alias_method(:old_old_old_main, :main)
  def main
    $minimap = Minimap.new(10, 10, 0.3)
    old_old_old_main
    $minimap.dispose
  end
  alias_method(:old_old_old_update, :update)
  def update
    $minimap.update
    old_old_old_update
  end
end
 
class Game_Event
  attr_reader(:name)
end
 
# Das Script kannst du ganz einfach mit $minimap.visible = true oder false
# ein- oder ausblenden, was du dann in ein Callscript einfügst
 
# Zoom kannst du mit $minimap.zoom = 0.3 für das Spielfield in 30%tiger größe
# also orginalgröße * 0.3
 
# Unterm Spiel können die Farben für Benutzerdefinierteeinstellungen auch
# verändert werden mit $minimap.ac usw.
 
class Minimap
  AC = Color.new(100, 100, 100) # Farbe für ein Feld das nicht passierbar ist
  UC = Color.new(200, 200, 200) # Farbe fpr eub Fekd das passierbar ist
  PC = Color.new(300, 300, 300) # Farbe für den Player
  EC = Color.new(50, 50, 50) # Farbe für ein Event (noch nicht eingebaut
  OPA = 150 # Transperenz
  attr_accessor(:visible)
  attr_accessor(:player, :events)
  attr_accessor(:ac, :uc, :pc, :ec)
  attr_accessor(:x, :y, :zoom, :opa)
  def initialize(x, y, zoom, events=true, player=true)
    @visible = false
    @zoom = zoom
    @opa = OPA
    @map_id = -1
    @ac = AC
    @uc = UC
    @pc = PC
    @ec = EC
    @x = x
    @y = y
    show_minimap
    show_player
    @minimap.x = x
    @minimap.y = y
    update
  end
 
  def update
    if @visible
      @minimap.x = @x
      @minimap.y = @y
      @minimap.opacity = @opa
      @player.opacity = @opa
      @minimap.visible = true
      @player.visible = true
      unless @events.nil?
        @events.each do |i|
          i.zoom_x = @zoom
          i.zoom_y = @zoom
        end
      end
      refresh_player
      if $game_map.map_id != @map_id
        @map_id = $game_map.map_id
        refresh_minimap
      end
      @minimap.zoom_x = @zoom
      @minimap.zoom_y = @zoom
      @player.zoom_x = @zoom
      @player.zoom_y = @zoom
    else
      @minimap.visible = false
      @player.visible = false
    end
  end
 
  def show_minimap
    refresh_minimap
  end
 
  def show_player
    @player.bitmap.dispose unless @player.nil?
    @player = Sprite.new
    @player.z = 1002
    @player.bitmap = Bitmap.new(32, 32)
    @player.bitmap.fill_rect(0, 0, 32, 32, @pc)
    refresh_player
  end
 
  def show_events
    @events.each {|i| i.bitmap.dispose} unless @events.nil?
    @events = []
    $game_map.events.keys do |i|
        @events[i] = Sprite.new
        @events[i].z = 1001
        @events[i].bitmap = Bitmap.new(32, 32)
        @events[i].bitmap.fill_rect(0, 0, 32, 32, @ec)
    end
  end
 
  def refresh_events
    @events.each do |i|
      index = @events.index(i)
      i.x = $game_map.events[index].x * 32 * @zoom
      i.y = $game_map.events[index].y * 32 * @zoom
    end
  end
 
  def refresh_player
    x = $game_player.x
    y = $game_player.y
    @player.x = x * 32 * @zoom
    @player.y = y * 32 * @zoom
  end
 
  def refresh_minimap
    @minimap.bitmap.dispose unless @minimap.nil?
    @minimap = Sprite.new
    @minimap.z = 1000
    width = $game_map.width
    height = $game_map.height
    @minimap.bitmap = Bitmap.new(width*32, height*32)
    passable = Bitmap.new(32, 32)
    passable.fill_rect(0, 0, 32, 32, @ac)
    passenable = Bitmap.new(32, 32)
    passenable.fill_rect(0, 0, 32, 32, @uc)
    rect = Rect.new(0, 0, 32, 32)
    map_data = $game_map.data
    width.times do |x|
      height.times do |y|
        if $game_map.passable?(x, y, 0)
          c = 0
          3.times do |d|
            if map_data[x, y, d] == 0
              c += 1
            end
          end
          next if c == 3
          @minimap.bitmap.blt(x*32, y*32, passable, rect)
        else
          @minimap.bitmap.blt(x*32, y*32, passenable, rect)
        end
      end
    end
  end
 
  def dispose
    @minimap.bitmap.dispose
    @player.dispose
    unless @events.nil?
      @events.each do |i|
        i.bitmap.dispose
      end
    end
  end
end
zum Lesen den Text mit der Maus markieren


Jetzt kannst du mit $minimap.x und mit $minimap.y die postion verändern.
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

5

Dienstag, 16. März 2010, 23:19

Hi Hindi
Ich habe dein Script getestet und sobald ich die Karte mit ´$minimap.visible = false´ ausschalte,ist die Karte zwar weg,aber ich kann
meinen Spieler nicht mehr bewegen.
MFG
Realität ist auch nur eine Art von Rollenspiel.

6

Mittwoch, 17. März 2010, 08:05

Dake Hindi nur leider funktioniert jetzt nichtmehr das die karte überhaupt angezeigt wird sie ist einfach weg nur der spielersymbol ist da...
hoffe du kannst das nochmal überarbeiten.Und was sind die standart koordinaten oben rechts damit ich weiß was ich eingeben muss

danke
Edit das script ist klasse es wird erst angezeigt wen auch die position festgelegt ist^^ also nicht beachten
Edit2 Aber die player position in der map muss sich doch auch mitbewegen wie mache ich das??
  • Shadows

    Infos folgen
  • TLoZ Master of Seasons

    Bald mehr infos

Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

7

Mittwoch, 17. März 2010, 20:31

das ist ein scheiß Bug und daran bin außnahmsweise ich nicht schuld :D, wahr Entrabrain :D
Also das hat mir hier auch schon mal jemand ekrären müssen, das liegt iwie daran, dass am Schluss überprüft wird ob die letzte eingabe die im Callscript steht == true ist, fals nicht, wirds nicht als false returnt was dann zur folge hat, dass man nema laufen kann.
Lange rede gar kein Sinn, du musst am schluss noch true eintippen:

Ruby Quellcode

1
$minimap.visible = false; true


Und noch ein kleines update, bei dem muss man nicht nach jedem neuem Aufruf einer Scene die Minimap neu erscheinen lassen:
Spoiler: Code

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
##############################
# Linkminimapscript by Hindi##
##############################
 
class Scene_Map
  alias_method(:old_old_old_main, :main)
  def main
    $minimap = Minimap.new
    old_old_old_main
    $minimap.dispose
  end
  alias_method(:old_old_old_update, :update)
  def update
    $minimap.update
    old_old_old_update
  end
end
 
class Game_Event
  attr_reader(:name)
end
 
# Das Script kannst du ganz einfach mit $minimap.visible = true oder false
# ein- oder ausblenden, was du dann in ein Callscript einfügst
 
# Zoom kannst du mit $minimap.zoom = 0.3 für das Spielfield in 30%tiger größe
# also orginalgröße * 0.3
 
# Unterm Spiel können die Farben für Benutzerdefinierteeinstellungen auch
# verändert werden mit $minimap.ac usw.
 
class Minimap
  @@visible = false; def self.visible=(var); @@visible = var; end
  def self.visible=(var)
    @@visible = var
  end
  @@x = 10; def self.x=(var); @@x = var; end
  @@y = 10; def self.y=(var); @@y = var; end
  @@zoom = 0.3; def self.zoom=(var); @@zoom = var; end
  @@player = true; def self.player=(var); @@player = var; end
  @@events = false; def self.events=(var); @@events = var; end
  @@refresh_map = false ; def self.refresh_map=(var); @@refresh_map = var; end
  @@ac = Color.new(100, 100, 100) # Farbe für ein Feld das nicht passierbar ist
  def self.ac=(var)
    @@ac = var
  end
  @@uc = Color.new(200, 200, 200) # Farbe fpr eub Fekd das passierbar ist
  def self.uc=(var)
    @@uc = var
  end
  @@pc = Color.new(300, 300, 300) # Farbe für den Player
  def self.pc=(var)
    @@pc = var
  end
  @@ec = Color.new(50, 50, 50) # Farbe für ein Event (noch nicht eingebaut
  def self.ec=(var)
    @@ec = var
  end
  @@opa = 150 # Transperenz
  def self.opa=(var)
    @@opa = var
  end
  def initialize
    @map_id = -1
    show_minimap
    show_player
    @minimap.x = @@x
    @minimap.y = @@y
    update
  end
 
  def update
    if @@refresh_map
      @@refresh_map = false
      refresh_minimap
    end
    unless @@visible
      if @minimap.visible || @player.visible
        @minimap.visible = false
        @player.visible = false
      end
      return
    end
    @minimap.x = @@x
    @minimap.y = @@y
    @minimap.opacity = @@opa
    @player.opacity = @@opa
    @minimap.visible = true
    @player.visible = true
    unless @events.nil?
      @events.each do |i|
        i.zoom_x = @@zoom
        i.zoom_y = @@zoom
      end
    end
    refresh_player
    if $game_map.map_id != @map_id
      @map_id = $game_map.map_id
      refresh_minimap
    end
    @minimap.zoom_x = @@zoom
    @minimap.zoom_y = @@zoom
    @player.zoom_x = @@zoom
    @player.zoom_y = @@zoom
  end
 
  def show_minimap
    refresh_minimap
  end
 
  def show_player
    @player.bitmap.dispose unless @player.nil?
    @player = Sprite.new
    @player.z = 1002
    @player.bitmap = Bitmap.new(32, 32)
    @player.bitmap.fill_rect(0, 0, 32, 32, @@pc)
    refresh_player
  end
 
  def show_events
    @events.each {|i| i.bitmap.dispose} unless @events.nil?
    @events = []
    $game_map.events.keys do |i|
      @events[i] = Sprite.new
      @events[i].z = 1001
      @events[i].bitmap = Bitmap.new(32, 32)
      @events[i].bitmap.fill_rect(0, 0, 32, 32, @@ec)
    end
  end
 
  def refresh_events
    @events.each do |i|
      index = @events.index(i)
      i.x = $game_map.events[index].x * 32 * @@zoom
      i.y = $game_map.events[index].y * 32 * @@zoom
    end
  end
 
  def refresh_player
    x = $game_player.x
    y = $game_player.y
    @player.x = x * 32 * @@zoom
    @player.y = y * 32 * @@zoom
  end
 
  def refresh_minimap
    @minimap.bitmap.dispose unless @minimap.nil?
    @minimap = Sprite.new
    @minimap.z = 1000
    width = $game_map.width
    height = $game_map.height
    @minimap.bitmap = Bitmap.new(width*32, height*32)
    passable = Bitmap.new(32, 32)
    passable.fill_rect(0, 0, 32, 32, @@ac)
    passenable = Bitmap.new(32, 32)
    passenable.fill_rect(0, 0, 32, 32, @@uc)
    rect = Rect.new(0, 0, 32, 32)
    map_data = $game_map.data
    width.times do |x|
      height.times do |y|
        if $game_map.passable?(x, y, 0)
          c = 0
          3.times do |d|
            if map_data[x, y, d] == 0
              c += 1
            end
          end
          next if c == 3
          @minimap.bitmap.blt(x*32, y*32, passable, rect)
        else
          @minimap.bitmap.blt(x*32, y*32, passenable, rect)
        end
      end
    end
  end
 
  def dispose
    @minimap.bitmap.dispose
    @player.dispose
    unless @events.nil?
      @events.each do |i|
        i.bitmap.dispose
      end
    end
  end
end
zum Lesen den Text mit der Maus markieren


Und fals du jetzt ein paar Änderungen bei der Map vornimmst und diese dann auf der Minimap anzeigen lassen willst, kannst du eintippen:

Ruby Quellcode

1
$minimap.refresh_map = true

Um die Minimap zu refreshen.

@coolbib
Das machts automatisch.

EDIT:
Hätte ich fast vergessen, da ich jetzt ne Klassenvariable verwende musst man um die Minimap anzuschalten jetzt tippen:

Ruby Quellcode

1
Minimap.visible = true/false


EDIT:
Hab das Script nochmal Editiert, jetzt kannst du alles mit Minimap.bla aurufen, hat den vorteil, du musst nicht andauernd die Minimap neu justieren, denn jetzt kannst du sie nur bei bedarf neu justieren.
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

8

Mittwoch, 17. März 2010, 20:53

Echt klasse aber hindi du verstehst nicht was ich sagen möchte.
Die player figur also der punkt der grauen in der Minimap bleibt immer oben auch wenn ich die position der minimap geändert habe auch im neuen script also ich weiß net ob du das schaffst sont wäre das script net so brauchbar oder diese funktion ;)

Mf+G
Edit und in den neuen version also die editierte funkst das mit der $minimap.x nichtmehr und y auch net
Edit2:also das ausm 1.Edit macht man auch mit klassenvariablen diesmal dann nur die playerposition auf der minimap bleibnt immernoch oben ?!?!?!
  • Shadows

    Infos folgen
  • TLoZ Master of Seasons

    Bald mehr infos

Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

9

Mittwoch, 17. März 2010, 22:13

Umd jetzt so viele Scripte zu vermeiden, editiere ich es ganz oben in meiner 1. Post.
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

Donnerstag, 18. März 2010, 09:47

Sehr schöne danke^^jetzt verschiebt sich der Player mit.Nurnoch gucken wie wir das einbauen.
  • Shadows

    Infos folgen
  • TLoZ Master of Seasons

    Bald mehr infos

Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

11

Donnerstag, 18. März 2010, 18:10

Ich hab oben noch ein update gemacht!! :D Jetzt kannst du auch noch Events mit verschiedenen Farben anzeigen lassen, nützlich für Quests oder so^^
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

12

Donnerstag, 18. März 2010, 18:20

nice steuert man das mit event IDs?? sonst ist es für mich schlecht weil man nicht alle events sehen darf

MfG
  • Shadows

    Infos folgen
  • TLoZ Master of Seasons

    Bald mehr infos

Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

13

Donnerstag, 18. März 2010, 18:35

Fals du noch dummerweise wegen dem Zeitverzug mein altes kopiert hast:
Habs gerade jetzt oben Editiert und ja ich hab auch daran gedacht :D Hab ich oben beschrieben.
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

14

Donnerstag, 18. März 2010, 18:47

Hi Hindi.
Wenn ich mich in eine andere Map teleportiere und die Minikarte an ist,kommt folgender Fehler :
Attachment 12246
Aber sonst find ich deine Minikarte ganz gut.
MFG
Realität ist auch nur eine Art von Rollenspiel.

Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

15

Donnerstag, 18. März 2010, 18:59

Habs oben gefixd.
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

16

Donnerstag, 18. März 2010, 19:06

Also nicht das du noch einen Flash bekommst ;)
Aber jetzt kommt dieser Fehler,wenn ich die ESC Taste für Menu drücke und die Minikarte an ist.
Attachment 12247
Mfg
Realität ist auch nur eine Art von Rollenspiel.

Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

17

Donnerstag, 18. März 2010, 19:51

oben gefixt.
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

Kenai

Landsknecht

Motto: “Niemals aufgeben, bevor man nicht alles versucht hat.”

  • Nachricht senden

18

Montag, 29. März 2010, 08:05

Hey Hindi^^,

hast dir ja richtig Mühe gegeben... Nice :victory: .

Ich hätte noch einen Verbesserungsvorschlag für dich: Um den Komfort zum Scripten und des Spielentwickler zu steigern, würde ich dir raten bei Version 2^^ die Minimap über "Spriteset_Map" in einem Viewport (evt. 3 oder 4) anzeigen zu lassen. So stimmen die Ebenen und es müsste zu keinem Fehler in den Menüs kommen. Zumindest ist das bei meinem Game so ;) .

~ Gruß Kenai
  • :doc: Neuigkeiten

    Sämtliche Projekte sind erst mal pausiert. Weitere Informationen findet ihr hier. (Stand: 21.12.2012).
  • :rmxp: Cursal Engine (Jump and Run Engine)

    Mit Hilfe der Cursal Engine (RCE) ist es möglich auf ziemlich einfache Weise „Jump and Run“-Projekte im RPG Maker XP zu entwerfen. Das Anlegen basiert auf Installations- und Updatepaketen sowie reinen Archiven für fortgeschrittene Benutzer. Die Version 2 (CE2) befindet sich bereits in Entwicklung. Interessiert? Dann lade dir die neuste Version herunter ;3!
  • BildAvatar

    Diese kleinen, netten und knuffigen Vögelchen nennen sich Hamachou und dürften einigen aus Skies of Arcadia bekannt sein. Ich habe diese Bilder weder selbst gezeichnet noch modelliert. Dennoch finde ich sie so knuffig, dass man sie einfach lieb haben muss und ich hoffe euch geht's genau so^^". Diese Grafiken sind wirklich rar und ich bin stolz sie im Web gefunden zu haben.

19

Dienstag, 20. April 2010, 13:09

Hay cooles Syript ;)

Hab da mal ne Frage :

Bei mir sieht es so zerrückt aus.
Sprich sich stehe auf einem Feld wo ich eigenlich nicht hin kann - alles ist um ein Feld nach ->
Und mit welchen Zahlen kann ich die Map hin und her bewegen ???

Danke schon ma
Ich arbeite grad an dem Spiel "Glory Kings The Game" zusammen mit der Community und den Admins des BrowserGames "Glory Kings" zusammen.

Weitere Infos folgen.

Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

20

Dienstag, 20. April 2010, 20:45

Im Call Script eingeben:

Ruby Quellcode

1
2
$minimap.x = 25
$minimap.y = 156


Keine Ahnung wieso sich das verschiebt...^^
Aber wenn es permanet der Fall sein sollte, kannst du ja mal in def refresh_player bei der x koordinate hinten hin - 32 scheriben, dann hast du den Player ein Feld weiter links.
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

Social Bookmarks