设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1897|回复: 6
打印 上一主题 下一主题

[已经过期] 找人帮忙该下地图显示脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
62 小时
注册时间
2009-8-19
帖子
118
跳转到指定楼层
1
发表于 2010-8-10 15:20:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 yuyinwww 于 2010-8-10 15:26 编辑

#=========================================================
# This is the ffx-2 Custom Menu System by Catchm.
# It is a long script and includes many alterations and images attached to it.
# These images can be edited, and the script can be edited, you are free to do so
# credit to Catchm is the only thing needed.
# this is to be copied into a new script in the script editor
#
# Have fun with the script!
#=========================================================

class Bitmap
def draw_text_shadow_rect(rect, text, align = 0)
  self.font.size -= 2
  old_col = self.font.color.clone
  # Dark shadow
  self.font.color = Color.new(0,0,0, 255)
  draw_text(Rect.new(rect.x+1, rect.y+1, rect.width,
    rect.height), text, align)
  # Small outline
  self.font.color = Color.new(96,96,96,96)
  draw_text(Rect.new(rect.x+1, rect.y, rect.width,
    rect.height), text, align)
  draw_text(Rect.new(rect.x-1, rect.y, rect.width,
    rect.height), text, align)
  draw_text(Rect.new(rect.x, rect.y-1, rect.width,
    rect.height), text, align)
  draw_text(Rect.new(rect.x, rect.y+1, rect.width,
    rect.height), text, align)
  # Normal text
  self.font.color = old_col
  draw_text(rect, text, align)
  self.font.size += 2
end
def draw_text_shadow(x, y, wid, hei, text, align = 0)
  self.font.size -= 2
  old_col = self.font.color.clone
  # Dark shadow
  self.font.color = Color.new(0,0,0, 255)
  draw_text(x+1,y+1,wid,hei,text, align)
  # Small outline
  self.font.color = Color.new(96,96,96,96)
  draw_text(x+1,y,wid,hei,text, align)
  draw_text(x+2,y,wid,hei,text, align)
  draw_text(x+2,y,wid,hei,text, align)
  draw_text(x,y-1,wid,hei,text, align)
  draw_text(x,y+1,wid,hei,text, align)
  draw_text(x,y+2,wid,hei,text, align)
  # Normal
  self.font.color = old_col
  draw_text(x,y,wid,hei,text, align)
  self.font.size += 2
end
def draw_text_outline(x, y, wid, hei, text, align = 0)
  self.font.color = Color.new(0, 0, 0, 255)
    draw_text(x + 1,y + 1,wid,hei,text, align)
    draw_text(x + 1,y - 1,wid,hei,text, align)
    draw_text(x - 1,y - 1,wid,hei,text, align)
    draw_text(x - 1,y + 1,wid,hei,text, align)
   self.font.color = Color.new(255, 255, 255, 255)
    draw_text(x,y,wid,hei,text, align)
  end
def draw_text_outline2(x, y, wid, hei, text, align = 0)
  self.font.color = Color.new(0, 0, 0, 255)
    draw_text(x + 1,y + 1,wid,hei,text, align)
    draw_text(x + 1,y - 1,wid,hei,text, align)
    draw_text(x - 1,y - 1,wid,hei,text, align)
    draw_text(x - 1,y + 1,wid,hei,text, align)
   self.font.color = Color.new(255, 255, 255, 200)
    draw_text(x,y,wid,hei,text, align)
  end
  def draw_text_outline3(x, y, wid, hei, text, align = 0)
  self.font.color = Color.new(0, 0, 0, 255)
    draw_text(x + 1,y + 1,wid,hei,text, align)
    draw_text(x + 1,y - 1,wid,hei,text, align)
    draw_text(x - 1,y - 1,wid,hei,text, align)
    draw_text(x - 1,y + 1,wid,hei,text, align)
   self.font.color = Color.new(192, 224, 255, 255)
    draw_text(x,y,wid,hei,text, align)
  end
  def draw_text_outline4(x, y, wid, hei, text, align = 0)
  self.font.color = Color.new(0, 0, 0, 190)
    draw_text(x + 1,y + 1,wid,hei,text, align)
    draw_text(x + 1,y - 1,wid,hei,text, align)
    draw_text(x - 1,y - 1,wid,hei,text, align)
    draw_text(x - 1,y + 1,wid,hei,text, align)
   self.font.color = Color.new(255, 255, 255, 255)
    draw_text(x,y,wid,hei,text, align)
  end
end
class Window_Base < Window
  #=====================================
  # Gradient Bars , thanks to Acedent Prone
  def draw_normal_barz(x, y, type, length, thick, e1, e2, c1 = Color.new(255,0,0,255), c2 = Color.new(0,0,0,255))
   if type == "horizontal"
     width = length
     height = thick
     self.contents.fill_rect(x-1, y - 1, width+2, height + 3, Color.new(255, 255, 255, 255))
     self.contents.fill_rect(x, y, width, height + 1, Color.new(0, 0, 0, 255))
     w = width * e1 / e2
     for i in 0..height
     r = c1.red + (c2.red - c1.red)   * (height -i)/height  + 0   * i/height
     g = c1.green + (c2.green - c1.green) * (height -i)/height  + 0 * i/height
     b = c1.blue + (c2.blue - c1.blue)  * (height -i)/height  + 0 * i/height
     a = c1.alpha + (c2.alpha - c1.alpha)* (height -i)/height  + 255 * i/height
     self.contents.fill_rect(x, y+i, w, 1, Color.new(r, g, b, a))
   end
elsif type == "vertical"
   width = thick
   height = length
     self.contents.fill_rect(x-1, y - 1, width+3, height + 2, Color.new(255, 255, 255, 255))
     self.contents.fill_rect(x, y, width+1, height , Color.new(0, 0, 0, 255))
   h = height * e1 / e2
   for i in 0..width
     r = c1.red + (c2.red - c1.red)   * (width -i)/width  + 0   * i/width
     g = c1.green + (c2.green - c1.green) * (width -i)/width  + 0 * i/width
     b = c1.blue + (c2.blue - c1.blue)  * (width -i)/width  + 0 * i/width
     a = c1.alpha + (c2.alpha - c1.alpha)* (width -i)/width  + 255 * i/width
     self.contents.fill_rect(x+i, y, 1, h, Color.new(r, g, b, a))
   end
end
end
def draw_actor_barz(actor,x, y, type, length, thick, e1, e2, c1 = Color.new(255,0,0,255), c2 = Color.new(0,0,0,255))
   if type == "horizontal"
     width = length
     height = thick
     self.contents.fill_rect(x-1, y - 1, width+2, height + 3, Color.new(0, 0, 0, 255))
     self.contents.fill_rect(x, y, width, height + 1, Color.new(0, 0, 0, 255))
     w = width * e1 / e2
     for i in 0..height
     r = c1.red + (c2.red - c1.red)   * (height -i)/height  + 0   * i/height
     g = c1.green + (c2.green - c1.green) * (height -i)/height  + 0 * i/height
     b = c1.blue + (c2.blue - c1.blue)  * (height -i)/height  + 0 * i/height
     a = c1.alpha + (c2.alpha - c1.alpha)* (height -i)/height  + 255 * i/height
     self.contents.fill_rect(x, y+i, w, 1, Color.new(r, g, b, a))
   end
elsif type == "vertical"
   width = thick
   height = length
     self.contents.fill_rect(x-1, y - 1, width+3, height + 2, Color.new(255, 255, 255, 255))
     self.contents.fill_rect(x, y, width+1, height , Color.new(0, 0, 0, 255))
   h = height * e1 / e2
   for i in 0..width
     r = c1.red + (c2.red - c1.red)   * (width -i)/width  + 0   * i/width
     g = c1.green + (c2.green - c1.green) * (width -i)/width  + 0 * i/width
     b = c1.blue + (c2.blue - c1.blue)  * (width -i)/width  + 0 * i/width
     a = c1.alpha + (c2.alpha - c1.alpha)* (width -i)/width  + 255 * i/width
     self.contents.fill_rect(x+i, y, 1, h, Color.new(r, g, b, a))
   end
end
end
  #=====================================
  # New definitions
  def draw_battlegraphic(actor, x, y)
  bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  cw = bitmap.width
  ch = bitmap.height
  src_rect = Rect.new(0, 0, cw, ch)
  self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
#======================================
    def draw_actor_statuswindow(actor, x, y)
     bitmap = RPG::Cache.picture(actor.character_name, actor.character_hue)
    cw = bitmap.width / 4
    ch = bitmap.height / 4
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
  #=====================================
  def draw_actor_face(actor, x, y)
  face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
  fw = face.width
  fh = face.height
  src_rect = Rect.new(0, 0, fw, fh)
  self.contents.blt(x - fw / 23, y - fh, face, src_rect)
end
  #=====================================
  def draw_actor_name2(actor, x, y)
    self.contents.font.name = "宋体"
    self.contents.font.color = outline_color
    self.contents.draw_text(x - 1, y - 1, 120, 32, actor.name)
    self.contents.draw_text(x + 1, y - 1, 120, 32, actor.name)
    self.contents.draw_text(x + 1, y + 1, 120, 32, actor.name)
    self.contents.draw_text(x - 1, y + 1, 120, 32, actor.name)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 120, 32, actor.name)
  end
  #=====================================
  def draw_actor_level2(actor, x, y)
    self.contents.font.name = "宋体"
    self.contents.font.color = outline_color
    self.contents.draw_text(x - 1, y - 1, 32, 32, "Lv")
    self.contents.draw_text(x - 1, y + 1, 32, 32, "Lv")
    self.contents.draw_text(x + 1, y - 1, 32, 32, "Lv")
    self.contents.draw_text(x + 1, y + 1, 32, 32, "Lv")
    self.contents.font.color = Color.new(254, 230, 159, 255)
    self.contents.draw_text(x, y, 32, 32, "Lv")
    self.contents.font.color = outline_color
    self.contents.draw_text(x + 31, y + 1, 24, 32, actor.level.to_s, 2)
    self.contents.draw_text(x + 31, y - 1, 24, 32, actor.level.to_s, 2)
    self.contents.draw_text(x + 33, y + 1, 24, 32, actor.level.to_s, 2)
    self.contents.draw_text(x + 33, y - 1, 24, 32, actor.level.to_s, 2)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
  end
  #=====================================
  def draw_actor_class2(actor, x, y)
    self.contents.font.name = "宋体"
    self.contents.font.color = outline_color
    self.contents.draw_text(x + 1, y + 1, 236, 32, actor.class_name)
    self.contents.draw_text(x + 1, y - 1, 236, 32, actor.class_name)
    self.contents.draw_text(x - 1, y + 1, 236, 32, actor.class_name)
    self.contents.draw_text(x - 1, y - 1, 236, 32, actor.class_name)
    self.contents.font.color = Color.new(238, 139, 254, 255)
    self.contents.draw_text(x, y, 236, 32, actor.class_name)
  end
  #======================================
  def draw_actor_hp2(actor, x, y, width = 144)
    self.contents.font.name = "宋体"
    # 文字列 "HP" を描画
    self.contents.font.size = 24
    self.contents.font.color = outline_color
    self.contents.draw_text(x + 1, y + 1, 32, 32, $data_system.words.hp)
    self.contents.draw_text(x + 1, y - 1, 32, 32, $data_system.words.hp)
    self.contents.draw_text(x - 1, y - 1, 32, 32, $data_system.words.hp)
    self.contents.draw_text(x - 1, y + 1, 32, 32, $data_system.words.hp)
    self.contents.font.color = Color.new(254, 238, 189, 255)
    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
    # MaxHP を描画するスペースがあるか計算
    if width - 32 >= 108
      hp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
    end
    # HP を描画
       self.contents.font.name = "宋体"
       self.contents.font.size = 20
       self.contents.font.color = outline_color
       self.contents.draw_text(hp_x - 1, y - 1, 48, 32, actor.hp.to_s, 2)
       self.contents.draw_text(hp_x - 1, y + 1, 48, 32, actor.hp.to_s, 2)
       self.contents.draw_text(hp_x + 1, y + 1, 48, 32, actor.hp.to_s, 2)
       self.contents.draw_text(hp_x + 1, y - 1, 48, 32, actor.hp.to_s, 2)
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
    # MaxHP を描画
    if flag
      self.contents.font.color = outline_color
      self.contents.draw_text(hp_x + 60 - 1, y - 1, 48, 32, actor.maxhp.to_s)
      self.contents.draw_text(hp_x + 60 - 1, y + 1, 48, 32, actor.maxhp.to_s)
      self.contents.draw_text(hp_x + 60 + 1, y - 1, 48, 32, actor.maxhp.to_s)
      self.contents.draw_text(hp_x + 60 + 1, y + 1, 48, 32, actor.maxhp.to_s)
      self.contents.draw_text(hp_x + 48 - 1, y - 1, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 48 + 1, y + 1, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 48 - 1, y + 1, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 48 + 1, y - 1, 12, 32, "/", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
    end
  end
  #============================================
  def draw_actor_sp2(actor, x, y, width = 144)
    self.contents.font.name = "宋体"
    # 文字列 "SP" を描画
    self.contents.font.size = 24
    self.contents.font.color = outline_color
    self.contents.draw_text(x + 1, y + 1, 32, 32, $data_system.words.sp)
    self.contents.draw_text(x + 1, y - 1, 32, 32, $data_system.words.sp)
    self.contents.draw_text(x - 1, y - 1, 32, 32, $data_system.words.sp)
    self.contents.draw_text(x - 1, y + 1, 32, 32, $data_system.words.sp)
    self.contents.font.color = Color.new(74, 230, 51, 225)
    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
    # MaxSP を描画するスペースがあるか計算
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    # SP を描画
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    self.contents.font.color = outline_color
    self.contents.draw_text(sp_x - 1, y - 1, 48, 32, actor.sp.to_s, 2)
    self.contents.draw_text(sp_x - 1, y + 1, 48, 32, actor.sp.to_s, 2)
    self.contents.draw_text(sp_x + 1, y - 1, 48, 32, actor.sp.to_s, 2)
    self.contents.draw_text(sp_x + 1, y + 1, 48, 32, actor.sp.to_s, 2)
    self.contents.font.color = actor.sp == 0 ? knockout_color :
      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
    self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
    # MaxSP を描画
    if flag
      self.contents.font.color = outline_color
      self.contents.draw_text(sp_x + 60 - 1, y - 1, 48, 32, actor.maxsp.to_s)
      self.contents.draw_text(sp_x + 60 - 1, y + 1, 48, 32, actor.maxsp.to_s)
      self.contents.draw_text(sp_x + 60 + 1, y + 1, 48, 32, actor.maxsp.to_s)
      self.contents.draw_text(sp_x + 60 + 1, y - 1, 48, 32, actor.maxsp.to_s)
      self.contents.draw_text(sp_x + 48 - 1, y - 1, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 48 - 1, y - 1, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 48 + 1, y + 1, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 48 + 1, y + 1, 12, 32, "/", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
    end
  end
  #=========================================
  def draw_actor_state2(actor, x, y, width = 120)
    self.contents.font.name = "宋体"
    text = make_battler_state_text(actor, width, true)
    self.contents.font.color = outline_color
    self.contents.draw_text(x - 1, y - 1, width, 32, text)
    self.contents.draw_text(x - 1, y + 1, width, 32, text)
    self.contents.draw_text(x + 1, y + 1, width, 32, text)
    self.contents.draw_text(x + 1, y - 1, width, 32, text)
    self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
    self.contents.draw_text(x, y, width, 32, text)
  end
    #=====================================
  def draw_actor_parameter2(actor, x, y, type)
    case type
    when 0
      parameter_name = $data_system.words.atk
      parameter_value = actor.atk
    when 1
      parameter_name = $data_system.words.pdef
      parameter_value = actor.pdef
    when 2
      parameter_name = "魔防"
      parameter_value = actor.mdef
    when 3
      parameter_name = $data_system.words.str
      parameter_value = actor.str
    when 4
      parameter_name = $data_system.words.dex
      parameter_value = actor.dex
    when 5
      parameter_name = $data_system.words.agi
      parameter_value = actor.agi
    when 6
      parameter_name = $data_system.words.int
      parameter_value = actor.int
    end
    self.contents.font.color = system_color
    self.contents.draw_text_outline(x, y, 120, 32, parameter_name)
    self.contents.font.color = normal_color
    self.contents.draw_text_outline(x + 130, y, 36, 32, parameter_value.to_s, 2)
  end
  #=========================================
  def draw_item_name2(item, x, y)
    if item == nil
       self.contents.draw_text_outline(x + 28, y, 212, 32, "无")
      return
    end
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text_outline(x + 28, y, 212, 32, item.name)
  end
   # New colour for outlining text - Black
  def outline_color
   return Color.new(0, 0, 0, 255)
end
  end
  #==============================================================================
# ■ Window_Selectable
#------------------------------------------------------------------------------
#  カーソルの移動やスクロールの機能を持つウィンドウクラスです。
#==============================================================================

class Window_Itemselectable < Window_Base
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :index                    # カーソル位置
  attr_reader   :help_window              # ヘルプウィンドウ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     x      : ウィンドウの X 座標
  #     y      : ウィンドウの Y 座標
  #     width  : ウィンドウの幅
  #     height : ウィンドウの高さ
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super(x, y, width, height)
    @item_max = 1
    @column_max = 1
    @index = -1
  end
  #--------------------------------------------------------------------------
  # ● カーソル位置の設定
  #     index : 新しいカーソル位置
  #--------------------------------------------------------------------------
  def index=(index)
    @index = index
    # ヘルプテキストを更新 (update_help は継承先で定義される)
    if self.active and @help_window != nil
      update_help
    end
    # カーソルの矩形を更新
    update_cursor_rect
  end
  #--------------------------------------------------------------------------
  # ● 行数の取得
  #--------------------------------------------------------------------------
  def row_max
    # 項目数と列数から行数を算出
    return (@item_max + @column_max - 1) / @column_max
  end
  #--------------------------------------------------------------------------
  # ● 先頭の行の取得
  #--------------------------------------------------------------------------
  def top_row
    # ウィンドウ内容の転送元 Y 座標を、1 行の高さ 32 で割る
    return self.oy / 32
  end
  #--------------------------------------------------------------------------
  # ● 先頭の行の設定
  #     row : 先頭に表示する行
  #--------------------------------------------------------------------------
  def top_row=(row)
    # row が 0 未満の場合は 0 に修正
    if row < 0
      row = 0
    end
    # row が row_max - 1 超の場合は row_max - 1 に修正
    if row > row_max - 1
      row = row_max - 1
    end
    # row に 1 行の高さ 32 を掛け、ウィンドウ内容の転送元 Y 座標とする
    self.oy = row * 32
  end
  #--------------------------------------------------------------------------
  # ● 1 ページに表示できる行数の取得
  #--------------------------------------------------------------------------
  def page_row_max
    # ウィンドウの高さから、フレームの高さ 32 を引き、1 行の高さ 32 で割る
    return (self.height - 32) / 32
  end
  #--------------------------------------------------------------------------
  # ● 1 ページに表示できる項目数の取得
  #--------------------------------------------------------------------------
  def page_item_max
    # 行数 page_row_max に 列数 @column_max を掛ける
    return page_row_max * @column_max
  end
  #--------------------------------------------------------------------------
  # ● ヘルプウィンドウの設定
  #     help_window : 新しいヘルプウィンドウ
  #--------------------------------------------------------------------------
  def help_window=(help_window)
    @help_window = help_window
    # ヘルプテキストを更新 (update_help は継承先で定義される)
    if self.active and @help_window != nil
      update_help
    end
  end
  #--------------------------------------------------------------------------
  # ● カーソルの矩形更新
  #--------------------------------------------------------------------------
  def update_cursor_rect
    # カーソル位置が 0 未満の場合
    if @index < 0
      self.cursor_rect.empty
      return
    end
    # 現在の行を取得
    row = @index / @column_max
    # 現在の行が、表示されている先頭の行より前の場合
    if row < self.top_row
      # 現在の行が先頭になるようにスクロール
      self.top_row = row
    end
    # 現在の行が、表示されている最後尾の行より後ろの場合
    if row > self.top_row + (self.page_row_max - 1)
      # 現在の行が最後尾になるようにスクロール
      self.top_row = row - (self.page_row_max - 1)
    end
    # カーソルの幅を計算
    cursor_width = self.width / @column_max - 32
    # カーソルの座標を計算
    x = @index % @column_max * (cursor_width + 6) + 10
    y = @index / @column_max * 32 - self.oy
    # カーソルの矩形を更新
    self.cursor_rect.set(x, y, cursor_width, 32)
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    # カーソルの移動が可能な状態の場合
    if self.active and @item_max > 0 and @index >= 0
      # 方向ボタンの下が押された場合
      if Input.repeat?(Input::DOWN)
        # 列数が 1 かつ 方向ボタンの下の押下状態がリピートでない場合か、
        # またはカーソル位置が(項目数 - 列数)より前の場合
        if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
           @index < @item_max - @column_max
          # カーソルを下に移動
          $game_system.se_play($data_system.cursor_se)
          @index = (@index + @column_max) % @item_max
        end
      end
      # 方向ボタンの上が押された場合
      if Input.repeat?(Input::UP)
        # 列数が 1 かつ 方向ボタンの上の押下状態がリピートでない場合か、
        # またはカーソル位置が列数より後ろの場合
        if (@column_max == 1 and Input.trigger?(Input::UP)) or
           @index >= @column_max
          # カーソルを上に移動
          $game_system.se_play($data_system.cursor_se)
          @index = (@index - @column_max + @item_max) % @item_max
        end
      end
      # 方向ボタンの右が押された場合
      if Input.repeat?(Input::RIGHT)
        # 列数が 2 以上で、カーソル位置が(項目数 - 1)より前の場合
        if @column_max >= 2 and @index < @item_max - 1
          # カーソルを右に移動
          $game_system.se_play($data_system.cursor_se)
          @index += 1
        end
      end
      # 方向ボタンの左が押された場合
      if Input.repeat?(Input::LEFT)
        # 列数が 2 以上で、カーソル位置が 0 より後ろの場合
        if @column_max >= 2 and @index > 0
          # カーソルを左に移動
          $game_system.se_play($data_system.cursor_se)
          @index -= 1
        end
      end
      # R ボタンが押された場合
      if Input.repeat?(Input::R)
        # 表示されている最後尾の行が、データ上の最後の行よりも前の場合
        if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
          # カーソルを 1 ページ後ろに移動
          $game_system.se_play($data_system.cursor_se)
          @index = [@index + self.page_item_max, @item_max - 1].min
          self.top_row += self.page_row_max
        end
      end
      # L ボタンが押された場合
      if Input.repeat?(Input::L)
        # 表示されている先頭の行が 0 より後ろの場合
        if self.top_row > 0
          # カーソルを 1 ページ前に移動
          $game_system.se_play($data_system.cursor_se)
          @index = [@index - self.page_item_max, 0].max
          self.top_row -= self.page_row_max
        end
      end
    end
    # ヘルプテキストを更新 (update_help は継承先で定義される)
    if self.active and @help_window != nil
      update_help
    end
    # カーソルの矩形を更新
    update_cursor_rect
  end
end
#==============================================================================
# ■ Window_Menuselectable
#------------------------------------------------------------------------------
#  カーソルの移動やスクロールの機能を持つウィンドウクラスです。
#==============================================================================

class Window_Menuselectable < Window_Base
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :index                    # カーソル位置
  attr_reader   :help_window              # ヘルプウィンドウ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     x      : ウィンドウの X 座標
  #     y      : ウィンドウの Y 座標
  #     width  : ウィンドウの幅
  #     height : ウィンドウの高さ
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super(x, y, width, height)
    @item_max = 1
    @column_max = 1
    @index = -1
  end
  #--------------------------------------------------------------------------
  # ● カーソル位置の設定
  #     index : 新しいカーソル位置
  #--------------------------------------------------------------------------
  def index=(index)
    @index = index
    # ヘルプテキストを更新 (update_help は継承先で定義される)
    if self.active and @help_window != nil
      update_help
    end
    # カーソルの矩形を更新
    update_cursor_rect
  end
  #--------------------------------------------------------------------------
  # ● 行数の取得
  #--------------------------------------------------------------------------
  def row_max
    # 項目数と列数から行数を算出
    return (@item_max + @column_max - 1) / @column_max
  end
  #--------------------------------------------------------------------------
  # ● 先頭の行の取得
  #--------------------------------------------------------------------------
  def top_row
    # ウィンドウ内容の転送元 Y 座標を、1 行の高さ 32 で割る
    return self.oy / 32
  end
  #--------------------------------------------------------------------------
  # ● 先頭の行の設定
  #     row : 先頭に表示する行
  #--------------------------------------------------------------------------
  def top_row=(row)
    # row が 0 未満の場合は 0 に修正
    if row < 0
      row = 0
    end
    # row が row_max - 1 超の場合は row_max - 1 に修正
    if row > row_max - 1
      row = row_max - 1
    end
    # row に 1 行の高さ 32 を掛け、ウィンドウ内容の転送元 Y 座標とする
    self.oy = row * 32
  end
  #--------------------------------------------------------------------------
  # ● 1 ページに表示できる行数の取得
  #--------------------------------------------------------------------------
  def page_row_max
    # ウィンドウの高さから、フレームの高さ 32 を引き、1 行の高さ 32 で割る
    return (self.height - 32) / 32
  end
  #--------------------------------------------------------------------------
  # ● 1 ページに表示できる項目数の取得
  #--------------------------------------------------------------------------
  def page_item_max
    # 行数 page_row_max に 列数 @column_max を掛ける
    return page_row_max * @column_max
  end
  #--------------------------------------------------------------------------
  # ● ヘルプウィンドウの設定
  #     help_window : 新しいヘルプウィンドウ
  #--------------------------------------------------------------------------
  def help_window=(help_window)
    @help_window = help_window
    # ヘルプテキストを更新 (update_help は継承先で定義される)
    if self.active and @help_window != nil
      update_help
    end
  end
  #--------------------------------------------------------------------------
  # ● カーソルの矩形更新
  #--------------------------------------------------------------------------
  def update_cursor_rect
    # カーソル位置が 0 未満の場合
    if @index < 0
      self.cursor_rect.empty
      return
    end
    # 現在の行を取得
    row = @index / @column_max
    # 現在の行が、表示されている先頭の行より前の場合
    if row < self.top_row
      # 現在の行が先頭になるようにスクロール
      self.top_row = row
    end
    # 現在の行が、表示されている最後尾の行より後ろの場合
    if row > self.top_row + (self.page_row_max - 1)
      # 現在の行が最後尾になるようにスクロール
      self.top_row = row - (self.page_row_max - 1)
    end
    # カーソルの幅を計算
    cursor_width = self.width / @column_max - 32
    # カーソルの座標を計算
    x = @index % @column_max * (cursor_width + 32)
    y = @index / @column_max * 40 - self.oy
    # カーソルの矩形を更
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    # カーソルの移動が可能な状態の場合
    if self.active and @item_max > 0 and @index >= 0
      # 方向ボタンの下が押された場合
      if Input.repeat?(Input::DOWN)
        # 列数が 1 かつ 方向ボタンの下の押下状態がリピートでない場合か、
        # またはカーソル位置が(項目数 - 列数)より前の場合
        if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
           @index < @item_max - @column_max
          # カーソルを下に移動
          $game_system.se_play($data_system.cursor_se)
          @index = (@index + @column_max) % @item_max
        end
      end
      # 方向ボタンの上が押された場合
      if Input.repeat?(Input::UP)
        # 列数が 1 かつ 方向ボタンの上の押下状態がリピートでない場合か、
        # またはカーソル位置が列数より後ろの場合
        if (@column_max == 1 and Input.trigger?(Input::UP)) or
           @index >= @column_max
          # カーソルを上に移動
          $game_system.se_play($data_system.cursor_se)
          @index = (@index - @column_max + @item_max) % @item_max
        end
      end
      # 方向ボタンの右が押された場合
      if Input.repeat?(Input::RIGHT)
        # 列数が 2 以上で、カーソル位置が(項目数 - 1)より前の場合
        if @column_max >= 2 and @index < @item_max - 1
          # カーソルを右に移動
          $game_system.se_play($data_system.cursor_se)
          @index += 1
        end
      end
      # 方向ボタンの左が押された場合
      if Input.repeat?(Input::LEFT)
        # 列数が 2 以上で、カーソル位置が 0 より後ろの場合
        if @column_max >= 2 and @index > 0
          # カーソルを左に移動
          $game_system.se_play($data_system.cursor_se)
          @index -= 1
        end
      end
      # R ボタンが押された場合
      if Input.repeat?(Input::R)
        # 表示されている最後尾の行が、データ上の最後の行よりも前の場合
        if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
          # カーソルを 1 ページ後ろに移動
          $game_system.se_play($data_system.cursor_se)
          @index = [@index + self.page_item_max, @item_max - 1].min
          self.top_row += self.page_row_max
        end
      end
      # L ボタンが押された場合
      if Input.repeat?(Input::L)
        # 表示されている先頭の行が 0 より後ろの場合
        if self.top_row > 0
          # カーソルを 1 ページ前に移動
          $game_system.se_play($data_system.cursor_se)
          @index = [@index - self.page_item_max, 0].max
          self.top_row -= self.page_row_max
        end
      end
    end
    # ヘルプテキストを更新 (update_help は継承先で定義される)
    if self.active and @help_window != nil
      update_help
    end
    # カーソルの矩形を更新
    update_cursor_rect
  end
end
#==============================================================================
# ■ Window_Menucommand
#------------------------------------------------------------------------------
#  一般的なコマンド選択を行うウィンドウです。
#==============================================================================

class Window_Menucommand < Window_Menuselectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     width    : ウィンドウの幅
  #     commands : コマンド文字列の配列
  #--------------------------------------------------------------------------
  def initialize(width, commands)
    # コマンドの個数からウィンドウの高さを算出
    super(0, 0, width, commands.size * 32 + 32)
    @item_max = commands.size
    @commands = commands
    self.contents = Bitmap.new(width - 32, @item_max * 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i, normal_color)
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #     index : 項目番号
  #     color : 文字色
  #--------------------------------------------------------------------------
  def draw_item(index, color)
    self.contents.font.color = color
    rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, @commands[index])
  end
  #--------------------------------------------------------------------------
  # ● 項目の無効化
  #     index : 項目番号
  #--------------------------------------------------------------------------
  def disable_item(index)
    draw_item(index, disabled_color)
  end
end
#==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
#  スキルやアイテムの説明、アクターのステータスなどを表示するウィンドウです。
#==============================================================================

class Window_Menuhelp < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, - 77, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 18
    self.opacity = 0
  end
  #--------------------------------------------------------------------------
  # ● テキスト設定
  #     text  : ウィンドウに表示する文字列
  #     align : アラインメント (0..左揃え、1..中央揃え、2..右揃え)
  #--------------------------------------------------------------------------
  def set_text(text, align = 0)
    # テキストとアラインメントの少なくとも一方が前回と違っている場合
    if text != @text or align != @align
      # テキストを再描画
      self.contents.clear
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
      @text = text
      @align = align
      @actor = nil
    end
    self.visible = true
  end
  #--------------------------------------------------------------------------
  # ● アクター設定
  #     actor : ステータスを表示するアクター
  #--------------------------------------------------------------------------
  def set_actor(actor)
    if actor != @actor
      self.contents.clear
      draw_actor_name(actor, 4, 0)
      draw_actor_state(actor, 140, 0)
      draw_actor_hp(actor, 284, 0)
      draw_actor_sp(actor, 460, 0)
      @actor = actor
      @text = nil
      self.visible = true
    end
  end
  #--------------------------------------------------------------------------
  # ● エネミー設定
  #     enemy : 名前とステートを表示するエネミー
  #--------------------------------------------------------------------------
  def set_enemy(enemy)
    text = enemy.name
    state_text = make_battler_state_text(enemy, 112, false)
    if state_text != ""
      text += "  " + state_text
    end
    set_text(text, 1)
  end
end
#==============================================================================
# ■ Window_Gold
#------------------------------------------------------------------------------
#  ゴールドを表示するウィンドウです。
#==============================================================================

class Window_Gold < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 200, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 21
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    cx = contents.text_size("金钱").width
    self.contents.font.color = outline_color
    self.contents.draw_text(81, - 1, 120-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.draw_text(81, 1, 120-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.draw_text(79, 1, 120-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.draw_text(79, - 1, 120-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.font.color = normal_color
    self.contents.draw_text(80, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.font.color = outline_color
    self.contents.draw_text(- 1, - 1, cx, 32, "金钱", 2)
    self.contents.draw_text(1, 1, cx, 32, "金钱", 2)
    self.contents.draw_text(- 1, 1, cx, 32, "金钱", 2)
    self.contents.draw_text(1, - 1, cx, 32, "金钱", 2)
    self.contents.font.color = Color.new(254, 230, 159, 255)
    self.contents.draw_text(0, 0, cx, 32, "金钱", 2)
  end
end
#==============================================================================
# ■ Window_PlayTime
#------------------------------------------------------------------------------
#  メニュー画面でプレイ時間を表示するウィンドウです。
#==============================================================================

class Window_PlayTime < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 200, 70)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 21
    self.opacity = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = outline_color
    self.contents.draw_text(1, - 1, 120, 32, "时间")
    self.contents.draw_text(1, 1, 120, 32, "时间")
    self.contents.draw_text(-1, - 1, 120, 32, "时间")
    self.contents.draw_text(-1, 1, 120, 32, "时间")
    self.contents.font.color =  Color.new(254, 230, 159, 255)
    self.contents.draw_text(0, 0, 120, 32, "时间")
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = outline_color
    self.contents.draw_text(39, - 1, 120, 32, text, 2)
    self.contents.draw_text(39, 1, 120, 32, text, 2)
    self.contents.draw_text(41, 1, 120, 32, text, 2)
    self.contents.draw_text(41, -1, 120, 32, text, 2)
    self.contents.font.color = normal_color
    self.contents.draw_text(40, 0, 120, 32, text, 2)
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end
#==============================================================================
# ■ Window_MenuStatus
#------------------------------------------------------------------------------
#  メニュー画面でパーティメンバーのステータスを表示するウィンドウです。
#==============================================================================

class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 480, 430)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      x = 100 - i * 18
      y = i * 100
      actor = $game_party.actors
      draw_actor_face(actor, x - 40, y + 80)
      draw_actor_name2(actor, x + 50, y)
      draw_actor_class2(actor, x + 50, y + 50)
      draw_actor_level2(actor, x + 50, y + 25)
      draw_actor_state2(actor, x + 155, y + 50)
      draw_actor_hp2(actor, x + 140, y )
      draw_actor_sp2(actor, x + 140, y + 25)
      draw_actor_barz(actor, x + 140, y + 25, "horizontal", 130, 1, actor.hp, actor.maxhp, Color.new(254, 238, 189, 255), Color.new(182, 137, 2, 255))
      draw_actor_barz(actor, x + 140, y + 50, "horizontal", 130, 1, actor.sp, actor.maxsp, Color.new(74, 230, 51, 225), Color.new(35, 150, 19, 225))
    end
  end
  #--------------------------------------------------------------------------
  # ● カーソルの矩形更新
  #--------------------------------------------------------------------------
  def update_cursor_rect
      self.cursor_rect.empty
end
end
#==============================================================================
# ■ Window_Item
#------------------------------------------------------------------------------
#  アイテム画面、バトル画面で、所持アイテムの一覧を表示するウィンドウです。
#==============================================================================

class Window_Menuitem < Window_Itemselectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 500, 640, 380)
    @column_max = 2
    refresh
    self.index = 0
    self.opacity = 0
    # 戦闘中の場合はウィンドウを画面中央へ移動し、半透明にする
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
  end
  #--------------------------------------------------------------------------
  # ● アイテムの取得
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # アイテムを追加
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items)
      end
    end
    # 戦闘中以外なら武器と防具も追加
    unless $game_temp.in_battle
      for i in 1...$data_weapons.size
        if $game_party.weapon_number(i) > 0
          @data.push($data_weapons)
        end
      end
      for i in 1...$data_armors.size
        if $game_party.armor_number(i) > 0
          @data.push($data_armors)
        end
      end
    end
    # 項目数が 0 でなければビットマップを作成し、全項目を描画
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      self.contents.font.name = "宋体"
      self.contents.font.size = 20
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #     index : 項目番号
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    if item.is_a?(RPG::Item) and
       $game_party.item_can_use?(item.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = Color.new(255, 255, 255, 255)
    end
    x = 4 + index % 2 * (270 + 25) + 12
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    if item.is_a?(RPG::Item) and
       $game_party.item_can_use?(item.id)
    self.contents.draw_text_outline(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text_outline(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text_outline(x + 256, y, 24, 32, number.to_s, 2)
    else
    self.contents.draw_text_outline2(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text_outline2(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text_outline2(x + 256, y, 24, 32, number.to_s, 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end
#==============================================================================
# ■ Window_Menuskill
#------------------------------------------------------------------------------
#
#==============================================================================

class Window_Menuskill < Window_Itemselectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor : アクター
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(- 3, 531, 640, 352)
    @actor = actor
    @column_max = 2
    refresh
    self.index = 0
    # 戦闘中の場合はウィンドウを画面中央へ移動し、半透明にする
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
  end
  #--------------------------------------------------------------------------
  # ● スキルの取得
  #--------------------------------------------------------------------------
  def skill
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for i in [email protected]
      skill = $data_skills[@actor.skills]
      if skill != nil
        @data.push(skill)
      end
    end
    # 項目数が 0 でなければビットマップを作成し、全項目を描画
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      self.contents.font.name = "宋体"
      self.contents.font.size = 20
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #     index : 項目番号
  #--------------------------------------------------------------------------
  def draw_item(index)
    skill = @data[index]
    if @actor.skill_can_use?(skill.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = Color.new(255, 255, 255, 255)
    end
    x = 4 + index % 2 * (270 + 25) + 12
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
     if @actor.skill_can_use?(skill.id)
    self.contents.draw_text_outline(x + 28, y, 204, 32, skill.name, 0)
    self.contents.draw_text_outline(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
    else
    self.contents.draw_text_outline2(x + 28, y, 204, 32, skill.name, 0)
    self.contents.draw_text_outline2(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  end
end
#==============================================================================
# ■ Window_SkillStatus
#------------------------------------------------------------------------------
#  スキル画面で、スキル使用者のステータスを表示するウィンドウです。
#==============================================================================

class Window_SkillStatus < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor : アクター
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(630, 35, 410, 109)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    self.opacity = 0
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    x = 100
    y = 0
      draw_actor_face(@actor, x - 40, y + 80)
      draw_actor_name2(@actor, x + 50, y)
      draw_actor_class2(@actor, x + 50, y + 50)
      draw_actor_level2(@actor, x + 50, y + 25)
      draw_actor_state2(@actor, x + 155, y + 50)
      draw_actor_hp2(@actor, x + 140, y )
      draw_actor_sp2(@actor, x + 140, y + 25)
      draw_actor_barz(@actor, x + 140, y + 25, "horizontal", 130, 1, @actor.hp, @actor.maxhp, Color.new(254, 238, 189, 255), Color.new(182, 137, 2, 255))
      draw_actor_barz(@actor, x + 140, y + 50, "horizontal", 130, 1, @actor.sp, @actor.maxsp, Color.new(74, 230, 51, 225), Color.new(35, 150, 19, 225))
  end
end
#==============================================================================
# ■ Window_Target
#------------------------------------------------------------------------------
#  アイテム画面とスキル画面で、使用対象のアクターを選択するウィンドウです。
#==============================================================================

class Window_Target < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 336, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    self.z += 10
    @item_max = $game_party.actors.size
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...$game_party.actors.size
      x = 4
      y = i * 116
      actor = $game_party.actors
      draw_actor_name2(actor, x, y)
      draw_actor_class2(actor, x + 144, y)
      draw_actor_level2(actor, x + 8, y + 32)
      draw_actor_state2(actor, x + 8, y + 64)
      draw_actor_hp2(actor, x + 152, y + 32)
      draw_actor_sp2(actor, x + 152, y + 64)
      draw_actor_barz(actor, x + 152, y + 57, "horizontal", 130, 1, actor.hp, actor.maxhp, Color.new(254, 238, 189, 255), Color.new(182, 137, 2, 255))
      draw_actor_barz(actor, x + 152, y + 89, "horizontal", 130, 1, actor.sp, actor.maxsp, Color.new(74, 230, 51, 225), Color.new(35, 150, 19, 225))
    end
  end
  #--------------------------------------------------------------------------
  # ● カーソルの矩形更新
  #--------------------------------------------------------------------------
  def update_cursor_rect
    # カーソル位置 -1 は全選択、-2 以下は単独選択 (使用者自身)
    if @index <= -2
      self.cursor_rect.set(0, (@index + 10) * 116, self.width - 32, 96)
    elsif @index == -1
      self.cursor_rect.set(0, 0, self.width - 32, @item_max * 116 - 20)
    else
      self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
    end
  end
end
#==============================================================================
# ■ Window_EquipRight
#------------------------------------------------------------------------------
#  装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
#==============================================================================

class Window_EquipRight < Window_Menuselectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor : アクター
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(- 100, 125, 200, 350)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    self.opacity = 0
    @actor = actor
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● アイテムの取得
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @data = []
    @data.push($data_weapons[@actor.weapon_id])
    @data.push($data_armors[@actor.armor1_id])
    @data.push($data_armors[@actor.armor2_id])
    @data.push($data_armors[@actor.armor3_id])
    @data.push($data_armors[@actor.armor4_id])
    @item_max = @data.size
    draw_item_name2(@data[0], 0, 68 * 0)
    draw_item_name2(@data[1], 0, 68 * 1)
    draw_item_name2(@data[2], 0, 68 * 2)
    draw_item_name2(@data[3], 0, 68 * 3)
    draw_item_name2(@data[4], 0, 68 * 4 - 2)
  end
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end
#==============================================================================
# ■ Window_EquipItem
#------------------------------------------------------------------------------
#  装備画面で、装備変更の候補となるアイテムの一覧を表示するウィンドウです。
#==============================================================================

class Window_EquipItem < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor      : アクター
  #     equip_type : 装備部位 (0~3)
  #--------------------------------------------------------------------------
  def initialize(actor, equip_type)
    super(233, 573, 413, 224)
    @actor = actor
    @equip_type = equip_type
    @column_max = 2
    refresh
    self.active = false
    self.index = -1
    self.opacity = 0
  end
  #--------------------------------------------------------------------------
  # ● アイテムの取得
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # 装備可能な武器を追加
    if @equip_type == 0
      weapon_set = $data_classes[@actor.class_id].weapon_set
      for i in 1...$data_weapons.size
        if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
          @data.push($data_weapons)
        end
      end
    end
    # 装備可能な防具を追加
    if @equip_type != 0
      armor_set = $data_classes[@actor.class_id].armor_set
      for i in 1...$data_armors.size
        if $game_party.armor_number(i) > 0 and armor_set.include?(i)
          if $data_armors.kind == @equip_type-1
            @data.push($data_armors)
          end
        end
      end
    end
    # 空白を追加
    @data.push(nil)
    # ビットマップを作成し、全項目を描画
    @item_max = @data.size
    self.contents = Bitmap.new(width - 32, row_max * 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 22
    for i in 0...@item_max-1
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #     index : 項目番号
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    x = 4 + index % 2 * (176 + 16)
    y = index / 2 * 32
    case item
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.font.color = normal_color
    self.contents.draw_text_shadow(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text_shadow(x + 140, y, 16, 32, ":", 1)
    self.contents.draw_text_shadow(x + 156, y, 24, 32, number.to_s, 2)
  end
  #--------------------------------------------------------------------------
    def update_cursor_rect
    # カーソル位置が 0 未満の場合
    if @index < 0
      self.cursor_rect.empty
      return
    end
    # 現在の行を取得
    row = @index / @column_max
    # 現在の行が、表示されている先頭の行より前の場合
    if row < self.top_row
      # 現在の行が先頭になるようにスクロール
      self.top_row = row
    end
    # 現在の行が、表示されている最後尾の行より後ろの場合
    if row > self.top_row + (self.page_row_max - 1)
      # 現在の行が最後尾になるようにスクロール
      self.top_row = row - (self.page_row_max - 1)
    end
    # カーソルの幅を計算
    cursor_width = self.width / @column_max - 32
    # カーソルの座標を計算
    x = @index % @column_max * (cursor_width + 16)
    y = @index / @column_max * 32 - self.oy
    # カーソルの矩形を更新
    self.cursor_rect.set(x + 2, y, cursor_width + 15, 32)
  end
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end
#==============================================================================
# ■ Window_Status
#------------------------------------------------------------------------------
#  ステータス画面で表示する、フル仕様のステータスウィンドウです。
#==============================================================================

class Window_Status < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor : アクター
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 418, 133)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_face(@actor, 0, 90)
    draw_actor_name2(@actor, 90, 0)
    draw_actor_class2(@actor, 250, 0)
    draw_actor_level2(@actor, 90, 32)
    draw_actor_state2(@actor, 90, 64)
    draw_actor_hp2(@actor, 210, 32, 172)
    draw_actor_sp2(@actor, 210, 64, 172)
    draw_actor_barz(@actor, 210, 57, "horizontal", 158, 1, @actor.hp, @actor.maxhp, Color.new(254, 238, 189, 255), Color.new(182, 137, 2, 255))
    draw_actor_barz(@actor, 210, 89, "horizontal", 158, 1, @actor.sp, @actor.maxsp, Color.new(74, 230, 51, 225), Color.new(35, 150, 19, 225))
    end
  end
  #==============================================================================
# ■ Window_Status2
#------------------------------------------------------------------------------
#  ステータス画面で表示する、フル仕様のステータスウィンドウです。
#==============================================================================

class Window_Status2 < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor : アクター
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 418, 178)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
          self.contents.font.size = 24
    draw_actor_parameter2(@actor, 0, 10, 0)
    draw_actor_parameter2(@actor, 0, 40, 1)
    draw_actor_parameter2(@actor, 0, 70, 2)
    draw_actor_parameter2(@actor, 0, 100, 3)
    draw_actor_parameter2(@actor, 190, 20, 4)
    draw_actor_parameter2(@actor, 190, 50, 5)
    draw_actor_parameter2(@actor, 190, 80, 6)
    draw_actor_barz(@actor, 0, 37, "horizontal", 168, 1, @actor.atk, 500, Color.new(242, 2, 6, 255), Color.new(253, 53, 56, 255))
    draw_actor_barz(@actor, 0, 67, "horizontal", 168, 1, @actor.pdef, 500, Color.new(228, 253, 48, 255), Color.new(238, 254, 124, 255))
    draw_actor_barz(@actor, 0, 97, "horizontal", 168, 1, @actor.mdef, 500, Color.new(229, 78, 253, 255), Color.new(237, 134, 254, 255))
    draw_actor_barz(@actor, 0, 127, "horizontal", 168, 1, @actor.str, 500, Color.new(254, 209, 154, 255), Color.new(253, 163, 53, 255))
    draw_actor_barz(@actor, 190, 47, "horizontal", 168, 1, @actor.dex, 500, Color.new(222, 222, 222, 255), Color.new(255, 255, 255, 255))
    draw_actor_barz(@actor, 190, 77, "horizontal", 168, 1, @actor.agi, 500, Color.new(8, 160, 253, 255), Color.new(119, 203, 254, 255))
    draw_actor_barz(@actor, 190, 107, "horizontal", 168, 1, @actor.int, 500, Color.new(33, 253, 86, 255), Color.new(124, 254, 155, 255))
        if @new_atk != nil
        draw_actor_barz(@actor, 0, 37, "horizontal", 168, 1, @new_atk, 500, Color.new(255, 0, 0, 255), Color.new(255, 0, 0, 255))
      end
        if @new_pdef != nil
        draw_actor_barz(@actor, 0, 67, "horizontal", 168, 1, @new_pdef, 500, Color.new(228, 253, 48, 255), Color.new(238, 254, 124, 255))
       end
        if @new_mdef != nil
        draw_actor_barz(@actor, 0, 97, "horizontal", 168, 1, @new_mdef, 500, Color.new(229, 78, 253, 255), Color.new(237, 134, 254, 255))
      end
       if  @new_str != nil
       draw_actor_barz(@actor, 0, 127, "horizontal", 168, 1, @new_str, 500, Color.new(254, 209, 154, 255), Color.new(253, 163, 53, 255))
      end
       if  @new_dex != nil
       draw_actor_barz(@actor, 190, 47, "horizontal", 168, 1, @new_dex, 500, Color.new(222, 222, 222, 255), Color.new(255, 255, 255, 255))
      end
       if  @new_agi != nil
       draw_actor_barz(@actor, 190, 77, "horizontal", 168, 1, @new_agi, 500, Color.new(8, 160, 253, 255), Color.new(119, 203, 254, 255))
     end
       if @new_int != nil
       draw_actor_barz(@actor, 190, 107, "horizontal", 168, 1, @new_int, 500, Color.new(33, 253, 86, 255), Color.new(124, 254, 155, 255))
    end
end
    def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, new_agi, new_int)
    if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef or @new_str != new_str or @new_dex != new_dex or
       @new_agi != new_agi or @new_int != new_int
      @new_atk = new_atk
      @new_pdef = new_pdef
      @new_mdef = new_mdef
      @new_str = new_str
      @new_dex = new_dex
      @new_agi = new_agi
      @new_int = new_int
      refresh
    end
  end
end
#==============================================================================
# ■ Window_Status3
#------------------------------------------------------------------------------
#  ステータス画面で表示する、フル仕様のステータスウィンドウです。
#==============================================================================

class Window_Status3 < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor : アクター
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 418, 229)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.size = 24
    self.contents.font.color = system_color
    self.contents.draw_text_outline3(150, 0, 96, 32, "装备")
    draw_item_name2($data_weapons[@actor.weapon_id], 15 + 16, 48)
    draw_item_name2($data_armors[@actor.armor1_id], 15 + 16, 86)
    draw_item_name2($data_armors[@actor.armor2_id], 15 + 16, 124)
    draw_item_name2($data_armors[@actor.armor3_id], 15 + 186, 68)
    draw_item_name2($data_armors[@actor.armor4_id], 15 + 186, 106)
      end
    end
    #==============================================================================
# ■ Window_Status4
#------------------------------------------------------------------------------
#  ステータス画面で表示する、フル仕様のステータスウィンドウです。
#==============================================================================

class Window_Status4 < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor : アクター
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 252, 100)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.size = 26
    self.contents.font.color = system_color
    self.contents.draw_text_outline3(10, 0, 80, 32, "EXP")
    self.contents.draw_text_outline3(10, 32, 80, 32, "NEXT")
    self.contents.font.color = normal_color
    self.contents.draw_text_outline(10 + 80, 0, 84, 32, @actor.exp_s, 2)
    self.contents.draw_text_outline(10 + 80, 32, 84, 32, @actor.next_rest_exp_s, 2)
      end
    end
    #==============================================================================
# ■ Window_Status5
#------------------------------------------------------------------------------
#  ステータス画面で表示する、フル仕様のステータスウィンドウです。
#==============================================================================

class Window_Status5 < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor : アクター
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "宋体"
    self.contents.font.size = 20
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    testname = @actor.battler_name+"_h.jpg"
    bitmap=Bitmap.new("Graphics/battlers/#{testname}")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height) #——可自己调整大小
    self.contents.blt(-14, 68, bitmap, src_rect)
      end
    end
    #==============================================================================
# ■ Window_SaveFile
#------------------------------------------------------------------------------
#  セーブ画面およびロード画面で表示する、セーブファイルのウィンドウです。
#==============================================================================

class Window_SaveFile < Window_Base
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :filename                 # ファイル名
  attr_reader   :selected                 # 選択状態
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     file_index : セーブファイルのインデックス (0~3)
  #     filename   : ファイル名
  #--------------------------------------------------------------------------
  def initialize(file_index, filename)
    super(0, 64 + file_index % 4 * 104, 640, 104)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    self.opacity = 0
    @file_index = file_index
    @filename = "Save#{@file_index + 1}.rxdata"
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      @characters = Marshal.load(file)
      @frame_count = Marshal.load(file)
      @game_system = Marshal.load(file)
      @game_switches = Marshal.load(file)
      @game_variables = Marshal.load(file)
      @total_sec = @frame_count / Graphics.frame_rate
      file.close
    end
    refresh
    @selected = false
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # ファイル番号を描画
    self.contents.font.color = normal_color
    name = "File #{@file_index + 1}"
    self.contents.draw_text_outline(4, 0, 600, 32, name)
    @name_width = contents.text_size(name).width
    # セーブファイルが存在する場合
    if @file_exist
      # キャラクターを描画
      for i in [email protected]
        bitmap = RPG::Cache.character(@characters[0], @characters[1])
        cw = bitmap.rect.width / 4
        ch = bitmap.rect.height / 4
        src_rect = Rect.new(0, 0, cw, ch)
        x = 300 - @characters.size * 32 + i * 64 - cw / 2
        self.contents.blt(x, 68 - ch, bitmap, src_rect)
      end
      # プレイ時間を描画
      hour = @total_sec / 60 / 60
      min = @total_sec / 60 % 60
      sec = @total_sec % 60
      time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
      self.contents.font.color = normal_color
      self.contents.draw_text_outline(4, 8, 600, 32, time_string, 2)
      # タイムスタンプを描画
      self.contents.font.color = normal_color
      time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
      self.contents.draw_text_outline(4, 40, 600, 32, time_string, 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● 選択状態の設定
  #     selected : 新しい選択状態 (true=選択 false=非選択)
  #--------------------------------------------------------------------------
  def selected=(selected)
    @selected = selected
    update_cursor_rect
  end
  #--------------------------------------------------------------------------
  # ● カーソルの矩形更新
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @selected
      self.cursor_rect.set(0, 0, @name_width + 8, 32)
    else
      self.cursor_rect.empty
    end
  end
end
#==============================================================================
# ■ Window_Location
#------------------------------------------------------------------------------
#  メニュー画面で歩数を表示するウィンドウです。
class Game_Map

def name
$map_infos[@map_id]
end
end

class Scene_Title
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
end


#==============================================================================
# ■ Window_Mapname
#------------------------------------------------------------------------------
#  メニュー画面でプレイ時間を表示するウィンドウです。
#==============================================================================

class Window_Mapname < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 0, 240, 96)
self.contents = Bitmap.new(width - 52, height - 32)
self.contents.font.name = "宋体"
self.contents.font.size = 20
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
# Map Name
#map = $game_map.name
self.contents.font.color = system_color
self.contents.font.size = 17
self.contents.draw_text(20, 0, 220,55, "所在地图")
  self.contents.font.size = 24
self.contents.font.color = normal_color
self.contents.draw_text(110, 15, 80, 20, $game_map.name)
end
end
#==================================================
class Window_End < Window_Base

def initialize
super(0, 0, 240, 150)
self.contents = Bitmap.new(width - 52, height - 32)
self.contents.font.name = "宋体"
self.contents.font.size = 30
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
  self.contents.clear
  self.contents.draw_text_outline(24, 0, 240, 32,  "返回开头")
  self.contents.draw_text_outline(10, 45, 240, 32, "退出游戏")
  self.contents.draw_text_outline(25, 85, 240, 32, "返回返回")
end
#==========================================
end
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
#  メニュー画面の処理を行うクラスです。
#==============================================================================

class Scene_Menu
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     menu_index : コマンドのカーソル初期位置
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    #========================================
    # This is setting up the background picture
    @background = Sprite.new
    @background.bitmap = RPG::Cache.picture("background")
    @background.x = 0
    @background.y = 0
    #========================================
    # This is setting up the command pictures for 'item' etc..
    @command1 = Sprite.new
    @command1.bitmap = RPG::Cache.picture("cmscommand1")
    @command1.x = 15
    @command1.y = 40
    @command1.z = 100
    #========================================
    @command2 = Sprite.new
    @command2.bitmap = RPG::Cache.picture("cmscommand2")
    @command2.x = 15
    @command2.y = 40
    @command2.z = 100
    #========================================
    @command3 = Sprite.new
    @command3.bitmap = RPG::Cache.picture("cmscommand3")
    @command3.x = 15
    @command3.y = 40
    @command3.z = 100
    #========================================
    @command4 = Sprite.new
    @command4.bitmap = RPG::Cache.picture("cmscommand4")
    @command4.x = 15
    @command4.y = 40
    @command4.z = 100
    #========================================
    @command5 = Sprite.new
    @command5.bitmap = RPG::Cache.picture("cmscommand5")
    @command5.x = 15
    @command5.y = 40
    @command5.z = 100
    #========================================
    @command6 = Sprite.new
    @command6.bitmap = RPG::Cache.picture("cmscommand6")
    @command6.x = 15
    @command6.y = 40
    @command6.z = 100
    #========================================
    # This setting up the shadows for the commands.
    @commands1 = Sprite.new
    @commands1.bitmap = RPG::Cache.picture("cmscommandshadow")
    @commands1.x = 20
    @commands1.y = 45
    @commands1.z = 1
    @commands1.opacity = 155
    @commands1.visible = false
    #========================================
    @commands2 = Sprite.new
    @commands2.bitmap = RPG::Cache.picture("cmscommandshadow")
    @commands2.x = 20
    @commands2.y = 45
    @commands2.z = 1
    @commands2.opacity = 155
    @commands2.visible = false
    #========================================
    @commands3 = Sprite.new
    @commands3.bitmap = RPG::Cache.picture("cmscommandshadow")
    @commands3.x = 20
    @commands3.y = 45
    @commands3.z = 1
    @commands3.opacity = 155
    @commands3.visible = false
    #========================================
    @commands4 = Sprite.new
    @commands4.bitmap = RPG::Cache.picture("cmscommandshadow")
    @commands4.x = 20
    @commands4.y = 45
    @commands4.z = 1
    @commands4.opacity = 155
    @commands4.visible = false
    #========================================
    @commands5 = Sprite.new
    @commands5.bitmap = RPG::Cache.picture("cmscommandshadow")
    @commands5.x = 20
    @commands5.y = 45
    @commands5.z = 1
    @commands5.opacity = 155
    @commands5.visible = false
    #========================================
    @commands6 = Sprite.new
    @commands6.bitmap = RPG::Cache.picture("cmscommandshadow")
    @commands6.x = 20
    @commands6.y = 45
    @commands6.z = 1
    @commands6.opacity = 155
    @commands6.visible = false
    #========================================
    # This is setting up the arrow cursor used in the command window..
    @arrow = Sprite.new
    @arrow.bitmap = RPG::Cache.picture("arrow4")
    @arrow.x = 0
    @arrow.y = 45
    @arrow.z = 1000
    #========================================
    # This is setting up the arrow for the status window
    @arrow_status = Sprite.new
    @arrow_status.bitmap = RPG::Cache.picture("arrow4")
    @arrow_status.x = 260
    @arrow_status.y = 37
    @arrow_status.z = 1000
    @arrow_status.visible = false
    #========================================
    # This is setting up the status windows, making them not visible for the moment..
    @status_window1 = Sprite.new
    @status_window1.bitmap = RPG::Cache.picture("status window 1")
    @status_window1.x = 693
    @status_window1.y = 7
    @status_window1.z = 100
    @status_window1.visible = false
    #========================================
    @status_window2 = Sprite.new
    @status_window2.bitmap = RPG::Cache.picture("status window 2")
    @status_window2.x = 676
    @status_window2.y = 106
    @status_window2.z = 100
    @status_window2.visible = false
    #========================================
    @status_window3 = Sprite.new
    @status_window3.bitmap = RPG::Cache.picture("status window 3")
    @status_window3.x = 659
    @status_window3.y = 206
    @status_window3.z = 100
    @status_window3.visible = false
    #========================================
    @status_window4 = Sprite.new
    @status_window4.bitmap = RPG::Cache.picture("status window 4")
    @status_window4.x = 640
    @status_window4.y = 306
    @status_window4.z = 100
    @status_window4.visible = false
    #========================================
    # The shadows are set up for the status windows..
    @status_windowshadow1 = Sprite.new
    @status_windowshadow1.bitmap = RPG::Cache.picture("blackwindow2")
    @status_windowshadow1.x = 697
    @status_windowshadow1.y = 13
    @status_windowshadow1.z = 1
    @status_windowshadow1.opacity = 155
    @status_windowshadow1.visible = false
    #========================================
    @status_windowshadow2 = Sprite.new
    @status_windowshadow2.bitmap = RPG::Cache.picture("blackwindow2")
    @status_windowshadow2.x = 681
    @status_windowshadow2.y = 112
    @status_windowshadow2.z = 1
    @status_windowshadow2.opacity = 155
    @status_windowshadow2.visible = false
    #========================================
    @status_windowshadow3 = Sprite.new
    @status_windowshadow3.bitmap = RPG::Cache.picture("blackwindow2")
    @status_windowshadow3.x = 664
    @status_windowshadow3.y = 212
    @status_windowshadow3.z = 1
    @status_windowshadow3.opacity = 155
    @status_windowshadow3.visible = false
    #========================================
    @status_windowshadow4 = Sprite.new
    @status_windowshadow4.bitmap = RPG::Cache.picture("blackwindow2")
    @status_windowshadow4.x = 645
    @status_windowshadow4.y = 312
    @status_windowshadow4.z = 1
    @status_windowshadow4.opacity = 155
    @status_windowshadow4.visible = false
    #========================================
    # Here, certain status window pictures are made visible depending on
    # how many actors or players there are..
    if $game_party.actors.size == 1
      @status_window1.visible = true
      @status_windowshadow1.visible = true
    end
     if $game_party.actors.size == 2
       @status_window1.visible = true
       @status_windowshadow1.visible = true
       @status_window2.visible = true
       @status_windowshadow2.visible = true
     end
     if $game_party.actors.size == 3
       @status_window1.visible = true
       @status_windowshadow1.visible = true
       @status_window2.visible = true
       @status_windowshadow2.visible = true
       @status_window3.visible = true
       @status_windowshadow3.visible = true
     end
      if $game_party.actors.size == 4
       @status_window1.visible = true
       @status_windowshadow1.visible = true
       @status_window2.visible = true
       @status_windowshadow2.visible = true
       @status_window3.visible = true
       @status_windowshadow3.visible = true
       @status_window4.visible = true
       @status_windowshadow4.visible = true
     end
     #===========================================
     # The window displaying the gold, and playtime is set up...
     @playtimegoldpicture = Sprite.new
     @playtimegoldpicture.bitmap = RPG::Cache.picture("goldplaytimewindow")
     @playtimegoldpicture.x = 646
     @playtimegoldpicture.y = 404
     @playtimegoldpicture.z = 100
     #============================================
     # And its shadow
     @playtimegoldshadow = Sprite.new
     @playtimegoldshadow.bitmap = RPG::Cache.picture("goldplaytimeshadow")
     @playtimegoldshadow.x = 651
     @playtimegoldshadow.y = 409
     @playtimegoldshadow.z = 1
     @playtimegoldshadow.opacity = 155
     #============================================
     # Setting up the location window's bar....
     @location_bar = Sprite.new
     @location_bar.bitmap = RPG::Cache.picture("locationbar")
     @location_bar.x = 15
     @location_bar.y = 635
     #============================================
     # Setting up the actual window for the map, opacity - 0
     @location_window = Window_Mapname.new
     @location_window.x = 0
     @location_window.y = 609
     #============================================
     # Setting up a white bar below the location
     @location_white = Sprite.new
     @location_white.bitmap = RPG::Cache.picture("locationwhite")
     @location_white.x = - 8
     @location_white.y = 622
     @location_white.z = 120
     #============================================
     @playtime_window = Window_PlayTime.new
     @playtime_window.x = 645
     @playtime_window.y = 390
    # コマンドウィンドウを作成
    # Command window, opacity - 0 so it is invisible, and commands are set to ""
    # - nothing so no text shows, as there is pictures used instead..
    s1 = ""
    s2 = ""
    s3 = ""
    s4 = ""
    s5 = ""
    s6 = ""
    @command_window = Window_Menucommand.new(200, [s1, s2, s3, s4, s5, s6])
    @command_window.opacity = 0
    @command_window.index = @menu_index
    # パーティ人数が 0 人の場合
    if $game_party.actors.size == 0
      # アイテム、スキル、装備、ステータスを無効化
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # セーブ禁止の場合
    if $game_system.save_disabled
      # セーブを無効にする
      @command_window.disable_item(4)
    end
    # ゴールドウィンドウを作成
    @gold_window = Window_Gold.new
    @gold_window.x = 645
    @gold_window.y = 415
    @gold_window.opacity = 0
    # ステータスウィンドウを作成
    @status_window = Window_MenuStatus.new
    @status_window.x = 630
    @status_window.y = - 6
    @status_window.opacity = 0
    @status_window.visible = true
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @command_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @background.dispose
    @command1.dispose
    @command2.dispose
    @command3.dispose
    @command4.dispose
    @command5.dispose
    @command6.dispose
    @commands1.dispose
    @commands2.dispose
    @commands3.dispose
    @commands4.dispose
    @commands5.dispose
    @commands6.dispose
    @arrow.dispose
    @status_window1.dispose
    @status_window2.dispose
    @status_window3.dispose
    @status_window4.dispose
    @status_windowshadow1.dispose
    @status_windowshadow2.dispose
    @status_windowshadow3.dispose
    @status_windowshadow4.dispose
    @playtimegoldpicture.dispose
    @playtimegoldshadow.dispose
    @location_bar.dispose
    @location_window.dispose
    @location_white.dispose
    @playtime_window.dispose
    @arrow_status.dispose
  end
  #--------------------------------------------------------------------------
  def delay(seconds)
  for i in 0...(seconds * 1)
    sleep 0.01
    Graphics.update
  end
end
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    if @command2.y < 100
      @command2.y += 20
    end
    if @command3.y < 160
      @command3.y += 20
    end
    if @command4.y < 220
      @command4.y += 20
    end
    if @command5.y < 280
      @command5.y += 20
    end
    if @command6.y < 340
      @command6.y += 20
    end
    if @command6.y >= 340
     @commands1.visible = true
     @commands2.visible = true
     @commands3.visible = true
     @commands4.visible = true
     @commands5.visible = true
     @commands6.visible = true
     end
    if @status_window1.x > 293
     @status_window1.x -= 50
    end
    if @status_window2.x > 276
     @status_window2.x -= 50
    end
    if @status_window3.x > 259
     @status_window3.x -= 50
    end
    if @status_window4.x > 240
     @status_window4.x -= 50
    end
    if @status_windowshadow1.x > 297
      @status_windowshadow1.x -= 50
    end
    if @status_windowshadow2.x > 281
      @status_windowshadow2.x -= 50
    end
    if @status_windowshadow3.x > 264
      @status_windowshadow3.x -= 50
    end
    if @status_windowshadow4.x > 245
      @status_windowshadow4.x -= 50
    end
    if @status_window.x > 230
      @status_window.x -= 50
      end
    if @playtimegoldpicture.x > 446
     @playtimegoldpicture.x -= 25
    end
    if @playtimegoldshadow.x > 451
     @playtimegoldshadow.x -= 25
   end
   if @playtime_window.x > 445
     @playtime_window.x -= 25
   end
   if @gold_window.x > 445
     @gold_window.x -= 25
   end
   if @location_bar.y > 435
     @location_bar.y -= 25
   end
   if @location_window.y > 409
     @location_window.y -= 25
   end
   if @location_white.y > 422
     @location_white.y -= 25
     end
     # ウィンドウを更新
    @command_window.update
    @playtime_window.update
    @gold_window.update
    @status_window.update
    @arrow.update
    @playtime_window.update
    # コマンドウィンドウがアクティブの場合: update_command を呼ぶ
    if @command_window.active
      update_command
      return
    end
    # ステータスウィンドウがアクティブの場合: update_status を呼ぶ
    if @status_window.active
      update_status
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_command
     case @command_window.index
    when 0
      @arrow.y = 45
      @commands1.y = 45
      @commands2.y = 105
      @commands3.y = 165
      @commands4.y = 225
      @commands5.y = 285
      @commands6.y = 345
      @status_windowshadow1.y = 13
      @status_windowshadow2.y = 112
      @status_windowshadow3.y = 212
      @status_windowshadow4.y = 312
      @playtimegoldshadow.y = 409
    when 1
      @arrow.y = 105
      @commands1.y = 42
      @commands2.y = 100
      @commands3.y = 162
      @commands4.y = 222
      @commands5.y = 282
      @commands6.y = 342
      @status_windowshadow1.y = 11
      @status_windowshadow2.y = 110
      @status_windowshadow3.y = 210
      @status_windowshadow4.y = 310
      @playtimegoldshadow.y = 406
    when 2
      @arrow.y = 165
      @commands1.y = 39
      @commands2.y = 97
      @commands3.y = 159
      @commands4.y = 219
      @commands5.y = 279
      @commands6.y = 339
      @status_windowshadow1.y = 8
      @status_windowshadow2.y = 107
      @status_windowshadow3.y = 207
      @status_windowshadow4.y = 307
      @playtimegoldshadow.y = 403
    when 3
      @arrow.y = 225
      @commands1.y = 36
      @commands2.y = 94
      @commands3.y = 156
      @commands4.y = 216
      @commands5.y = 276
      @commands6.y = 336
      @status_windowshadow1.y = 5
      @status_windowshadow2.y = 104
      @status_windowshadow3.y = 204
      @status_windowshadow4.y = 304
      @playtimegoldshadow.y = 400
    when 4
      @arrow.y = 285
      @commands1.y = 33
      @commands2.y = 91
      @commands3.y = 153
      @commands4.y = 213
      @commands5.y = 273
      @commands6.y = 333
      @status_windowshadow1.y = 2
      @status_windowshadow2.y = 101
      @status_windowshadow3.y = 201
      @status_windowshadow4.y = 301
      @playtimegoldshadow.y = 397
    when 5
      @arrow.y = 345
      @commands1.y = 30
      @commands2.y = 88
      @commands3.y = 150
      @commands4.y = 210
      @commands5.y = 270
      @commands6.y = 330
      @status_windowshadow1.y = - 1
      @status_windowshadow2.y = 99
      @status_windowshadow3.y = 199
      @status_windowshadow4.y = 299
      @playtimegoldshadow.y = 394
    end
    #======================
  # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      @arrow.visible = false
      loop do
     if @command1.x > - 200
       @command1.x -= 40
       end
       if @command2.x > - 200
      @command2.x -= 40
    end
    if @command3.x > - 200
      @command3.x -= 40
    end
    if @command4.x > - 200
      @command4.x -= 40
    end
    if @command5.x > - 200
      @command5.x -= 40
    end
    if @command6.x > - 200
      @command6.x -= 40
    end
     @commands1.visible = false
     @commands2.visible = false
     @commands3.visible = false
     @commands4.visible = false
     @commands5.visible = false
     @commands6.visible = false
    if @status_window1.x < 640
     @status_window1.x += 50
    end
    if @status_window2.x < 640
     @status_window2.x += 50
    end
    if @status_window3.x < 640
     @status_window3.x += 50
    end
    if @status_window4.x < 640
     @status_window4.x += 50
    end
    if @status_windowshadow1.x < 640
      @status_windowshadow1.x += 50
    end
    if @status_windowshadow2.x < 640
      @status_windowshadow2.x += 50
    end
    if @status_windowshadow3.x < 640
      @status_windowshadow3.x += 50
    end
    if @status_windowshadow4.x < 640
      @status_windowshadow4.x += 50
    end
    if @status_window.x < 640
      @status_window.x += 50
      end
    if @playtimegoldpicture.x < 640
     @playtimegoldpicture.x += 25
    end
    if @playtimegoldshadow.x < 640
     @playtimegoldshadow.x += 25
   end
   if @playtime_window.x < 640
     @playtime_window.x += 25
   end
   if @gold_window.x < 640
     @gold_window.x += 25
   end
   if @location_bar.y < 480
     @location_bar.y += 25
   end
   if @location_window.y < 480
     @location_window.y += 25
   end
   if @location_white.y < 480
     @location_white.y += 25
   end
   delay(0.1)
   if @status_window.x >= 640
     break
   end
   end
      $game_system.se_play($data_system.cancel_se)
      # マップ画面に切り替え
      $scene = Scene_Map.new
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # パーティ人数が 0 人で、セーブ、ゲーム終了以外のコマンドの場合
      if $game_party.actors.size == 0 and @command_window.index < 4
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 0  # アイテム
        @command1.z = 999
        loop do
        if @status_window.x < 640
          @status_window.x += 50
          end
        if @status_window1.x < 640
          @status_window1.x += 50
        end
        if @status_window2.x < 640
          @status_window2.x += 50
        end
        if @status_window3.x < 640
          @status_window3.x += 50
        end
        if @status_window4.x < 640
          @status_window4.x += 50
        end
        if @status_windowshadow1.x < 640
          @status_windowshadow1.x += 50
        end
        if @status_windowshadow2.x < 640
          @status_windowshadow2.x += 50
        end
        if @status_windowshadow3.x < 640
          @status_windowshadow3.x += 50
        end
        if @status_windowshadow4.x < 640
          @status_windowshadow4.x += 50
        end
        if @playtimegoldpicture.x < 640
          @playtimegoldpicture.x += 50
        end
        if @playtimegoldshadow.x < 640
          @playtimegoldshadow.x += 50
        end
        if @gold_window.x < 640
          @gold_window.x += 50
        end
        if @playtime_window.x < 640
          @playtime_window.x += 50
        end
        if @command2.y > 40
          @command2.y -= 30
        end
        if @command3.y > 40
          @command3.y -= 30
        end
        if @command4.y > 40
          @command4.y -= 30
        end
        if @command5.y > 40
          @command5.y -= 30
        end
        if @command6.y > 40
          @command6.y -= 30
        end
        @commands2.visible = false
        @commands3.visible = false
        @commands4.visible = false
        @commands5.visible = false
        @commands6.visible = false
        @arrow.visible = false
        if @location_bar.y < 480
          @location_bar.y += 30
        end
        if @location_white.y < 480
          @location_white.y += 30
        end
        if @location_window.y < 480
          @location_window.y += 30
        end
        delay(0.1)
        if @command6.y <= 40
        break
      end
      end
        # 決定  SE を演奏
        $game_system.se_play($data_system.decision_se)
        # アイテム画面に切り替え
        $scene = Scene_Item.new
      when 1  # スキル
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
        @arrow_status.visible = true
      when 2  # 装備
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
        @arrow_status.visible = true
      when 3  # ステータス
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
        @arrow_status.visible = true
      when 4  # セーブ
        # セーブ禁止の場合
        if $game_system.save_disabled
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        #=====================
                @command5.z = 999
        loop do
        if @status_window.x < 640
          @status_window.x += 50
          end
        if @status_window1.x < 640
          @status_window1.x += 50
        end
        if @status_window2.x < 640
          @status_window2.x += 50
        end
        if @status_window3.x < 640
          @status_window3.x += 50
        end
        if @status_window4.x < 640
          @status_window4.x += 50
        end
        if @status_windowshadow1.x < 640
          @status_windowshadow1.x += 50
        end
        if @status_windowshadow2.x < 640
          @status_windowshadow2.x += 50
        end
        if @status_windowshadow3.x < 640
          @status_windowshadow3.x += 50
        end
        if @status_windowshadow4.x < 640
          @status_windowshadow4.x += 50
        end
        if @playtimegoldpicture.x < 640
          @playtimegoldpicture.x += 50
        end
        if @playtimegoldshadow.x < 640
          @playtimegoldshadow.x += 50
        end
        if @gold_window.x < 640
          @gold_window.x += 50
        end
        if @playtime_window.x < 640
          @playtime_window.x += 50
        end
        if @command2.y > 40
          @command2.y -= 30
        end
        if @command3.y > 40
          @command3.y -= 30
        end
        if @command4.y > 40
          @command4.y -= 30
        end
        if @command5.y > 40
          @command5.y -= 30
        end
        if @command6.y > 40
          @command6.y -= 30
        end
        @commands2.visible = false
        @commands3.visible = false
        @commands4.visible = false
        @commands5.visible = false
        @commands6.visible = false
         @arrow.visible = false
        if @location_bar.y < 480
          @location_bar.y += 30
        end
        if @location_white.y < 480
          @location_white.y += 30
        end
        if @location_window.y < 480
          @location_window.y += 30
        end
        delay(0.1)
        if @command6.y <= 40
        break
      end
      end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # セーブ画面に切り替え
        $scene = Scene_Save.new
      when 5  # ゲーム終了
                @command6.z = 999
        loop do
        if @status_window.x < 640
          @status_window.x += 50
          end
        if @status_window1.x < 640
          @status_window1.x += 50
        end
        if @status_window2.x < 640
          @status_window2.x += 50
        end
        if @status_window3.x < 640
          @status_window3.x += 50
        end
        if @status_window4.x < 640
          @status_window4.x += 50
        end
        if @status_windowshadow1.x < 640
          @status_windowshadow1.x += 50
        end
        if @status_windowshadow2.x < 640
          @status_windowshadow2.x += 50
        end
        if @status_windowshadow3.x < 640
          @status_windowshadow3.x += 50
        end
        if @status_windowshadow4.x < 640
          @status_windowshadow4.x += 50
        end
        if @playtimegoldpicture.x < 640
          @playtimegoldpicture.x += 50
        end
        if @playtimegoldshadow.x < 640
          @playtimegoldshadow.x += 50
        end
        if @gold_window.x < 640
          @gold_window.x += 50
        end
        if @playtime_window.x < 640
          @playtime_window.x += 50
        end
        if @command2.y > 40
          @command2.y -= 30
        end
        if @command3.y > 40
          @command3.y -= 30
        end
        if @command4.y > 40
          @command4.y -= 30
        end
        if @command5.y > 40
          @command5.y -= 30
        end
        if @command6.y > 40
          @command6.y -= 30
        end
        @commands2.visible = false
        @commands3.visible = false
        @commands4.visible = false
        @commands5.visible = false
        @commands6.visible = false
        @arrow.visible = false
        if @location_bar.y < 480
          @location_bar.y += 30
        end
        if @location_white.y < 480
          @location_white.y += 30
        end
        if @location_window.y < 480
          @location_window.y += 30
        end
        delay(0.1)
        if @command6.y <= 40
        break
      end
      end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ゲーム終了画面に切り替え
        $scene = Scene_End.new
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ステータスウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_status
    case @command_window.index
    when 1
      @arrow.y = 105
      @commands1.y = 42
      @commands2.y = 100
      @commands3.y = 162
      @commands4.y = 222
      @commands5.y = 282
      @commands6.y = 342
      @status_windowshadow1.y = 11
      @status_windowshadow2.y = 110
      @status_windowshadow3.y = 210
      @status_windowshadow4.y = 310
      @playtimegoldshadow.y = 406
    when 2
      @arrow.y = 165
      @commands1.y = 39
      @commands2.y = 97
      @commands3.y = 159
      @commands4.y = 219
      @commands5.y = 279
      @commands6.y = 339
      @status_windowshadow1.y = 8
      @status_windowshadow2.y = 107
      @status_windowshadow3.y = 207
      @status_windowshadow4.y = 307
      @playtimegoldshadow.y = 403
    when 3
      @arrow.y = 225
      @commands1.y = 36
      @commands2.y = 94
      @commands3.y = 156
      @commands4.y = 216
      @commands5.y = 276
      @commands6.y = 336
      @status_windowshadow1.y = 5
      @status_windowshadow2.y = 104
      @status_windowshadow3.y = 204
      @status_windowshadow4.y = 304
      @playtimegoldshadow.y = 400
      end
  #========================
    case @status_window.index
    when 0
      @arrow_status.y = 37
      @arrow_status.x = 260
    when 1
      @arrow_status.y = 137
      @arrow_status.x = 265 - @status_window.index * 25
    when 2
      @arrow_status.y = 237
      @arrow_status.x = 265 - @status_window.index * 25
    when 3
      @arrow_status.y = 337
      @arrow_status.x = 265 - @status_window.index * 23
      end
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # コマンドウィンドウをアクティブにする
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      @arrow_status.visible = false
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 1  # スキル
        # このアクターの行動制限が 2 以上の場合
        if $game_party.actors[@status_window.index].restriction >= 2
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        @command2.z = 999
        loop do
        if @status_window.x < 640
          @status_window.x += 50
          end
        if @status_window1.x < 640
          @status_window1.x += 50
        end
        if @status_window2.x < 640
          @status_window2.x += 50
        end
        if @status_window3.x < 640
          @status_window3.x += 50
        end
        if @status_window4.x < 640
          @status_window4.x += 50
        end
        if @status_windowshadow1.x < 640
          @status_windowshadow1.x += 50
        end
        if @status_windowshadow2.x < 640
          @status_windowshadow2.x += 50
        end
        if @status_windowshadow3.x < 640
          @status_windowshadow3.x += 50
        end
        if @status_windowshadow4.x < 640
          @status_windowshadow4.x += 50
        end
        if @playtimegoldpicture.x < 640
          @playtimegoldpicture.x += 50
        end
        if @playtimegoldshadow.x < 640
          @playtimegoldshadow.x += 50
        end
        if @gold_window.x < 640
          @gold_window.x += 50
        end
        if @playtime_window.x < 640
          @playtime_window.x += 50
        end
        if @command2.y > 40
          @command2.y -= 30
        end
        if @command3.y > 40
          @command3.y -= 30
        end
        if @command4.y > 40
          @command4.y -= 30
        end
        if @command5.y > 40
          @command5.y -= 30
        end
        if @command6.y > 40
          @command6.y -= 30
        end
        @commands2.visible = false
        @commands3.visible = false
        @commands4.visible = false
        @commands5.visible = false
        @commands6.visible = false
        @arrow.visible = false
        @arrow_status.visible = false
        if @location_bar.y < 480
          @location_bar.y += 30
        end
        if @location_white.y < 480
          @location_white.y += 30
        end
        if @location_window.y < 480
          @location_window.y += 30
        end
        delay(0.1)
        if @command6.y <= 40
        break
      end
      end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # スキル画面に切り替え
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # 装備
                @command3.z = 999
        loop do
        if @status_window.x < 640
          @status_window.x += 50
          end
        if @status_window1.x < 640
          @status_window1.x += 50
        end
        if @status_window2.x < 640
          @status_window2.x += 50
        end
        if @status_window3.x < 640
          @status_window3.x += 50
        end
        if @status_window4.x < 640
          @status_window4.x += 50
        end
        if @status_windowshadow1.x < 640
          @status_windowshadow1.x += 50
        end
        if @status_windowshadow2.x < 640
          @status_windowshadow2.x += 50
        end
        if @status_windowshadow3.x < 640
          @status_windowshadow3.x += 50
        end
        if @status_windowshadow4.x < 640
          @status_windowshadow4.x += 50
        end
        if @playtimegoldpicture.x < 640
          @playtimegoldpicture.x += 50
        end
        if @playtimegoldshadow.x < 640
          @playtimegoldshadow.x += 50
        end
        if @gold_window.x < 640
          @gold_window.x += 50
        end
        if @playtime_window.x < 640
          @playtime_window.x += 50
        end
        if @command2.y > 40
          @command2.y -= 30
        end
        if @command3.y > 40
          @command3.y -= 30
        end
        if @command4.y > 40
          @command4.y -= 30
        end
        if @command5.y > 40
          @command5.y -= 30
        end
        if @command6.y > 40
          @command6.y -= 30
        end
        @commands2.visible = false
        @commands3.visible = false
        @commands4.visible = false
        @commands5.visible = false
        @commands6.visible = false
        @arrow.visible = false
        @arrow_status.visible = false
        if @location_bar.y < 480
          @location_bar.y += 30
        end
        if @location_white.y < 480
          @location_white.y += 30
        end
        if @location_window.y < 480
          @location_window.y += 30
        end
        delay(0.1)
        if @command6.y <= 40
        break
      end
      end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # 装備画面に切り替え
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # ステータス
                @command4.z = 999
        loop do
        if @status_window.x < 640
          @status_window.x += 50
          end
        if @status_window1.x < 640
          @status_window1.x += 50
        end
        if @status_window2.x < 640
          @status_window2.x += 50
        end
        if @status_window3.x < 640
          @status_window3.x += 50
        end
        if @status_window4.x < 640
          @status_window4.x += 50
        end
        if @status_windowshadow1.x < 640
          @status_windowshadow1.x += 50
        end
        if @status_windowshadow2.x < 640
          @status_windowshadow2.x += 50
        end
        if @status_windowshadow3.x < 640
          @status_windowshadow3.x += 50
        end
        if @status_windowshadow4.x < 640
          @status_windowshadow4.x += 50
        end
        if @playtimegoldpicture.x < 640
          @playtimegoldpicture.x += 50
        end
        if @playtimegoldshadow.x < 640
          @playtimegoldshadow.x += 50
        end
        if @gold_window.x < 640
          @gold_window.x += 50
        end
        if @playtime_window.x < 640
          @playtime_window.x += 50
        end
        if @command2.y > 40
          @command2.y -= 30
        end
        if @command3.y > 40
          @command3.y -= 30
        end
        if @command4.y > 40
          @command4.y -= 30
        end
        if @command5.y > 40
          @command5.y -= 30
        end
        if @command6.y > 40
          @command6.y -= 30
        end
        @commands2.visible = false
        @commands3.visible = false
        @commands4.visible = false
        @commands5.visible = false
        @commands6.visible = false
        @arrow.visible = false
        @arrow_status.visible = false
        if @location_bar.y < 480
          @location_bar.y += 30
        end
        if @location_white.y < 480
          @location_white.y += 30
        end
        if @location_window.y < 480
          @location_window.y += 30
        end
        delay(0.1)
        if @command6.y <= 40
        break
      end
      end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータス画面に切り替え
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end
#==============================================================================
# ■ Scene_Item
#------------------------------------------------------------------------------
#  アイテム画面の処理を行うクラスです。
#==============================================================================

class Scene_Item
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    #==============================================
    # Setting up all the images
    @background = Sprite.new
    @background.bitmap = RPG::Cache.picture("background")
    @background.x = 0
    @background.y = 0
    #================help window pic====================
    @help_picture = Sprite.new
    @help_picture.bitmap = RPG::Cache.picture("helpwindow12")
    @help_picture.x = 0
    @help_picture.y = - 52
    #=================Command=======================
    @command1 = Sprite.new
    @command1.bitmap = RPG::Cache.picture("cmscommand1")
    @command1.x = 15
    @command1.y = 40
    @command1.z = 100
    #=====================shadow=======================
    @commands1 = Sprite.new
    @commands1.bitmap = RPG::Cache.picture("cmscommandshadow")
    @commands1.x = 20
    @commands1.y = 45
    @commands1.z = 1
    @commands1.opacity = 155
    #===================item window======================
    @item_picture = Sprite.new
    @item_picture.bitmap = RPG::Cache.picture("itemwindow")
    @item_picture.x = 7
    @item_picture.y = 509
    @item_picture.z = 11
    #===============================================
    @item_shadow = Sprite.new
    @item_shadow.bitmap = RPG::Cache.picture("itemshadow")
    @item_shadow.x = 12
    @item_shadow.y = 514
    @item_shadow.z = 1
    @item_shadow.opacity = 155
    #===============================================
    @help_window = Window_Menuhelp.new
    @item_window = Window_Menuitem.new
    @item_window.z = 100
    @item_window.help_window = @help_window
    # ターゲットウィンドウを作成 (不可視・非アクティブに設定)
    @target_picture = Sprite.new
    @target_picture.bitmap = RPG::Cache.picture("targetwindow")
    @target_picture.z = 998
    @target_picture.visible = false
    @target_window = Window_Target.new
    @target_window.z = 999
    @target_window.opacity = 0
    @target_window.visible = false
    @target_window.active = false
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @help_window.dispose
    @item_window.dispose
    @target_window.dispose
    @background.dispose
    @command1.dispose
    @commands1.dispose
    @help_picture.dispose
    @item_shadow.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ウィンドウを更新
    @help_window.update
    @item_window.update
    @target_window.update
    @command1.update
    # enter animation
    if @item_shadow.y > 114
      @item_shadow.y -= 50
      end
    if @item_picture.y > 109
      @item_picture.y -= 50
    end
    if @item_window.y > 100
      @item_window.y -= 50
    end
    if @help_picture.y < - 4
      @help_picture.y += 24
    end
    if @help_window.y < - 7
      @help_window.y += 35
    end
    if @command1.x < 215
      @command1.x += 100
    end
    if @command1.y < 50
      @command1.y += 5
    end
    if @commands1.x < 220
      @commands1.x += 100
    end
    if @commands1.y < 55
      @commands1.y += 5
      end
    # アイテムウィンドウがアクティブの場合: update_item を呼ぶ
    if @item_window.active
      update_item
      return
    end
    # ターゲットウィンドウがアクティブの場合: update_target を呼ぶ
    if @target_window.active
      update_target
      return
    end
  end
  #--------------------------------------------------------------------------
  def delay(seconds)
  for i in 0...(seconds * 1)
    sleep 0.01
    Graphics.update
  end
end
  # ● フレーム更新 (アイテムウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_item
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # exit animation
      $game_system.se_play($data_system.cancel_se)
      loop do
        if @item_shadow.y < 480
          @item_shadow.y += 50
          end
        if @item_picture.y < 480
          @item_picture.y += 50
        end
        if @item_window.y < 480
          @item_window.y += 50
        end
        if @help_picture.y > - 50
          @help_picture.y -= 30
        end
        if @help_window.y > - 64
          @help_window.y -= 30
        end
        if @command1.x > 15
          @command1.x -= 100
        end
        if @command1.y > 40
          @command1.y -= 5
        end
        if @commands1.x > 20
          @commands1.x -= 100
        end
        if @commands1.y > 45
          @commands1.y -= 5
        end
        delay(0.2)
        if @item_picture.y >= 480
          break
        end
        end
      # メニュー画面に切り替え
      $scene = Scene_Menu.new(0)
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # アイテムウィンドウで現在選択されているデータを取得
      @item = @item_window.item
      # 使用アイテムではない場合
      unless @item.is_a?(RPG::Item)
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 使用できない場合
      unless $game_party.item_can_use?(@item.id)
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      # 効果範囲が味方の場合
      if @item.scope >= 3
        # ターゲットウィンドウをアクティブ化
        @item_window.active = false
        @target_window.x = (@item_window.index + 1) % 2 * 304
        @target_picture.x = (@item_window.index + 1) % 2 * 304
        @target_picture.visible = true
        @target_window.visible = true
        @target_window.active = true
        # 効果範囲 (単体/全体) に応じてカーソル位置を設定
        if @item.scope == 4 || @item.scope == 6
          @target_window.index = -1
        else
          @target_window.index = 0
        end
      # 効果範囲が味方以外の場合
      else
        # コモンイベント ID が有効の場合
        if @item.common_event_id > 0
          # コモンイベント呼び出し予約
          $game_temp.common_event_id = @item.common_event_id
          # アイテムの使用時 SE を演奏
          $game_system.se_play(@item.menu_se)
          # 消耗品の場合
          if @item.consumable
            # 使用したアイテムを 1 減らす
            $game_party.lose_item(@item.id, 1)
            # アイテムウィンドウの項目を再描画
            @item_window.draw_item(@item_window.index)
          end
          # マップ画面に切り替え
          $scene = Scene_Map.new
          return
        end
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_target
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # アイテム切れなどで使用できなくなった場合
      unless $game_party.item_can_use?(@item.id)
        # アイテムウィンドウの内容を再作成
        @item_window.refresh
      end
      # ターゲットウィンドウを消去
      @item_window.active = true
      @target_window.visible = false
      @target_picture.visible = false
      @target_window.active = false
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # アイテムを使い切った場合
      if $game_party.item_number(@item.id) == 0
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # ターゲットが全体の場合
      if @target_window.index == -1
        # パーティ全体にアイテムの使用効果を適用
        used = false
        for i in $game_party.actors
          used |= i.item_effect(@item)
        end
      end
      # ターゲットが単体の場合
      if @target_window.index >= 0
        # ターゲットのアクターにアイテムの使用効果を適用
        target = $game_party.actors[@target_window.index]
        used = target.item_effect(@item)
      end
      # アイテムを使った場合
      if used
        # アイテムの使用時 SE を演奏
        $game_system.se_play(@item.menu_se)
        # 消耗品の場合
        if @item.consumable
          # 使用したアイテムを 1 減らす
          $game_party.lose_item(@item.id, 1)
          # アイテムウィンドウの項目を再描画
          @item_window.draw_item(@item_window.index)
        end
        # ターゲットウィンドウの内容を再作成
        @target_window.refresh
        # 全滅の場合
        if $game_party.all_dead?
          # ゲームオーバー画面に切り替え
          $scene = Scene_Gameover.new
          return
        end
        # コモンイベント ID が有効の場合
        if @item.common_event_id > 0
          # コモンイベント呼び出し予約
          $game_temp.common_event_id = @item.common_event_id
          # マップ画面に切り替え
          $scene = Scene_Map.new
          return
        end
      end
      # アイテムを使わなかった場合
      unless used
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    end
  end
end
#==============================================================================
# ■ Scene_Skill
#------------------------------------------------------------------------------
#  スキル画面の処理を行うクラスです。
#==============================================================================

class Scene_Skill
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor_index : アクターインデックス
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0, equip_index = 0)
    @actor_index = actor_index
  end
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
     #==============================================
    # Setting up all the images
    @background = Sprite.new
    @background.bitmap = RPG::Cache.picture("background")
    @background.x = 0
    @background.y = 0
    #================help window image=====================
    @help_picture = Sprite.new
    @help_picture.bitmap = RPG::Cache.picture("helpwindow12")
    @help_picture.x = 0
    @help_picture.y = - 52
    #==============Command image=====================
    @command2 = Sprite.new
    @command2.bitmap = RPG::Cache.picture("cmscommand2")
    @command2.x = 15
    @command2.y = 40
    @command2.z = 100
    #==============shadow================================
    @commands2 = Sprite.new
    @commands2.bitmap = RPG::Cache.picture("cmscommandshadow")
    @commands2.x = 20
    @commands2.y = 45
    @commands2.z = 1
    @commands2.opacity = 155
    #==============status window==========================
    @status_window1 = Sprite.new
    @status_window1.bitmap = RPG::Cache.picture("status window 1")
    @status_window1.x = 693
    @status_window1.y = 45
    @status_window1.z = 100
    #============shadow================================
    @status_windowshadow1 = Sprite.new
    @status_windowshadow1.bitmap = RPG::Cache.picture("blackwindow2")
    @status_windowshadow1.x = 697
    @status_windowshadow1.y = 50
    @status_windowshadow1.z = 1
    @status_windowshadow1.opacity = 155
    #==================skill window pic====================
    @skill_picture = Sprite.new
    @skill_picture.bitmap = RPG::Cache.picture("skillwindow")
    @skill_picture.x = 7
    @skill_picture.y = 540
    @skill_picture.z = 2
    #================skill shadow pic=====================
    @skill_shadow = Sprite.new
    @skill_shadow.bitmap = RPG::Cache.picture("skillshadow")
    @skill_shadow.x = 14
    @skill_shadow.y = 545
    @skill_shadow.z = 1
    @skill_shadow.opacity = 155
    #===============target window========================
    @target_picture = Sprite.new
    @target_picture.bitmap = RPG::Cache.picture("targetwindow")
    @target_picture.z = 998
    @target_picture.visible = false
    # アクターを取得
    @actor = $game_party.actors[@actor_index]
    # ヘルプウィンドウ、ステータスウィンドウ、スキルウィンドウを作成
    @help_window = Window_Menuhelp.new
    @help_window.opacity = 0
    @status_window = Window_SkillStatus.new(@actor)
    @skill_window = Window_Menuskill.new(@actor)
    @skill_window.opacity = 0
    # ヘルプウィンドウを関連付け
    @skill_window.help_window = @help_window
    # ターゲットウィンドウを作成 (不可視・非アクティブに設定)
    @target_window = Window_Target.new
    @target_window.z = 999
    @target_window.opacity = 0
    @target_window.visible = false
    @target_window.active = false
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @help_window.dispose
    @status_window.dispose
    @skill_window.dispose
    @target_window.dispose
    @background.dispose
    @help_picture.dispose
    @commands2.dispose
    @command2.dispose
    @status_window1.dispose
    @status_windowshadow1.dispose
    @skill_picture.dispose
    @skill_shadow.dispose
  end
  #--------------------------------------------------------------------------
  def delay(seconds)
  for i in 0...(seconds * 1)
    sleep 0.01
    Graphics.update
  end
end
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # enter animation
    if @help_picture.y < - 4
      @help_picture.y += 24
    end
    if @help_window.y < - 7
      @help_window.y += 35
    end
    if @command2.y < 60
      @command2.y += 20
    end
    if @commands2.y < 65
      @commands2.y += 20
    end
    if @skill_shadow.y > 145
      @skill_shadow.y -= 50
      end
    if @skill_picture.y > 140
      @skill_picture.y -= 50
    end
    if @skill_window.y > 131
      @skill_window.y -= 50
    end
    if @status_window1.x > 293
       @status_window1.x -= 100
    end
    if @status_window.x > 230
       @status_window.x -= 100
     end
     if @status_windowshadow1.x > 297
       @status_windowshadow1.x -= 100
     end
    # ウィンドウを更新
    @help_window.update
    @status_window.update
    @skill_window.update
    @target_window.update
    # スキルウィンドウがアクティブの場合: update_skill を呼ぶ
    if @skill_window.active
      update_skill
      return
    end
    # ターゲットウィンドウがアクティブの場合: update_target を呼ぶ
    if @target_window.active
      update_target
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (スキルウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_skill
    if Input.trigger?(Input::B)
      # exit animation
       loop do
         if @skill_shadow.y < 480
           @skill_shadow.y += 50
           end
        if @skill_picture.y < 480
          @skill_picture.y += 50
        end
        if @skill_window.y < 480
          @skill_window.y += 50
        end
        if @help_picture.y > - 50
          @help_picture.y -= 30
        end
        if @help_window.y > - 64
          @help_window.y -= 30
        end
        if @command2.x > 15
          @command2.x -= 100
        end
        if @command2.y > 40
          @command2.y -= 10
        end
        if @commands2.x > 20
          @commands2.x -= 100
        end
        if @commands2.y > 45
          @commands2.y -= 10
        end
        if @status_window1.x < 640
           @status_window1.x += 100
        end
        if @status_window.x < 640
           @status_window.x += 100
         end
         if @status_windowshadow1.x < 640
           @status_windowshadow1.x += 100
           end
        delay(0.2)
        if @skill_picture.y >= 480
          break
        end
        end
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # メニュー画面に切り替え
      $scene = Scene_Menu.new(1)
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # スキルウィンドウで現在選択されているデータを取得
      @skill = @skill_window.skill
      # 使用できない場合
      if @skill == nil or not @actor.skill_can_use?(@skill.id)
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      # 効果範囲が味方の場合
      if @skill.scope >= 3
        # ターゲットウィンドウをアクティブ化
        @skill_window.active = false
        @target_window.x = (@skill_window.index + 1) % 2 * 304
        @target_picture.x = (@skill_window.index + 1) % 2 * 304
        @target_window.visible = true
        @target_window.active = true
        @target_picture.visible = true
        # 効果範囲 (単体/全体) に応じてカーソル位置を設定
        if @skill.scope == 4 || @skill.scope == 6
          @target_window.index = -1
        elsif @skill.scope == 7
          @target_window.index = @actor_index - 10
        else
          @target_window.index = 0
        end
      # 効果範囲が味方以外の場合
      else
        # コモンイベント ID が有効の場合
        if @skill.common_event_id > 0
          # コモンイベント呼び出し予約
          $game_temp.common_event_id = @skill.common_event_id
          # スキルの使用時 SE を演奏
          $game_system.se_play(@skill.menu_se)
          # SP 消費
          @actor.sp -= @skill.sp_cost
          # 各ウィンドウの内容を再作成
          @status_window.refresh
          @skill_window.refresh
          @target_window.refresh
          # マップ画面に切り替え
          $scene = Scene_Map.new
          return
        end
      end
      return
    end
    # R ボタンが押された場合
    if Input.trigger?(Input::R)
      # カーソル SE を演奏
      $game_system.se_play($data_system.cursor_se)
      # 次のアクターへ
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      # 別のスキル画面に切り替え
      $scene = Scene_Skill.new(@actor_index)
      return
    end
    # L ボタンが押された場合
    if Input.trigger?(Input::L)
      # カーソル SE を演奏
      $game_system.se_play($data_system.cursor_se)
      # 前のアクターへ
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      # 別のスキル画面に切り替え
      $scene = Scene_Skill.new(@actor_index)
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_target
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # ターゲットウィンドウを消去
      @skill_window.active = true
      @target_window.visible = false
      @target_window.active = false
      @target_picture.visible = false
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # SP 切れなどで使用できなくなった場合
      unless @actor.skill_can_use?(@skill.id)
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # ターゲットが全体の場合
      if @target_window.index == -1
        # パーティ全体にスキルの使用効果を適用
        used = false
        for i in $game_party.actors
          used |= i.skill_effect(@actor, @skill)
        end
      end
      # ターゲットが使用者の場合
      if @target_window.index <= -2
        # ターゲットのアクターにスキルの使用効果を適用
        target = $game_party.actors[@target_window.index + 10]
        used = target.skill_effect(@actor, @skill)
      end
      # ターゲットが単体の場合
      if @target_window.index >= 0
        # ターゲットのアクターにスキルの使用効果を適用
        target = $game_party.actors[@target_window.index]
        used = target.skill_effect(@actor, @skill)
      end
      # スキルを使った場合
      if used
        # スキルの使用時 SE を演奏
        $game_system.se_play(@skill.menu_se)
        # SP 消費
        @actor.sp -= @skill.sp_cost
        # 各ウィンドウの内容を再作成
        @status_window.refresh
        @skill_window.refresh
        @target_window.refresh
        # 全滅の場合
        if $game_party.all_dead?
          # ゲームオーバー画面に切り替え
          $scene = Scene_Gameover.new
          return
        end
        # コモンイベント ID が有効の場合
        if @skill.common_event_id > 0
          # コモンイベント呼び出し予約
          $game_temp.common_event_id = @skill.common_event_id
          # マップ画面に切り替え
          $scene = Scene_Map.new
          return
        end
      end
      # スキルを使わなかった場合
      unless used
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    end
  end
end
#==============================================================================
# ■ Scene_Equip
#------------------------------------------------------------------------------
#  装備画面の処理を行うクラスです。
#==============================================================================

class Scene_Equip
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor_index : アクターインデックス
  #     equip_index : 装備インデックス
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0, equip_index = 0)
    @actor_index = actor_index
    @equip_index = equip_index
  end
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
     # This is setting up the background picture
    @background = Sprite.new
    @background.bitmap = RPG::Cache.picture("background")
    @background.x = 0
    @background.y = 0
    #=============the equip command pic========================
    @command3 = Sprite.new
    @command3.bitmap = RPG::Cache.picture("cmscommand3")
    @command3.x = 15
    @command3.y = 40
    @command3.z = 100
    #=================the shadow of it=======================
    @commands3 = Sprite.new
    @commands3.bitmap = RPG::Cache.picture("cmscommandshadow")
    @commands3.x = 20
    @commands3.y = 45
    @commands3.z = 1
    @commands3.opacity = 155
    #================the status window pic====================
    @status_window1 = Sprite.new
    @status_window1.bitmap = RPG::Cache.picture("status window 1")
    @status_window1.x = 693
    @status_window1.y = 45
    @status_window1.z = 100
    #=============the shadow of it===========================
    @status_windowshadow1 = Sprite.new
    @status_windowshadow1.bitmap = RPG::Cache.picture("blackwindow2")
    @status_windowshadow1.x = 697
    @status_windowshadow1.y = 50
    @status_windowshadow1.z = 1
    @status_windowshadow1.opacity = 155
    #================help window image=====================
    @help_picture = Sprite.new
    @help_picture.bitmap = RPG::Cache.picture("helpwindow12")
    @help_picture.x = 0
    @help_picture.y = - 52
    #==============This sets up the 3rd status picture=============
    @picture_status2 = Sprite.new
    @picture_status2.bitmap = RPG::Cache.picture("windowstatus2")
    @picture_status2.x = 850
    @picture_status2.y = 135
    @picture_status2.z = 3
    #============the shadow of the 2nd status pic================
    @picture_shadow2 = Sprite.new
    @picture_shadow2.bitmap = RPG::Cache.picture("windowstatus2shadow")
    @picture_shadow2.x = 855
    @picture_shadow2.y = 140
    @picture_shadow2.z = 1
    @picture_shadow2.opacity = 155
    #======the pic for equip left (status window 2 in this script)==========
    @equip_window1 = Sprite.new
    @equip_window1.bitmap = RPG::Cache.picture("equipwindow1")
    @equip_window1.x = - 113
    @equip_window1.y = 117
    @equip_window1.z = 2
    #============the equipment selection window pic===============
    @equip_window2 = Sprite.new
    @equip_window2.bitmap = RPG::Cache.picture("equipwindow2")
    @equip_window2.x = 245
    @equip_window2.y = 585
    @equip_window2.z = 2
    #================the shadow of it==========================
    @equip_shadow2 = Sprite.new
    @equip_shadow2.bitmap = RPG::Cache.picture("equipwindow2shadow")
    @equip_shadow2.x = 250
    @equip_shadow2.y = 590
    @equip_shadow2.opacity = 155
    @equip_shadow2.z = 1
    #================the selection arrow=========================
    @arrow = Sprite.new
    @arrow.bitmap = RPG::Cache.picture("arrow4")
    @arrow.x = - 60
    @arrow.y = 141
    @arrow.z = 1000
    # アクターを取得
    @actor = $game_party.actors[@actor_index]
    # ウィンドウを作成
    @status_window = Window_SkillStatus.new(@actor)
    @status_window2 = Window_Status2.new(@actor)
    @status_window2.x = 850
    @status_window2.y = 120
    @status_window2.opacity = 0
    @help_window = Window_Menuhelp.new
    @help_window.opacity = 0
    @right_window = Window_EquipRight.new(@actor)
    @right_window.visible = true
    @item_window1 = Window_EquipItem.new(@actor, 0)
    @item_window2 = Window_EquipItem.new(@actor, 1)
    @item_window3 = Window_EquipItem.new(@actor, 2)
    @item_window4 = Window_EquipItem.new(@actor, 3)
    @item_window5 = Window_EquipItem.new(@actor, 4)
    # ヘルプウィンドウを関連付け
    @right_window.help_window = @help_window
    @item_window1.help_window = @help_window
    @item_window2.help_window = @help_window
    @item_window3.help_window = @help_window
    @item_window4.help_window = @help_window
    @item_window5.help_window = @help_window
    # カーソル位置を設定
    @right_window.index = @equip_index
    refresh
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @help_window.dispose
    @right_window.dispose
    @item_window1.dispose
    @item_window2.dispose
    @item_window3.dispose
    @item_window4.dispose
    @item_window5.dispose
    @background.dispose
    @command3.dispose
    @commands3.dispose
    @status_window1.dispose
    @status_windowshadow1.dispose
    @help_picture.dispose
    @status_window.dispose
    @status_window2.dispose
    @equip_window1.dispose
    @equip_window2.dispose
    @picture_status2.dispose
    @arrow.dispose
    @equip_shadow2.dispose
    @picture_shadow2.dispose
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    # アイテムウィンドウの可視状態設定
    @item_window1.visible = (@right_window.index == 0)
    @item_window2.visible = (@right_window.index == 1)
    @item_window3.visible = (@right_window.index == 2)
    @item_window4.visible = (@right_window.index == 3)
    @item_window5.visible = (@right_window.index == 4)
    # 現在装備中のアイテムを取得
    item1 = @right_window.item
    # 現在のアイテムウィンドウを @item_window に設定
    case @right_window.index
    when 0
      @item_window = @item_window1
    when 1
      @item_window = @item_window2
    when 2
      @item_window = @item_window3
    when 3
      @item_window = @item_window4
    when 4
      @item_window = @item_window5
    end
    # ライトウィンドウがアクティブの場合
    if @right_window.active
      # 装備変更後のパラメータを消去
      @status_window2.set_new_parameters(nil, nil, nil, nil, nil, nil, nil)
    end
    # アイテムウィンドウがアクティブの場合
    if @item_window.active
      # 現在選択中のアイテムを取得
      item2 = @item_window.item
      # 装備を変更
      last_hp = @actor.hp
      last_sp = @actor.sp
      @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
      # 装備変更後のパラメータを取得
      new_atk = @actor.atk
      new_pdef = @actor.pdef
      new_mdef = @actor.mdef
      new_str = @actor.str
      new_dex = @actor.dex
      new_agi = @actor.agi
      new_int = @actor.int
      # 装備を戻す
      @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
      @actor.hp = last_hp
      @actor.sp = last_sp
      # レフトウィンドウに描画
    @status_window2.set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, new_agi, new_int)
    @status_window2.refresh
    end
  end
  #--------------------------------------------------------------------------
  def delay(seconds)
  for i in 0...(seconds * 1)
    sleep 0.01
    Graphics.update
  end
end
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    @status_window.update
        if @command3.y < 60
      @command3.y += 20
    end
    if @commands3.y < 65
      @commands3.y += 20
    end
      if @help_picture.y < - 4
      @help_picture.y += 24
    end
    if @help_window.y < - 7
      @help_window.y += 35
    end
    if @status_window1.x > 293
       @status_window1.x -= 80
     end
    if @status_windowshadow1.x > 297
      @status_windowshadow1.x -= 80
      end
        if @status_window.x > 230
       @status_window.x -= 50
     end
       if @status_window2.x > 250
      @status_window2.x -= 100
    end
      if @picture_status2.x > 250
      @picture_status2.x -= 100
    end
     if @picture_shadow2.x > 255
      @picture_shadow2.x -= 100
    end
    if @equip_window1.x < 7
      @equip_window1.x += 20
    end
    if @right_window.x < 20
      @right_window.x += 20
    end
    if @equip_window2.y > 285
      @equip_window2.y -= 50
    end
    if @equip_shadow2.y > 290
      @equip_shadow2.y -= 50
      end
    if @arrow.x < - 10
      @arrow.x += 10
    end
       if @item_window1.y > 273
      @item_window1.y -= 50
    end
    if @item_window2.y > 273
      @item_window2.y -= 50
    end
    if @item_window3.y > 273
      @item_window3.y -= 50
    end
    if @item_window4.y > 273
      @item_window4.y -= 50
    end
    if @item_window5.y > 273
      @item_window5.y -= 50
      end
    # ウィンドウを更新
    @right_window.update
    @item_window.update
    refresh
    # ライトウィンドウがアクティブの場合: update_right を呼ぶ
    if @right_window.active
      update_right
      return
    end
    # アイテムウィンドウがアクティブの場合: update_item を呼ぶ
    if @item_window.active
      update_item
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ライトウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_right
    case @right_window.index
    when 0
      @arrow.y = 141
    when 1
      @arrow.y = 208
    when 2
      @arrow.y = 276
    when 3
      @arrow.y = 344
    when 4
      @arrow.y = 408
      end
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      loop do
          if @command3.x > 15
          @command3.x -= 100
        end
        if @command3.y > 40
          @command3.y -= 10
        end
        if @commands3.x > 20
          @commands2.x -= 100
        end
        if @commands3.y > 45
          @commands3.y -= 10
        end
        if @help_picture.y > - 50
          @help_picture.y -= 30
        end
        if @help_window.y > - 64
          @help_window.y -= 30
        end
         if @status_window1.x < 640
           @status_window1.x += 100
        end
        if @status_window.x < 640
           @status_window.x += 100
         end
         if @status_windowshadow1.x < 640
           @status_windowshadow1.x += 100
         end
         if @status_window2.x < 640
            @status_window2.x += 100
         end
        if @picture_status2.x < 640
           @picture_status2.x += 100
         end
         if @picture_shadow2.x < 640
           @picture_shadow2.x += 100
         end
          if @equip_window1.x > - 250
          @equip_window1.x -= 50
         end
        if @right_window.x > - 250
       @right_window.x -= 50
      end
      if @equip_window2.y < 480
       @equip_window2.y += 50
     end
      if @equip_shadow2.y < 480
      @equip_shadow2.y += 50
      end
      if @item_window1.y < 480
        @item_window1.y += 50
      end
      if @item_window2.y < 480
        @item_window2.y += 50
      end
       if @item_window3.y < 480
        @item_window3.y += 50
       end
       if @item_window4.y < 480
       @item_window4.y += 50
      end
      if @item_window5.y < 480
         @item_window5.y += 50
       end
    @arrow.visible = false
      delay(0.1)
      if @equip_window1.x <= - 250
        break
    end
    end
       $game_system.se_play($data_system.cancel_se)
      # メニュー画面に切り替え
      $scene = Scene_Menu.new(2)
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # 装備固定の場合
      if @actor.equip_fix?(@right_window.index)
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      # アイテムウィンドウをアクティブ化
      @right_window.active = false
      @item_window.active = true
      @item_window.index = 0
      return
    end
    # R ボタンが押された場合
    if Input.trigger?(Input::R)
      # カーソル SE を演奏
      $game_system.se_play($data_system.cursor_se)
      # 次のアクターへ
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      # 別の装備画面に切り替え
      $scene = Scene_Equip.new(@actor_index, @right_window.index)
      return
    end
    # L ボタンが押された場合
    if Input.trigger?(Input::L)
      # カーソル SE を演奏
      $game_system.se_play($data_system.cursor_se)
      # 前のアクターへ
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      # 別の装備画面に切り替え
      $scene = Scene_Equip.new(@actor_index, @right_window.index)
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アイテムウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_item
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # ライトウィンドウをアクティブ化
      @right_window.active = true
      @status_window2.refresh
      @item_window.active = false
      @item_window.index = -1
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # 装備 SE を演奏
      $game_system.se_play($data_system.equip_se)
      # アイテムウィンドウで現在選択されているデータを取得
      item = @item_window.item
      # 装備を変更
      @actor.equip(@right_window.index, item == nil ? 0 : item.id)
      # ライトウィンドウをアクティブ化
      @right_window.active = true
      @item_window.active = false
      @item_window.index = -1
      # ライトウィンドウ、アイテムウィンドウの内容を再作成
      @right_window.refresh
      @item_window.refresh
      return
    end
  end
end
#==============================================================================
# ■ Scene_Status
#------------------------------------------------------------------------------
#  ステータス画面の処理を行うクラスです。
#==============================================================================

class Scene_Status
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor_index : アクターインデックス
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0, equip_index = 0)
    @actor_index = actor_index
  end
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    #========================================
    # This is setting up the background picture
    @background = Sprite.new
    @background.bitmap = RPG::Cache.picture("background")
    @background.x = 0
    @background.y = 0
    #========================================
    # This sets up the command picture & shadow
    @command4 = Sprite.new
    @command4.bitmap = RPG::Cache.picture("cmscommand4")
    @command4.x = 15
    @command4.y = 40
    @command4.z = 100
    #========================================
    @commands4 = Sprite.new
    @commands4.bitmap = RPG::Cache.picture("cmscommandshadow")
    @commands4.x = 20
    @commands4.y = 45
    @commands4.z = 1
    @commands4.opacity = 155
    #==============This sets up the 1st status picture=============
    @picture_status1 = Sprite.new
    @picture_status1.bitmap = RPG::Cache.picture("windowstatus1")
    @picture_status1.x = 230
    @picture_status1.y = - 120
    @picture_status1.z = 2
    #=============This sets up the 2nd status picture==============
    @picture_status2 = Sprite.new
    @picture_status2.bitmap = RPG::Cache.picture("windowstatus2")
    @picture_status2.x = 830
    @picture_status2.y = 115
    @picture_status2.z = 2
    #==============This sets up the 3rd status picture=============
    @picture_status3 = Sprite.new
    @picture_status3.bitmap = RPG::Cache.picture("windowstatus3")
    @picture_status3.x = 230
    @picture_status3.y = 480
    @picture_status3.z = 2
    #===============This sets up the 4th status picture==============
    @picture_status4 = Sprite.new
    @picture_status4.bitmap = RPG::Cache.picture("windowstatus4")
    @picture_status4.x = - 280
    @picture_status4.y = 388
    @picture_status4.z = 2
    #============the shadow of the 1st status pic==================
    @picture_shadow1 = Sprite.new
    @picture_shadow1.bitmap = RPG::Cache.picture("windowstatus1shadow")
    @picture_shadow1.x = 235
    @picture_shadow1.y = - 115
    @picture_shadow1.z = 1
    @picture_shadow1.opacity = 155
    #============the shadow of the 2nd status pic==================
    @picture_shadow2 = Sprite.new
    @picture_shadow2.bitmap = RPG::Cache.picture("windowstatus2shadow")
    @picture_shadow2.x = 835
    @picture_shadow2.y = 120
    @picture_shadow2.z = 1
    @picture_shadow2.opacity = 155
    #============the shadow of the 3rd status pic==================
    @picture_shadow3 = Sprite.new
    @picture_shadow3.bitmap = RPG::Cache.picture("windowstatus3shadow")
    @picture_shadow3.x = 235
    @picture_shadow3.y = 485
    @picture_shadow3.z = 1
    @picture_shadow3.opacity = 155
    #============the shadow of the 4th status pic==================
    @picture_shadow4 = Sprite.new
    @picture_shadow4.bitmap = RPG::Cache.picture("windowstatus4shadow")
    @picture_shadow4.x = - 275
    @picture_shadow4.y = 393
    @picture_shadow4.z = 1
    @picture_shadow4.opacity = 155
    # アクターを取得
    @actor = $game_party.actors[@actor_index]
    # Sets up the 1st status window
    @status_window1 = Window_Status.new(@actor)
    @status_window1.x = 220
    @status_window1.y = - 160
    @status_window1.opacity = 0
    #=============Sets up the 2nd status window==================
    @status_window2 = Window_Status2.new(@actor)
    @status_window2.x = 830
    @status_window2.y = 100
    @status_window2.opacity = 0
    #============Sets up the 3rd status window===================
    @status_window3 = Window_Status3.new(@actor)
    @status_window3.x = 220
    @status_window3.y = 700
    @status_window3.opacity = 0
    #=============Sets up the 4th status window==================
    @status_window4 = Window_Status4.new(@actor)
    @status_window4.x = - 280
    @status_window4.y = 385
    @status_window4.opacity = 0
    #============Sets up the 5th status window - battler=============
    @status_window5 = Window_Status5.new(@actor)
    @status_window5.x = - 300
    @status_window5.y = 0
    @status_window5.opacity = 0
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @background.dispose
    @command4.dispose
    @commands4.dispose
    @picture_status1.dispose
    @picture_status2.dispose
    @picture_status3.dispose
    @picture_status4.dispose
    @status_window1.dispose
    @status_window2.dispose
    @status_window3.dispose
    @status_window4.dispose
    @status_window5.dispose
    @picture_shadow1.dispose
    @picture_shadow2.dispose
    @picture_shadow3.dispose
    @picture_shadow4.dispose
  end
  #--------------------------------------------------------------------------
    def delay(seconds)
  for i in 0...(seconds * 1)
    sleep 0.01
    Graphics.update
  end
end
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    #===========================================
    # enter animation
    if @picture_status1.y < 15
      @picture_status1.y += 45
    end
     if @picture_shadow1.y < 20
      @picture_shadow1.y += 45
    end
    if @picture_status2.x > 230
      @picture_status2.x -= 150
    end
      if @picture_shadow2.x > 235
      @picture_shadow2.x -= 150
    end
    if @picture_status3.y > 262
      @picture_status3.y -= 109
    end
    if @picture_shadow3.y > 267
      @picture_shadow3.y -= 109
    end
    if @picture_status4.x < 5
      @picture_status4.x += 95
    end
    if @picture_shadow4.x < 10
      @picture_shadow4.x += 95
    end
    if @status_window1.y < 0
      @status_window1.y += 80
    end
    if @status_window2.x > 230
      @status_window2.x -= 150
    end
    if @status_window3.y > 250
      @status_window3.y -= 150
    end
    if @status_window4.x < 5
      @status_window4.x += 95
    end
    if @status_window5.x < 0
      @status_window5.x += 100
      end
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # exit animation
      loop do
    if @picture_status1.y > - 400
      @picture_status1.y -= 100
    end
      if @picture_shadow1.y > - 400
      @picture_shadow1.y -= 100
    end
    if @picture_status2.x < 640
      @picture_status2.x += 100
    end
     if @picture_shadow2.x < 640
      @picture_shadow2.x += 100
    end
    if @picture_status3.y < 480
      @picture_status3.y += 100
    end
     if @picture_shadow3.y < 480
      @picture_shadow3.y += 100
    end
    if @picture_status4.x > - 300
      @picture_status4.x -= 100
    end
    if @picture_shadow4.x > - 400
      @picture_shadow4.x -= 100
    end
    if @status_window1.y > - 400
      @status_window1.y -= 100
    end
    if @status_window2.x < 640
      @status_window2.x += 100
    end
    if @status_window3.y < 640
      @status_window3.y += 100
    end
    if @status_window4.x > - 200
      @status_window4.x -= 100
    end
    if @status_window5.x > - 300
      @status_window5.x -= 100
    end
    delay(0.1)
    if @status_window2.x >= 640
      break
    end
    end
      $game_system.se_play($data_system.cancel_se)
      # メニュー画面に切り替え
      $scene = Scene_Menu.new(3)
      return
    end
    # R ボタンが押された場合
    if Input.trigger?(Input::R)
      # カーソル SE を演奏
      $game_system.se_play($data_system.cursor_se)
      # 次のアクターへ
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      # 別のステータス画面に切り替え
      $scene = Scene_Status.new(@actor_index)
      return
    end
    # L ボタンが押された場合
    if Input.trigger?(Input::L)
      # カーソル SE を演奏
      $game_system.se_play($data_system.cursor_se)
      # 前のアクターへ
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      # 別のステータス画面に切り替え
      $scene = Scene_Status.new(@actor_index)
      return
    end
  end
end
#==============================================================================
# ■ Scene_File
#------------------------------------------------------------------------------
#  セーブ画面およびロード画面のスーパークラスです。
#==============================================================================

class Scene_File
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     help_text : ヘルプウィンドウに表示する文字列
  #--------------------------------------------------------------------------
  def initialize(help_text)
    @help_text = help_text
  end
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    # This is setting up the background picture
    @background = Sprite.new
    @background.bitmap = RPG::Cache.picture("save window")
    @background.x = 0
    @background.y = 0
    # ヘルプウィンドウを作成
    @help_window = Window_Help.new
    @help_window.opacity = 0
    @help_window.set_text(@help_text)
    # セーブファイルウィンドウを作成
    @savefile_windows = []
    for i in 0..3
      @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
    end
    # 最後に操作したファイルを選択
    @file_index = $game_temp.last_file_index
    @savefile_windows[@file_index].selected = true
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @background.dispose
    @help_window.dispose
    for i in @savefile_windows
      i.dispose
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ウィンドウを更新
    @help_window.update
    for i in @savefile_windows
      i.update
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # メソッド on_decision (継承先で定義) を呼ぶ
      on_decision(make_filename(@file_index))
      $game_temp.last_file_index = @file_index
      return
    end
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # メソッド on_cancel (継承先で定義) を呼ぶ
      on_cancel
      return
    end
    # 方向ボタンの下が押された場合
    if Input.repeat?(Input::DOWN)
      # 方向ボタンの下の押下状態がリピートでない場合か、
      # またはカーソル位置が 3 より前の場合
      if Input.trigger?(Input::DOWN) or @file_index < 3
        # カーソル SE を演奏
        $game_system.se_play($data_system.cursor_se)
        # カーソルを下に移動
        @savefile_windows[@file_index].selected = false
        @file_index = (@file_index + 1) % 4
        @savefile_windows[@file_index].selected = true
        return
      end
    end
    # 方向ボタンの上が押された場合
    if Input.repeat?(Input::UP)
      # 方向ボタンの上の押下状態がリピートでない場合か、
      # またはカーソル位置が 0 より後ろの場合
      if Input.trigger?(Input::UP) or @file_index > 0
        # カーソル SE を演奏
        $game_system.se_play($data_system.cursor_se)
        # カーソルを上に移動
        @savefile_windows[@file_index].selected = false
        @file_index = (@file_index + 3) % 4
        @savefile_windows[@file_index].selected = true
        return
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● ファイル名の作成
  #     file_index : セーブファイルのインデックス (0~3)
  #--------------------------------------------------------------------------
  def make_filename(file_index)
    return "Save#{file_index + 1}.rxdata"
  end
end
#==============================================================================
# ■ Scene_End
#------------------------------------------------------------------------------
#  ゲーム終了画面の処理を行うクラスです。
#==============================================================================

class Scene_End
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
     # This is setting up the background picture
    @background = Sprite.new
    @background.bitmap = RPG::Cache.picture("background")
    @background.x = 0
    @background.y = 0
    @background.opacity = 255
    # コマンドウィンドウを作成
    s1 = ""
    s2 = ""
    s3 = ""
    @command_window = Window_Command.new(192, [s1, s2, s3])
    @command_window.x = 320 - @command_window.width / 2
    @command_window.y = 240 - @command_window.height / 2
    @command_window.opacity = 0
    @command_window.visible = false
    #===============Arrow selection pic======================
    @arrow = Sprite.new
    @arrow.bitmap = RPG::Cache.picture("arrow4")
    @arrow.x = 320 - @command_window.width / 2 - 30
    @arrow.y = 175
    @arrow.z = 999
    #=======the end window - replaces command window===========
    @end_window = Window_End.new
    @end_window.x = 320 - @command_window.width / 2 + 8
    @end_window.y = 240 - @command_window.height / 2 - 15
    #=============end window pic============================
    @endwindow = Sprite.new
    @endwindow.bitmap = RPG::Cache.picture("endwindow")
    @endwindow.opacity = 255
    @endwindow.x = 320 - @command_window.width / 2 - 10
    @endwindow.y = 240 - @command_window.height / 2 - 10
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @endwindow.dispose
    @command_window.dispose
    @end_window.dispose
    @arrow.dispose
    @background.dispose
    # タイトル画面に切り替え中の場合
    if $scene.is_a?(Scene_Title)
      # 画面をフェードアウト
      Graphics.transition
      Graphics.freeze
    end
  end
  #--------------------------------------------------------------------------
     def delay(seconds)
  for i in 0...(seconds * 1)
    sleep 0.01
    Graphics.update
  end
end
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # Little effect added
      if @background.opacity > 100
        @background.opacity -= 2
      end
      if @endwindow.opacity > 150
        @endwindow.opacity -= 1
        end
    case @command_window.index
     when 0
       @arrow.y = 175
     when 1
       @arrow.y = 220
     when 2
       @arrow.y = 265
       end
    # コマンドウィンドウを更新
    @command_window.update
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # メニュー画面に切り替え
      $scene = Scene_Menu.new(5)
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 0  # タイトルへ
        command_to_title
      when 1  # シャットダウン
        command_shutdown
      when 2  # やめる
        command_cancel
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● コマンド [タイトルへ] 選択時の処理
  #--------------------------------------------------------------------------
  def command_to_title
    # 決定 SE を演奏
    $game_system.se_play($data_system.decision_se)
    # BGM、BGS、ME をフェードアウト
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    # タイトル画面に切り替え
    $scene = Scene_Title.new
  end
  #--------------------------------------------------------------------------
  # ● コマンド [シャットダウン] 選択時の処理
  #--------------------------------------------------------------------------
  def command_shutdown
    # 決定 SE を演奏
    $game_system.se_play($data_system.decision_se)
    # BGM、BGS、ME をフェードアウト
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    # シャットダウン
    $scene = nil
  end
  #--------------------------------------------------------------------------
  # ● コマンド [やめる] 選択時の処理
  #--------------------------------------------------------------------------
  def command_cancel
    # 決定 SE を演奏
    $game_system.se_play($data_system.decision_se)
    # メニュー画面に切り替え
    $scene = Scene_Menu.new(5)
  end
end

QQ截图未命名.png (78.01 KB, 下载次数: 6)

QQ截图未命名.png

Lv1.梦旅人

梦石
0
星屑
60
在线时间
171 小时
注册时间
2008-8-19
帖子
542
2
发表于 2010-8-10 15:25:33 | 只看该作者
或许是菜单脚本一套连起的..
我用的也是菜单脚本 带的图像地图显示
没看出是哪个脚本……- -
建议LZ试试简约一点的地图脚本
HQSouL
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
62 小时
注册时间
2009-8-19
帖子
118
3
 楼主| 发表于 2010-8-10 15:27:53 | 只看该作者
奇怪啊我代码发不了只能这么发
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
171 小时
注册时间
2008-8-19
帖子
542
4
发表于 2010-8-10 15:39:57 | 只看该作者
回复 yuyinwww 的帖子


    既然你有这个地图显示的脚本
    如果没有图片的话讲讲规格我给你做
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
62 小时
注册时间
2009-8-19
帖子
118
5
 楼主| 发表于 2010-8-11 14:14:59 | 只看该作者
郁闷呢搞不懂
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
1 小时
注册时间
2010-7-26
帖子
58
6
发表于 2010-8-11 15:34:58 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-8-11
帖子
14
7
发表于 2010-8-11 18:24:39 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-29 04:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表