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

Project1

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

[已经过期] 各位大哥帮帮我(关于cp条的脚本出错了)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
41 小时
注册时间
2010-6-11
帖子
43
跳转到指定楼层
1
发表于 2010-9-20 12:11:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 xwdcom 于 2010-9-20 12:14 编辑

以下是脚本:


#================================================
#★战斗者类
#================================================
class Game_Battler
   attr_accessor :cp
   attr_accessor :cp_total
   attr_accessor :cp_turn #角色能不行动时,计算角色实际cp爆满次数,用以代替回合,计算状态解除时机
      
   attr_accessor :slip_damage
   attr_accessor :auto_damage
  
   
   alias oldinitialize  initialize
   def initialize
     @cp = 0
     @cp_total = false
     @cp_turn = 0
     @act_status = 0
     @slip_damage = 0
     @auto_damage = 0
   
     oldinitialize
   end
  def maxcp
    return 100
  end  
#--------------------------------------------------------------------------
  # ● 应用连续伤害效果
  #--------------------------------------------------------------------------
  def slip_damage_effect
    if slip_damage? and @hp > 0
      @hp_damage = apply_variance(maxhp / 10, 10)
      @hp_damage = @hp - 1 if @hp_damage >= @hp
      @slip_damage = @hp_damage
      self.hp -= @hp_damage
    end
  end

end #class  
#============================================================================
#===============================================
#★角色队伍类
#===============================================
class Game_Party < Game_Unit
attr_accessor :actor_battler
alias oldinitialize initialize
def initialize
  oldinitialize
  @actor_battler = []
end
end #class  
#================================================
#★敌人队伍类
#================================================
class Game_Troop < Game_Unit
  attr_accessor :enemy_battler
alias  oldinitialize initialize
def initialize
   oldinitialize
   @enemy_battler = []
end  

end#class
#================================================
#★cp条处理类
#================================================

class Scene_CP
    attr_accessor :stop
    attr_accessor :in_battler
    attr_accessor :cp_battler
    BATTLE_SPEED = 0.8
    def initialize
      @stop = false
      @all_agi = 0
      @v =  Viewport.new(0, 0, 544, 90)
      @count = 0
      @cpline = Sprite.new(@v)
      @cpline.bitmap = Bitmap.new(544,416)
      bitmap = Bitmap.new("Graphics/system/cp条")
      @cpline.bitmap.blt(105,8,bitmap,bitmap.rect)
      @cp_battler = {}
      for battler in $game_party.members + $game_troop.members
        @all_agi += battler.agi
        @cp_battler[battler] = Sprite_cpbattler.new
        if battler.is_a?(Game_Actor)
          name = battler.id.to_s + "_cp"
          if FileTest.exist?("Graphics/system/#{name}.jpg") or FileTest.exist?("Graphics/system/#{name}.png") or FileTest.exist?("Graphics/system/#{name}.bmp")
              bitmap = Bitmap.new("Graphics/system/#{name}")
              rect = bitmap.rect
              @cp_battler[battler].bitmap = bitmap
          else
              
               
               bitmap = Bitmap.new("Graphics/Characters/#{battler.character_name}")
                sign = battler.character_name[/^[\!\$]./]
                if sign != nil and sign.include?('$')
                  cw = bitmap.width / 3
                  ch = bitmap.height / 4
                  
                else
                  cw = bitmap.width / 12
                  ch = bitmap.height / 8
                  
                end
                 n = battler.character_index
                 rect = Rect.new((n%4*3+1)*cw, (n/4*4+2)*ch, cw, ch)
               
                 @cp_battler[battler].bitmap = Bitmap.new(cw,ch)
          end
         
         
          @cp_battler[battler].bitmap.blt(0, 0,bitmap,rect)
         
        else
          name = battler.original_name + "_敌人cp"
          if FileTest.exist?("Graphics/system/#{name}.jpg") or FileTest.exist?("Graphics/system/#{name}.png") or FileTest.exist?("Graphics/system/#{name}.bmp")
             @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/#{name}")
          else
             @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/敌人cp")
          end
             @cp_battler[battler].bitmap.blt(80,60, @cp_battler[battler].bitmap,  @cp_battler[battler].bitmap.rect)
        end  
        @cp_battler[battler].z = 101
        @cp_battler[battler].visible = false
        
      end
    end   
   
    #===========================================
   
   
   
   
    #===========================================
   
   
    def update
     
      return if @stop
      
      
      for battler in $game_party.members + $game_troop.members
        if (@cp_battler[battler].disposed? or @cp_battler[battler].opacity == 0) and battler.dead?
          @cp_battler.delete(@cp_battler[battler])
          next
        end  
        if battler.dead?
         if  @cp_battler.include?(battler)
             @cp_battler[battler].collapse = true
            
          end   
          battler.cp = 0
          next
        end  
       battler.cp = [[battler.cp + BATTLE_SPEED*10*battler.agi / @all_agi,0].max,battler.maxcp].min if battler.movable?
       battler.cp_turn = [[battler.cp_turn+BATTLE_SPEED*10*battler.agi / @all_agi, 0].max,battler.maxcp].min
       if battler.cp == battler.maxcp
           if battler.is_a?(Game_Actor)
              name = battler.id.to_s + "_a_cp"
              if FileTest.exist?("Graphics/system/#{name}.jpg") or FileTest.exist?("Graphics/system/#{name}.png") or FileTest.exist?("Graphics/system/#{name}.bmp")
               bitmap = Bitmap.new("Graphics/system/#{name}")
               rect = bitmap.rect
               @cp_battler[battler].bitmap = bitmap
              else
               
                bitmap = Bitmap.new("Graphics/Characters/#{battler.character_name}")
                sign = battler.character_name[/^[\!\$]./]
                if sign != nil and sign.include?('$')
                  cw = bitmap.width / 3
                  ch = bitmap.height / 4
                else
                  cw = bitmap.width / 12
                  ch = bitmap.height / 8
                end
                 n = battler.character_index
                 
                 rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
               
                 @cp_battler[battler].bitmap = Bitmap.new(cw,ch)
                 
              end
              
              @cp_battler[battler].bitmap.blt(0,0,bitmap,rect)
           
          else
            name = battler.original_name + "_a_cp"
            if FileTest.exist?("Graphics/system/#{name}.jpg") or FileTest.exist?("Graphics/system/#{name}.png") or FileTest.exist?("Graphics/system/#{name}.bmp")
            @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/#{name}")
            else
            @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/a_敌人cp")
            end
            @cp_battler[battler].bitmap.blt(80,60,  @cp_battler[battler].bitmap,  @cp_battler[battler].bitmap.rect)
          end  
            @cp_battler[battler].z = 101
            battler.cp_total = true
      elsif battler.cp_total == true
          if battler.is_a?(Game_Actor)
             name = battler.id.to_s + "_cp"
             if FileTest.exist?("Graphics/system/#{name}.jpg") or FileTest.exist?("Graphics/system/#{name}.png") or FileTest.exist?("Graphics/system/#{name}.bmp")
              bitmap = Bitmap.new("Graphics/system/#{name}")
              rect = bitmap.rect
              @cp_battler[battler].bitmap = bitmap
             else
              
                bitmap =  Bitmap.new("Graphics/Characters/#{battler.character_name}")
                sign = battler.character_name[/^[\!\$]./]
                if sign != nil and sign.include?('$')
                  cw = bitmap.width / 3
                  ch = bitmap.height / 4
                else
                  cw = bitmap.width / 12
                  ch = bitmap.height / 8
                end
                 n = battler.character_index
                 rect = Rect.new((n%4*3+1)*cw, (n/4*4+2)*ch, cw, ch)
                 
                 @cp_battler[battler].bitmap = Bitmap.new(cw,ch)
                 
                 
              end
            
             @cp_battler[battler].bitmap.blt(0,0,bitmap,rect)
            
          else
                name = battler.original_name + "_敌人cp"
             if FileTest.exist?("Graphics/system/#{name}.jpg") or FileTest.exist?("Graphics/system/#{name}.png") or FileTest.exist?("Graphics/system/#{name}.bmp")
                 @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/#{name}")
               
             else
                 @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/敌人cp")
               
             end
               
               @cp_battler[battler].bitmap.blt(80,60, @cp_battler[battler].bitmap, @cp_battler[battler].bitmap.rect)
            end
            battler.cp_total = false
            @cp_battler[battler].z = 105
            
      end
         
      @cp_battler[battler].visible = true if @cp_battler[battler].visible == false
      @cp_battler[battler].opacity = 255
      @cp_battler[battler].y = 30
      @cp_battler[battler].x = 95+300*battler.cp/battler.maxcp
      if battler.cp_turn == battler.maxcp
        #=================================
        last_st = battler.states
        #=================================
        battler.remove_states_auto unless battler.movable?
        battler.slip_damage_effect
        battler.do_auto_recovery if battler.is_a?(Game_Actor)
        #====================================
        if battler.states != last_st
          $scene.display_state_changes(battler)
        
        end
        #====================================
        
        battler.cp_turn = 0
      end  
      if battler.cp == battler.maxcp
         if battler.is_a?(Game_Actor)
           $game_party.actor_battler.push(battler)
         else
           battler.make_action
           $game_troop.enemy_battler.push(battler)
           battler.make_action
          end   
      else
        next
      end  
      
      
      
   end     
end

  def dispose
    for j in 0..25
    @cpline.opacity -= 10
    for i in @cp_battler.values
      unless i.disposed?
      i.opacity -= 10
      end
    end  
     Graphics.update
    end  
    @v.dispose
    @cpline.dispose
    for i in @cp_battler.values
      i.dispose
    end
  end  
end
  
  
  
  
  
  
  
  
  class Sprite_cpbattler < Sprite
    attr_accessor :collapse
   
    def initialize (viewport = nil)
      super (viewport)
     
      @effect_duration = 0        
      @collapse = false
    end
    def update
       super
  
     if self.collapse == true and self.opacity != 0
   
      @effect_type = 5
      @effect_duration = 48
      self.color.set(255, 128, 128, 128)
      for i in 0..48
      self.opacity = 256 - (48 - @effect_duration) * 6
      if self.opacity == 0
   
      break
      end  
      Graphics.update
      @effect_duration -= 1
      end
     
      self.collapse = false
      self.color.set(255,255,255,5)
     end
     
    end
   
def dispose
     if self.bitmap != nil
      self.bitmap.dispose
     end
   
    super
  end
      
end  

#==========================================================================
#
#==========================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
    super
    $game_temp.in_battle = true
    @spriteset = Spriteset_Battle.new
    @message_window = Window_BattleMessage.new
    @action_battlers = []
    @cp_battle = Scene_CP.new
    @cp_battle.stop = false
    create_info_viewport
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    update_basic(true)
    update_info_viewport                  # 更新显示信息的视区
    if $game_message.visible
      @info_viewport.visible = false
      @message_window.visible = true
    end
    unless $game_message.visible          # 在显示消息以外的情况
      return if judge_win_loss            # 判断胜败
      update_scene_change
      if @target_enemy_window != nil
        update_target_enemy_selection     # 选择敌方对象
      elsif @target_actor_window != nil
        update_target_actor_selection     # 选择对象角色
      elsif @skill_window != nil
        update_skill_selection            # 选择特技
      elsif @item_window != nil
        update_item_selection             # 选择物品
      elsif @party_command_window.active
        update_party_command_selection    # 选择同伴指令
      elsif @actor_command_window.active
        update_actor_command_selection    # 选择角色指令
      #=================================
      elsif @cp_battle.stop ==  false
        active_battler_update
      #=================================  
        
      else
        process_battle_event              # 战斗处理
        process_action                    # 战斗行动
        process_battle_event              # 处理战斗事件
      end
    end
  end

  #=============================================
  #★角色回合的处理函数
  #=============================================
  
  
  def next_actor
   
   
    @info_viewport.visible = true
   
    @message_window.visible = true
    @status_window.update
  
    loop do
   
      if @actor_index == @actor_battler.size - 1
        
        start_main
        return
        
      end   
      
      @actor_index += 1
      
      index = 0
      for battler in $game_party.members
        if battler == @actor_battler[@actor_index]
          break
        else
          index += 1
        end
      end  
      @status_window.index = index
     
      
      @active_battler = @actor_battler[@actor_index]
     
     
     
     
      if @active_battler.auto_battle
        @active_battler.make_action
        next
      end
      break if @active_battler.inputable?
    end
  
    start_party_command
  end
  
  #====================================================
  #★开始角色战斗与逃跑选择
  #====================================================
  def start_party_command
      @status_window.refresh
      @party_command_window.active = true
      @party_command_window.index = 0
      @actor_command_window.active = false
      @message_window.visible = false
      
  
  end
  #=====================================================
  #--------------------------------------------------------------------------
  # ● 更新同伴战斗指令
  #--------------------------------------------------------------------------
  def update_party_command_selection
    if Input.trigger?(Input::C)
      case @party_command_window.index
      when 0  # 战斗
        Sound.play_decision
      
        start_actor_command_selection
      when 1  # 逃跑
        if $game_troop.can_escape == false
          Sound.play_buzzer
          return
        end
        Sound.play_decision
        process_escape
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 开始选择角色指令
  #--------------------------------------------------------------------------
  def start_actor_command_selection
    @party_command_window.active = false
    @actor_command_window.setup(@active_battler)
    @actor_command_window.active = true
    @actor_command_window.index = 0
   

  end
  #==============================================
  #★指令窗口刷新
  #==============================================
   def update_actor_command_selection
   
    if Input.trigger?(Input::B)
      Sound.play_cancel
      start_party_command
    elsif Input.trigger?(Input::C)
      case @actor_command_window.index
      when 0  # 攻击
        Sound.play_decision
        @active_battler.action.set_attack
        start_target_enemy_selection
      when 1  # 特技
        Sound.play_decision
        start_skill_selection
      when 2  # 防御
        Sound.play_decision
        @active_battler.action.set_guard
        
        @active_battler.cp = 0
        next_actor
      when 3  # 物品
        Sound.play_decision
        start_item_selection
      
      when 4 #逃跑
        if $game_troop.can_escape == false
          Sound.play_buzzer
          return
        end
        Sound.play_decision
        process_escape
    end
    end
  end
  #========================================================
  #--------------------------------------------------------------------------
  # ● 更新选择对象敌方角色
  #--------------------------------------------------------------------------
  def update_target_enemy_selection
    @target_enemy_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_target_enemy_selection
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      @active_battler.action.target_index = @target_enemy_window.enemy.index
      end_target_enemy_selection
      end_skill_selection
      end_item_selection
     
      #============================
       @active_battler.cp = 0
      #============================
       next_actor
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新对象角色选择
  #--------------------------------------------------------------------------
  def update_target_actor_selection
    @target_actor_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_target_actor_selection
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      @active_battler.action.target_index = @target_actor_window.index
      end_target_actor_selection
      end_skill_selection
      end_item_selection
     
      #=========================
      @active_battler.cp = 0
      #=========================
       next_actor
    end
  end
  #--------------------------------------------------------------------------
  # ● 确定特技
  #--------------------------------------------------------------------------
  def determine_skill
    @active_battler.action.set_skill(@skill.id)
    @skill_window.active = false
    if @skill.need_selection?
      if @skill.for_opponent?
        start_target_enemy_selection
      else
        start_target_actor_selection
      end
    else
      end_skill_selection
      
      #=========================
      @active_battler.cp = 0
      #=========================
      @party_command_window.active = false
      next_actor
    end
  end
  #=========================================
  #★物品使用决定  处理
  #=========================================
  
  
  def determine_item
    @active_battler.action.set_item(@item.id)
    @item_window.active = false
    if @item.need_selection?
      if @item.for_opponent?
        start_target_enemy_selection
      else
        start_target_actor_selection
      end
    else
      end_item_selection
      
       @active_battler.cp = 0
      next_actor
    end
  end
  #--------------------------------------------------------------------------
  # ● 开始处理战斗
  #--------------------------------------------------------------------------
  def process_battle_start
    @message_window.clear
    wait(10)
    for name in $game_troop.enemy_names
      text = sprintf(Vocab::Emerge, name)
      $game_message.texts.push(text)
    end
    if $game_troop.preemptive
      text = sprintf(Vocab::Preemptive, $game_party.name)
      $game_message.texts.push(text)
       for battler in $game_party.members
         battler.cp = battler.maxcp
       end  
       $game_troop.preemptive = false
    elsif $game_troop.surprise
      text = sprintf(Vocab::Surprise, $game_party.name)
      $game_message.texts.push(text)
      for battler in $game_troop.members
        battler.cp = battler.maxcp
      end
      $game_troop.surprise = false
    end
    wait_for_message
    @message_window.clear
    @message_window.visible = false
    make_escape_ratio
    process_battle_event
   
    #=====================
   
    @status_window.index = @actor_index = -1
    @cp_battle.stop = false
    #=====================
  end
  #--------------------------------------------------------------------------
  # ● 处理逃跑
  #--------------------------------------------------------------------------
  def process_escape
    @info_viewport.visible = false
    @party_command_window.active = false
    @message_window.visible = true
    text = sprintf(Vocab::EscapeStart, $game_party.name)
    $game_message.texts.push(text)
    if $game_troop.preemptive
      success = true
    else
      success = (rand(100) < @escape_ratio)
    end
    Sound.play_escape
    if success
      #=============================
      @cp_battle.dispose
      #=============================
      for battler in $game_party.members
        battler.cp = 0
      end  
      wait_for_message
      battle_end(1)
    else
      @escape_ratio += 10
      @active_battler.cp = 0
      $game_message.texts.push('\.' + Vocab::EscapeFailure)
      wait_for_message
      @active_battler.action.clear
      @message_window.visible = false
      next_actor
    end
  end
   #--------------------------------------------------------------------------
  # ● 处理胜利
  #--------------------------------------------------------------------------
  def process_victory
    @info_viewport.visible = false
    @message_window.visible = true
    RPG::BGM.stop
    $game_system.battle_end_me.play
     for battler in $game_troop.members
      if battler.dead?
         if  @cp_battle.cp_battler.include?(battler)
              @cp_battle.cp_battler[battler].collapse = true
              
              next
          end  
       end     
    end
     @cp_battle.cp_battler.each{|key,value|
      if value.disposed?
        @cp_battler.delete(key)
        next
      end
      value.update}
    #=============================
    @cp_battle.dispose
    #=============================
   for battler in $game_party.members
     battler.cp = 0
    end
   
   
    unless $BTEST
      $game_temp.map_bgm.play
      $game_temp.map_bgs.play
    end
    display_exp_and_gold
    display_drop_items
    display_level_up
    battle_end(0)
  end
  #--------------------------------------------------------------------------
  # ● 失败处理
  #--------------------------------------------------------------------------
  def process_defeat
    @info_viewport.visible = false
    @message_window.visible = true
    @cp_battle.dispose
    for battler in $game_party.members + $game_troop.members
     battler.cp = 0
    end
    text = sprintf(Vocab::Defeat, $game_party.name)
    $game_message.texts.push(text)
    wait_for_message
    battle_end(2)
  end
  #=============================================================================
  #★CP战斗的主要刷新★
  #=============================================================================
  
   def active_battler_update
   
    #===================================
    @actor_battler = []
    @enemy_battler = []
    $game_party.actor_battler = []
    $game_troop.enemy_battler = []
    #===================================
    @cp_battle.update
    @actor_battler = $game_party.actor_battler
    @enemy_battler = $game_troop.enemy_battler
   
    if @actor_battler.size != 0
      @cp_battle.stop = true
      next_actor
      Audio.se_play("Audio/SE/Jump2",100,100)
    elsif @enemy_battler.size != 0  
   
    #================
    @cp_battle.stop = true
    start_main
    #================
   
   
     
   end
  
end
#--------------------------------------------------------------------------
  # ● 开始执行战斗处理
  #--------------------------------------------------------------------------
  def start_main
   
    @info_viewport.visible = false
    @info_viewport.ox = 0
    @message_window.visible = true
  
    @actor_command_window.active = false
    @status_window.index = @actor_index = -1
    @active_battler = nil
    @message_window.clear
    $game_troop.make_actions
    make_action_orders
    wait(20)
    #=============================
  
   while @action_battlers.size != 0 and judge_win_loss == false
     
     process_action
     process_battle_event
   end
   @cp_battle.stop = false
   #=============================
   
   
  end
#=====================================
#★行动顺序生成
#=====================================


def make_action_orders
    @action_battlers = []
   
    unless $game_troop.surprise
      @action_battlers += @actor_battler if @actor_battler.size != 0
    end
   
   
    unless $game_troop.preemptive
      @action_battlers += @enemy_battler if @enemy_battler.size != 0
    end
    for battler in @action_battlers
      battler.action.make_speed
    end
    @action_battlers.sort! do |a,b|
      b.action.speed - a.action.speed
    end
  end
  #--------------------------------------------------------------------------
  # ● 处理战斗行动
  #--------------------------------------------------------------------------
  def process_action
    return if judge_win_loss
    return if $game_temp.next_scene != nil
    set_next_active_battler
    return if @active_battler == nil
    return if @active_battler.dead?
    @message_window.clear
    wait(5)
    @active_battler.white_flash = true
    unless @active_battler.action.forcing
      @active_battler.action.prepare
    end
    if @active_battler.action.valid?
      execute_action
    end
    unless @active_battler.action.forcing
      @message_window.clear
      remove_states_auto
      display_current_state
    end
    @active_battler.white_flash = false
    @message_window.clear
  end
  #--------------------------------------------------------------------------
  # ● 执行战斗行动: 攻击
  #--------------------------------------------------------------------------
  def execute_action_attack
    text = sprintf(Vocab::DoAttack, @active_battler.name)
    @message_window.add_instant_text(text)
    targets = @active_battler.action.make_targets
    display_attack_animation(targets)
    wait(20)
    for target in targets
      target.attack_effect(@active_battler)
      display_action_effects(target)
    end
    #=====================
    @active_battler.cp = 0
    #=====================
   
  end
  #--------------------------------------------------------------------------
  # ● 执行战斗行动 : 防御
  #--------------------------------------------------------------------------
  def execute_action_guard
    text = sprintf(Vocab::DoGuard, @active_battler.name)
    @message_window.add_instant_text(text)
    wait(45)
    #=====================
    @active_battler.cp = 0
    #=====================
  end
  #--------------------------------------------------------------------------
  # ● 执行战斗行动 : 逃走
  #--------------------------------------------------------------------------
  def execute_action_escape
    text = sprintf(Vocab::DoEscape, @active_battler.name)
    @message_window.add_instant_text(text)
    @active_battler.escape
    Sound.play_escape
    wait(45)
    #=====================
    @active_battler.cp = 0
    #=====================
   
  end
  #--------------------------------------------------------------------------
  # ● 执行战斗行动 : 待机
  #--------------------------------------------------------------------------
  def execute_action_wait
    text = sprintf(Vocab::DoWait, @active_battler.name)
    @message_window.add_instant_text(text)
    wait(45)
    #=====================
    @active_battler.cp = 0
    #=====================
  end
  #--------------------------------------------------------------------------
  # ● 执行战斗行动 : 特技
  #--------------------------------------------------------------------------
  def execute_action_skill
    skill = @active_battler.action.skill
    text = @active_battler.name + skill.message1
    @message_window.add_instant_text(text)
    unless skill.message2.empty?
      wait(10)
      @message_window.add_instant_text(skill.message2)
    end
    targets = @active_battler.action.make_targets
    display_animation(targets, skill.animation_id)
    @active_battler.mp -= @active_battler.calc_mp_cost(skill)
    $game_temp.common_event_id = skill.common_event_id
    for target in targets
      target.skill_effect(@active_battler, skill)
      display_action_effects(target, skill)
    end
    #=====================
    @active_battler.cp = 0
    #=====================
   
  end
   #--------------------------------------------------------------------------
  # ● 执行战斗行动 : 物品
  #--------------------------------------------------------------------------
  def execute_action_item
    item = @active_battler.action.item
    text = sprintf(Vocab::UseItem, @active_battler.name, item.name)
    @message_window.add_instant_text(text)
    targets = @active_battler.action.make_targets
    display_animation(targets, item.animation_id)
    $game_party.consume_item(item)
    $game_temp.common_event_id = item.common_event_id
    for target in targets
      target.item_effect(@active_battler, item)
      display_action_effects(target, item)
    end
    #=====================
    @active_battler.cp = 0
    #=====================
   
   
  end
  #--------------------------------------------------------------------------
  # ● 显示 HP 伤害
  #     target : 对象者
  #     obj    : 特技或者物品
  #--------------------------------------------------------------------------
  def display_hp_damage(target, obj = nil)
    if target.hp_damage == 0                # 空伤害
      return if obj != nil and obj.damage_to_mp
      return if obj != nil and obj.base_damage == 0
      fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
      text = sprintf(fmt, target.name)
    elsif target.absorbed                   # 吸收
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::hp, target.hp_damage)
      target.cp -= target.hp_damage/100
      target.cp = [target.cp,0].max
      @cp_battle.cp_battler[target].x = 95+300*target.cp/target.maxcp
     if target.dead?
         @cp_battle.cp_battler[target].collapse = true
         target.cp = 0
         @cp_battle.cp_battler[target].update
      end
      
    elsif target.hp_damage > 0              # 伤害
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage)
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage)
        Sound.play_enemy_damage
        target.blink = true
      end
      target.cp -= target.hp_damage/100
      target.cp = [target.cp,0].max
      @cp_battle.cp_battler[target].x = 95+300*target.cp/target.maxcp
      if target.dead?
         @cp_battle.cp_battler[target].collapse = true
         target.cp = 0
         @cp_battle.cp_battler[target].update
      end
      
    else                                    # 回复
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage)
      Sound.play_recovery
    end
    @message_window.add_instant_text(text)
    wait(30)
  end
  #--------------------------------------------------------------------------
  # ● 显示 MP 伤害
  #     target : 对象者
  #     obj    : 特技或者物品
  #--------------------------------------------------------------------------
  def display_mp_damage(target, obj = nil)
    return if target.dead?
    return if target.mp_damage == 0
    if target.absorbed                      # 吸收
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::mp, target.mp_damage)
      target.cp -= target.mp_damage/100
      target.cp = [target.cp,0].max
      @cp_battle.cp_battler[target].x = 95+300*target.cp/target.maxcp
    elsif target.mp_damage > 0              # 伤害
      fmt = target.actor? ? Vocab::ActorLoss : Vocab::EnemyLoss
      text = sprintf(fmt, target.name, Vocab::mp, target.mp_damage)
      target.cp -= target.mp_damage/100
      target.cp = [target.cp,0].max
      @cp_battle.cp_battler[target].x = 95+300*target.cp/target.maxcp
      
    else                                    # 回复
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::mp, -target.mp_damage)
      Sound.play_recovery
    end
    @message_window.add_instant_text(text)
    wait(30)
  end
  
  
end #class


#======================================================
#★角色处理类
#======================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 执行自动回复 (回合结束时调用)
  #--------------------------------------------------------------------------
  def do_auto_recovery
    if auto_hp_recover and not dead?
      self.hp += maxhp / 20
      @auto_damage = maxhp / 20
    end
  end
  
end #class
  

       battler.cp = [[battler.cp + BATTLE_SPEED*10*battler.agi / @all_agi,0].max,battler.maxcp].min if battler.movable?
就这句
  

目前就这里出错

各位前辈帮我找找问题,指导下我,谢谢

或者给个VXcp条脚本我,


Lv1.梦旅人

梦石
0
星屑
55
在线时间
14 小时
注册时间
2010-6-23
帖子
53
2
发表于 2010-9-20 13:00:34 | 只看该作者
应该是缺少背景图片吧

点评

我有背景图了  发表于 2010-9-20 13:09
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
41 小时
注册时间
2010-6-11
帖子
43
3
 楼主| 发表于 2010-9-20 19:14:31 | 只看该作者
我把脚本的位置调一下,没有提示充突,但画面就定在开始战斗那里,也不死机,就是不战斗
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
424 小时
注册时间
2009-8-3
帖子
984
4
发表于 2010-9-22 11:48:20 | 只看该作者
脚本请用code框起来。。这样看有点晕
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 02:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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