#==============================================================================
# ■ Class_Actor
#==============================================================================
class Game_Actor < Game_Battler
 
  alias moming_refresh refresh
  alias moming_tp tp=
  alias moming_add_state add_state
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    moming_refresh
    $refresh = true
  end
  #----------------------------------------------------------------------------
  # ● 更改 TP 
  #----------------------------------------------------------------------------
  def tp=(tp)
    moming_tp(tp)
    $refresh = true
  end
  #----------------------------------------------------------------------------
  # ● 附加状态
  #----------------------------------------------------------------------------
  def add_state(state_id)
    moming_add_state(state_id)
    $refresh = true
  end
end
 
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
 
  alias moming_swap_order swap_order
  #----------------------------------------------------------------------------
  # ● 交换顺序
  #----------------------------------------------------------------------------
  def swap_order(index1, index2)
    moming_swap_order(index1, index2)
    $refresh = true
  end
end
#==============================================================================
# ■ Window_MapStatus
#==============================================================================
class Window_MapStatus < Window_Base
  #----------------------------------------------------------------------------
  # ● 初始化
  #----------------------------------------------------------------------------
   def initialize
    super(0, 0, 273, 144)
    self.opacity = 0
    refresh
  end
 
  #----------------------------------------------------------------------------
  # ● 刷新画面
  #----------------------------------------------------------------------------
  def update
    super
 
    refresh if $refresh
    $refresh = false
    if contents_opacity != 0
      if $game_player.screen_x >= 0 and $game_player.screen_x <= self.width and
       $game_player.screen_y >= 0 and $game_player.screen_y <= self.height
      self.contents_opacity = 75
      else self.contents_opacity = 255
      end
    end
  end
  #----------------------------------------------------------------------------
  # ● 更新内容
  #----------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_actor_face($game_party.members[0], 0, 0)
    contents.draw_text(0,0,contents.width,24,$game_party.members[0].name,2)
    draw_actor_level($game_party.members[0], 101, 0)
    draw_actor_icons($game_party.members[0], 0, 72)
    draw_actor_hp($game_party.members[0], 101, 24, self.contents.width - 101)
    draw_actor_mp($game_party.members[0], 101, 48, self.contents.width - 101)
    draw_actor_tp($game_party.members[0], 101, 72, self.contents.width - 101)
    draw_actor_exp($game_party.members[0], 0, 96, self.contents.width)
  end
  #----------------------------------------------------------------------------
  # ● 描绘EXP槽
  #----------------------------------------------------------------------------
  def draw_actor_exp(actor, x, y, width=124)
    rate = actor.exp.to_f / actor.next_level_exp.to_f
    draw_gauge(x, y, width, rate, Color.new(0, 255, 0), Color.new(100, 255, 100))
    self.contents.font.color = text_color(16)
    self.contents.draw_text(x, y, 56, 24, "EXP")
    self.contents.font.color = Color.new(255, 255, 255)
    en = "#{actor.exp}/#{actor.next_level_exp}"
    self.contents.draw_text(x, y, width, 24, en, 2)
  end
  #----------------------------------------------------------------------------
  # ● 描绘值槽
  #----------------------------------------------------------------------------
  def draw_gauge(x, y, width, rate, color1, color2)
    fill_w = (width * rate).to_i
    self.contents.gradient_fill_rect(x, y+12, fill_w, 6, color1, color2, true)
    self.contents.gradient_fill_rect(x, y+18, fill_w, 6, color2, color1, true)
    self.contents.fill_rect(x, y+12, width, 1, Color.new(255, 255, 255))
    self.contents.fill_rect(x, y+22, width, 1, Color.new(255, 255, 255))
    self.contents.fill_rect(x, y+14, 1, 8, Color.new(255, 255, 255))
    self.contents.fill_rect(x+width-2, y+14, 1, 8, Color.new(255, 255, 255))
  end
end
 
#==============================================================================
# ■ Scene_Map
#==============================================================================
 
 
class Scene_Map < Scene_Base
  #----------------------------------------------------------------------------
  # ● 重命名方法
  #----------------------------------------------------------------------------
  alias moming_sta start
  alias moming_update update
  #----------------------------------------------------------------------------
  # ● 开始处理
  #----------------------------------------------------------------------------
  def start
    moming_sta
    @mapstatus_window = Window_MapStatus.new
  end
  #----------------------------------------------------------------------------
  # ● 更新处理
  #----------------------------------------------------------------------------
  def update
    moming_update
    ms_update_input
  end
  #----------------------------------------------------------------------------
  # ● 按键检测
  #----------------------------------------------------------------------------  
  def ms_update_input
    if Input.trigger?(:F6)
      if @mapstatus_window.contents_opacity != 0
        gra_close
      else
        gra_open
      end
    end
  end
  #----------------------------------------------------------------------------
  # ● 定义窗口淡入、淡出
  #----------------------------------------------------------------------------  
  def gra_close
    60.times do |i|
      @mapstatus_window.contents_opacity -= 4.25
      Graphics.update
 
    end
  end
 
  def gra_open
    60.times do |i|
      @mapstatus_window.contents_opacity += 4.25
      Graphics.update
    end
  end
 
end
#转自945窗口脚本教程,并稍作修改。