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

Project1

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

[已经解决] 这是什么问题?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2008-11-8
帖子
145
跳转到指定楼层
1
发表于 2009-7-26 21:32:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问这是什么问题啊!按特技时出现的!

未标题-2.jpg (31.69 KB, 下载次数: 0)

未标题-2.jpg

Lv1.梦旅人

梦石
0
星屑
200
在线时间
10 小时
注册时间
2009-7-25
帖子
656
2
发表于 2009-7-26 21:34:52 | 只看该作者
- -摆脱额,让人家帮忙改脚错误先上传脚本上来
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2008-11-8
帖子
145
3
 楼主| 发表于 2009-7-26 21:37:44 | 只看该作者
#==============================================================================
# ■ Scene_Battle (分割定义 3)
#------------------------------------------------------------------------------
#  处理战斗画面的类。
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 开始角色命令回合
  #--------------------------------------------------------------------------
  def start_phase3
    # 转移到回合 3
    @phase = 3
    # 设置觉得为非选择状态
    @actor_index = -1
    @active_battler = nil
    # 输入下一个角色的命令
    phase3_next_actor
  end
  #--------------------------------------------------------------------------
  # ● 转到输入下一个角色的命令
  #--------------------------------------------------------------------------
  def phase3_next_actor
    # 循环
    begin
      # 角色的明灭效果 OFF
      if @active_battler != nil
        @active_battler.blink = false
      end
      # 最后的角色的情况
      if @actor_index == $game_party.actors.size-1
        # 开始主回合
        start_phase4
        return
      end
      # 推进角色索引
      @actor_index += 1
      @active_battler = $game_party.actors[@actor_index]
      @active_battler.blink = true
    # 如果角色是在无法接受指令的状态就再试
    end until @active_battler.inputable?
    # 设置角色的命令窗口
    phase3_setup_command_window
  end
  #--------------------------------------------------------------------------
  # ● 转向前一个角色的命令输入
  #--------------------------------------------------------------------------
  def phase3_prior_actor
  if @throw_s == 1
    # 循环
    begin
      # 角色的明灭效果 OFF
      if @active_battler != nil
        @active_battler.blink = false
      end
      # 最初的角色的情况下
      if @actor_index == 0
        # 开始同伴指令回合
        $zdgks = 0
        start_phase2
        return
      end
      # 返回角色索引
      @actor_index -= 1
      @active_battler = $game_party.actors[@actor_index]
      @active_battler.blink = true
    # 如果角色是在无法接受指令的状态就再试
    end until @active_battler.inputable?
    # 设置角色的命令窗口
    phase3_setup_command_window
   
  else
      
      
      
      
    # 循环
    begin
      # 角色的明灭效果 OFF
      if @active_battler != nil
        @active_battler.blink = false
      end
      # 最初的角色的情况下
      if @actor_index == 0
        $zdgks = 0
        # 开始同伴指令回合
        start_phase2
        return
      end
      # 返回角色索引
      @actor_index -= 1
      @active_battler = $game_party.actors[@actor_index]
      @active_battler.blink = true
    # 如果角色是在无法接受指令的状态就再试
    end until @active_battler.inputable?
    # 设置角色的命令窗口
    phase3_setup_command_window
  end
  end
  #--------------------------------------------------------------------------
  # ● 设置角色指令窗口
  #--------------------------------------------------------------------------
  def phase3_setup_command_window
    # 同伴指令窗口无效化
    @party_command_window.active = false
    @party_command_window.visible = false
    # 角色指令窗口无效化
    $fff = 2
    @actor_command_window.active = true
    @actor_command_window.visible = true
    # 设置角色指令窗口的位置
    @actor_command_window.x = @actor_index * 160
    # 设置索引为 0
    $fff = 2
    @actor_command_window.index = 0
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (角色命令回合)
  #--------------------------------------------------------------------------
  def update_phase3
    # 敌人光标有效的情况下
    if @enemy_arrow != nil
      update_phase3_enemy_select
    # 角色光标有效的情况下
    elsif @actor_arrow != nil
      update_phase3_actor_select
    # 特技窗口有效的情况下
    elsif @skill_window != nil
      update_phase3_skill_select
    # 物品窗口有效的情况下
    elsif @item_window != nil
      update_phase3_item_select
    # 角色指令窗口有效的情况下
    elsif @actor_command_window.active
      update_phase3_basic_command
    # 杂项指令窗口有效的情况下
    elsif @bmenu != nil and @bm != 0
      update_phase3_bmenu
    elsif @status_window != nil
      update_phase3_battler_status
    end
  end



  #--------------------------------------------------------------------------
  # ● 刷新画面 (角色命令回合 : 基本命令)
  #--------------------------------------------------------------------------
  def update_phase3_basic_command
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      $fff = 0
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 转向前一个角色的指令输入
      phase3_prior_actor
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      
      # 角色指令窗口光标位置分之
      case @actor_command_window.index
      when 0  # 攻击#########################################
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 设置行动
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
        # 开始选择敌人
        start_enemy_select
      when 1  # 特技########################################
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 设置行动
        @active_battler.current_action.kind = 1
        # 开始选择特技
        start_skill_select
      when 2  # 防御########################################
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 设置行动
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 1
        # 转向下一位角色的指令输入
        phase3_next_actor
      when 3  # 物品##########################################
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 设置行动
        @active_battler.current_action.kind = 10
        @bm = 4
        #@active_battler.current_action.kind = 10
        # 开始选择物品
        start_bmenu
        #start_item_select
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (角色命令回合 : 选择特技)
  #--------------------------------------------------------------------------
  def update_phase3_skill_select
    $xuanzeteji = true
    # 设置特技窗口为可视状态
    @backsp2.visible = true
    @help2.visible =true
    @skill_window.visible = true
    # 刷新特技窗口
    @skill_window.update
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 结束特技选择
      end_skill_select
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 获取特技选择窗口现在选择的特技的数据
      @skill = @skill_window.skill
      # 无法使用的情况下
      if @skill == nil or not @active_battler.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)
      # 设置行动
      @active_battler.current_action.skill_id = @skill.id
      # 设置特技窗口为不可见状态
      @help_window.visible = false
      @backsp2.visible = false
      @help2.visible =false
      @skill_window.visible = false
      
      # 效果范围是敌单体的情况下
      if @skill.scope == 1
        # 开始选择敌人
        start_enemy_select
      # 效果范围是我方单体的情况下
      elsif @skill.scope == 3 or @skill.scope == 5
        # 开始选择角色
        start_actor_select
      # 效果范围不是单体的情况下
      else
        # 选择特技结束
        end_skill_select
        # 转到下一位角色的指令输入
        phase3_next_actor
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (角色命令回合 : 选择物品)
  #--------------------------------------------------------------------------
  def update_phase3_item_select
  if @throw_s == 1
    $xuanzewupin = true
    # 设置物品窗口为可视状态
    @help_window2.visible = true
    @item_window.visible = true
    # 设置物品窗口为可视状态
    @item_window.visible = true
    # 刷新物品窗口
    @item_window.update
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 选择物品结束
      end_item_select
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 获取物品窗口现在选择的物品资料
      @item = @item_window.item
      def dispose
      @backsp2.dispose
      end
      # 无法使用的情况下
      if @item.is_a?(RPG::Item)
        unless $game_party.item_can_use?(@item.id)
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
      elsif [email protected]_a?(RPG::Weapon)
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 设置行动
      @active_battler.current_action.item_id = [@item.is_a?(RPG::Item), @item.id]
      # 设置物品窗口为不可见状态
      @backsp2.visible =false
      @help2.visible = false
      @help_window2.visible = false
      @item_window.visible = false
#      @back_item.visible = false
      
      
      
      ###############################################################
      $xuanzewupin = false
      ###############################################################
           
      # 效果范围是敌单体的情况下
      if @item.is_a?(RPG::Weapon) or @item.scope == 1
        $game_party.lose_weapon(@item.id, 1) if @item.is_a?(RPG::Weapon)
        # 开始选择敌人
        start_enemy_select
      # 效果范围是我方单体的情况下
      elsif @item.scope == 3 or @item.scope == 5
        # 开始选择角色
        start_actor_select
      # 效果范围不是单体的情况下
      else
        @item_select_end = 1
        # 物品选择结束
        end_item_select
        # 转到下一位角色的指令输入
        phase3_next_actor
      end
      return
    end

   
   
   
  else
   
    $xuanzewupin = true
    # 设置物品窗口为可视状态
    @backsp2.visible = true
    @help2.visible = true
    @item_window.visible = true
    # 刷新物品窗口
    @item_window.update
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 选择物品结束
      @item_select_end = 0
      end_item_select
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 获取物品窗口现在选择的物品资料
      @item = @item_window.item
      # 无法使用的情况下
      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)
      # 设置行动
      @active_battler.current_action.item_id = @item.id
      # 设置物品窗口为不可见状态
      @backsp2.visible = false
      @help2.visible = false
      @help_window2.visible = false
      @item_window.visible = false
#      @back_item.visible = false
      
      
      
      ###############################################################
      $xuanzewupin = false
      ###############################################################
      
      # 效果范围是敌单体的情况下
      if @item.scope == 1
        # 开始选择敌人
        start_enemy_select
      # 效果范围是我方单体的情况下
      elsif @item.scope == 3 or @item.scope == 5
        # 开始选择角色
        start_actor_select
      # 效果范围不是单体的情况下
      else
        # 物品选择结束
        @item_select_end = 1
        end_item_select
        # 转到下一位角色的指令输入
        phase3_next_actor
      end
      return
    end
  end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面画面 (角色命令回合 : 选择敌人)
  #--------------------------------------------------------------------------
  def update_phase3_enemy_select
  if @throw_s == 1
    $xuanzewupin = false
    $xuanzeteji = false
    # 刷新敌人箭头
    @enemy_arrow.update
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      $game_party.gain_weapon(@item_window.item.id, 1) if @item_window != nil and @item_window.item.is_a?(RPG::Weapon)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 选择敌人结束
      end_enemy_select
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 设置行动
      @active_battler.current_action.target_index = @enemy_arrow.index
      # 选择敌人结束
      end_enemy_select
      # 显示特技窗口中的情况下
      if @skill_window != nil
        # 结束特技选择
        end_skill_select
      end
      # 显示物品窗口的情况下
      if @item_window != nil
        @item_select_end = 1
        # 结束物品选择
        end_item_select
      end
      # 转到下一位角色的指令输入
      phase3_next_actor
    end
  else
   
   
   
    $xuanzewupin = false
    $xuanzeteji = false
    # 刷新敌人箭头
    @enemy_arrow.update
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 选择敌人结束
      end_enemy_select
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 设置行动
      @active_battler.current_action.target_index = @enemy_arrow.index
      # 选择敌人结束
      end_enemy_select
      # 显示特技窗口中的情况下
      if @skill_window != nil
        # 结束特技选择
        end_skill_select
      end
      # 显示物品窗口的情况下
      if @item_window != nil
        # 结束物品选择
        @item_select_end = 1
        end_item_select
      end
      # 转到下一位角色的指令输入
      phase3_next_actor
    end
  end
  end
  #--------------------------------------------------------------------------
  # ● 画面更新 (角色指令回合 : 选择角色)
  #--------------------------------------------------------------------------
  def update_phase3_actor_select
    $xuanzewupin = false
    $xuanzeteji = false
    # 刷新角色箭头
    @actor_arrow.update
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 选择角色结束
      end_actor_select
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 设置行动
      @active_battler.current_action.target_index = @actor_arrow.index
      # 选择角色结束
      end_actor_select
      # 显示特技窗口中的情况下
      if @skill_window != nil
        # 结束特技选择
        end_skill_select
      end
      # 显示物品窗口的情况下
      if @item_window != nil
        # 结束物品选择
        @item_select_end = 1
        end_item_select
      end
      # 转到下一位角色的指令输入
      phase3_next_actor
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (角色命令回合 : 选择投掷)
  #--------------------------------------------------------------------------
  def update_phase3_throw_select
    # 设置物品窗口为可视状态
    @backsp2.visible = true
    @help2.visible = true
    @item_window.visible = true
    # 刷新物品窗口
    @backsp2.update
    @help.update
    @item_window.update
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 选择物品结束
      end_item_select
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 获取物品窗口现在选择的物品资料
      @item = @item_window.item
      # 无法使用的情况下
      if @item.is_a?(RPG::Item)
        unless $game_party.item_can_use?(@item.id)
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
      elsif [email protected]_a?(RPG::Weapon)
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 设置行动
      @active_battler.current_action.item_id = [@item.is_a?(RPG::Item), @item.id]
      # 设置物品窗口为不可见状态
      @backsp2.visible = false
      @help2.visible = false
      @help_window2.visible = false
      @item_window.visible = false
      # 效果范围是敌单体的情况下
      if @item.is_a?(RPG::Weapon) or @item.scope == 1
        $game_party.lose_weapon(@item.id, 1) if @item.is_a?(RPG::Weapon)
        # 开始选择敌人
        start_enemy_select
      # 效果范围是我方单体的情况下
      elsif @item.scope == 3 or @item.scope == 5
        # 开始选择角色
        start_actor_select
      # 效果范围不是单体的情况下
      else
        # 物品选择结束
        end_item_select
        # 转到下一位角色的指令输入
        phase3_next_actor
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 画面更新 (角色指令回合 : 状态窗口)
  #--------------------------------------------------------------------------
  def update_phase3_battler_status
    # 刷新状态窗口
    #@battler_status.refresh
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 结束状态窗口
      end_battler_status
      return
    end
    if Input.trigger?(Input::C)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 结束状态窗口
      end_battler_status
      return
    end
  end
   
  
   #--------------------------------------------------------------------------
  # ● 开始状态窗口
  #--------------------------------------------------------------------------
  def start_battler_status
    $xuanzeteji = false
    $xuanzewupin = false
    # 生成状态窗口
    @battler_status= Window_Status.new(@active_battler)
    @battler_status.z = 9999
    #@battler_status.width = 480
    #@battler_status.height = 416
    #################BSY######################
    #@skill_window.opacity = 0
    #@back_skill = Window_Help.new
    #@back_skill.x = @skill_window.x - 16
    #@back_skill.y = @skill_window.y - 16
    #@back_skill.height = 1000
    #@back_skill.width = 1000
    #@back_skill.opacity = 0
    #@back_skill.z = @skill_window.z - 1
    #@back_skill.contents = Bitmap.new("Graphics/System/menu/bg_skill_in_battle.png")
    ################BSY#########################
    # 无效化角色指令窗口
    $fff = 0
    @bmenu.active = false
    @actor_command_window.active = false
    @battler_status.active = true
    #@actor_command_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 状态窗口结束
  #--------------------------------------------------------------------------
  def end_battler_status
    $xuanzeteji = false
    $xuanzewupin = false
    # 释放特技窗口
    @battler_status.dispose
    @bm = 1
    # 有效化角色指令窗口
    @bmenu.active = true
    @actor_command_window.active = false
    @actor_command_window.visible = true
  end

  
  
  
  #--------------------------------------------------------------------------
  # ● 画面更新 (角色指令回合 : 选择杂项)
  #--------------------------------------------------------------------------
  def update_phase3_bmenu
    case @bmenu.index
    when 0
      @back_bmenu.contents = Bitmap.new("Graphics/Pictures/战斗_道具.png")
    when 1
      @back_bmenu.contents = Bitmap.new("Graphics/Pictures/战斗_逃跑.png")
    when 2
      @back_bmenu.contents = Bitmap.new("Graphics/Pictures/战斗_状态.png")
    end
    # 刷新杂项窗口
    @bmenu.update
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 结束杂项选择
      end_bmenu
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      @throw_s = 0
      case @bmenu.index
        when 0
          @bm = 0
          @throw_s = 0
          @active_battler.current_action.kind = 2
          # 开始选择物品
          start_item_select
        when 1
          end_bmenu
          # 不能逃跑的情况下
          if $game_temp.battle_can_escape == false
            # 演奏冻结 SE
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          # 演奏确定 SE
          $game_system.se_play($data_system.decision_se)
          # 逃走处理
         
          update_phase2_escape
        when 2
          @bm = 0
          start_battler_status
      end
      $game_system.se_play($data_system.decision_se)
      
      # 演奏确定 SE
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 开始选择杂项
  #--------------------------------------------------------------------------
  def start_bmenu
    $xuanzeteji = false
    $xuanzewupin = false

    @bmenu = Window_Bmenu.new(10,["物品","逃跑","状态"])
    @bmenu.active = true
    @bmenu.width = 0
    @bmenu.opacity = 0
    @bmenu.x = 0
    @bmenu.y = 180
    @bmenu.z = 89
    @bmenu.width = 0
   
    @back_bmenu = Window_Help.new
    @back_bmenu.opacity = 0
    @back_bmenu.height = 240
    @back_bmenu.width = 180
    @back_bmenu.y = 160
    @back_bmenu.x = -10
    @back_bmenu.z = 90
    @back_bmenu.contents = Bitmap.new("Graphics/Pictures/战斗_道具.png")
    # 无效化角色指令窗口
    $fff = 0
    @actor_command_window.active = false
    @bmenu.active = true
    #@actor_command_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 结束选择杂项
  #--------------------------------------------------------------------------
  def end_bmenu
    @bmenu.dispose
    @back_bmenu.dispose
    # 有效化角色指令窗口
    $fff = 2
    @actor_command_window.active = true
  end  
  
  
  
  
  
  #--------------------------------------------------------------------------
  # ● 开始选择敌人
  #--------------------------------------------------------------------------
  def start_enemy_select
    $xuanzeteji = false
    $xuanzewupin = false
    # 生成敌人箭头
    @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
    # 无效化角色指令窗口
    $fff = 0
    @actor_command_window.active = false
    #@actor_command_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 结束选择敌人
  #--------------------------------------------------------------------------
  def end_enemy_select
    # 释放敌人箭头
    @enemy_arrow.dispose
    @enemy_arrow = nil
    # 指令为 [战斗] 的情况下
    if @actor_command_window.index == 0
      # 有效化角色指令窗口
      $fff = 2
      @actor_command_window.active = true
      @actor_command_window.visible = true
    end
  end

  
  #--------------------------------------------------------------------------
  # ● 开始选择角色
  #--------------------------------------------------------------------------
  def start_actor_select
    $xuanzeteji = false
    $xuanzewupin = false
    # 生成角色箭头
    @actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
    @actor_arrow.index = @actor_index
    # 无效化角色指令窗口
    $fff = 0
    @actor_command_window.active = false
    #@actor_command_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 结束选择角色
  #--------------------------------------------------------------------------
  def end_actor_select
    # 释放角色箭头
    @actor_arrow.dispose
    @actor_arrow = nil
  end
  #--------------------------------------------------------------------------
  # ● 开始选择特技
  #--------------------------------------------------------------------------
  def start_skill_select
    # 生成特技窗口
    @skill_window = Window_Skill2.new(@active_battler)
    @skill_window.z = 9999
    #======================================
    @backsp2 = Sprite.new
    @backsp2.bitmap = Bitmap.new("Graphics/menu/物品.png")
    @backsp2.x = 15
    @backsp2.y = 115
    @backsp2.z = 101
    @help2 = Sprite.new
    @help2.bitmap = Bitmap.new("Graphics/menu/帮助窗口使用.png")
    @help2.x = 15
    @help2.y = -20
    @help2.z = 100
    #=====================================
    # 关联帮助窗口
    @skill_window.help_window = @help_window
    # 无效化角色指令窗口
    $fff = 0
    @actor_command_window.active = true
    @actor_command_window.visible = true
  end
  #--------------------------------------------------------------------------
  # ● 选择特技结束
  #--------------------------------------------------------------------------
  def end_skill_select
    $xuanzeteji = false
    # 释放特技窗口
    @backsp2.dispose
    @help2.dispose
    @skill_window.dispose
    @skill_window = nil
    # 隐藏帮助窗口
    @help_window.visible = false
    # 有效化角色指令窗口
    $fff = 2
    @actor_command_window.active = true
    @actor_command_window.visible = true
  end
  #--------------------------------------------------------------------------
  # ● 开始选择物品
  #--------------------------------------------------------------------------
  def start_item_select
    # 生成物品窗口
    #print "开始选择物品"
    $xuanzewupin = true
    if @throw_s == 1
    #==========================
    @backsp2 = Sprite.new
    @backsp2.bitmap = Bitmap.new("Graphics/menu/物品.png")
    @backsp2.x = 15
    @backsp2.y = 115
    @backsp2.z = 999
   
   
    @help2 = Sprite.new
    @help2.bitmap = Bitmap.new("Graphics/menu/帮助窗口使用.png")
    @help2.x = 15
    @help2.y = -20
    @help2.z = 100
    #==============================
    # 生成帮助窗口、物品窗口
    @item_window = Window_Item2.new
    @item_window.z = 9999
  else
    #==========================
   
    @backsp2 = Sprite.new
    @backsp2.bitmap = Bitmap.new("Graphics/menu/物品.png")
    @backsp2.x = 15
    @backsp2.y = 115
    @backsp2.z = 999
   
    @help2 = Sprite.new
    @help2.bitmap = Bitmap.new("Graphics/menu/帮助窗口使用.png")
    @help2.x = 15
    @help2.y = -20
    @help2.z = 100
    #==============================
    # 生成帮助窗口、物品窗口
    @item_window = Window_Item2.new
    @item_window.z = 9999
    end
    # 关联帮助窗口
    @help_window2 = Window_Help2.new
    @item_window.help_window = @help_window2
    # 无效化角色指令窗口
    $fff = 0
    @actor_command_window.active = false
#    @actor_command_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 结束选择物品
  #--------------------------------------------------------------------------
  def end_item_select
    # 释放物品窗口
   
    $xuanzewupin = false
    @help2.dispose
    @backsp2.dispose
    @item_window.dispose
    #@back_item.dispose
    @help_window2.dispose
    @backsp2=nil
    @item_window = nil
    # 有效化角色指令窗口
    if @item_select_end == 1
      @bm = 4
      end_bmenu
      $fff = 2
      @actor_command_window.active = true
    else
      @active_battler.current_action.kind = 10
      @bm = 4
      @bmenu.active = true
    end
  end
end
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1733
在线时间
484 小时
注册时间
2006-1-7
帖子
1073
4
发表于 2009-7-26 21:40:50 | 只看该作者
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 3)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 开始角色命令回合
  9.   #--------------------------------------------------------------------------
  10.   def start_phase3
  11.     # 转移到回合 3
  12.     @phase = 3
  13.     # 设置觉得为非选择状态
  14.     @actor_index = -1
  15.     @active_battler = nil
  16.     # 输入下一个角色的命令
  17.     phase3_next_actor
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 转到输入下一个角色的命令
  21.   #--------------------------------------------------------------------------
  22.   def phase3_next_actor
  23.     # 循环
  24.     begin
  25.       # 角色的明灭效果 OFF
  26.       if @active_battler != nil
  27.         @active_battler.blink = false
  28.       end
  29.       # 最后的角色的情况
  30.       if @actor_index == $game_party.actors.size-1
  31.         # 开始主回合
  32.         start_phase4
  33.         return
  34.       end
  35.       # 推进角色索引
  36.       @actor_index += 1
  37.       @active_battler = $game_party.actors[@actor_index]
  38.       @active_battler.blink = true
  39.     # 如果角色是在无法接受指令的状态就再试
  40.     end until @active_battler.inputable?
  41.     # 设置角色的命令窗口
  42.     phase3_setup_command_window
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 转向前一个角色的命令输入
  46.   #--------------------------------------------------------------------------
  47.   def phase3_prior_actor
  48.   if @throw_s == 1
  49.     # 循环
  50.     begin
  51.       # 角色的明灭效果 OFF
  52.       if @active_battler != nil
  53.         @active_battler.blink = false
  54.       end
  55.       # 最初的角色的情况下
  56.       if @actor_index == 0
  57.         # 开始同伴指令回合
  58.         $zdgks = 0
  59.         start_phase2
  60.         return
  61.       end
  62.       # 返回角色索引
  63.       @actor_index -= 1
  64.       @active_battler = $game_party.actors[@actor_index]
  65.       @active_battler.blink = true
  66.     # 如果角色是在无法接受指令的状态就再试
  67.     end until @active_battler.inputable?
  68.     # 设置角色的命令窗口
  69.     phase3_setup_command_window
  70.    
  71.   else
  72.       
  73.       
  74.       
  75.       
  76.     # 循环
  77.     begin
  78.       # 角色的明灭效果 OFF
  79.       if @active_battler != nil
  80.         @active_battler.blink = false
  81.       end
  82.       # 最初的角色的情况下
  83.       if @actor_index == 0
  84.         $zdgks = 0
  85.         # 开始同伴指令回合
  86.         start_phase2
  87.         return
  88.       end
  89.       # 返回角色索引
  90.       @actor_index -= 1
  91.       @active_battler = $game_party.actors[@actor_index]
  92.       @active_battler.blink = true
  93.     # 如果角色是在无法接受指令的状态就再试
  94.     end until @active_battler.inputable?
  95.     # 设置角色的命令窗口
  96.     phase3_setup_command_window
  97.   end
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 设置角色指令窗口
  101.   #--------------------------------------------------------------------------
  102.   def phase3_setup_command_window
  103.     # 同伴指令窗口无效化
  104.     @party_command_window.active = false
  105.     @party_command_window.visible = false
  106.     # 角色指令窗口无效化
  107.     $fff = 2
  108.     @actor_command_window.active = true
  109.     @actor_command_window.visible = true
  110.     # 设置角色指令窗口的位置
  111.     @actor_command_window.x = @actor_index * 160
  112.     # 设置索引为 0
  113.     $fff = 2
  114.     @actor_command_window.index = 0
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 刷新画面 (角色命令回合)
  118.   #--------------------------------------------------------------------------
  119.   def update_phase3
  120.     # 敌人光标有效的情况下
  121.     if @enemy_arrow != nil
  122.       update_phase3_enemy_select
  123.     # 角色光标有效的情况下
  124.     elsif @actor_arrow != nil
  125.       update_phase3_actor_select
  126.     # 特技窗口有效的情况下
  127.     elsif @skill_window != nil
  128.       update_phase3_skill_select
  129.     # 物品窗口有效的情况下
  130.     elsif @item_window != nil
  131.       update_phase3_item_select
  132.     # 角色指令窗口有效的情况下
  133.     elsif @actor_command_window.active
  134.       update_phase3_basic_command
  135.     # 杂项指令窗口有效的情况下
  136.     elsif @bmenu != nil and @bm != 0
  137.       update_phase3_bmenu
  138.     elsif @status_window != nil
  139.       update_phase3_battler_status
  140.     end
  141.   end



  142.   #--------------------------------------------------------------------------
  143.   # ● 刷新画面 (角色命令回合 : 基本命令)
  144.   #--------------------------------------------------------------------------
  145.   def update_phase3_basic_command
  146.     # 按下 B 键的情况下
  147.     if Input.trigger?(Input::B)
  148.       $fff = 0
  149.       # 演奏取消 SE
  150.       $game_system.se_play($data_system.cancel_se)
  151.       # 转向前一个角色的指令输入
  152.       phase3_prior_actor
  153.       return
  154.     end
  155.     # 按下 C 键的情况下
  156.     if Input.trigger?(Input::C)
  157.       
  158.       # 角色指令窗口光标位置分之
  159.       case @actor_command_window.index
  160.       when 0  # 攻击#########################################
  161.         # 演奏确定 SE
  162.         $game_system.se_play($data_system.decision_se)
  163.         # 设置行动
  164.         @active_battler.current_action.kind = 0
  165.         @active_battler.current_action.basic = 0
  166.         # 开始选择敌人
  167.         start_enemy_select
  168.       when 1  # 特技########################################
  169.         # 演奏确定 SE
  170.         $game_system.se_play($data_system.decision_se)
  171.         # 设置行动
  172.         @active_battler.current_action.kind = 1
  173.         # 开始选择特技
  174.         start_skill_select
  175.       when 2  # 防御########################################
  176.         # 演奏确定 SE
  177.         $game_system.se_play($data_system.decision_se)
  178.         # 设置行动
  179.         @active_battler.current_action.kind = 0
  180.         @active_battler.current_action.basic = 1
  181.         # 转向下一位角色的指令输入
  182.         phase3_next_actor
  183.       when 3  # 物品##########################################
  184.         # 演奏确定 SE
  185.         $game_system.se_play($data_system.decision_se)
  186.         # 设置行动
  187.         @active_battler.current_action.kind = 10
  188.         @bm = 4
  189.         #@active_battler.current_action.kind = 10
  190.         # 开始选择物品
  191.         start_bmenu
  192.         #start_item_select
  193.       end
  194.       return
  195.     end
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 刷新画面 (角色命令回合 : 选择特技)
  199.   #--------------------------------------------------------------------------
  200.   def update_phase3_skill_select
  201.     $xuanzeteji = true
  202.     # 设置特技窗口为可视状态
  203.     @backsp2.visible = true
  204.     @help2.visible =true
  205.     @skill_window.visible = true
  206.     # 刷新特技窗口
  207.     @skill_window.update
  208.     # 按下 B 键的情况下
  209.     if Input.trigger?(Input::B)
  210.       # 演奏取消 SE
  211.       $game_system.se_play($data_system.cancel_se)
  212.       # 结束特技选择
  213.       end_skill_select
  214.       return
  215.     end
  216.     # 按下 C 键的情况下
  217.     if Input.trigger?(Input::C)
  218.       # 获取特技选择窗口现在选择的特技的数据
  219.       @skill = @skill_window.skill
  220.       # 无法使用的情况下
  221.       if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
  222.         # 演奏冻结 SE
  223.         $game_system.se_play($data_system.buzzer_se)
  224.         return
  225.       end
  226.       # 演奏确定 SE
  227.       $game_system.se_play($data_system.decision_se)
  228.       # 设置行动
  229.       @active_battler.current_action.skill_id = @skill.id
  230.       # 设置特技窗口为不可见状态
  231.       @help_window.visible = false
  232.       @backsp2.visible = false
  233.       @help2.visible =false
  234.       @skill_window.visible = false
  235.       
  236.       # 效果范围是敌单体的情况下
  237.       if @skill.scope == 1
  238.         # 开始选择敌人
  239.         start_enemy_select
  240.       # 效果范围是我方单体的情况下
  241.       elsif @skill.scope == 3 or @skill.scope == 5
  242.         # 开始选择角色
  243.         start_actor_select
  244.       # 效果范围不是单体的情况下
  245.       else
  246.         # 选择特技结束
  247.         end_skill_select
  248.         # 转到下一位角色的指令输入
  249.         phase3_next_actor
  250.       end
  251.       return
  252.     end
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● 刷新画面 (角色命令回合 : 选择物品)
  256.   #--------------------------------------------------------------------------
  257.   def update_phase3_item_select
  258.   if @throw_s == 1
  259.     $xuanzewupin = true
  260.     # 设置物品窗口为可视状态
  261.     @help_window2.visible = true
  262.     @item_window.visible = true
  263.     # 设置物品窗口为可视状态
  264.     @item_window.visible = true
  265.     # 刷新物品窗口
  266.     @item_window.update
  267.     # 按下 B 键的情况下
  268.     if Input.trigger?(Input::B)
  269.       # 演奏取消 SE
  270.       $game_system.se_play($data_system.cancel_se)
  271.       # 选择物品结束
  272.       end_item_select
  273.       return
  274.     end
  275.     # 按下 C 键的情况下
  276.     if Input.trigger?(Input::C)
  277.       # 获取物品窗口现在选择的物品资料
  278.       @item = @item_window.item
  279.       def dispose
  280.       @backsp2.dispose
  281.       end
  282.       # 无法使用的情况下
  283.       if @item.is_a?(RPG::Item)
  284.         unless $game_party.item_can_use?(@item.id)
  285.           # 演奏冻结 SE
  286.           $game_system.se_play($data_system.buzzer_se)
  287.           return
  288.         end
  289.       elsif [email protected]_a?(RPG::Weapon)
  290.         # 演奏冻结 SE
  291.         $game_system.se_play($data_system.buzzer_se)
  292.         return
  293.       end
  294.       # 演奏确定 SE
  295.       $game_system.se_play($data_system.decision_se)
  296.       # 设置行动
  297.       @active_battler.current_action.item_id = [@item.is_a?(RPG::Item), @item.id]
  298.       # 设置物品窗口为不可见状态
  299.       @backsp2.visible =false
  300.       @help2.visible = false
  301.       @help_window2.visible = false
  302.       @item_window.visible = false
  303. #      @back_item.visible = false
  304.       
  305.       
  306.       
  307.       ###############################################################
  308.       $xuanzewupin = false
  309.       ###############################################################
  310.            
  311.       # 效果范围是敌单体的情况下
  312.       if @item.is_a?(RPG::Weapon) or @item.scope == 1
  313.         $game_party.lose_weapon(@item.id, 1) if @item.is_a?(RPG::Weapon)
  314.         # 开始选择敌人
  315.         start_enemy_select
  316.       # 效果范围是我方单体的情况下
  317.       elsif @item.scope == 3 or @item.scope == 5
  318.         # 开始选择角色
  319.         start_actor_select
  320.       # 效果范围不是单体的情况下
  321.       else
  322.         @item_select_end = 1
  323.         # 物品选择结束
  324.         end_item_select
  325.         # 转到下一位角色的指令输入
  326.         phase3_next_actor
  327.       end
  328.       return
  329.     end

  330.    
  331.    
  332.    
  333.   else
  334.    
  335.     $xuanzewupin = true
  336.     # 设置物品窗口为可视状态
  337.     @backsp2.visible = true
  338.     @help2.visible = true
  339.     @item_window.visible = true
  340.     # 刷新物品窗口
  341.     @item_window.update
  342.     # 按下 B 键的情况下
  343.     if Input.trigger?(Input::B)
  344.       # 演奏取消 SE
  345.       $game_system.se_play($data_system.cancel_se)
  346.       # 选择物品结束
  347.       @item_select_end = 0
  348.       end_item_select
  349.       return
  350.     end
  351.     # 按下 C 键的情况下
  352.     if Input.trigger?(Input::C)
  353.       # 获取物品窗口现在选择的物品资料
  354.       @item = @item_window.item
  355.       # 无法使用的情况下
  356.       unless $game_party.item_can_use?(@item.id)
  357.         # 演奏冻结 SE
  358.         $game_system.se_play($data_system.buzzer_se)
  359.         return
  360.       end
  361.       # 演奏确定 SE
  362.       $game_system.se_play($data_system.decision_se)
  363.       # 设置行动
  364.       @active_battler.current_action.item_id = @item.id
  365.       # 设置物品窗口为不可见状态
  366.       @backsp2.visible = false
  367.       @help2.visible = false
  368.       @help_window2.visible = false
  369.       @item_window.visible = false
  370. #      @back_item.visible = false
  371.       
  372.       
  373.       
  374.       ###############################################################
  375.       $xuanzewupin = false
  376.       ###############################################################
  377.       
  378.       # 效果范围是敌单体的情况下
  379.       if @item.scope == 1
  380.         # 开始选择敌人
  381.         start_enemy_select
  382.       # 效果范围是我方单体的情况下
  383.       elsif @item.scope == 3 or @item.scope == 5
  384.         # 开始选择角色
  385.         start_actor_select
  386.       # 效果范围不是单体的情况下
  387.       else
  388.         # 物品选择结束
  389.         @item_select_end = 1
  390.         end_item_select
  391.         # 转到下一位角色的指令输入
  392.         phase3_next_actor
  393.       end
  394.       return
  395.     end
  396.   end
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● 刷新画面画面 (角色命令回合 : 选择敌人)
  400.   #--------------------------------------------------------------------------
  401.   def update_phase3_enemy_select
  402.   if @throw_s == 1
  403.     $xuanzewupin = false
  404.     $xuanzeteji = false
  405.     # 刷新敌人箭头
  406.     @enemy_arrow.update
  407.     # 按下 B 键的情况下
  408.     if Input.trigger?(Input::B)
  409.       $game_party.gain_weapon(@item_window.item.id, 1) if @item_window != nil and @item_window.item.is_a?(RPG::Weapon)
  410.       # 演奏取消 SE
  411.       $game_system.se_play($data_system.cancel_se)
  412.       # 选择敌人结束
  413.       end_enemy_select
  414.       return
  415.     end
  416.     # 按下 C 键的情况下
  417.     if Input.trigger?(Input::C)
  418.       # 演奏确定 SE
  419.       $game_system.se_play($data_system.decision_se)
  420.       # 设置行动
  421.       @active_battler.current_action.target_index = @enemy_arrow.index
  422.       # 选择敌人结束
  423.       end_enemy_select
  424.       # 显示特技窗口中的情况下
  425.       if @skill_window != nil
  426.         # 结束特技选择
  427.         end_skill_select
  428.       end
  429.       # 显示物品窗口的情况下
  430.       if @item_window != nil
  431.         @item_select_end = 1
  432.         # 结束物品选择
  433.         end_item_select
  434.       end
  435.       # 转到下一位角色的指令输入
  436.       phase3_next_actor
  437.     end
  438.   else
  439.    
  440.    
  441.    
  442.     $xuanzewupin = false
  443.     $xuanzeteji = false
  444.     # 刷新敌人箭头
  445.     @enemy_arrow.update
  446.     # 按下 B 键的情况下
  447.     if Input.trigger?(Input::B)
  448.       # 演奏取消 SE
  449.       $game_system.se_play($data_system.cancel_se)
  450.       # 选择敌人结束
  451.       end_enemy_select
  452.       return
  453.     end
  454.     # 按下 C 键的情况下
  455.     if Input.trigger?(Input::C)
  456.       # 演奏确定 SE
  457.       $game_system.se_play($data_system.decision_se)
  458.       # 设置行动
  459.       @active_battler.current_action.target_index = @enemy_arrow.index
  460.       # 选择敌人结束
  461.       end_enemy_select
  462.       # 显示特技窗口中的情况下
  463.       if @skill_window != nil
  464.         # 结束特技选择
  465.         end_skill_select
  466.       end
  467.       # 显示物品窗口的情况下
  468.       if @item_window != nil
  469.         # 结束物品选择
  470.         @item_select_end = 1
  471.         end_item_select
  472.       end
  473.       # 转到下一位角色的指令输入
  474.       phase3_next_actor
  475.     end
  476.   end
  477.   end
  478.   #--------------------------------------------------------------------------
  479.   # ● 画面更新 (角色指令回合 : 选择角色)
  480.   #--------------------------------------------------------------------------
  481.   def update_phase3_actor_select
  482.     $xuanzewupin = false
  483.     $xuanzeteji = false
  484.     # 刷新角色箭头
  485.     @actor_arrow.update
  486.     # 按下 B 键的情况下
  487.     if Input.trigger?(Input::B)
  488.       # 演奏取消 SE
  489.       $game_system.se_play($data_system.cancel_se)
  490.       # 选择角色结束
  491.       end_actor_select
  492.       return
  493.     end
  494.     # 按下 C 键的情况下
  495.     if Input.trigger?(Input::C)
  496.       # 演奏确定 SE
  497.       $game_system.se_play($data_system.decision_se)
  498.       # 设置行动
  499.       @active_battler.current_action.target_index = @actor_arrow.index
  500.       # 选择角色结束
  501.       end_actor_select
  502.       # 显示特技窗口中的情况下
  503.       if @skill_window != nil
  504.         # 结束特技选择
  505.         end_skill_select
  506.       end
  507.       # 显示物品窗口的情况下
  508.       if @item_window != nil
  509.         # 结束物品选择
  510.         @item_select_end = 1
  511.         end_item_select
  512.       end
  513.       # 转到下一位角色的指令输入
  514.       phase3_next_actor
  515.     end
  516.   end
  517.   #--------------------------------------------------------------------------
  518.   # ● 刷新画面 (角色命令回合 : 选择投掷)
  519.   #--------------------------------------------------------------------------
  520.   def update_phase3_throw_select
  521.     # 设置物品窗口为可视状态
  522.     @backsp2.visible = true
  523.     @help2.visible = true
  524.     @item_window.visible = true
  525.     # 刷新物品窗口
  526.     @backsp2.update
  527.     @help.update
  528.     @item_window.update
  529.     # 按下 B 键的情况下
  530.     if Input.trigger?(Input::B)
  531.       # 演奏取消 SE
  532.       $game_system.se_play($data_system.cancel_se)
  533.       # 选择物品结束
  534.       end_item_select
  535.       return
  536.     end
  537.     # 按下 C 键的情况下
  538.     if Input.trigger?(Input::C)
  539.       # 获取物品窗口现在选择的物品资料
  540.       @item = @item_window.item
  541.       # 无法使用的情况下
  542.       if @item.is_a?(RPG::Item)
  543.         unless $game_party.item_can_use?(@item.id)
  544.           # 演奏冻结 SE
  545.           $game_system.se_play($data_system.buzzer_se)
  546.           return
  547.         end
  548.       elsif [email protected]_a?(RPG::Weapon)
  549.         # 演奏冻结 SE
  550.         $game_system.se_play($data_system.buzzer_se)
  551.         return
  552.       end
  553.       # 演奏确定 SE
  554.       $game_system.se_play($data_system.decision_se)
  555.       # 设置行动
  556.       @active_battler.current_action.item_id = [@item.is_a?(RPG::Item), @item.id]
  557.       # 设置物品窗口为不可见状态
  558.       @backsp2.visible = false
  559.       @help2.visible = false
  560.       @help_window2.visible = false
  561.       @item_window.visible = false
  562.       # 效果范围是敌单体的情况下
  563.       if @item.is_a?(RPG::Weapon) or @item.scope == 1
  564.         $game_party.lose_weapon(@item.id, 1) if @item.is_a?(RPG::Weapon)
  565.         # 开始选择敌人
  566.         start_enemy_select
  567.       # 效果范围是我方单体的情况下
  568.       elsif @item.scope == 3 or @item.scope == 5
  569.         # 开始选择角色
  570.         start_actor_select
  571.       # 效果范围不是单体的情况下
  572.       else
  573.         # 物品选择结束
  574.         end_item_select
  575.         # 转到下一位角色的指令输入
  576.         phase3_next_actor
  577.       end
  578.       return
  579.     end
  580.   end
  581.   #--------------------------------------------------------------------------
  582.   # ● 画面更新 (角色指令回合 : 状态窗口)
  583.   #--------------------------------------------------------------------------
  584.   def update_phase3_battler_status
  585.     # 刷新状态窗口
  586.     #@battler_status.refresh
  587.     # 按下 B 键的情况下
  588.     if Input.trigger?(Input::B)
  589.       # 演奏取消 SE
  590.       $game_system.se_play($data_system.cancel_se)
  591.       # 结束状态窗口
  592.       end_battler_status
  593.       return
  594.     end
  595.     if Input.trigger?(Input::C)
  596.       # 演奏取消 SE
  597.       $game_system.se_play($data_system.cancel_se)
  598.       # 结束状态窗口
  599.       end_battler_status
  600.       return
  601.     end
  602.   end
  603.    
  604.   
  605.    #--------------------------------------------------------------------------
  606.   # ● 开始状态窗口
  607.   #--------------------------------------------------------------------------
  608.   def start_battler_status
  609.     $xuanzeteji = false
  610.     $xuanzewupin = false
  611.     # 生成状态窗口
  612.     @battler_status= Window_Status.new(@active_battler)
  613.     @battler_status.z = 9999
  614.     #@battler_status.width = 480
  615.     #@battler_status.height = 416
  616.     #################BSY######################
  617.     #@skill_window.opacity = 0
  618.     #@back_skill = Window_Help.new
  619.     #@back_skill.x = @skill_window.x - 16
  620.     #@back_skill.y = @skill_window.y - 16
  621.     #@back_skill.height = 1000
  622.     #@back_skill.width = 1000
  623.     #@back_skill.opacity = 0
  624.     #@back_skill.z = @skill_window.z - 1
  625.     #@back_skill.contents = Bitmap.new("Graphics/System/menu/bg_skill_in_battle.png")
  626.     ################BSY#########################
  627.     # 无效化角色指令窗口
  628.     $fff = 0
  629.     @bmenu.active = false
  630.     @actor_command_window.active = false
  631.     @battler_status.active = true
  632.     #@actor_command_window.visible = false
  633.   end
  634.   #--------------------------------------------------------------------------
  635.   # ● 状态窗口结束
  636.   #--------------------------------------------------------------------------
  637.   def end_battler_status
  638.     $xuanzeteji = false
  639.     $xuanzewupin = false
  640.     # 释放特技窗口
  641.     @battler_status.dispose
  642.     @bm = 1
  643.     # 有效化角色指令窗口
  644.     @bmenu.active = true
  645.     @actor_command_window.active = false
  646.     @actor_command_window.visible = true
  647.   end

  648.   
  649.   
  650.   
  651.   #--------------------------------------------------------------------------
  652.   # ● 画面更新 (角色指令回合 : 选择杂项)
  653.   #--------------------------------------------------------------------------
  654.   def update_phase3_bmenu
  655.     case @bmenu.index
  656.     when 0
  657.       @back_bmenu.contents = Bitmap.new("Graphics/Pictures/战斗_道具.png")
  658.     when 1
  659.       @back_bmenu.contents = Bitmap.new("Graphics/Pictures/战斗_逃跑.png")
  660.     when 2
  661.       @back_bmenu.contents = Bitmap.new("Graphics/Pictures/战斗_状态.png")
  662.     end
  663.     # 刷新杂项窗口
  664.     @bmenu.update
  665.     # 按下 B 键的情况下
  666.     if Input.trigger?(Input::B)
  667.       # 演奏取消 SE
  668.       $game_system.se_play($data_system.cancel_se)
  669.       # 结束杂项选择
  670.       end_bmenu
  671.       return
  672.     end
  673.     # 按下 C 键的情况下
  674.     if Input.trigger?(Input::C)
  675.       @throw_s = 0
  676.       case @bmenu.index
  677.         when 0
  678.           @bm = 0
  679.           @throw_s = 0
  680.           @active_battler.current_action.kind = 2
  681.           # 开始选择物品
  682.           start_item_select
  683.         when 1
  684.           end_bmenu
  685.           # 不能逃跑的情况下
  686.           if $game_temp.battle_can_escape == false
  687.             # 演奏冻结 SE
  688.             $game_system.se_play($data_system.buzzer_se)
  689.             return
  690.           end
  691.           # 演奏确定 SE
  692.           $game_system.se_play($data_system.decision_se)
  693.           # 逃走处理
  694.          
  695.           update_phase2_escape
  696.         when 2
  697.           @bm = 0
  698.           start_battler_status
  699.       end
  700.       $game_system.se_play($data_system.decision_se)
  701.       
  702.       # 演奏确定 SE
  703.       return
  704.     end
  705.   end
  706.   #--------------------------------------------------------------------------
  707.   # ● 开始选择杂项
  708.   #--------------------------------------------------------------------------
  709.   def start_bmenu
  710.     $xuanzeteji = false
  711.     $xuanzewupin = false

  712.     @bmenu = Window_Bmenu.new(10,["物品","逃跑","状态"])
  713.     @bmenu.active = true
  714.     @bmenu.width = 0
  715.     @bmenu.opacity = 0
  716.     @bmenu.x = 0
  717.     @bmenu.y = 180
  718.     @bmenu.z = 89
  719.     @bmenu.width = 0
  720.    
  721.     @back_bmenu = Window_Help.new
  722.     @back_bmenu.opacity = 0
  723.     @back_bmenu.height = 240
  724.     @back_bmenu.width = 180
  725.     @back_bmenu.y = 160
  726.     @back_bmenu.x = -10
  727.     @back_bmenu.z = 90
  728.     @back_bmenu.contents = Bitmap.new("Graphics/Pictures/战斗_道具.png")
  729.     # 无效化角色指令窗口
  730.     $fff = 0
  731.     @actor_command_window.active = false
  732.     @bmenu.active = true
  733.     #@actor_command_window.visible = false
  734.   end
  735.   #--------------------------------------------------------------------------
  736.   # ● 结束选择杂项
  737.   #--------------------------------------------------------------------------
  738.   def end_bmenu
  739.     @bmenu.dispose
  740.     @back_bmenu.dispose
  741.     # 有效化角色指令窗口
  742.     $fff = 2
  743.     @actor_command_window.active = true
  744.   end  
  745.   
  746.   
  747.   
  748.   
  749.   
  750.   #--------------------------------------------------------------------------
  751.   # ● 开始选择敌人
  752.   #--------------------------------------------------------------------------
  753.   def start_enemy_select
  754.     $xuanzeteji = false
  755.     $xuanzewupin = false
  756.     # 生成敌人箭头
  757.     @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
  758.     # 无效化角色指令窗口
  759.     $fff = 0
  760.     @actor_command_window.active = false
  761.     #@actor_command_window.visible = false
  762.   end
  763.   #--------------------------------------------------------------------------
  764.   # ● 结束选择敌人
  765.   #--------------------------------------------------------------------------
  766.   def end_enemy_select
  767.     # 释放敌人箭头
  768.     @enemy_arrow.dispose
  769.     @enemy_arrow = nil
  770.     # 指令为 [战斗] 的情况下
  771.     if @actor_command_window.index == 0
  772.       # 有效化角色指令窗口
  773.       $fff = 2
  774.       @actor_command_window.active = true
  775.       @actor_command_window.visible = true
  776.     end
  777.   end

  778.   
  779.   #--------------------------------------------------------------------------
  780.   # ● 开始选择角色
  781.   #--------------------------------------------------------------------------
  782.   def start_actor_select
  783.     $xuanzeteji = false
  784.     $xuanzewupin = false
  785.     # 生成角色箭头
  786.     @actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
  787.     @actor_arrow.index = @actor_index
  788.     # 无效化角色指令窗口
  789.     $fff = 0
  790.     @actor_command_window.active = false
  791.     #@actor_command_window.visible = false
  792.   end
  793.   #--------------------------------------------------------------------------
  794.   # ● 结束选择角色
  795.   #--------------------------------------------------------------------------
  796.   def end_actor_select
  797.     # 释放角色箭头
  798.     @actor_arrow.dispose
  799.     @actor_arrow = nil
  800.   end
  801.   #--------------------------------------------------------------------------
  802.   # ● 开始选择特技
  803.   #--------------------------------------------------------------------------
  804.   def start_skill_select
  805.     # 生成特技窗口
  806.     @skill_window = Window_Skill2.new(@active_battler)
  807.     @skill_window.z = 9999
  808.     #======================================
  809.     @backsp2 = Sprite.new
  810.     @backsp2.bitmap = Bitmap.new("Graphics/menu/物品.png")
  811.     @backsp2.x = 15
  812.     @backsp2.y = 115
  813.     @backsp2.z = 101
  814.     @help2 = Sprite.new
  815.     @help2.bitmap = Bitmap.new("Graphics/menu/帮助窗口使用.png")
  816.     @help2.x = 15
  817.     @help2.y = -20
  818.     @help2.z = 100
  819.     #=====================================
  820.     # 关联帮助窗口
  821.     @skill_window.help_window = @help_window
  822.     # 无效化角色指令窗口
  823.     $fff = 0
  824.     @actor_command_window.active = true
  825.     @actor_command_window.visible = true
  826.   end
  827.   #--------------------------------------------------------------------------
  828.   # ● 选择特技结束
  829.   #--------------------------------------------------------------------------
  830.   def end_skill_select
  831.     $xuanzeteji = false
  832.     # 释放特技窗口
  833.     @backsp2.dispose
  834.     @help2.dispose
  835.     @skill_window.dispose
  836.     @skill_window = nil
  837.     # 隐藏帮助窗口
  838.     @help_window.visible = false
  839.     # 有效化角色指令窗口
  840.     $fff = 2
  841.     @actor_command_window.active = true
  842.     @actor_command_window.visible = true
  843.   end
  844.   #--------------------------------------------------------------------------
  845.   # ● 开始选择物品
  846.   #--------------------------------------------------------------------------
  847.   def start_item_select
  848.     # 生成物品窗口
  849.     #print "开始选择物品"
  850.     $xuanzewupin = true
  851.     if @throw_s == 1
  852.     #==========================
  853.     @backsp2 = Sprite.new
  854.     @backsp2.bitmap = Bitmap.new("Graphics/menu/物品.png")
  855.     @backsp2.x = 15
  856.     @backsp2.y = 115
  857.     @backsp2.z = 999
  858.    
  859.    
  860.     @help2 = Sprite.new
  861.     @help2.bitmap = Bitmap.new("Graphics/menu/帮助窗口使用.png")
  862.     @help2.x = 15
  863.     @help2.y = -20
  864.     @help2.z = 100
  865.     #==============================
  866.     # 生成帮助窗口、物品窗口
  867.     @item_window = Window_Item2.new
  868.     @item_window.z = 9999
  869.   else
  870.     #==========================
  871.    
  872.     @backsp2 = Sprite.new
  873.     @backsp2.bitmap = Bitmap.new("Graphics/menu/物品.png")
  874.     @backsp2.x = 15
  875.     @backsp2.y = 115
  876.     @backsp2.z = 999
  877.    
  878.     @help2 = Sprite.new
  879.     @help2.bitmap = Bitmap.new("Graphics/menu/帮助窗口使用.png")
  880.     @help2.x = 15
  881.     @help2.y = -20
  882.     @help2.z = 100
  883.     #==============================
  884.     # 生成帮助窗口、物品窗口
  885.     @item_window = Window_Item2.new
  886.     @item_window.z = 9999
  887.     end
  888.     # 关联帮助窗口
  889.     @help_window2 = Window_Help2.new
  890.     @item_window.help_window = @help_window2
  891.     # 无效化角色指令窗口
  892.     $fff = 0
  893.     @actor_command_window.active = false
  894. #    @actor_command_window.visible = false
  895.   end
  896.   #--------------------------------------------------------------------------
  897.   # ● 结束选择物品
  898.   #--------------------------------------------------------------------------
  899.   def end_item_select
  900.     # 释放物品窗口
  901.    
  902.     $xuanzewupin = false
  903.     @help2.dispose
  904.     @backsp2.dispose
  905.     @item_window.dispose
  906.     #@back_item.dispose
  907.     @help_window2.dispose
  908.     @backsp2=nil
  909.     @item_window = nil
  910.     # 有效化角色指令窗口
  911.     if @item_select_end == 1
  912.       @bm = 4
  913.       end_bmenu
  914.       $fff = 2
  915.       @actor_command_window.active = true
  916.     else
  917.       @active_battler.current_action.kind = 10
  918.       @bm = 4
  919.       @bmenu.active = true
  920.     end
  921.   end
  922. end
复制代码
不用引用,用代码。
不然还要人家自己数出来 646 行 - - !
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
200
在线时间
10 小时
注册时间
2009-7-25
帖子
656
5
发表于 2009-7-26 21:42:52 | 只看该作者
- -打包上传~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2008-11-8
帖子
145
6
 楼主| 发表于 2009-7-26 21:54:46 | 只看该作者
基本工程!战斗时,先按普通攻击,左右选择,再取消,再按技能就能发现这个错误!

Project1.rar

1.08 MB, 下载次数: 65

回复 支持 反对

使用道具 举报

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
7
发表于 2009-7-26 21:58:19 | 只看该作者
将 646 行修改为
    @battler_status.dispose if @battler_status != nil

当然不排除还有其他问题的出现 - -~

ps:偶用容错脚本3进行测试,貌似没有出现楼主所说的情况~

ps:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
200
在线时间
10 小时
注册时间
2009-7-25
帖子
656
8
发表于 2009-7-26 22:06:29 | 只看该作者
貌似楼主缺少windowskin
@skill_window.windowskin = RPG::Cache.windowskin
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2008-11-8
帖子
145
9
 楼主| 发表于 2009-7-26 22:10:22 | 只看该作者
不行啊!按版主改了后就变成了649行有问题!

未标题-2.jpg (30.1 KB, 下载次数: 2)

未标题-2.jpg
回复 支持 反对

使用道具 举报

Lv1.梦旅人

~琉璃の雪~<

梦石
0
星屑
49
在线时间
36 小时
注册时间
2008-11-6
帖子
3678
10
发表于 2009-7-26 22:49:14 | 只看该作者
你用个容错脚本试试,把它插入main之前:

#==============================================================================
# ■ 容错脚本第2版                                              BY 亿万星辰
#------------------------------------------------------------------------------
#  道理很简单,缺什么就不用什么……全缺的话会比较恐怖,比如默认的范例就是……
#   不过这里要声明的一点,这个只针对素材的缺失,如果data文件夹下的数据缺失的话,
#   这样再用容错似乎没什么意义……   (数据库都没了还容什么错……)
#
#   下一版本考虑增加一些替代用的素材。
#
#   默认范例为新建工程时生成的默认地图……只是RTP没选而已。
#==============================================================================
class Game_System
  #--------------------------------------------------------------------------
  # ● 演奏 BGM
  #     bgm : 演奏的 BGM
  #--------------------------------------------------------------------------
  def bgm_play(bgm)
    @playing_bgm = bgm
    begin
      if bgm != nil and bgm.name != ""
        Audio.bgm_play("Audio/BGM/" + bgm.name, bgm.volume, bgm.pitch)
      else
        Audio.bgm_stop
      end
    rescue Errno::ENOENT
      Audio.bgm_stop
      unless $need_file.include?("Audio/BGM/#{bgm.name}")
        $need_file.push("Audio/BGM/#{bgm.name}")
        f = File.open("./log.txt","a")
        f.write("Audio/BGM/#{bgm.name}" + "\n")
        f.close
      end
    end
    Graphics.frame_reset
  end
  #--------------------------------------------------------------------------
  # ● 演奏 BGS
  #     bgs : 演奏的 BGS
  #--------------------------------------------------------------------------
  def bgs_play(bgs)
    @playing_bgs = bgs
    begin
      if bgs != nil and bgs.name != ""
        Audio.bgs_play("Audio/BGS/" + bgs.name, bgs.volume, bgs.pitch)
      else
        Audio.bgs_stop
      end
    rescue Errno::ENOENT
      Audio.bgs_stop
      unless $need_file.include?("Audio/BGM/#{bgs.name}")
        $need_file.push("Audio/BGM/#{bgs.name}")
        f = File.open("./log.txt","a")
        f.write("Audio/BGM/#{bgs.name}" + "\n")
        f.close
      end
    end
    Graphics.frame_reset
  end
  #--------------------------------------------------------------------------
  # ● ME 的演奏
  #     me : 演奏的 ME
  #--------------------------------------------------------------------------
  def me_play(me)
    begin
      if me != nil and me.name != ""
        Audio.me_play("Audio/ME/" + me.name, me.volume, me.pitch)
      else
        Audio.me_stop
      end
    rescue Errno::ENOENT
      Audio.me_stop
      unless $need_file.include?("Audio/BGM/#{me.name}")
        $need_file.push("Audio/BGM/#{me.name}")
        f = File.open("./log.txt","a")
        f.write("Audio/BGM/#{me.name}" + "\n")
        f.close
      end
    end
    Graphics.frame_reset
  end
  #--------------------------------------------------------------------------
  # ● SE 的演奏
  #     se : 演奏的 SE
  #--------------------------------------------------------------------------
  def se_play(se)
    begin
      if se != nil and se.name != ""
        Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
      end
    rescue Errno::ENOENT
      Audio.se_stop
      unless $need_file.include?("Audio/BGM/#{se.name}")
        $need_file.push("Audio/BGM/#{se.name}")
        f = File.open("./log.txt","a")
        f.write("Audio/BGM/#{se.name}" + "\n")
        f.close
      end
    end
  end
end

module RPG
  module Cache
    def self.load_bitmap(folder_name, filename, hue = 0)
      begin
        path = folder_name + filename
        if not @cache.include?(path) or @cache[path].disposed?
          if filename != ""
            @cache[path] = Bitmap.new(path)
          else
            @cache[path] = Bitmap.new(32, 32)
          end
        end
        if hue == 0
          @cache[path]
        else
          key = [path, hue]
          if not @cache.include?(key) or @cache[key].disposed?
            @cache[key] = @cache[path].clone
            @cache[key].hue_change(hue)
          end
          @cache[key]
        end
      rescue Errno::ENOENT
        unless $need_file.include?("#{folder_name}#{filename}")
          $need_file.push("#{folder_name}#{filename}")
          f = File.open("./log.txt","a")
          f.write("#{folder_name}#{filename}" + "\n")
          f.close
        end
        self.load_bitmap(folder_name, "", hue)
      end
    end
  end
end
~现在开始自绘头像~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 23:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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