| 赞 | 3  | 
 
| VIP | 37 | 
 
| 好人卡 | 8 | 
 
| 积分 | 0 | 
 
| 经验 | 22564 | 
 
| 最后登录 | 2017-5-16 | 
 
| 在线时间 | 491 小时 | 
 
 
 
 
 
Lv1.梦旅人 
	- 梦石
 - 0 
 
        - 星屑
 - 49 
 
        - 在线时间
 - 491 小时
 
        - 注册时间
 - 2012-1-27
 
        - 帖子
 - 421
 
 
  
 
 | 
	
菜单中调用公共事件脚本:- #==============================================================================
 
 - # ■ Game_Interpreter_Self
 
 - #------------------------------------------------------------------------------
 
 - # 独立公共事件执行器 
 
 - #==============================================================================
 
 - =begin
 
  
- 独立公共事件执行器用于随时执行公共事件,不受公共事件调用地方的限制。
 
 - □使用方法:
 
 - 1。将脚本插入main前。
 
 - 2。在需要使用公共事件的地方
 
 - 插入、
 
 - GIS.new(公共事件ID)
 
 - □可能的冲突:无
 
 - 已经被改过兼容VA了。
 
 - 原制作者为九夜神尊。
 
 - =end
 
  
- class GIS < Game_Interpreter
 
 -   def initialize(com_id)
 
 -     @com_id = com_id
 
 -     common_event = $data_common_events[@com_id]
 
 -     setup(common_event.list)
 
 -     update
 
 -     clear
 
 -   end
 
 -   def command_117
 
 -     if $data_common_events[@params[0]]
 
 -       child = Game_Interpreter_Self.new(@params[0])
 
 -       child.run
 
 -     end
 
 -   end
 
 - end
 
 - class Window_MenuCommand < Window_Command
 
 -   def add_save_command
 
 -     add_command("任务", :save, true)
 
 -     add_command("角色属性", :save2, true)
 
 -   end
 
 -   def add_game_end_command
 
 -     add_command("系统", :game_end)
 
 -   end
 
 - end
 
 - class Scene_Menu < Scene_MenuBase
 
 -   alias ccw_zabing create_command_window
 
 -   def create_command_window
 
 -     ccw_zabing
 
 -     @command_window.set_handler(:save2,     method(:command_save2))
 
 -   end
 
 -   def command_save
 
 -     fadeout_all
 
 -     return_scene
 
 -     GIS.new(1)
 
 -   end
 
 -   def command_save2
 
 -     fadeout_all
 
 -     return_scene
 
 -     GIS.new(2)
 
 -   end
 
 - end
 
 - class Scene_End < Scene_MenuBase
 
 -   alias ccw_zabing create_command_window
 
 -   def create_command_window
 
 -     ccw_zabing
 
 -     @command_window.set_handler(:to_load, method(:command_to_load))
 
 -   end
 
 -   def command_to_load
 
 -     close_command_window
 
 -     fadeout_all
 
 -     SceneManager.call(Scene_Load)
 
 -   end
 
 - end
 
 - class Window_GameEnd < Window_Command
 
 -   alias mcl_zabing make_command_list
 
 -   def make_command_list
 
 -     mcl_zabing
 
 -     add_command("读取档案",      :to_load)
 
 -   end
 
 - end
 
  复制代码 附赠迷你地图脚本- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 
 - #_/    ◆ 迷你地图 - KMS_MiniMap ◆ VX Ace ◆
 
 - #_/    ◇ Last update : 2012/02/12  (TOMY@Kamesoft) ◇
 
 - #_/----------------------------------------------------------------------------
 
 - #_/  追加迷你地图表示机能。
 
 - #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 
  
- #==============================================================================
 
 - # ★ 设定项目 - BEGIN Setting ★
 
 - #==============================================================================
 
  
- module KMS_MiniMap
 
 -   # ◆ 迷你地图表示切换按键
 
 -   #  空白则按钮转换无效。
 
 -   SWITCH_BUTTON = :Z
 
  
-   # ◆ 迷你地图表示位置和大小 (X, Y, 寛, 高)
 
 -   MAP_RECT = Rect.new(364, 20, 160, 120)
 
 -   # ◆ 迷你地图 Z 座标
 
 -   #  注意:太大可能影响其他东西。
 
 -   MAP_Z = 0
 
 -   # ◆ 1格大小
 
 -   # 推荐 3 以上。
 
 -   GRID_SIZE = 5
 
  
-   # ◆ 迷你地图顔色
 
 -   FOREGROUND_COLOR = Color.new(192, 192, 224, 160)  # 前景色 (通行可)
 
 -   BACKGROUND_COLOR = Color.new(  0,   0, 160, 160)  # 背景色 (通行不可)
 
 -   POSITION_COLOR   = Color.new(255,   0,   0, 192)  # 现在位置
 
 -   MOVE_EVENT_COLOR = Color.new(255, 160,   0, 192)  # 地图移动事件
 
 -   VEHICLE_COLOR    = Color.new( 96, 128,   0, 192)  # 载物
 
  
-   # ◆ 物件顔色
 
 -   #  按顺序OBJ1, OBJ2,... 对应。
 
 -   OBJECT_COLOR = [
 
 -     Color.new(  0, 128,   0, 192),  # OBJ 1
 
 -     Color.new(  0, 160, 160, 192),  # OBJ 2
 
 -     Color.new(160,   0, 160, 192),  # OBJ 3
 
 -   ]  # ← 这个]不能消去!
 
  
-   # ◆ 图标的闪烁强度
 
 -   # 推荐 5 ~ 8 之间。
 
 -   BLINK_LEVEL = 7
 
  
-   # ◆ 地图缓存的数量
 
 -   #  超越这个数的话,会删除长期间没参照东西。
 
 -   CACHE_NUM = 10
 
 - end
 
  
- #==============================================================================
 
 - # ☆ 设定完成 - END Setting ☆
 
 - #==============================================================================
 
  
- $kms_imported = {} if $kms_imported == nil
 
 - $kms_imported["MiniMap"] = true
 
  
- module KMS_MiniMap
 
 -   # 迷你地图非表示
 
 -   REGEX_NO_MINIMAP_NOTE = /<(?:ミニマップ|MINIMAP)\s*(?:非表示|HIDE)>/i
 
 -   REGEX_NO_MINIMAP_NAME = /\[NOMAP\]/i
 
  
-   # 障害物
 
 -   REGEX_WALL_EVENT = /<(?:ミニマップ|MINIMAP)\s*(?:壁|障害物|WALL)>/i
 
  
-   # 移动事件
 
 -   REGEX_MOVE_EVENT = /<(?:ミニマップ|MINIMAP)\s*(?:移动|MOVE)>/i
 
  
-   # 物件
 
 -   REGEX_OBJECT = /<(?:ミニマップ|MINIMAP)\s+OBJ(?:ECT)?\s*(\d+)>/i
 
 - end
 
  
- # *****************************************************************************
 
  
- #==============================================================================
 
 - # □ KMS_Commands
 
 - #==============================================================================
 
  
- module KMS_Commands
 
 -   module_function
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 表示迷你地图
 
 -   #--------------------------------------------------------------------------
 
 -   def show_minimap
 
 -     $game_temp.minimap_manual_visible = true
 
 -     $game_system.minimap_show         = true
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 不表示迷你地图
 
 -   #--------------------------------------------------------------------------
 
 -   def hide_minimap
 
 -     $game_system.minimap_show = false
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 迷你地图表示状态取得
 
 -   #--------------------------------------------------------------------------
 
 -   def minimap_showing?
 
 -     return $game_system.minimap_show
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 刷新迷你地图
 
 -   #--------------------------------------------------------------------------
 
 -   def refresh_minimap
 
 -     return unless SceneManager.scene_is?(Scene_Map)
 
  
-     $game_map.refresh if $game_map.need_refresh
 
 -     SceneManager.scene.refresh_minimap
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 更新迷你地图对象
 
 -   #--------------------------------------------------------------------------
 
 -   def update_minimap_object
 
 -     return unless SceneManager.scene_is?(Scene_Map)
 
  
-     $game_map.refresh if $game_map.need_refresh
 
 -     SceneManager.scene.update_minimap_object
 
 -   end
 
 - end
 
  
- #==============================================================================
 
 - # ■ Game_Interpreter
 
 - #==============================================================================
 
  
- class Game_Interpreter
 
 -   # 事件指令:直接處理指令
 
 -   include KMS_Commands
 
 - end
 
  
- #==============================================================================
 
 - # ■ RPG::Map
 
 - #==============================================================================
 
  
- class RPG::Map
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 生成迷你地图缓存
 
 -   #--------------------------------------------------------------------------
 
 -   def create_minimap_cache
 
 -     @__minimap_show = true
 
  
-     note.each_line { |line|
 
 -       if line =~ KMS_MiniMap::REGEX_NO_MINIMAP_NOTE  # マップ非表示
 
 -         @__minimap_show = false
 
 -       end
 
 -     }
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 表示迷你地图
 
 -   #--------------------------------------------------------------------------
 
 -   def minimap_show?
 
 -     create_minimap_cache if @__minimap_show.nil?
 
 -     return @__minimap_show
 
 -   end
 
 - end
 
  
- #==============================================================================
 
 - # ■ RPG::MapInfo
 
 - #==============================================================================
 
  
- class RPG::MapInfo
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 地图名取得
 
 -   #--------------------------------------------------------------------------
 
 -   def name
 
 -     return @name.gsub(/\[.*\]/) { "" }
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 取得原始地图名
 
 -   #--------------------------------------------------------------------------
 
 -   def original_name
 
 -     return @name
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 生成迷你地图缓存
 
 -   #--------------------------------------------------------------------------
 
 -   def create_minimap_cache
 
 -     @__minimap_show = !(@name =~ KMS_MiniMap::REGEX_NO_MINIMAP_NAME)
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 表示迷你地图
 
 -   #--------------------------------------------------------------------------
 
 -   def minimap_show?
 
 -     create_minimap_cache if @__minimap_show == nil
 
 -     return @__minimap_show
 
 -   end
 
 - end
 
  
- #==============================================================================
 
 - # ■ Game_Temp
 
 - #==============================================================================
 
  
- class Game_Temp
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 公共实例变量
 
 -   #--------------------------------------------------------------------------
 
 -   attr_accessor :minimap_manual_visible  # 手动切换小地图显示标志
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 对象初始化
 
 -   #--------------------------------------------------------------------------
 
 -   alias initialize_KMS_MiniMap initialize
 
 -   def initialize
 
 -     initialize_KMS_MiniMap
 
  
-     @minimap_manual_visible = true
 
 -   end
 
 - end
 
  
- #==============================================================================
 
 - # ■ Game_System
 
 - #==============================================================================
 
  
- class Game_System
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 公开インスタンス変数
 
 -   #--------------------------------------------------------------------------
 
 -   attr_accessor :minimap_show  # 迷你地图显示标志
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 对象初始化
 
 -   #--------------------------------------------------------------------------
 
 -   alias initialize_KMS_MiniMap initialize
 
 -   def initialize
 
 -     initialize_KMS_MiniMap
 
  
-     @minimap_show = true
 
 -   end
 
 - end
 
  
- #==============================================================================
 
 - # ■ Game_Map
 
 - #==============================================================================
 
  
- class Game_Map
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 定数
 
 -   #--------------------------------------------------------------------------
 
 -   MINIMAP_FADE_NONE = 0  # ミニマップ フェードなし
 
 -   MINIMAP_FADE_IN   = 1  # ミニマップ フェードイン
 
 -   MINIMAP_FADE_OUT  = 2  # ミニマップ フェードアウト
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 公开インスタンス変数
 
 -   #--------------------------------------------------------------------------
 
 -   attr_accessor :minimap_fade
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップを表示するか
 
 -   #--------------------------------------------------------------------------
 
 -   def minimap_show?
 
 -     return $data_mapinfos[map_id].minimap_show? && @map.minimap_show?
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップをフェードイン
 
 -   #--------------------------------------------------------------------------
 
 -   def fadein_minimap
 
 -     @minimap_fade = MINIMAP_FADE_IN
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップをフェードアウト
 
 -   #--------------------------------------------------------------------------
 
 -   def fadeout_minimap
 
 -     @minimap_fade = MINIMAP_FADE_OUT
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● リフレッシュ
 
 -   #--------------------------------------------------------------------------
 
 -   alias refresh_KMS_MiniMap refresh
 
 -   def refresh
 
 -     refresh_KMS_MiniMap
 
  
-     SceneManager.scene.refresh_minimap if SceneManager.scene_is?(Scene_Map)
 
 -   end
 
 - end
 
  
- #==============================================================================
 
 - # ■ Game_Event
 
 - #==============================================================================
 
  
- class Game_Event < Game_Character
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップ用のキャッシュを作成
 
 -   #--------------------------------------------------------------------------
 
 -   def __create_minimap_cache
 
 -     @__last_page = @page
 
 -     @__minimap_wall_event  = false
 
 -     @__minimap_move_event  = false
 
 -     @__minimap_object_type = -1
 
  
-     return if @page.nil?
 
  
-     @page.list.each { |cmd|
 
 -       # 注釈以外に到达したら离脱
 
 -       break unless [108, 408].include?(cmd.code)
 
  
-       # 正规表现判定
 
 -       case cmd.parameters[0]
 
 -       when KMS_MiniMap::REGEX_WALL_EVENT
 
 -         @__minimap_wall_event = true
 
 -       when KMS_MiniMap::REGEX_MOVE_EVENT
 
 -         @__minimap_move_event = true
 
 -       when KMS_MiniMap::REGEX_OBJECT
 
 -         @__minimap_object_type = $1.to_i
 
 -       end
 
 -     }
 
 -   end
 
 -   private :__create_minimap_cache
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ グラフィックがあるか
 
 -   #--------------------------------------------------------------------------
 
 -   def graphic_exist?
 
 -     return (character_name != "" || tile_id > 0)
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 障害物か
 
 -   #--------------------------------------------------------------------------
 
 -   def is_minimap_wall_event?
 
 -     if @__minimap_wall_event.nil? || @__last_page != @page
 
 -       __create_minimap_cache
 
 -     end
 
  
-     return @__minimap_wall_event
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 移动イベントか
 
 -   #--------------------------------------------------------------------------
 
 -   def is_minimap_move_event?
 
 -     if @__minimap_move_event.nil? || @__last_page != @page
 
 -       __create_minimap_cache
 
 -     end
 
  
-     return @__minimap_move_event
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップオブジェクトか
 
 -   #--------------------------------------------------------------------------
 
 -   def is_minimap_object?
 
 -     if @__minimap_object_type.nil? || @__last_page != @page
 
 -       __create_minimap_cache
 
 -     end
 
  
-     return @__minimap_object_type > 0
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップオブジェクトタイプ
 
 -   #--------------------------------------------------------------------------
 
 -   def minimap_object_type
 
 -     if @__minimap_object_type.nil? || @__last_page != @page
 
 -       __create_minimap_cache
 
 -     end
 
  
-     return @__minimap_object_type
 
 -   end
 
 - end
 
  
- #==============================================================================
 
 - # □ Game_MiniMap
 
 - #------------------------------------------------------------------------------
 
 - #   ミニマップを扱うクラスです。
 
 - #==============================================================================
 
  
- class Game_MiniMap
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 构造体
 
 -   #--------------------------------------------------------------------------
 
 -   Point = Struct.new(:x, :y)
 
 -   Size  = Struct.new(:width, :height)
 
 -   PassageCache = Struct.new(:map_id, :table, :scan_table)
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ クラス変数
 
 -   #--------------------------------------------------------------------------
 
 -   @@passage_cache = []  # 通行フラグテーブルキャッシュ
 
 -   #--------------------------------------------------------------------------
 
 -   # ● オブジェクト初期化
 
 -   #--------------------------------------------------------------------------
 
 -   def initialize(tilemap)
 
 -     @map_rect  = KMS_MiniMap::MAP_RECT
 
 -     @grid_size = [KMS_MiniMap::GRID_SIZE, 1].max
 
  
-     @x = 0
 
 -     @y = 0
 
 -     @grid_num = Point.new(
 
 -       (@map_rect.width  + @grid_size - 1) / @grid_size,
 
 -       (@map_rect.height + @grid_size - 1) / @grid_size
 
 -     )
 
 -     @draw_grid_num    = Point.new(@grid_num.x + 2, @grid_num.y + 2)
 
 -     @draw_range_begin = Point.new(0, 0)
 
 -     @draw_range_end   = Point.new(0, 0)
 
 -     @tilemap = tilemap
 
  
-     @last_x = $game_player.x
 
 -     @last_y = $game_player.y
 
  
-     @showing = false
 
 -     @hiding  = false
 
  
-     create_sprites
 
 -     refresh
 
  
-     unless $game_temp.minimap_manual_visible
 
 -       self.opacity = 0
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ スプライト作成
 
 -   #--------------------------------------------------------------------------
 
 -   def create_sprites
 
 -     @viewport   = Viewport.new(@map_rect)
 
 -     @viewport.z = KMS_MiniMap::MAP_Z
 
  
-     # ビットマップサイズ计算
 
 -     @bmp_size = Size.new(
 
 -       (@grid_num.x + 2) * @grid_size,
 
 -       (@grid_num.y + 2) * @grid_size
 
 -     )
 
 -     @buf_bitmap = Bitmap.new(@bmp_size.width, @bmp_size.height)
 
  
-     # マップ用スプライト作成
 
 -     @map_sprite   = Sprite.new(@viewport)
 
 -     @map_sprite.x = -@grid_size
 
 -     @map_sprite.y = -@grid_size
 
 -     @map_sprite.z = 0
 
 -     @map_sprite.bitmap = Bitmap.new(@bmp_size.width, @bmp_size.height)
 
  
-     # オブジェクト用スプライト作成
 
 -     @object_sprite   = Sprite_MiniMapIcon.new(@viewport)
 
 -     @object_sprite.x = -@grid_size
 
 -     @object_sprite.y = -@grid_size
 
 -     @object_sprite.z = 1
 
 -     @object_sprite.bitmap = Bitmap.new(@bmp_size.width, @bmp_size.height)
 
  
-     # 现在位置スプライト作成
 
 -     @position_sprite   = Sprite_MiniMapIcon.new
 
 -     @position_sprite.x = @map_rect.x + @grid_num.x / 2 * @grid_size
 
 -     @position_sprite.y = @map_rect.y + @grid_num.y / 2 * @grid_size
 
 -     @position_sprite.z = @viewport.z + 2
 
 -     bitmap = Bitmap.new(@grid_size, @grid_size)
 
 -     bitmap.fill_rect(bitmap.rect, KMS_MiniMap::POSITION_COLOR)
 
 -     @position_sprite.bitmap = bitmap
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 解放
 
 -   #--------------------------------------------------------------------------
 
 -   def dispose
 
 -     @buf_bitmap.dispose
 
 -     @map_sprite.bitmap.dispose
 
 -     @map_sprite.dispose
 
 -     @object_sprite.bitmap.dispose
 
 -     @object_sprite.dispose
 
 -     @position_sprite.bitmap.dispose
 
 -     @position_sprite.dispose
 
 -     @viewport.dispose
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 可视状态取得
 
 -   #--------------------------------------------------------------------------
 
 -   def visible
 
 -     return @map_sprite.visible
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 可视状态设定
 
 -   #--------------------------------------------------------------------------
 
 -   def visible=(value)
 
 -     @viewport.visible        = value
 
 -     @map_sprite.visible      = value
 
 -     @object_sprite.visible   = value
 
 -     @position_sprite.visible = value
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 不透明度取得
 
 -   #--------------------------------------------------------------------------
 
 -   def opacity
 
 -     return @map_sprite.opacity
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 不透明度设定
 
 -   #--------------------------------------------------------------------------
 
 -   def opacity=(value)
 
 -     @map_sprite.opacity      = value
 
 -     @object_sprite.opacity   = value
 
 -     @position_sprite.opacity = value
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ リフレッシュ
 
 -   #--------------------------------------------------------------------------
 
 -   def refresh
 
 -     update_draw_range
 
 -     update_passage_table
 
 -     update_object_list
 
 -     update_position
 
 -     draw_map
 
 -     draw_object
 
 -     Graphics.frame_reset
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ フェードイン
 
 -   #--------------------------------------------------------------------------
 
 -   def fadein
 
 -     @showing = true
 
 -     @hiding  = false
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ フェードアウト
 
 -   #--------------------------------------------------------------------------
 
 -   def fadeout
 
 -     @showing = false
 
 -     @hiding  = true
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ キー入力更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_input
 
 -     return if KMS_MiniMap::SWITCH_BUTTON.nil?
 
  
-     if Input.trigger?(KMS_MiniMap::SWITCH_BUTTON)
 
 -       if opacity < 255 && !@showing
 
 -         $game_temp.minimap_manual_visible = true
 
 -         fadein
 
 -       elsif opacity > 0 && !@hiding
 
 -         $game_temp.minimap_manual_visible = false
 
 -         fadeout
 
 -       end
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 描画范囲更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_draw_range
 
 -     range = []
 
 -     (2).times { |i| range[i] = @draw_grid_num[i] / 2 }
 
  
-     @draw_range_begin.x = $game_player.x - range[0]
 
 -     @draw_range_begin.y = $game_player.y - range[1]
 
 -     @draw_range_end.x   = $game_player.x + range[0]
 
 -     @draw_range_end.y   = $game_player.y + range[1]
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 通行可否テーブル更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_passage_table
 
 -     cache = get_passage_table_cache
 
 -     @passage_table      = cache.table
 
 -     @passage_scan_table = cache.scan_table
 
  
-     update_around_passage_table
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 通行可否テーブルのキャッシュを取得
 
 -   #--------------------------------------------------------------------------
 
 -   def get_passage_table_cache
 
 -     map_id = $game_map.map_id
 
 -     cache  = @@passage_cache.find { |c| c.map_id == map_id }
 
  
-     # キャッシュミスしたら新规作成
 
 -     if cache == nil
 
 -       cache = PassageCache.new(map_id)
 
 -       cache.table      = Table.new($game_map.width, $game_map.height)
 
 -       cache.scan_table = Table.new(
 
 -         ($game_map.width  + @draw_grid_num.x - 1) / @draw_grid_num.x,
 
 -         ($game_map.height + @draw_grid_num.y - 1) / @draw_grid_num.y
 
 -       )
 
 -     end
 
  
-     # 直近のキャッシュは先头に移动し、古いキャッシュは削除
 
 -     @@passage_cache.unshift(cache)
 
 -     @@passage_cache.delete_at(KMS_MiniMap::CACHE_NUM)
 
  
-     return cache
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 通行可否テーブルのキャッシュをクリア
 
 -   #--------------------------------------------------------------------------
 
 -   def clear_passage_table_cache
 
 -     return if @passage_scan_table == nil
 
  
-     table = @passage_scan_table
 
 -     @passage_scan_table = Table.new(table.xsize, table.ysize)
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 通行可否テーブルの探索
 
 -   #     x, y : 探索位置
 
 -   #--------------------------------------------------------------------------
 
 -   def scan_passage(x, y)
 
 -     dx = x / @draw_grid_num.x
 
 -     dy = y / @draw_grid_num.y
 
  
-     # 探索済み
 
 -     return if @passage_scan_table[dx, dy] == 1
 
  
-     # マップ范囲外
 
 -     return unless dx.between?(0, @passage_scan_table.xsize - 1)
 
 -     return unless dy.between?(0, @passage_scan_table.ysize - 1)
 
  
-     rx = (dx * @draw_grid_num.x)...((dx + 1) * @draw_grid_num.x)
 
 -     ry = (dy * @draw_grid_num.y)...((dy + 1) * @draw_grid_num.y)
 
 -     mw = $game_map.width  - 1
 
 -     mh = $game_map.height - 1
 
  
-     # 探索范囲内の通行テーブルを生成
 
 -     rx.each { |x|
 
 -       next unless x.between?(0, mw)
 
 -       ry.each { |y|
 
 -         next unless y.between?(0, mh)
 
  
-         # 通行方向フラグ作成
 
 -         # (↓、←、→、↑ の顺に 1, 2, 4, 8 が対応)
 
 -         flag = 0
 
 -         [2, 4, 6, 8].each{ |d|
 
 -           flag |= 1 << (d / 2 - 1) if $game_map.passable?(x, y, d)
 
 -         }
 
 -         @passage_table[x, y] = flag
 
 -       }
 
 -     }
 
 -     @passage_scan_table[dx, dy] = 1
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 周辺の通行可否テーブル更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_around_passage_table
 
 -     gx = @draw_grid_num.x
 
 -     gy = @draw_grid_num.y
 
 -     dx = $game_player.x - gx / 2
 
 -     dy = $game_player.y - gy / 2
 
 -     scan_passage(dx,      dy)
 
 -     scan_passage(dx + gx, dy)
 
 -     scan_passage(dx,      dy + gy)
 
 -     scan_passage(dx + gx, dy + gy)
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ オブジェクト一覧更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_object_list
 
 -     events = $game_map.events.values
 
  
-     # WALL
 
 -     @wall_events = events.find_all { |e| e.is_minimap_wall_event? }
 
  
-     # MOVE
 
 -     @move_events = events.find_all { |e| e.is_minimap_move_event? }
 
  
-     # OBJ
 
 -     @object_list = events.find_all { |e| e.is_minimap_object? }
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 位置更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_position
 
 -     # 移动量算出
 
 -     pt = Point.new($game_player.x, $game_player.y)
 
 -     ox = ($game_player.real_x - pt.x) * @grid_size
 
 -     oy = ($game_player.real_y - pt.y) * @grid_size
 
  
-     @viewport.ox = ox
 
 -     @viewport.oy = oy
 
  
-     # 移动していたらマップ再描画
 
 -     if pt.x != @last_x || pt.y != @last_y
 
 -       draw_map
 
 -       @last_x = pt.x
 
 -       @last_y = pt.y
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 描画范囲内判定
 
 -   #--------------------------------------------------------------------------
 
 -   def in_draw_range?(x, y)
 
 -     rb = @draw_range_begin
 
 -     re = @draw_range_end
 
 -     return (x.between?(rb.x, re.x) && y.between?(rb.y, re.y))
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ マップ范囲内判定
 
 -   #--------------------------------------------------------------------------
 
 -   def in_map_range?(x, y)
 
 -     mw = $game_map.width
 
 -     mh = $game_map.height
 
 -     return (x.between?(0, mw - 1) && y.between?(0, mh - 1))
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ マップ描画
 
 -   #--------------------------------------------------------------------------
 
 -   def draw_map
 
 -     update_around_passage_table
 
  
-     bitmap  = @map_sprite.bitmap
 
 -     bitmap.fill_rect(bitmap.rect, KMS_MiniMap::BACKGROUND_COLOR)
 
  
-     draw_map_foreground(bitmap)
 
 -     draw_map_move_event(bitmap)
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 通行可能领域の描画
 
 -   #--------------------------------------------------------------------------
 
 -   def draw_map_foreground(bitmap)
 
 -     range_x = (@draw_range_begin.x)..(@draw_range_end.x)
 
 -     range_y = (@draw_range_begin.y)..(@draw_range_end.y)
 
 -     map_w   = $game_map.width  - 1
 
 -     map_h   = $game_map.height - 1
 
 -     rect    = Rect.new(0, 0, @grid_size, @grid_size)
 
  
-     range_x.each { |x|
 
 -       next unless x.between?(0, map_w)
 
 -       range_y.each { |y|
 
 -         next unless y.between?(0, map_h)
 
 -         next if @passage_table[x, y] == 0
 
 -         next if @wall_events.find { |e| e.x == x && e.y == y }  # 壁
 
  
-         # グリッド描画サイズ算出
 
 -         rect.set(0, 0, @grid_size, @grid_size)
 
 -         rect.x = (x - @draw_range_begin.x) * @grid_size
 
 -         rect.y = (y - @draw_range_begin.y) * @grid_size
 
 -         flag = @passage_table[x, y]
 
 -         if flag & 0x01 == 0  # 下通行不能
 
 -           rect.height -= 1
 
 -         end
 
 -         if flag & 0x02 == 0  # 左通行不能
 
 -           rect.x     += 1
 
 -           rect.width -= 1
 
 -         end
 
 -         if flag & 0x04 == 0  # 右通行不能
 
 -           rect.width -= 1
 
 -         end
 
 -         if flag & 0x08 == 0  # 上通行不能
 
 -           rect.y      += 1
 
 -           rect.height -= 1
 
 -         end
 
 -         bitmap.fill_rect(rect, KMS_MiniMap::FOREGROUND_COLOR)
 
 -       }
 
 -     }
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 移动イベントの描画
 
 -   #--------------------------------------------------------------------------
 
 -   def draw_map_move_event(bitmap)
 
 -     rect = Rect.new(0, 0, @grid_size, @grid_size)
 
 -     @move_events.each { |e|
 
 -       rect.x = (e.x - @draw_range_begin.x) * @grid_size
 
 -       rect.y = (e.y - @draw_range_begin.y) * @grid_size
 
 -       bitmap.fill_rect(rect, KMS_MiniMap::MOVE_EVENT_COLOR)
 
 -     }
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ アニメーション更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_animation
 
 -     if @showing
 
 -       # フェードイン
 
 -       self.opacity += 16
 
 -       if opacity == 255
 
 -         @showing = false
 
 -       end
 
 -     elsif @hiding
 
 -       # フェードアウト
 
 -       self.opacity -= 16
 
 -       if opacity == 0
 
 -         @hiding = false
 
 -       end
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ オブジェクト描画
 
 -   #--------------------------------------------------------------------------
 
 -   def draw_object
 
 -     # 下准备
 
 -     bitmap = @object_sprite.bitmap
 
 -     bitmap.clear
 
 -     rect = Rect.new(0, 0, @grid_size, @grid_size)
 
  
-     # オブジェクト描画
 
 -     @object_list.each { |obj|
 
 -       next unless in_draw_range?(obj.x, obj.y)
 
  
-       color = KMS_MiniMap::OBJECT_COLOR[obj.minimap_object_type - 1]
 
 -       next if color.nil?
 
  
-       rect.x = (obj.real_x - @draw_range_begin.x) * @grid_size
 
 -       rect.y = (obj.real_y - @draw_range_begin.y) * @grid_size
 
 -       bitmap.fill_rect(rect, color)
 
 -     }
 
  
-     # 乗り物描画
 
 -     $game_map.vehicles.each { |vehicle|
 
 -       next if vehicle.transparent
 
  
-       rect.x = (vehicle.real_x - @draw_range_begin.x) * @grid_size
 
 -       rect.y = (vehicle.real_y - @draw_range_begin.y) * @grid_size
 
 -       bitmap.fill_rect(rect, KMS_MiniMap::VEHICLE_COLOR)
 
 -     }
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update
 
 -     update_input
 
  
-     return unless need_update?
 
  
-     update_draw_range
 
 -     update_position
 
 -     update_animation
 
 -     draw_object
 
  
-     @map_sprite.update
 
 -     @object_sprite.update
 
 -     @position_sprite.update
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ 更新判定
 
 -   #--------------------------------------------------------------------------
 
 -   def need_update?
 
 -     return (visible && opacity > 0) || @showing || @hiding
 
 -   end
 
 - end
 
  
- #==============================================================================
 
 - # □ Sprite_MiniMapIcon
 
 - #------------------------------------------------------------------------------
 
 - #   ミニマップ用アイコンのクラスです。
 
 - #==============================================================================
 
  
- class Sprite_MiniMapIcon < Sprite
 
 -   DURATION_MAX = 60
 
 -   #--------------------------------------------------------------------------
 
 -   # ● オブジェクト初期化
 
 -   #     viewport : ビューポート
 
 -   #--------------------------------------------------------------------------
 
 -   def initialize(viewport = nil)
 
 -     super(viewport)
 
 -     @duration = DURATION_MAX / 2
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● フレーム更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update
 
 -     super
 
 -     @duration += 1
 
 -     if @duration == DURATION_MAX
 
 -       @duration = 0
 
 -     end
 
 -     update_effect
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ エフェクトの更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_effect
 
 -     self.color.set(255, 255, 255,
 
 -       (@duration - DURATION_MAX / 2).abs * KMS_MiniMap::BLINK_LEVEL
 
 -     )
 
 -   end
 
 - end
 
  
- #==============================================================================
 
 - # ■ Spriteset_Map
 
 - #==============================================================================
 
  
- class Spriteset_Map
 
 -   attr_reader :minimap
 
 -   #--------------------------------------------------------------------------
 
 -   # ● オブジェクト初期化
 
 -   #--------------------------------------------------------------------------
 
 -   alias initialize_KMS_MiniMap initialize
 
 -   def initialize
 
 -     initialize_KMS_MiniMap
 
  
-     create_minimap
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップの作成
 
 -   #--------------------------------------------------------------------------
 
 -   def create_minimap
 
 -     @minimap = Game_MiniMap.new(@tilemap)
 
 -     @minimap.visible = $game_system.minimap_show && $game_map.minimap_show?
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 解放
 
 -   #--------------------------------------------------------------------------
 
 -   alias dispose_KMS_MiniMap dispose
 
 -   def dispose
 
 -     dispose_KMS_MiniMap
 
  
-     dispose_minimap
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップの解放
 
 -   #--------------------------------------------------------------------------
 
 -   def dispose_minimap
 
 -     @minimap.dispose
 
 -     @minimap = nil
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● フレーム更新
 
 -   #--------------------------------------------------------------------------
 
 -   alias update_KMS_MiniMap update
 
 -   def update
 
 -     update_KMS_MiniMap
 
  
-     update_minimap
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップ更新
 
 -   #--------------------------------------------------------------------------
 
 -   def minimap_show?
 
 -     return $game_map.minimap_show? && $game_system.minimap_show
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップ更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_minimap
 
 -     return if @minimap.nil?
 
  
-     # 表示切替
 
 -     if minimap_show?
 
 -       @minimap.visible = true
 
 -     else
 
 -       @minimap.visible = false
 
 -       return
 
 -     end
 
  
-     # フェード判定
 
 -     case $game_map.minimap_fade
 
 -     when Game_Map::MINIMAP_FADE_IN
 
 -       @minimap.fadein
 
 -       $game_map.minimap_fade = Game_Map::MINIMAP_FADE_NONE
 
 -     when Game_Map::MINIMAP_FADE_OUT
 
 -       @minimap.fadeout
 
 -       $game_map.minimap_fade = Game_Map::MINIMAP_FADE_NONE
 
 -     end
 
  
-     @minimap.update
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップ全体をリフレッシュ
 
 -   #--------------------------------------------------------------------------
 
 -   def refresh_minimap
 
 -     return if @minimap.nil?
 
  
-     @minimap.clear_passage_table_cache
 
 -     @minimap.refresh
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップのオブジェクトを更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_minimap_object
 
 -     @minimap.update_object_list unless @minimap.nil?
 
 -   end
 
 - end
 
  
- #==============================================================================
 
 - # ■ Scene_Map
 
 - #==============================================================================
 
  
- class Scene_Map
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 场所移动後の処理
 
 -   #--------------------------------------------------------------------------
 
 -   alias post_transfer_KMS_MiniMap post_transfer
 
 -   def post_transfer
 
 -     refresh_minimap
 
  
-     post_transfer_KMS_MiniMap
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップ全体をリフレッシュ
 
 -   #--------------------------------------------------------------------------
 
 -   def refresh_minimap
 
 -     @spriteset.refresh_minimap unless @spriteset.nil?
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ○ ミニマップのオブジェクトを更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update_minimap_object
 
 -     @spriteset.update_minimap_object unless @spriteset.nil?
 
 -   end
 
 - end
 
  复制代码 不表示迷你地图hide_minimap 
 表示迷你地图show_minimap 
要善用搜索哦 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |