查看: 1963|回复: 9

[已经过期] MOG的伤害弹出脚本MOG_Damage_Popup报错

[复制链接]
梦石
0
星屑
50
在线时间
80 小时
注册时间
2012-1-26
回帖
22
发表于 2013-6-26 21:00:17 | 显示全部楼层 |阅读模式

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

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

×
脚本如下[pre lang="ruby" line="1"]#==============================================================================
# +++ MOG - DAMAGEPOPUP  (v2.3) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# Apresenta danos dos alvos em imagens.
#==============================================================================
# Será necessário ter a imagem Damage_Number.png na pasta /GRAPHICS/SYSTEM/
#==============================================================================

#==============================================================================
# DAMAGE POPUP ON CHARACTERS (Events)
#==============================================================================
# Basta usar o código abaixo para apresentar o dano nos eventos.
#
# damage_popup(STRING)
#
# STRING = valor do dano (Texto).
#
# Para ativar o dano no jogador use o código abaixo
#
# $game_player.damage_popup(STRING)
#
#==============================================================================

#==============================================================================
# ● Histórico (Version History)
#==============================================================================
# v 2.3 - Corrigido o erro de posição nos danos de MP.
# v 2.2 - Compatibilidade com o script Active Bonus Gauge.
# v 2.0 - Apresentar o texto de recuperar nos efeitos de regenerar.
# v 1.9 - Corrigido o erro de apresentar as condições sendo removidas quando a
#         batalha termina.
#       - Corrigido a centralização da string em danos do tipo texto.
#       - Corrigido o "erro" de apresentar a condição de Death.
# v 1.8 - Corrigido o erro de apresentar os textos das condições (Status) quando
#         o battler estiver morto.
# v 1.7 - Melhor codificação e compatibilidade.
# v 1.6 - Corrigido o erro da opacidade do dano em EXP e GOLD.
# v 1.5 - Possibilidade de ativar o dano nos eventos no mapa.
# v 1.4 - Corrigido o erro do efeito drain.
# v 1.3 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.)
# v 1.2 - Corrigido o limite do tamanho da string em palavras longas.
# v 1.1 - Opção de definir a prioridade do dano.
# v 1.0 - Primeiro lançamento.
#==============================================================================

module MOG_DAMAGEPOP
  #Definição do espaço entre a palavra MP/TP e o numero de dano.
  MP_TP_STRING_SPACE = 32
  #Correção da posição do dano.
  DAMAGE_POSITION_CORRECTION = [0 ,0]
  #Apresentar a exp e ouro do inimigo.
  EXP_POPUP = false
  #Definição da prioridade do dano na tela.
  DAMAGE_Z = 60
end

#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
  
  attr_accessor :damage
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------         
  alias mog_damage_sprite_initialize initialize
  def initialize      
      @damage = []
      mog_damage_sprite_initialize
  end  
   
  #--------------------------------------------------------------------------
  # ● Item Apply
  #--------------------------------------------------------------------------  
   alias mog_damage_pop_item_apply item_apply
   def item_apply(user, item)
       mog_damage_pop_item_apply(user, item)
       if @result.missed
          self.damage.push(["Missed","Missed"]) if self.hp > 0
       elsif @result.evaded
          self.damage.push(["Evaded","Evaded"]) if self.hp > 0
       end  
   end

  #--------------------------------------------------------------------------
  # ● Regenerate HP
  #--------------------------------------------------------------------------
  alias mog_damage_pop_regenerate_hp regenerate_hp
  def regenerate_hp
      mog_damage_pop_regenerate_hp
      self.damage.push(["Regenerate",""]) if @result.hp_damage < 0  
      self.damage.push([@result.hp_damage,"HP"]) if @result.hp_damage != 0      
  end

  #--------------------------------------------------------------------------
  # ● Regenerate MP
  #--------------------------------------------------------------------------
  alias mog_damage_pop_regenerate_mp regenerate_mp
  def regenerate_mp
      mog_damage_pop_regenerate_mp
#      self.damage.push(["Regenerate",""]) if @result.mp_damage < 0  
      self.damage.push([@result.mp_damage,"MP"]) if @result.mp_damage != 0
  end
  
  #--------------------------------------------------------------------------
  # ● Regenerate TP
  #--------------------------------------------------------------------------
  alias mog_damage_pop_regenerate_tp regenerate_tp
  def regenerate_tp
      mog_damage_pop_regenerate_tp
      tp_damage = 100 * trg
      self.damage.push([tp_damage,"TP"]) if tp_damage != 0
  end

  #--------------------------------------------------------------------------
  # ● Added New State
  #--------------------------------------------------------------------------  
  alias mog_damage_pop_add_new_state add_new_state
  def add_new_state(state_id)
      mog_damage_pop_add_new_state(state_id)
#      unless guard_feature?(state_id)
         st = $data_states[state_id]
         self.damage.push([st.name.to_s,"States Plus",false,st.icon_index]) if self.hp > 0
#    end   
  end
  
  #--------------------------------------------------------------------------
  # ● Guard Feature?
  #--------------------------------------------------------------------------   
  def guard_feature?(state_id)
      st = $data_states[state_id]
      for i in st.features
          return true if i.code == 62 and i.data_id == 1
      end
      return false
  end
   
  #--------------------------------------------------------------------------
  # ● Remove State
  #--------------------------------------------------------------------------  
  alias mog_damage_pop_remove_state remove_state
  def remove_state(state_id)
      if state?(state_id)
         unless BattleManager.escape?
            st = $data_states[state_id]
            self.damage.push([st.name.to_s,"States Minus",false,st.icon_index])  if self.hp > 0
         end   
      end
      mog_damage_pop_remove_state(state_id)
  end      
  
  #--------------------------------------------------------------------------
  # ● Update State Turns
  #--------------------------------------------------------------------------  
  alias mog_damage_popup_update_state_turns update_state_turns
  def update_state_turns
      mog_damage_popup_update_state_turns
      states.each do |state|
        for features in state.features
            if features.data_id == 7 or features.data_id == 8 or
               features.data_id == 9               
          #     self.damage.push([state.name.to_s + " Effect","States Effect"]) if self.hp > 0
            end  
        end
      end  
  end   
  
  #--------------------------------------------------------------------------
  # ● Execute Damage
  #--------------------------------------------------------------------------   
  alias mog_damage_pop_execute_damage execute_damage
  def execute_damage(user)
      mog_damage_pop_execute_damage(user)
      user.damage.push([-@result.hp_drain,"HP",@result.critical]) if @result.hp_drain != 0
      user.damage.push([-@result.mp_drain,"MP",@result.critical]) if @result.mp_drain != 0
  end  
  
end

#==============================================================================
# ■ BattleManager
#==============================================================================
module BattleManager

  #--------------------------------------------------------------------------
  # ● Escape?
  #--------------------------------------------------------------------------
  def self.escape?
      @phase == nil
  end
  
end  
#==============================================================================
# ■ Game_ActionResult
#==============================================================================
class Game_ActionResult
  #--------------------------------------------------------------------------
  # ● HP Damage Text
  #--------------------------------------------------------------------------
  alias mog_damage_pop_hp_damage_text hp_damage_text
  def hp_damage_text
      if @hp_drain > 0
         @battler.damage.push([@hp_drain,"HP",@critical])
      elsif @hp_damage >= 0
         @battler.damage.push([@hp_damage,"HP",@critical])
      elsif @hp_damage < 0
         @battler.damage.push([@hp_damage,"HP",@critical])
      end   
      mog_damage_pop_hp_damage_text     
  end
  
  #--------------------------------------------------------------------------
  # ● MP Damage Text
  #--------------------------------------------------------------------------
  alias mog_damage_pop_mp_damage_text mp_damage_text
  def mp_damage_text
      if @mp_drain > 0
         @battler.damage.push([@mp_drain,"MP",@critical])
      elsif @mp_damage > 0
         @battler.damage.push([@mp_damage,"MP",@critical])
      elsif @mp_damage < 0   
         @battler.damage.push([@mp_damage,"MP",@critical])
      end   
      mog_damage_pop_mp_damage_text
  end

  #--------------------------------------------------------------------------
  # ● TP Damage Text
  #--------------------------------------------------------------------------
  alias mog_damage_pop_tp_damage_text tp_damage_text
  def tp_damage_text
      if @tp_damage > 0
         @battler.damage.push([@tp_damage,"TP",@critical])
      elsif @tp_damage < 0
         @battler.damage.push([@tp_damage,"TP",@critical])
      end   
      mog_damage_pop_tp_damage_text
  end
end

#==============================================================================
# ■ Game Actor
#==============================================================================
class Game_Actor < Game_Battler
   
  #--------------------------------------------------------------------------
  # ● Level UP
  #--------------------------------------------------------------------------         
   alias mog_damage_pop_level_up level_up
   def level_up
       mog_damage_pop_level_up
       @damage.push(["Level UP","Level_UP"])# unless @damage[0].include?("Level UP")#unless $mog_battle_result != nil      
   end
end   

#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base  
  
  #--------------------------------------------------------------------------
  # ● Invoke Counter Attack
  #--------------------------------------------------------------------------        
  alias mog_damage_popup_invoke_counter_attack invoke_counter_attack
  def invoke_counter_attack(target, item)
      mog_damage_popup_invoke_counter_attack(target, item)
      target.damage.push(["Counter","Counter"])
  end  
  
  #--------------------------------------------------------------------------
  # ● Invoke Counter Attack
  #--------------------------------------------------------------------------        
  alias mog_damage_popup_invoke_magic_reflection invoke_magic_reflection
  def invoke_magic_reflection(target, item)
      mog_damage_popup_invoke_magic_reflection(target, item)
      target.damage.push(["Reflection","Reflection"])
  end  
  
end

#==============================================================================
# ■ Damage Sprite
#==============================================================================
class Damage_Sprite < Sprite
   include MOG_DAMAGEPOP
   attr_accessor :duration
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------      
  def initialize(viewport = nil,x = 0,y = 0,value = 0,index)
      super(viewport)
      dispose
      @image = Cache.system("Damage_Number")      
      @x = x
      @y = y
      @value = value[0]
      @type = value[1]
      @critical = (value[2] and @value.to_i >= 0) ? true : false
      @state_index = value[3]
      @duration = 80 + (10 * index)
      @cw = @image.width / 10
      @ch = @image.height / 7
      @center_x = 0
      @mp_space = (@type == "MP" or @type == "TP") ? MP_TP_STRING_SPACE : 0      
      if @value.is_a?(Numeric)
         create_damage_number
      elsif @value == "Missed" or  @value == "Evaded"  
         create_damage_miss
      else   
         create_damage_string
      end
      self.x =  @x - (@center_x * (@cw / 2)) + DAMAGE_POSITION_CORRECTION[0]
      self.y = @y + DAMAGE_POSITION_CORRECTION[1]
      self.opacity = 1
      zx = self.viewport != nil ? self.viewport.z : 0
      self.z = DAMAGE_Z + zx
      self.visible = false
      damage_dir = rand(2)
      @speed_x = straight_pop? ? 0 : damage_dir == 1 ? -rand(2) : rand(2)
      @speed_y = 0
  end
  
  #--------------------------------------------------------------------------
  # ● Straight Pop
  #--------------------------------------------------------------------------               
  def straight_pop?
      case @type
         when "Gold";        return true
         when "Exp";         return true
         when "Level_UP";    return true
      end
      return false
  end  
  
  #--------------------------------------------------------------------------
  # ● Create Damage Number
  #--------------------------------------------------------------------------            
  def create_damage_miss
      dam = @value == "Missed" ? 5 : 6
      self.bitmap = Bitmap.new(@cw * 5, @ch)  
      src_rect = Rect.new(0, dam * @ch,  @cw * 10, @ch)
      self.bitmap.blt(0, 0, @image, src_rect)
      @center_x += 5
  end
  
  #--------------------------------------------------------------------------
  # ● Create Damage Number
  #--------------------------------------------------------------------------           
  def create_damage_number
      dam = @critical ? @ch * 2 : @value >= 0 ? 0 : @ch
      f = @value >= 0 ? 0 : 1
      ve = @value >= 0 ? 10 : 0
      number_value = @value.to_s.split(//)
      self.bitmap = Bitmap.new(@mp_space + (@cw * number_value.size + 16),@ch * 4)     
      for r in f...number_value.size        
         number_value_abs = number_value[r].to_i
         src_rect = Rect.new(@cw * number_value_abs, dam, @cw, @ch)
         self.bitmap.blt(@mp_space + ve + (@cw *  r), 0, @image, src_rect)
         @center_x += 1
      end
      if @type == "MP" or @type == "TP"
         ty = @type == "MP" ? 3 : 4
         src_rect = Rect.new(0, @ch * ty, @cw * 10, @ch)
         self.bitmap.blt(0, 0, @image, src_rect)         
         @center_x += 2
      end
      @center_x += 1 if @value < 0
  end  
  
  #--------------------------------------------------------------------------
  # ● Create Damage String
  #--------------------------------------------------------------------------            
  def create_damage_string
      string_size = @value.to_s.split(//)
      @stg_size = string_size.size > 0 ? ((1 + string_size.size) * 24) : 32      
      self.bitmap = Bitmap.new(@stg_size,32)
      self.bitmap.font.size = 28
      self.bitmap.font.bold = true
      @center_x = 2 + (string_size.size / 2)
      if @state_index != nil
         draw_states
       else
         execute_font_color
         damage_string = @value.to_s         
         self.bitmap.draw_text(0, 0, @stg_size, 32, damage_string,0)
      end
  end  
  
  #--------------------------------------------------------------------------
  # ● Execute Font Color
  #--------------------------------------------------------------------------               
  def execute_font_color
      case @type
           when "Gold"
               @duration = 160
               self.bitmap.font.color = Color.new(255,255,100)
           when "Exp"
               @duration = 120
               self.bitmap.font.color = Color.new(0,255,100)
           when "Level_UP"   
               self.bitmap.font.color = Color.new(50,155,255)  
           else  
               self.bitmap.font.color = Color.new(255,255,255)
      end
  end
  
  #--------------------------------------------------------------------------
  # ● Draw States
  #--------------------------------------------------------------------------               
  def draw_states
      icon_image = Cache.system("Iconset")
      if @type == "States Plus"
         self.bitmap.font.color = Color.new(200,150,50)
         damage_string = "+ " + @value.to_s
      elsif @type == "States Minus"
          self.bitmap.font.color = Color.new(100,100,100)   
         damage_string = "- " + @value.to_s
      end        
      rect = Rect.new(@state_index % 16 * 24, @state_index / 16 * 24, 24, 24)
      self.bitmap.blt(0, 0, icon_image, rect)  
      self.bitmap.draw_text(26, 0, @stg_size - 24, 32, damage_string,0)
      @center_x += 5
      icon_image.dispose
      icon_image = nil
  end  
  
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------         
  def dispose
      return if @image == nil
      @image.dispose
      @image = nil
      self.bitmap.dispose
      self.bitmap = nil
      @duration = -1
  end  
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------         
  def update
      return if self.bitmap == nil   
      @duration -= 1 if @duration > 0
      self.visible = @duration > 80 ? false : true
      case @duration
         when 65..80
            self.opacity += 5
            self.x += @speed_x
            self.y -= 5
            critical_effect(0.05)
         when 50..65  
             self.opacity = 255
             self.y -= 3
             self.x += @speed_x
             critical_effect(0.05)
         when 35..50
             self.opacity = 255
             self.y += 3
             critical_effect(-0.05)
         when 0..35  
             self.opacity -= 7
             self.y -= 1
             critical_effect(-0.05)
      end
      dispose if self.opacity <= 0  
  end
   
  #--------------------------------------------------------------------------
  # ● Critical Effect
  #--------------------------------------------------------------------------           
  def critical_effect(value)
      return if !@critical
      self.zoom_x += value
      self.zoom_y = self.zoom_x      
  end
  
end

#==============================================================================
# ■ Sprite Battle
#==============================================================================
class Sprite_Battler < Sprite_Base
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  alias mog_damagepop_initialize initialize
  def initialize(viewport, battler = nil)
      mog_damagepop_initialize(viewport, battler)
      create_damage_sprite
  end  
   
  #--------------------------------------------------------------------------
  # ● Create Damage Sprite
  #--------------------------------------------------------------------------           
  def create_damage_sprite
      dispose_damage_sprite
      @damage_sprites = []
  end
  
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------            
  alias mog_damge_sprite_dispose dispose
  def dispose
      mog_damge_sprite_dispose
      dispose_damage_sprite
  end  
  
  #--------------------------------------------------------------------------
  # ● Dispose Damage Sprite
  #--------------------------------------------------------------------------               
  def dispose_damage_sprite
      return if @damage_sprites == nil
      @damage_sprites.each {|sprite| sprite.dispose }
      @damage_sprites.clear
      @battler.damage.clear if @battler != nil
  end  
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------                 
  alias mog_damage_sprite_update update
  def update
      mog_damage_sprite_update
      update_damage_sprite
  end
   
  #--------------------------------------------------------------------------
  # ● Create Damage
  #--------------------------------------------------------------------------                    
  def create_damage
      return if !@battler.use_sprite?
      index = 0
      sx = @battler.screen_x != nil ? @battler.screen_x : self.x
      sy = @battler.screen_y != nil ? @battler.screen_y : self.y
      @damage_sprites = [] if @damage_sprites == nil
      for i in @battler.damage
          @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
          index += 1
      end
      @battler.damage.clear
  end
  
  #--------------------------------------------------------------------------
  # ● Update Damage Sprite
  #--------------------------------------------------------------------------                  
  def update_damage_sprite
      return if @damage_sprites == nil or @battler == nil
      if @initial_damage == nil
         @initial_damage = true
         @battler.damage.clear
         return
      end      
      create_damage if !@battler.damage.empty?
      if !@damage_sprites.empty?
          clear = 0
          for sprite in @damage_sprites
              sprite.update
              if sprite.duration == 0
                 sprite.dispose
              end   
              clear += 1 if sprite.duration > 0
          end
          clear_damage if clear == 0
      end
  end  
  
  #--------------------------------------------------------------------------
  # ● Update Damage Sprite
  #--------------------------------------------------------------------------                     
  def clear_damage
      @damage_sprites.each {|sprite| sprite.dispose }
      @damage_sprites.clear
  end  
  
  #--------------------------------------------------------------------------
  # ● Update Collapse
  #--------------------------------------------------------------------------  
  alias mog_damage_pop_update_collapse update_collapse
  def update_collapse
      mog_damage_pop_update_collapse
      execute_exp_pop
  end
  
  #--------------------------------------------------------------------------
  # ● Update Instant Collapse
  #--------------------------------------------------------------------------  
  alias mog_damage_pop_update_instant_collapse update_instant_collapse
  def update_instant_collapse
      mog_damage_pop_update_instant_collapse
      execute_exp_pop
  end   
  
  #--------------------------------------------------------------------------
  # ● Update Boss Collapse
  #--------------------------------------------------------------------------  
  alias mog_damage_pop_update_boss_collapse update_boss_collapse
  def update_boss_collapse
      mog_damage_pop_update_boss_collapse
      execute_exp_pop
  end
  
  #--------------------------------------------------------------------------
  # ● Execute Exp Pop
  #--------------------------------------------------------------------------  
  def execute_exp_pop
      return if @dam_exp != nil
      return if !MOG_DAMAGEPOP::EXP_POPUP
      return if @battler.is_a?(Game_Actor)
      @dam_exp = true
      if $mog_rgss3_active_bonus_gauge != nil
         if bonus_exp?
            real_exp = @battler.exp * 2
         else
            real_exp = @battler.exp
         end
         if bonus_gold?
            real_gold = @battler.gold * 2
         else
            real_gold = @battler.gold
         end                    
      else
        real_exp = @battler.exp
        real_gold = @battler.gold
      end
      @battler.damage.push(["EXP " + real_exp.to_s,"Exp"]) if @battler.exp > 0
      @battler.damage.push([Vocab::currency_unit + " " + real_gold.to_s,"Gold"]) if @battler.gold > 0
  end  
  
  if $mog_rgss3_active_bonus_gauge != nil  
  #--------------------------------------------------------------------------
  # ● Bonus Gold
  #--------------------------------------------------------------------------  
  def bonus_gold?
      $game_system.bonus_gauge[3] and $game_system.bonus_gauge[2] == 3
  end
   
  #--------------------------------------------------------------------------
  # ● Bonus Exp
  #--------------------------------------------------------------------------  
  def bonus_exp?
      $game_system.bonus_gauge[3] and $game_system.bonus_gauge[2] == 2      
  end      
  end
  
end


#==============================================================================
# ■ Game Interpreter
#==============================================================================
class Game_Interpreter
  
  #--------------------------------------------------------------------------
  # ● Damage Popup
  #--------------------------------------------------------------------------      
  def damage_popup(value,type = nil, critical = false)
      type = (type == nil and value.is_a?(Numeric)) ? "HP" : type
      $game_map.events[@event_id].damage.push([value,type,critical]) if same_map? && @event_id > 0
  end  
  
end  

#==============================================================================
# ■ Game Character
#==============================================================================
class Game_CharacterBase
  
  attr_accessor :damage
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------   
  alias mog_damage_popup_initialize initialize
  def initialize
      @damage = []
      mog_damage_popup_initialize
  end
  
  #--------------------------------------------------------------------------
  # ● damage Popup
  #--------------------------------------------------------------------------      
  def damage_popup(value,type = nil, critical = false)
      type = (type == nil and value.is_a?(Numeric)) ? "HP" : type
      @damage.push([value,type,critical])
  end
  
end  

#==============================================================================
# ■ Sprite Character
#==============================================================================
class Sprite_Character < Sprite_Base

  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------  
  alias mog_damage_popup_initialize initialize
  def initialize(viewport, character = nil)
      mog_damage_popup_initialize(viewport, character)
      create_damage_sprite
  end

  #--------------------------------------------------------------------------
  # ● Create Damage Sprite
  #--------------------------------------------------------------------------           
  def create_damage_sprite
      dispose_damage_sprite
      @damage_sprites = []
  end
  
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------
  alias mog_damage_popup_dispose dispose
  def dispose
      mog_damage_popup_dispose
      dispose_damage_sprite
  end  
  
  #--------------------------------------------------------------------------
  # ● Dispose Damage Sprite
  #--------------------------------------------------------------------------               
  def dispose_damage_sprite
      return if @damage_sprites == nil
      @damage_sprites.each {|sprite| sprite.dispose }
      @damage_sprites.clear
      @character.damage.clear
      $game_temp.dispose_damage_sprite = false
  end   
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------  
  alias mog_damage_popup_update update
  def update
      mog_damage_popup_update
      update_damage_sprite
  end
  
  #--------------------------------------------------------------------------
  # ● Create Damage
  #--------------------------------------------------------------------------                    
  def create_damage
      index = 0
      sx = self.x
      sy = self.y + @ch
      @damage_sprites = [] if @damage_sprites == nil
      for i in @character.damage
          @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
          index += 1
      end
      @character.damage.clear
  end
  
  #--------------------------------------------------------------------------
  # ● Update Damage Sprite
  #--------------------------------------------------------------------------                  
  def update_damage_sprite
      return if @damage_sprites == nil
      if @initial_damage == nil
         @initial_damage = true
         @character.damage.clear
         return
      end      
      create_damage if !@character.damage.empty?
      if !@damage_sprites.empty?
          clear = 0
          for sprite in @damage_sprites
              sprite.update
              if sprite.duration == 0
                 sprite.dispose
              end   
              clear += 1 if sprite.duration > 0
          end
          clear_damage if clear == 0
      end
  end   
  
  #--------------------------------------------------------------------------
  # ● Update Damage Sprite
  #--------------------------------------------------------------------------                     
  def clear_damage
      @damage_sprites.each {|sprite| sprite.dispose }
      @damage_sprites.clear
      @character.damage.clear
  end   
  
end

#=============================================================================
# ■ Game_Temp
#=============================================================================
class Game_Temp
  
  attr_accessor :dispose_damage_sprite
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------           
  alias mog_dispose_damage_initialize initialize
  def initialize
      @dispose_damage_sprite = true
      mog_dispose_damage_initialize
  end
   
end

#=============================================================================
# ■ Scene Manager
#=============================================================================
class << SceneManager
  
  #--------------------------------------------------------------------------
  # ● Call
  #--------------------------------------------------------------------------         
  alias mog_damage_pop_call call
  def call(scene_class)
      $game_temp.dispose_damage_sprite = true
      mog_damage_pop_call(scene_class)
  end
  
end

#=============================================================================
# ■ Scene Map
#=============================================================================
class Scene_Map < Scene_Base

  #--------------------------------------------------------------------------
  # ● Update Scene
  #--------------------------------------------------------------------------           
  alias mog_dispose_damage_sprites_update update_scene
  def update_scene
      @spriteset.dispose_damage_sprites
      mog_dispose_damage_sprites_update
  end

end

#=============================================================================
# ■ Spriteset Map
#=============================================================================
class Spriteset_Map
  
  #--------------------------------------------------------------------------
  # ● Dispose Damage Sprites
  #--------------------------------------------------------------------------            
  def dispose_damage_sprites
      return if !$game_temp.dispose_damage_sprite   
      return if @character_sprites == nil
      @character_sprites.each {|sprite| sprite.dispose_damage_sprite }
      $game_temp.dispose_damage_sprite = false
  end
  
end

#=============================================================================
# ■ Scene Battle
#=============================================================================
class Scene_Battle < Scene_Base
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------               
  alias mog_damage_popup_dispose_sprite_update update  
  def update
      @spriteset.dispose_damage_sprites
      mog_damage_popup_dispose_sprite_update
  end  

end

#=============================================================================
# ■ Spriteset Battle
#=============================================================================
class Spriteset_Battle  
  
  #--------------------------------------------------------------------------
  # ● Dispose Damage Sprites
  #--------------------------------------------------------------------------            
  def dispose_damage_sprites
      return if !$game_temp.dispose_damage_sprite   
      battler_sprites.each {|sprite| sprite.dispose_damage_sprite }
      $game_temp.dispose_damage_sprite = false
  end  
  
end

$mog_rgss3_damage_pop = true[/pre]
战斗测试的时候可以用可是整个测试就出状况{:2_272:}
哪位大神来帮帮忙吧TAT{:2_271:}  
搜狗截图13年06月26日2058_1.png
梦石
0
星屑
50
在线时间
521 小时
注册时间
2011-12-7
回帖
148
发表于 2013-6-27 00:33:00 | 显示全部楼层
此脚本也我也报错过,原因是和新加入的脚本有冲突
回复

使用道具 举报

梦石
0
星屑
50
在线时间
80 小时
注册时间
2012-1-26
回帖
22
 楼主| 发表于 2013-6-27 07:51:16 | 显示全部楼层
Ceopal 发表于 2013-6-27 00:33
此脚本也我也报错过,原因是和新加入的脚本有冲突

额……是和哪个脚本呢{:2_276:}

点评

拿出来才知道  发表于 2013-6-27 09:20
回复

使用道具 举报

梦石
0
星屑
407
在线时间
1291 小时
注册时间
2013-1-12
回帖
3349

贵宾

发表于 2013-6-27 10:56:12 | 显示全部楼层
這樣試試看
  1. #==============================================================================
  2. # +++ MOG - DAMAGEPOPUP  (v2.3) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # [url]http://www.atelier-rgss.com/[/url]
  6. #==============================================================================
  7. # Apresenta danos dos alvos em imagens.
  8. #==============================================================================
  9. # Será necessário ter a imagem Damage_Number.png na pasta /GRAPHICS/SYSTEM/
  10. #==============================================================================

  11. #==============================================================================
  12. # DAMAGE POPUP ON CHARACTERS (Events)
  13. #==============================================================================
  14. # Basta usar o código abaixo para apresentar o dano nos eventos.
  15. #
  16. # damage_popup(STRING)
  17. #
  18. # STRING = valor do dano (Texto).
  19. #
  20. # Para ativar o dano no jogador use o código abaixo
  21. #
  22. # $game_player.damage_popup(STRING)
  23. #
  24. #==============================================================================

  25. #==============================================================================
  26. # ● Histórico (Version History)
  27. #==============================================================================
  28. # v 2.3 - Corrigido o erro de posição nos danos de MP.
  29. # v 2.2 - Compatibilidade com o script Active Bonus Gauge.
  30. # v 2.0 - Apresentar o texto de recuperar nos efeitos de regenerar.
  31. # v 1.9 - Corrigido o erro de apresentar as condições sendo removidas quando a
  32. #         batalha termina.
  33. #       - Corrigido a centralização da string em danos do tipo texto.
  34. #       - Corrigido o "erro" de apresentar a condição de Death.
  35. # v 1.8 - Corrigido o erro de apresentar os textos das condições (Status) quando
  36. #         o battler estiver morto.
  37. # v 1.7 - Melhor codificação e compatibilidade.
  38. # v 1.6 - Corrigido o erro da opacidade do dano em EXP e GOLD.
  39. # v 1.5 - Possibilidade de ativar o dano nos eventos no mapa.
  40. # v 1.4 - Corrigido o erro do efeito drain.
  41. # v 1.3 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.)
  42. # v 1.2 - Corrigido o limite do tamanho da string em palavras longas.
  43. # v 1.1 - Opção de definir a prioridade do dano.
  44. # v 1.0 - Primeiro lançamento.
  45. #==============================================================================

  46. module MOG_DAMAGEPOP
  47.   #Definição do espaço entre a palavra MP/TP e o numero de dano.
  48.   MP_TP_STRING_SPACE = 32
  49.   #Correção da posição do dano.
  50.   DAMAGE_POSITION_CORRECTION = [0 ,0]
  51.   #Apresentar a exp e ouro do inimigo.
  52.   EXP_POPUP = false
  53.   #Definição da prioridade do dano na tela.
  54.   DAMAGE_Z = 60
  55. end

  56. #==============================================================================
  57. # ■ Game_Battler
  58. #==============================================================================
  59. class Game_Battler < Game_BattlerBase

  60.   attr_accessor :damage

  61.   #--------------------------------------------------------------------------
  62.   # ● Initialize
  63.   #--------------------------------------------------------------------------         
  64.   alias mog_damage_sprite_initialize initialize
  65.   def initialize      
  66.       @damage = []
  67.       mog_damage_sprite_initialize
  68.   end  

  69.   #--------------------------------------------------------------------------
  70.   # ● Item Apply
  71.   #--------------------------------------------------------------------------  
  72.    alias mog_damage_pop_item_apply item_apply
  73.    def item_apply(user, item)
  74.        mog_damage_pop_item_apply(user, item)
  75.        if @result.missed
  76.           self.damage.push(["Missed","Missed"]) if self.hp > 0
  77.        elsif @result.evaded
  78.           self.damage.push(["Evaded","Evaded"]) if self.hp > 0
  79.        end  
  80.    end

  81.   #--------------------------------------------------------------------------
  82.   # ● Regenerate HP
  83.   #--------------------------------------------------------------------------
  84.   alias mog_damage_pop_regenerate_hp regenerate_hp
  85.   def regenerate_hp
  86.       mog_damage_pop_regenerate_hp
  87.       self.damage.push(["Regenerate",""]) if @result.hp_damage < 0  
  88.       self.damage.push([@result.hp_damage,"HP"]) if @result.hp_damage != 0      
  89.   end

  90.   #--------------------------------------------------------------------------
  91.   # ● Regenerate MP
  92.   #--------------------------------------------------------------------------
  93.   alias mog_damage_pop_regenerate_mp regenerate_mp
  94.   def regenerate_mp
  95.       mog_damage_pop_regenerate_mp
  96. #      self.damage.push(["Regenerate",""]) if @result.mp_damage < 0  
  97.       self.damage.push([@result.mp_damage,"MP"]) if @result.mp_damage != 0
  98.   end

  99.   #--------------------------------------------------------------------------
  100.   # ● Regenerate TP
  101.   #--------------------------------------------------------------------------
  102.   alias mog_damage_pop_regenerate_tp regenerate_tp
  103.   def regenerate_tp
  104.       mog_damage_pop_regenerate_tp
  105.       tp_damage = 100 * trg
  106.       self.damage.push([tp_damage,"TP"]) if tp_damage != 0
  107.   end

  108.   #--------------------------------------------------------------------------
  109.   # ● Added New State
  110.   #--------------------------------------------------------------------------  
  111.   alias mog_damage_pop_add_new_state add_new_state
  112.   def add_new_state(state_id)
  113.       mog_damage_pop_add_new_state(state_id)
  114. #      unless guard_feature?(state_id)
  115.          st = $data_states[state_id]
  116.          self.damage.push([st.name.to_s,"States Plus",false,st.icon_index]) if self.hp > 0
  117. #    end   
  118.   end

  119.   #--------------------------------------------------------------------------
  120.   # ● Guard Feature?
  121.   #--------------------------------------------------------------------------   
  122.   def guard_feature?(state_id)
  123.       st = $data_states[state_id]
  124.       for i in st.features
  125.           return true if i.code == 62 and i.data_id == 1
  126.       end
  127.       return false
  128.   end

  129.   #--------------------------------------------------------------------------
  130.   # ● Remove State
  131.   #--------------------------------------------------------------------------  
  132.   alias mog_damage_pop_remove_state remove_state
  133.   def remove_state(state_id)
  134.       if state?(state_id)
  135.          unless BattleManager.escape?
  136.             st = $data_states[state_id]
  137.             self.damage.push([st.name.to_s,"States Minus",false,st.icon_index])  if self.hp > 0
  138.          end   
  139.       end
  140.       mog_damage_pop_remove_state(state_id)
  141.   end      

  142.   #--------------------------------------------------------------------------
  143.   # ● Update State Turns
  144.   #--------------------------------------------------------------------------  
  145.   alias mog_damage_popup_update_state_turns update_state_turns
  146.   def update_state_turns
  147.       mog_damage_popup_update_state_turns
  148.       states.each do |state|
  149.         for features in state.features
  150.             if features.data_id == 7 or features.data_id == 8 or
  151.                features.data_id == 9               
  152.           #     self.damage.push([state.name.to_s + " Effect","States Effect"]) if self.hp > 0
  153.             end  
  154.         end
  155.       end  
  156.   end   

  157.   #--------------------------------------------------------------------------
  158.   # ● Execute Damage
  159.   #--------------------------------------------------------------------------   
  160.   alias mog_damage_pop_execute_damage execute_damage
  161.   def execute_damage(user)
  162.       mog_damage_pop_execute_damage(user)
  163.       user.damage.push([[email]-@result.hp_drain,"HP",@result.critical]) if @result.hp_drain != 0
  164.       user.damage.push([[email]-@result.mp_drain,"MP",@result.critical]) if @result.mp_drain != 0
  165.   end  

  166. end

  167. #==============================================================================
  168. # ■ BattleManager
  169. #==============================================================================
  170. module BattleManager

  171.   #--------------------------------------------------------------------------
  172.   # ● Escape?
  173.   #--------------------------------------------------------------------------
  174.   def self.escape?
  175.       @phase == nil
  176.   end

  177. end  
  178. #==============================================================================
  179. # ■ Game_ActionResult
  180. #==============================================================================
  181. class Game_ActionResult
  182.   #--------------------------------------------------------------------------
  183.   # ● HP Damage Text
  184.   #--------------------------------------------------------------------------
  185.   alias mog_damage_pop_hp_damage_text hp_damage_text
  186.   def hp_damage_text
  187.       if @hp_drain > 0
  188.          @battler.damage.push([@hp_drain,"HP",@critical])
  189.       elsif @hp_damage >= 0
  190.          @battler.damage.push([@hp_damage,"HP",@critical])
  191.       elsif @hp_damage < 0
  192.          @battler.damage.push([@hp_damage,"HP",@critical])
  193.       end   
  194.       mog_damage_pop_hp_damage_text     
  195.   end

  196.   #--------------------------------------------------------------------------
  197.   # ● MP Damage Text
  198.   #--------------------------------------------------------------------------
  199.   alias mog_damage_pop_mp_damage_text mp_damage_text
  200.   def mp_damage_text
  201.       if @mp_drain > 0
  202.          @battler.damage.push([@mp_drain,"MP",@critical])
  203.       elsif @mp_damage > 0
  204.          @battler.damage.push([@mp_damage,"MP",@critical])
  205.       elsif @mp_damage < 0   
  206.          @battler.damage.push([@mp_damage,"MP",@critical])
  207.       end   
  208.       mog_damage_pop_mp_damage_text
  209.   end

  210.   #--------------------------------------------------------------------------
  211.   # ● TP Damage Text
  212.   #--------------------------------------------------------------------------
  213.   alias mog_damage_pop_tp_damage_text tp_damage_text
  214.   def tp_damage_text
  215.       if @tp_damage > 0
  216.          @battler.damage.push([@tp_damage,"TP",@critical])
  217.       elsif @tp_damage < 0
  218.          @battler.damage.push([@tp_damage,"TP",@critical])
  219.       end   
  220.       mog_damage_pop_tp_damage_text
  221.   end
  222. end

  223. #==============================================================================
  224. # ■ Game Actor
  225. #==============================================================================
  226. class Game_Actor < Game_Battler

  227.   #--------------------------------------------------------------------------
  228.   # ● Level UP
  229.   #--------------------------------------------------------------------------         
  230.    alias mog_damage_pop_level_up level_up
  231.    def level_up
  232.        mog_damage_pop_level_up
  233.        @damage.push(["Level UP","Level_UP"])# unless @damage[0].include?("Level UP")#unless $mog_battle_result != nil      
  234.    end
  235. end   

  236. #==============================================================================
  237. # ■ Scene_Battle
  238. #==============================================================================
  239. class Scene_Battle < Scene_Base  

  240.   #--------------------------------------------------------------------------
  241.   # ● Invoke Counter Attack
  242.   #--------------------------------------------------------------------------        
  243.   alias mog_damage_popup_invoke_counter_attack invoke_counter_attack
  244.   def invoke_counter_attack(target, item)
  245.       mog_damage_popup_invoke_counter_attack(target, item)
  246.       target.damage.push(["Counter","Counter"])
  247.   end  

  248.   #--------------------------------------------------------------------------
  249.   # ● Invoke Counter Attack
  250.   #--------------------------------------------------------------------------        
  251.   alias mog_damage_popup_invoke_magic_reflection invoke_magic_reflection
  252.   def invoke_magic_reflection(target, item)
  253.       mog_damage_popup_invoke_magic_reflection(target, item)
  254.       target.damage.push(["Reflection","Reflection"])
  255.   end  

  256. end

  257. #==============================================================================
  258. # ■ Damage Sprite
  259. #==============================================================================
  260. class Damage_Sprite < Sprite
  261.    include MOG_DAMAGEPOP
  262.    attr_accessor :duration

  263.   #--------------------------------------------------------------------------
  264.   # ● Initialize
  265.   #--------------------------------------------------------------------------      
  266.   def initialize(viewport = nil,x = 0,y = 0,value = 0,index)
  267.       super(viewport)
  268.       dispose
  269.       @image = Cache.system("Damage_Number")      
  270.       @x = x
  271.       @y = y
  272.       @value = value[0]
  273.       @type = value[1]
  274.       @critical = (value[2] and @value.to_i >= 0) ? true : false
  275.       @state_index = value[3]
  276.       @duration = 80 + (10 * index)
  277.       @cw = @image.width / 10
  278.       @ch = @image.height / 7
  279.       @center_x = 0
  280.       @mp_space = (@type == "MP" or @type == "TP") ? MP_TP_STRING_SPACE : 0      
  281.       if @value.is_a?(Numeric)
  282.          create_damage_number
  283.       elsif @value == "Missed" or  @value == "Evaded"  
  284.          create_damage_miss
  285.       else   
  286.          create_damage_string
  287.       end
  288.       self.x =  @x - (@center_x * (@cw / 2)) + DAMAGE_POSITION_CORRECTION[0]
  289.       self.y = @y + DAMAGE_POSITION_CORRECTION[1]
  290.       self.opacity = 1
  291.       zx = self.viewport != nil ? self.viewport.z : 0
  292.       self.z = DAMAGE_Z + zx
  293.       self.visible = false
  294.       damage_dir = rand(2)
  295.       @speed_x = straight_pop? ? 0 : damage_dir == 1 ? -rand(2) : rand(2)
  296.       @speed_y = 0
  297.   end

  298.   #--------------------------------------------------------------------------
  299.   # ● Straight Pop
  300.   #--------------------------------------------------------------------------               
  301.   def straight_pop?
  302.       case @type
  303.          when "Gold";        return true
  304.          when "Exp";         return true
  305.          when "Level_UP";    return true
  306.       end
  307.       return false
  308.   end  

  309.   #--------------------------------------------------------------------------
  310.   # ● Create Damage Number
  311.   #--------------------------------------------------------------------------            
  312.   def create_damage_miss
  313.       dam = @value == "Missed" ? 5 : 6
  314.       self.bitmap = Bitmap.new(@cw * 5, @ch)  
  315.       src_rect = Rect.new(0, dam * @ch,  @cw * 10, @ch)
  316.       self.bitmap.blt(0, 0, @image, src_rect)
  317.       @center_x += 5
  318.   end

  319.   #--------------------------------------------------------------------------
  320.   # ● Create Damage Number
  321.   #--------------------------------------------------------------------------           
  322.   def create_damage_number
  323.       dam = @critical ? @ch * 2 : @value >= 0 ? 0 : @ch
  324.       f = @value >= 0 ? 0 : 1
  325.       ve = @value >= 0 ? 10 : 0
  326.       number_value = @value.to_s.split(//)
  327.       self.bitmap = Bitmap.new(@mp_space + (@cw * number_value.size + 16),@ch * 4)     
  328.       for r in f...number_value.size        
  329.          number_value_abs = number_value[r].to_i
  330.          src_rect = Rect.new(@cw * number_value_abs, dam, @cw, @ch)
  331.          self.bitmap.blt(@mp_space + ve + (@cw *  r), 0, @image, src_rect)
  332.          @center_x += 1
  333.       end
  334.       if @type == "MP" or @type == "TP"
  335.          ty = @type == "MP" ? 3 : 4
  336.          src_rect = Rect.new(0, @ch * ty, @cw * 10, @ch)
  337.          self.bitmap.blt(0, 0, @image, src_rect)         
  338.          @center_x += 2
  339.       end
  340.       @center_x += 1 if @value < 0
  341.   end  

  342.   #--------------------------------------------------------------------------
  343.   # ● Create Damage String
  344.   #--------------------------------------------------------------------------            
  345.   def create_damage_string
  346.       string_size = @value.to_s.split(//)
  347.       @stg_size = string_size.size > 0 ? ((1 + string_size.size) * 24) : 32      
  348.       self.bitmap = Bitmap.new(@stg_size,32)
  349.       self.bitmap.font.size = 28
  350.       self.bitmap.font.bold = true
  351.       @center_x = 2 + (string_size.size / 2)
  352.       if @state_index != nil
  353.          draw_states
  354.        else
  355.          execute_font_color
  356.          damage_string = @value.to_s         
  357.          self.bitmap.draw_text(0, 0, @stg_size, 32, damage_string,0)
  358.       end
  359.   end  

  360.   #--------------------------------------------------------------------------
  361.   # ● Execute Font Color
  362.   #--------------------------------------------------------------------------               
  363.   def execute_font_color
  364.       case @type
  365.            when "Gold"
  366.                @duration = 160
  367.                self.bitmap.font.color = Color.new(255,255,100)
  368.            when "Exp"
  369.                @duration = 120
  370.                self.bitmap.font.color = Color.new(0,255,100)
  371.            when "Level_UP"   
  372.                self.bitmap.font.color = Color.new(50,155,255)  
  373.            else  
  374.                self.bitmap.font.color = Color.new(255,255,255)
  375.       end
  376.   end

  377.   #--------------------------------------------------------------------------
  378.   # ● Draw States
  379.   #--------------------------------------------------------------------------               
  380.   def draw_states
  381.       icon_image = Cache.system("Iconset")
  382.       if @type == "States Plus"
  383.          self.bitmap.font.color = Color.new(200,150,50)
  384.          damage_string = "+ " + @value.to_s
  385.       elsif @type == "States Minus"
  386.           self.bitmap.font.color = Color.new(100,100,100)   
  387.          damage_string = "- " + @value.to_s
  388.       end        
  389.       rect = Rect.new(@state_index % 16 * 24, @state_index / 16 * 24, 24, 24)
  390.       self.bitmap.blt(0, 0, icon_image, rect)  
  391.       self.bitmap.draw_text(26, 0, @stg_size - 24, 32, damage_string,0)
  392.       @center_x += 5
  393.       icon_image.dispose
  394.       icon_image = nil
  395.   end  

  396.   #--------------------------------------------------------------------------
  397.   # ● Dispose
  398.   #--------------------------------------------------------------------------         
  399.   def dispose
  400.       return if @image == nil
  401.       @image.dispose
  402.       @image = nil
  403.       self.bitmap.dispose
  404.       self.bitmap = nil
  405.       @duration = -1
  406.   end  

  407.   #--------------------------------------------------------------------------
  408.   # ● Update
  409.   #--------------------------------------------------------------------------         
  410.   def update
  411.       return if self.bitmap == nil   
  412.       @duration -= 1 if @duration > 0
  413.       self.visible = @duration > 80 ? false : true
  414.       case @duration
  415.          when 65..80
  416.             self.opacity += 5
  417.             self.x += @speed_x
  418.             self.y -= 5
  419.             critical_effect(0.05)
  420.          when 50..65  
  421.              self.opacity = 255
  422.              self.y -= 3
  423.              self.x += @speed_x
  424.              critical_effect(0.05)
  425.          when 35..50
  426.              self.opacity = 255
  427.              self.y += 3
  428.              critical_effect(-0.05)
  429.          when 0..35  
  430.              self.opacity -= 7
  431.              self.y -= 1
  432.              critical_effect(-0.05)
  433.       end
  434.       dispose if self.opacity <= 0  
  435.   end

  436.   #--------------------------------------------------------------------------
  437.   # ● Critical Effect
  438.   #--------------------------------------------------------------------------           
  439.   def critical_effect(value)
  440.       return if !@critical
  441.       self.zoom_x += value
  442.       self.zoom_y = self.zoom_x      
  443.   end

  444. end

  445. #==============================================================================
  446. # ■ Sprite Battle
  447. #==============================================================================
  448. class Sprite_Battler < Sprite_Base

  449.   #--------------------------------------------------------------------------
  450.   # ● Initialize
  451.   #--------------------------------------------------------------------------
  452.   alias mog_damagepop_initialize initialize
  453.   def initialize(viewport, battler = nil)
  454.       mog_damagepop_initialize(viewport, battler)
  455.       create_damage_sprite
  456.   end  

  457.   #--------------------------------------------------------------------------
  458.   # ● Create Damage Sprite
  459.   #--------------------------------------------------------------------------           
  460.   def create_damage_sprite
  461.       dispose_damage_sprite
  462.       @damage_sprites = []
  463.   end

  464.   #--------------------------------------------------------------------------
  465.   # ● Dispose
  466.   #--------------------------------------------------------------------------            
  467.   alias mog_damge_sprite_dispose dispose
  468.   def dispose
  469.       mog_damge_sprite_dispose
  470.       dispose_damage_sprite
  471.   end  

  472.   #--------------------------------------------------------------------------
  473.   # ● Dispose Damage Sprite
  474.   #--------------------------------------------------------------------------               
  475.   def dispose_damage_sprite
  476.       return if @damage_sprites == nil
  477.       @damage_sprites.each {|sprite| sprite.dispose }
  478.       @damage_sprites.clear
  479.       @battler.damage.clear if @battler!= nil
  480.   end  

  481.   #--------------------------------------------------------------------------
  482.   # ● Update
  483.   #--------------------------------------------------------------------------                 
  484.   alias mog_damage_sprite_update update
  485.   def update
  486.       mog_damage_sprite_update
  487.       update_damage_sprite
  488.   end

  489.   #--------------------------------------------------------------------------
  490.   # ● Create Damage
  491.   #--------------------------------------------------------------------------                    
  492.   def create_damage
  493.       return if !@battler.use_sprite?
  494.       index = 0
  495.       sx = @battler.screen_x != nil ? @battler.screen_x : self.x
  496.       sy = @battler.screen_y != nil ? @battler.screen_y : self.y
  497.       @damage_sprites = [] if @damage_sprites == nil
  498.       for i in @battler.damage
  499.           @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
  500.           index += 1
  501.       end
  502.       @battler.damage.clear
  503.   end

  504.   #--------------------------------------------------------------------------
  505.   # ● Update Damage Sprite
  506.   #--------------------------------------------------------------------------                  
  507.   def update_damage_sprite
  508.       return if @damage_sprites == nil or [url=home.php?mod=space&uid=133701]@battler[/url] == nil
  509.       if @initial_damage == nil
  510.          @initial_damage = true
  511.          @battler.damage.clear
  512.          return
  513.       end      
  514.       create_damage if !@battler.damage.empty?
  515.       if !@damage_sprites.empty?
  516.           clear = 0
  517.           for sprite in @damage_sprites
  518.               sprite.update
  519.               if sprite.duration == 0
  520.                  sprite.dispose
  521.               end   
  522.               clear += 1 if sprite.duration > 0
  523.           end
  524.           clear_damage if clear == 0
  525.       end
  526.   end  

  527.   #--------------------------------------------------------------------------
  528.   # ● Update Damage Sprite
  529.   #--------------------------------------------------------------------------                     
  530.   def clear_damage
  531.       @damage_sprites.each {|sprite| sprite.dispose }
  532.       @damage_sprites.clear
  533.   end  

  534.   #--------------------------------------------------------------------------
  535.   # ● Update Collapse
  536.   #--------------------------------------------------------------------------  
  537.   alias mog_damage_pop_update_collapse update_collapse
  538.   def update_collapse
  539.       mog_damage_pop_update_collapse
  540.       execute_exp_pop
  541.   end

  542.   #--------------------------------------------------------------------------
  543.   # ● Update Instant Collapse
  544.   #--------------------------------------------------------------------------  
  545.   alias mog_damage_pop_update_instant_collapse update_instant_collapse
  546.   def update_instant_collapse
  547.       mog_damage_pop_update_instant_collapse
  548.       execute_exp_pop
  549.   end   

  550.   #--------------------------------------------------------------------------
  551.   # ● Update Boss Collapse
  552.   #--------------------------------------------------------------------------  
  553.   alias mog_damage_pop_update_boss_collapse update_boss_collapse
  554.   def update_boss_collapse
  555.       mog_damage_pop_update_boss_collapse
  556.       execute_exp_pop
  557.   end

  558.   #--------------------------------------------------------------------------
  559.   # ● Execute Exp Pop
  560.   #--------------------------------------------------------------------------  
  561.   def execute_exp_pop
  562.       return if @dam_exp != nil
  563.       return if !MOG_DAMAGEPOP::EXP_POPUP
  564.       return if @battler.is_a?(Game_Actor)
  565.       @dam_exp = true
  566.       if $mog_rgss3_active_bonus_gauge != nil
  567.          if bonus_exp?
  568.             real_exp = @battler.exp * 2
  569.          else
  570.             real_exp = @battler.exp
  571.          end
  572.          if bonus_gold?
  573.             real_gold = @battler.gold * 2
  574.          else
  575.             real_gold = @battler.gold
  576.          end                    
  577.       else
  578.         real_exp = @battler.exp
  579.         real_gold = @battler.gold
  580.       end
  581.       @battler.damage.push(["EXP " + real_exp.to_s,"Exp"]) if @battler.exp > 0
  582.       @battler.damage.push([Vocab::currency_unit + " " + real_gold.to_s,"Gold"]) if @battler.gold > 0
  583.   end  

  584.   if $mog_rgss3_active_bonus_gauge != nil  
  585.   #--------------------------------------------------------------------------
  586.   # ● Bonus Gold
  587.   #--------------------------------------------------------------------------  
  588.   def bonus_gold?
  589.       $game_system.bonus_gauge[3] and $game_system.bonus_gauge[2] == 3
  590.   end

  591.   #--------------------------------------------------------------------------
  592.   # ● Bonus Exp
  593.   #--------------------------------------------------------------------------  
  594.   def bonus_exp?
  595.       $game_system.bonus_gauge[3] and $game_system.bonus_gauge[2] == 2      
  596.   end      
  597.   end

  598. end


  599. #==============================================================================
  600. # ■ Game Interpreter
  601. #==============================================================================
  602. class Game_Interpreter

  603.   #--------------------------------------------------------------------------
  604.   # ● Damage Popup
  605.   #--------------------------------------------------------------------------      
  606.   def damage_popup(value,type = nil, critical = false)
  607.       type = (type == nil and value.is_a?(Numeric)) ? "HP" : type
  608.       $game_map.events[@event_id].damage.push([value,type,critical]) if same_map? && @event_id > 0
  609.   end  

  610. end  

  611. #==============================================================================
  612. # ■ Game Character
  613. #==============================================================================
  614. class Game_CharacterBase

  615.   attr_accessor :damage

  616.   #--------------------------------------------------------------------------
  617.   # ● Initialize
  618.   #--------------------------------------------------------------------------   
  619.   alias mog_damage_popup_initialize initialize
  620.   def initialize
  621.       @damage = []
  622.       mog_damage_popup_initialize
  623.   end

  624.   #--------------------------------------------------------------------------
  625.   # ● damage Popup
  626.   #--------------------------------------------------------------------------      
  627.   def damage_popup(value,type = nil, critical = false)
  628.       type = (type == nil and value.is_a?(Numeric)) ? "HP" : type
  629.       @damage.push([value,type,critical])
  630.   end

  631. end  

  632. #==============================================================================
  633. # ■ Sprite Character
  634. #==============================================================================
  635. class Sprite_Character < Sprite_Base

  636.   #--------------------------------------------------------------------------
  637.   # ● Initialize
  638.   #--------------------------------------------------------------------------  
  639.   alias mog_damage_popup_initialize initialize
  640.   def initialize(viewport, character = nil)
  641.       mog_damage_popup_initialize(viewport, character)
  642.       create_damage_sprite
  643.   end

  644.   #--------------------------------------------------------------------------
  645.   # ● Create Damage Sprite
  646.   #--------------------------------------------------------------------------           
  647.   def create_damage_sprite
  648.       dispose_damage_sprite
  649.       @damage_sprites = []
  650.   end

  651.   #--------------------------------------------------------------------------
  652.   # ● Dispose
  653.   #--------------------------------------------------------------------------
  654.   alias mog_damage_popup_dispose dispose
  655.   def dispose
  656.       mog_damage_popup_dispose
  657.       dispose_damage_sprite
  658.   end  

  659.   #--------------------------------------------------------------------------
  660.   # ● Dispose Damage Sprite
  661.   #--------------------------------------------------------------------------               
  662.   def dispose_damage_sprite
  663.       return if @damage_sprites == nil
  664.       @damage_sprites.each {|sprite| sprite.dispose }
  665.       @damage_sprites.clear
  666.       @character.damage.clear
  667.       $game_temp.dispose_damage_sprite = false
  668.   end   

  669.   #--------------------------------------------------------------------------
  670.   # ● Update
  671.   #--------------------------------------------------------------------------  
  672.   alias mog_damage_popup_update update
  673.   def update
  674.       mog_damage_popup_update
  675.       update_damage_sprite
  676.   end

  677.   #--------------------------------------------------------------------------
  678.   # ● Create Damage
  679.   #--------------------------------------------------------------------------                    
  680.   def create_damage
  681.       index = 0
  682.       sx = self.x
  683.       sy = self.y + @ch
  684.       @damage_sprites = [] if @damage_sprites == nil
  685.       for i in @character.damage
  686.           @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
  687.           index += 1
  688.       end
  689.       @character.damage.clear
  690.   end

  691.   #--------------------------------------------------------------------------
  692.   # ● Update Damage Sprite
  693.   #--------------------------------------------------------------------------                  
  694.   def update_damage_sprite
  695.       return if @damage_sprites == nil
  696.       if @initial_damage == nil
  697.          @initial_damage = true
  698.          @character.damage.clear
  699.          return
  700.       end      
  701.       create_damage if !@character.damage.empty?
  702.       if !@damage_sprites.empty?
  703.           clear = 0
  704.           for sprite in @damage_sprites
  705.               sprite.update
  706.               if sprite.duration == 0
  707.                  sprite.dispose
  708.               end   
  709.               clear += 1 if sprite.duration > 0
  710.           end
  711.           clear_damage if clear == 0
  712.       end
  713.   end   

  714.   #--------------------------------------------------------------------------
  715.   # ● Update Damage Sprite
  716.   #--------------------------------------------------------------------------                     
  717.   def clear_damage
  718.       @damage_sprites.each {|sprite| sprite.dispose }
  719.       @damage_sprites.clear
  720.       @character.damage.clear
  721.   end   

  722. end

  723. #=============================================================================
  724. # ■ Game_Temp
  725. #=============================================================================
  726. class Game_Temp

  727.   attr_accessor :dispose_damage_sprite

  728.   #--------------------------------------------------------------------------
  729.   # ● Initialize
  730.   #--------------------------------------------------------------------------           
  731.   alias mog_dispose_damage_initialize initialize
  732.   def initialize
  733.       @dispose_damage_sprite = true
  734.       mog_dispose_damage_initialize
  735.   end

  736. end

  737. #=============================================================================
  738. # ■ Scene Manager
  739. #=============================================================================
  740. class << SceneManager

  741.   #--------------------------------------------------------------------------
  742.   # ● Call
  743.   #--------------------------------------------------------------------------         
  744.   alias mog_damage_pop_call call
  745.   def call(scene_class)
  746.       $game_temp.dispose_damage_sprite = true
  747.       mog_damage_pop_call(scene_class)
  748.   end

  749. end

  750. #=============================================================================
  751. # ■ Scene Map
  752. #=============================================================================
  753. class Scene_Map < Scene_Base

  754.   #--------------------------------------------------------------------------
  755.   # ● Update Scene
  756.   #--------------------------------------------------------------------------           
  757.   alias mog_dispose_damage_sprites_update update_scene
  758.   def update_scene
  759.       @spriteset.dispose_damage_sprites
  760.       mog_dispose_damage_sprites_update
  761.   end

  762. end

  763. #=============================================================================
  764. # ■ Spriteset Map
  765. #=============================================================================
  766. class Spriteset_Map

  767.   #--------------------------------------------------------------------------
  768.   # ● Dispose Damage Sprites
  769.   #--------------------------------------------------------------------------            
  770.   def dispose_damage_sprites
  771.       return if !$game_temp.dispose_damage_sprite   
  772.       return if @character_sprites == nil
  773.       @character_sprites.each {|sprite| sprite.dispose_damage_sprite }
  774.       $game_temp.dispose_damage_sprite = false
  775.   end

  776. end

  777. #=============================================================================
  778. # ■ Scene Battle
  779. #=============================================================================
  780. class Scene_Battle < Scene_Base

  781.   #--------------------------------------------------------------------------
  782.   # ● Update
  783.   #--------------------------------------------------------------------------               
  784.   alias mog_damage_popup_dispose_sprite_update update  
  785.   def update
  786.       @spriteset.dispose_damage_sprites
  787.       mog_damage_popup_dispose_sprite_update
  788.   end  

  789. end

  790. #=============================================================================
  791. # ■ Spriteset Battle
  792. #=============================================================================
  793. class Spriteset_Battle  

  794.   #--------------------------------------------------------------------------
  795.   # ● Dispose Damage Sprites
  796.   #--------------------------------------------------------------------------            
  797.   def dispose_damage_sprites
  798.       return if !$game_temp.dispose_damage_sprite   
  799.       battler_sprites.each {|sprite| sprite.dispose_damage_sprite }
  800.       $game_temp.dispose_damage_sprite = false
  801.   end  

  802. end

  803. $mog_rgss3_damage_pop = true
复制代码
因為你发的內含被论彈代碼隱響到的句子 所以可能是之前就會 或是這次发上來才產生的
不過75%是之前就有  因為你有用代碼框起來
總之試試看用這個吧
對了  出錯訊息是什么? 缺少素材就去補吧~

点评

url已去,还是不行……  发表于 2013-6-27 12:11
还是不行……去掉代码跟原脚本报一样的错  发表于 2013-6-27 12:03
對不起 出錯訊息我沒看到 不是缺少素材 不過這試試看吧  发表于 2013-6-27 10:57

评分

参与人数 1星屑 +30 收起 理由
Sion + 30 感谢帮忙

查看全部评分


回复

使用道具 举报

梦石
0
星屑
50
在线时间
80 小时
注册时间
2012-1-26
回帖
22
 楼主| 发表于 2013-6-27 11:49:15 | 显示全部楼层
76213585 发表于 2013-6-27 10:56
這樣試試看因為你发的內含被论彈代碼隱響到的句子 所以可能是之前就會 或是這次发上來才產生的
不過75%是之 ...

搜狗截图13年06月27日1148_1.png
于是产生了新的问题{:2_253:}

点评

把@battler左右邊的url什么的去掉試試  发表于 2013-6-27 12:00
這论檀代碼還在...  发表于 2013-6-27 11:55
回复

使用道具 举报

梦石
0
星屑
50
在线时间
80 小时
注册时间
2012-1-26
回帖
22
 楼主| 发表于 2013-6-27 12:10:14 | 显示全部楼层
Ceopal 发表于 2013-6-27 00:33
此脚本也我也报错过,原因是和新加入的脚本有冲突

搜狗截图13年06月27日1207_2.png
目前这些,会冲突么……

点评

把可疑脚本拿出来,最多十几次运行游戏,就可以找出哪个与其有冲突了  发表于 2013-6-27 16:48
好多腳本....................  发表于 2013-6-27 12:22
回复

使用道具 举报

梦石
0
星屑
50
在线时间
73 小时
注册时间
2013-2-18
回帖
43
发表于 2013-7-12 14:54:16 | 显示全部楼层
你是不是用的没加此脚本前的存档啊,把游戏从都开始测试试试
回复

使用道具 举报

梦石
0
星屑
50
在线时间
80 小时
注册时间
2012-1-26
回帖
22
 楼主| 发表于 2013-7-12 19:26:09 | 显示全部楼层
billyxiang123 发表于 2013-7-12 14:54
你是不是用的没加此脚本前的存档啊,把游戏从都开始测试试试

从头到尾的用过了{:2_272:}
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部