|
你可以在 def map_shop 方法里,效仿它隐藏玩家的做法,把其它事件也隐藏了,修改如下:
- def map_shop
- # 修改:地图事件隐藏
- last_event_trans = {} # id => bool
- $game_map.events.each { |id, e| last_event_trans[id] = e.transparent; e.transparent = true }
-
- # プレイヤーを非表示
- last_player_transparent = $game_player.transparent
- $game_player.transparent = true
- # マップの撮影
- bitmap = Bitmap.new($game_map.width * 32, $game_map.height * 32)
- screen_width = $game_map.screen_tile_x
- screen_height = $game_map.screen_tile_y
- ($game_map.width / screen_width.to_f).ceil.times do |x|
- ($game_map.height / screen_height.to_f).ceil.times do |y|
- $game_map.set_display_pos(screen_width * x, screen_height * y)
- @spriteset.update_snap
- dx = $game_map.display_x * 32
- dy = $game_map.display_y * 32
- snap = Graphics.snap_to_bitmap
- bitmap.blt(dx, dy, snap, snap.rect)
- end
- end
- # マップ画像の保存
- Graphics.update
- filename = sprintf('ground%03d-1.png', $game_map.map_id,$game_map.display_name)
- bitmap.save_png(filename)
- puts "`#{filename}' 保存完了!"
- # 修改:地图事件复原
- $game_map.events.each { |id, e| e.transparent = last_event_trans[id]; e.update }
-
- # プレイヤーの状態を戻す
- $game_player.transparent = last_player_transparent
- $game_player.center($game_player.x, $game_player.y)
- $game_player.update
- end
复制代码 |
|