Project1

标题: 请教各位大大如何吧人物介绍整合到菜单去 [打印本页]

作者: 346580358    时间: 2008-6-1 07:45
标题: 请教各位大大如何吧人物介绍整合到菜单去
class Window_Command_New < Window_Selectable
  def initialize(actors=4,enemynums=0)
    super(438, 20, 172, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = HS::OPACITY
    @commands = ["战斗","物品","魔法","状态","装备","队列","人设","系统"]
    @item_max = 8
    @column_max = 2
    @actors = actors
    @enemynums = enemynums
    draw_item(0, @enemynums==0 ? disabled_color : normal_color)
    draw_item(1, normal_color)
    draw_item(2, @actors==0 ? disabled_color : normal_color)
    draw_item(3, @actors==0 ? disabled_color : normal_color)
    draw_item(4, @actors==0 ? disabled_color : normal_color)
    draw_item(5, @actors==0 ? disabled_color : normal_color)
    draw_item(6, normal_color)
    draw_item(7, normal_color)
    self.index = 0
  end
  def draw_item(index, color)
    self.contents.font.color = color
    x = 4 + index % 2 * 70
    y = index / 2 * 32
    rect = Rect.new(x, y, 64, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, @commands[index], 1)
  end
  def update_cursor_rect
    x = 4 + index % 2 * 70
    y = index / 2 * 32
    self.cursor_rect.set(x, y, 64, 32)
  end
end

class Scene_Menu
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  def main
#   check_enemy_in_map($game_player.x,$game_player.y)
    cmd = Window_Command_New.new($game_party.actors.size)
    cmd.index = @menu_index
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      cmd.update
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      end
      if Input.trigger?(Input::C)
        case cmd.index
        when 0
          $game_system.se_play($data_system.buzzer_se)
        when 1
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Item.new
        when 2
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Skill.new
        when 3
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Status.new
        when 4
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Equip.new
        when 5
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Change_Turn.new
        when 6
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Charactor.new  
        when 7
        # 游戏结束
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到游戏结束画面
        $scene = Scene_End.new
        end
      end
      if $scene != self
        break
      end
    end
    Graphics.freeze
    cmd.dispose
  end
end


以上是菜单的

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================


# 人物介绍     Ver. 1.1          作者: Claimh     翻译与修正:柳柳
#------------------------------------------------------------------------------
# http://www.k3.dion.ne.jp/~claimh/
#==============================================================================
  
  #——功能简介:在状态页面按下回车键会进入人物介绍页面。
  #——如果想自行建立功能,使用$scene = Scene_Charactor.new(角色编号)即可
  #——如果自行建立了功能不想使用默认的切换,去掉217行以后的内容
  
  #——以下数组,如果人物超过8人,请自行继续添加(一般游戏没那么多主人公吧)
  #——如果想更改内容,比如把“体重”改为“智商”,请修改102-107行的文字内容
  
  # 从状态页面切换至人物介绍页面的按键
  CHENGE_KEY = Input::C
  #--------------------------------------------------------------------------
  # 人物年龄 (自定义)
  #--------------------------------------------------------------------------
  CHARA_AGE = ["17","16","??","??","??","??","15","15"]
  #--------------------------------------------------------------------------
  # 人物出生地
  #--------------------------------------------------------------------------
  CHARA_FROM = ["希腊","罗马","??","??","??","??","雷都","日本东京"]
  #--------------------------------------------------------------------------
  # 人物身高
  #--------------------------------------------------------------------------
  CHARA_H = ["170","160","??","??","??","??","162","165"]
  #--------------------------------------------------------------------------
  # 人物体重
  #--------------------------------------------------------------------------
  CHARA_W = ["60","50","??","??","??","??","46","53"]
  #--------------------------------------------------------------------------
  # 人物介绍,可以写多行
  #--------------------------------------------------------------------------
  # 人物1号介绍
  L1 = "RPG制作大师XP的标准主人公+形象代言人"
  L2 = "是一个外表不经世事、内心坚强无比的小伙子"
  L3 = ""               
  L_SET1 = [L1, L2, L3]  # 人物1号的数组
  # 人物2号介绍
  L1 = "RPG制作大师XP的1号女主角"
  L2 = "一个充满人性温情的女战士"
  L3 = ""
  L_SET2 = [L1, L2, L3]  # 人物2号的数组
  # 人物3号介绍
  L1 = ""
  L2 = ""
  L3 = ""
  L_SET3 = [L1, L2, L3]
  # 人物4号介绍
  L1 = ""
  L2 = ""
  L3 = ""
  L_SET4 = [L1, L2, L3]
  # 人物5号介绍
  L1 = ""
  L2 = ""
  L3 = ""
  L_SET5 = [L1, L2, L3]
  # 人物6号介绍
  L1 = ""
  L2 = ""
  L3 = ""
  L_SET6 = [L1, L2, L3]
  # 人物7号介绍
  L1 = "充满冷酷的红魔法师"
  L2 = "11岁,父母阵亡后加入了杀手组织"
  L3 = "13岁,在一次行动失利中被抓到地牢严刑拷打长达半年"
  L4 = "14岁,一个人杀光所有蹂躏她的狱卒,独自踏上旅途"
  L_SET7 = [L1, L2, L3, L4]
  # 人物8号介绍
  L1 = "娇生惯养的贵族魔法师,从不懂人世艰难"
  L2 = "自以为实力天下第一"
  L3 = ""
  L_SET8 = [L1, L2, L3]

  # 人物介绍数组,如果不够继续添加。
  CHARA_INFO = [L_SET1,L_SET2,L_SET3,L_SET4,L_SET5,L_SET6,L_SET7,L_SET8]


#==============================================================================
# Window_Charactor
#==============================================================================

class Window_Charactor < Window_Base
  #--------------------------------------------------------------------------
  # actor : 初始化的角色
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_battler_graphics(@actor, 100, 200)
    self.contents.font.color.set(255, 255,50)
    self.contents.draw_text(250, 10, 80, 32, "姓名")
    self.contents.draw_text(250, 50, 80, 32, "年龄")
    self.contents.draw_text(250, 90, 80, 32, "出生地")
    self.contents.draw_text(250, 130, 80, 32, "身高")
    self.contents.draw_text(250, 170, 80, 32, "体重")
    self.contents.font.color = normal_color
    draw_actor_name(@actor, 350, 10)
    draw_actor_age(@actor, 350, 50)
    draw_actor_from(@actor, 350, 90)
    draw_actor_height(@actor, 350, 130)   
    draw_actor_weight(@actor, 350, 170)
    draw_actor_other(@actor, 50, 250)
  end
end

class Window_Base < Window
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  def draw_battler_graphics(actor, x, y)
    battler=RPG::Cache.battler(actor.battler_name, actor.battler_hue)
    w = battler.width
    h = battler.height
    self.contents.blt(x-w/2, y-h, battler, Rect.new(0, 0, w,h))
  end

  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  def draw_actor_age(actor, x, y)
    self.contents.draw_text(x, y, 80, 32, CHARA_AGE[actor.id-1])
  end

  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  def draw_actor_from(actor, x, y)
    self.contents.draw_text(x, y, 180, 32, CHARA_FROM[actor.id-1])
  end

  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  def draw_actor_height(actor, x, y)
    self.contents.draw_text(x, y , 200, 32, CHARA_H[actor.id-1])
  end

  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  def draw_actor_weight(actor, x, y)
    self.contents.draw_text(x, y, 250, 32, CHARA_W[actor.id-1])
  end

  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  def draw_actor_other(actor, x, y)
    info = CHARA_INFO[actor.id-1]
    for i in 0...info.size
      self.contents.draw_text(x, y+32*i, 600, 32, info)
    end
  end
end


#==============================================================================
# Scene_Charactor
#==============================================================================

class Scene_Charactor
  #--------------------------------------------------------------------------
  #   actor_index :角色编号
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0, equip_index = 0)
    @actor_index = actor_index
  end
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  def main
    @actor = $game_party.actors[@actor_index]
    @status_window = Window_Charactor.new(@actor)
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  def update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(3)
      return
    end
    if Input.trigger?(Input::R)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Charactor.new(@actor_index)
      return
    end
    if Input.trigger?(Input::L)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Charactor.new(@actor_index)
      return
    end
  end
end


#==============================================================================
# Scene_Status
#==============================================================================

class Scene_Status
  alias update_chara update
  def update
    if Input.trigger?(CHENGE_KEY)
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Charactor.new(@actor_index)
      return
    end
    update_chara
  end
end



#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================


上面的是人物介绍的代码


问题在于~~为什么我弄去菜单之后~打开只能显示第一个介绍呢~~怎么样才可以实现翻页~介绍下一个人物呢???谢谢各位大大~>< [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 3535    时间: 2008-6-1 07:55
按键盘Q和W即可翻页。 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1