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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
80 小时
注册时间
2012-1-26
帖子
26
跳转到指定楼层
1
发表于 2013-6-26 21:00:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
脚本如下
RUBY 代码复制
  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. #==============================================================================
  13. # DAMAGE POPUP ON CHARACTERS (Events)
  14. #==============================================================================
  15. # Basta usar o código abaixo para apresentar o dano nos eventos.
  16. #
  17. # damage_popup(STRING)
  18. #
  19. # STRING = valor do dano (Texto).
  20. #
  21. # Para ativar o dano no jogador use o código abaixo
  22. #
  23. # $game_player.damage_popup(STRING)
  24. #
  25. #==============================================================================
  26.  
  27. #==============================================================================
  28. # ● Histórico (Version History)
  29. #==============================================================================
  30. # v 2.3 - Corrigido o erro de posição nos danos de MP.
  31. # v 2.2 - Compatibilidade com o script Active Bonus Gauge.
  32. # v 2.0 - Apresentar o texto de recuperar nos efeitos de regenerar.
  33. # v 1.9 - Corrigido o erro de apresentar as condições sendo removidas quando a
  34. #         batalha termina.
  35. #       - Corrigido a centralização da string em danos do tipo texto.
  36. #       - Corrigido o "erro" de apresentar a condição de Death.
  37. # v 1.8 - Corrigido o erro de apresentar os textos das condições (Status) quando
  38. #         o battler estiver morto.
  39. # v 1.7 - Melhor codificação e compatibilidade.
  40. # v 1.6 - Corrigido o erro da opacidade do dano em EXP e GOLD.
  41. # v 1.5 - Possibilidade de ativar o dano nos eventos no mapa.
  42. # v 1.4 - Corrigido o erro do efeito drain.
  43. # v 1.3 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.)
  44. # v 1.2 - Corrigido o limite do tamanho da string em palavras longas.
  45. # v 1.1 - Opção de definir a prioridade do dano.
  46. # v 1.0 - Primeiro lançamento.
  47. #==============================================================================
  48.  
  49. module MOG_DAMAGEPOP
  50.   #Definição do espaço entre a palavra MP/TP e o numero de dano.
  51.   MP_TP_STRING_SPACE = 32
  52.   #Correção da posição do dano.
  53.   DAMAGE_POSITION_CORRECTION = [0 ,0]
  54.   #Apresentar a exp e ouro do inimigo.
  55.   EXP_POPUP = false
  56.   #Definição da prioridade do dano na tela.
  57.   DAMAGE_Z = 60
  58. end
  59.  
  60. #==============================================================================
  61. # ■ Game_Battler
  62. #==============================================================================
  63. class Game_Battler < Game_BattlerBase
  64.  
  65.   attr_accessor :damage
  66.  
  67.   #--------------------------------------------------------------------------
  68.   # ● Initialize
  69.   #--------------------------------------------------------------------------         
  70.   alias mog_damage_sprite_initialize initialize
  71.   def initialize      
  72.       @damage = []
  73.       mog_damage_sprite_initialize
  74.   end  
  75.  
  76.   #--------------------------------------------------------------------------
  77.   # ● Item Apply
  78.   #--------------------------------------------------------------------------  
  79.    alias mog_damage_pop_item_apply item_apply
  80.    def item_apply(user, item)
  81.        mog_damage_pop_item_apply(user, item)
  82.        if @result.missed
  83.           self.damage.push(["Missed","Missed"]) if self.hp > 0
  84.        elsif @result.evaded
  85.           self.damage.push(["Evaded","Evaded"]) if self.hp > 0
  86.        end  
  87.    end
  88.  
  89.   #--------------------------------------------------------------------------
  90.   # ● Regenerate HP
  91.   #--------------------------------------------------------------------------
  92.   alias mog_damage_pop_regenerate_hp regenerate_hp
  93.   def regenerate_hp
  94.       mog_damage_pop_regenerate_hp
  95.       self.damage.push(["Regenerate",""]) if @result.hp_damage < 0  
  96.       self.damage.push([@result.hp_damage,"HP"]) if @result.hp_damage != 0      
  97.   end
  98.  
  99.   #--------------------------------------------------------------------------
  100.   # ● Regenerate MP
  101.   #--------------------------------------------------------------------------
  102.   alias mog_damage_pop_regenerate_mp regenerate_mp
  103.   def regenerate_mp
  104.       mog_damage_pop_regenerate_mp
  105. #      self.damage.push(["Regenerate",""]) if @result.mp_damage < 0  
  106.       self.damage.push([@result.mp_damage,"MP"]) if @result.mp_damage != 0
  107.   end
  108.  
  109.   #--------------------------------------------------------------------------
  110.   # ● Regenerate TP
  111.   #--------------------------------------------------------------------------
  112.   alias mog_damage_pop_regenerate_tp regenerate_tp
  113.   def regenerate_tp
  114.       mog_damage_pop_regenerate_tp
  115.       tp_damage = 100 * trg
  116.       self.damage.push([tp_damage,"TP"]) if tp_damage != 0
  117.   end
  118.  
  119.   #--------------------------------------------------------------------------
  120.   # ● Added New State
  121.   #--------------------------------------------------------------------------  
  122.   alias mog_damage_pop_add_new_state add_new_state
  123.   def add_new_state(state_id)
  124.       mog_damage_pop_add_new_state(state_id)
  125. #      unless guard_feature?(state_id)
  126.          st = $data_states[state_id]
  127.          self.damage.push([st.name.to_s,"States Plus",false,st.icon_index]) if self.hp > 0
  128. #    end   
  129.   end
  130.  
  131.   #--------------------------------------------------------------------------
  132.   # ● Guard Feature?
  133.   #--------------------------------------------------------------------------   
  134.   def guard_feature?(state_id)
  135.       st = $data_states[state_id]
  136.       for i in st.features
  137.           return true if i.code == 62 and i.data_id == 1
  138.       end
  139.       return false
  140.   end
  141.  
  142.   #--------------------------------------------------------------------------
  143.   # ● Remove State
  144.   #--------------------------------------------------------------------------  
  145.   alias mog_damage_pop_remove_state remove_state
  146.   def remove_state(state_id)
  147.       if state?(state_id)
  148.          unless BattleManager.escape?
  149.             st = $data_states[state_id]
  150.             self.damage.push([st.name.to_s,"States Minus",false,st.icon_index])  if self.hp > 0
  151.          end   
  152.       end
  153.       mog_damage_pop_remove_state(state_id)
  154.   end      
  155.  
  156.   #--------------------------------------------------------------------------
  157.   # ● Update State Turns
  158.   #--------------------------------------------------------------------------  
  159.   alias mog_damage_popup_update_state_turns update_state_turns
  160.   def update_state_turns
  161.       mog_damage_popup_update_state_turns
  162.       states.each do |state|
  163.         for features in state.features
  164.             if features.data_id == 7 or features.data_id == 8 or
  165.                features.data_id == 9               
  166.           #     self.damage.push([state.name.to_s + " Effect","States Effect"]) if self.hp > 0
  167.             end  
  168.         end
  169.       end  
  170.   end   
  171.  
  172.   #--------------------------------------------------------------------------
  173.   # ● Execute Damage
  174.   #--------------------------------------------------------------------------   
  175.   alias mog_damage_pop_execute_damage execute_damage
  176.   def execute_damage(user)
  177.       mog_damage_pop_execute_damage(user)
  178.       user.damage.push([[email]-@result.hp_drain[/email],"HP",@result.critical]) if @result.hp_drain != 0
  179.       user.damage.push([[email]-@result.mp_drain[/email],"MP",@result.critical]) if @result.mp_drain != 0
  180.   end  
  181.  
  182. end
  183.  
  184. #==============================================================================
  185. # ■ BattleManager
  186. #==============================================================================
  187. module BattleManager
  188.  
  189.   #--------------------------------------------------------------------------
  190.   # ● Escape?
  191.   #--------------------------------------------------------------------------
  192.   def self.escape?
  193.       @phase == nil
  194.   end
  195.  
  196. end  
  197. #==============================================================================
  198. # ■ Game_ActionResult
  199. #==============================================================================
  200. class Game_ActionResult
  201.   #--------------------------------------------------------------------------
  202.   # ● HP Damage Text
  203.   #--------------------------------------------------------------------------
  204.   alias mog_damage_pop_hp_damage_text hp_damage_text
  205.   def hp_damage_text
  206.       if @hp_drain > 0
  207.          @battler.damage.push([@hp_drain,"HP",@critical])
  208.       elsif @hp_damage >= 0
  209.          @battler.damage.push([@hp_damage,"HP",@critical])
  210.       elsif @hp_damage < 0
  211.          @battler.damage.push([@hp_damage,"HP",@critical])
  212.       end   
  213.       mog_damage_pop_hp_damage_text     
  214.   end
  215.  
  216.   #--------------------------------------------------------------------------
  217.   # ● MP Damage Text
  218.   #--------------------------------------------------------------------------
  219.   alias mog_damage_pop_mp_damage_text mp_damage_text
  220.   def mp_damage_text
  221.       if @mp_drain > 0
  222.          @battler.damage.push([@mp_drain,"MP",@critical])
  223.       elsif @mp_damage > 0
  224.          @battler.damage.push([@mp_damage,"MP",@critical])
  225.       elsif @mp_damage < 0   
  226.          @battler.damage.push([@mp_damage,"MP",@critical])
  227.       end   
  228.       mog_damage_pop_mp_damage_text
  229.   end
  230.  
  231.   #--------------------------------------------------------------------------
  232.   # ● TP Damage Text
  233.   #--------------------------------------------------------------------------
  234.   alias mog_damage_pop_tp_damage_text tp_damage_text
  235.   def tp_damage_text
  236.       if @tp_damage > 0
  237.          @battler.damage.push([@tp_damage,"TP",@critical])
  238.       elsif @tp_damage < 0
  239.          @battler.damage.push([@tp_damage,"TP",@critical])
  240.       end   
  241.       mog_damage_pop_tp_damage_text
  242.   end
  243. end
  244.  
  245. #==============================================================================
  246. # ■ Game Actor
  247. #==============================================================================
  248. class Game_Actor < Game_Battler
  249.  
  250.   #--------------------------------------------------------------------------
  251.   # ● Level UP
  252.   #--------------------------------------------------------------------------         
  253.    alias mog_damage_pop_level_up level_up
  254.    def level_up
  255.        mog_damage_pop_level_up
  256.        @damage.push(["Level UP","Level_UP"])# unless @damage[0].include?("Level UP")#unless $mog_battle_result != nil      
  257.    end
  258. end   
  259.  
  260. #==============================================================================
  261. # ■ Scene_Battle
  262. #==============================================================================
  263. class Scene_Battle < Scene_Base  
  264.  
  265.   #--------------------------------------------------------------------------
  266.   # ● Invoke Counter Attack
  267.   #--------------------------------------------------------------------------        
  268.   alias mog_damage_popup_invoke_counter_attack invoke_counter_attack
  269.   def invoke_counter_attack(target, item)
  270.       mog_damage_popup_invoke_counter_attack(target, item)
  271.       target.damage.push(["Counter","Counter"])
  272.   end  
  273.  
  274.   #--------------------------------------------------------------------------
  275.   # ● Invoke Counter Attack
  276.   #--------------------------------------------------------------------------        
  277.   alias mog_damage_popup_invoke_magic_reflection invoke_magic_reflection
  278.   def invoke_magic_reflection(target, item)
  279.       mog_damage_popup_invoke_magic_reflection(target, item)
  280.       target.damage.push(["Reflection","Reflection"])
  281.   end  
  282.  
  283. end
  284.  
  285. #==============================================================================
  286. # ■ Damage Sprite
  287. #==============================================================================
  288. class Damage_Sprite < Sprite
  289.    include MOG_DAMAGEPOP
  290.    attr_accessor :duration
  291.  
  292.   #--------------------------------------------------------------------------
  293.   # ● Initialize
  294.   #--------------------------------------------------------------------------      
  295.   def initialize(viewport = nil,x = 0,y = 0,value = 0,index)
  296.       super(viewport)
  297.       dispose
  298.       @image = Cache.system("Damage_Number")      
  299.       @x = x
  300.       @y = y
  301.       @value = value[0]
  302.       @type = value[1]
  303.       @critical = (value[2] and @value.to_i >= 0) ? true : false
  304.       @state_index = value[3]
  305.       @duration = 80 + (10 * index)
  306.       @cw = @image.width / 10
  307.       @ch = @image.height / 7
  308.       @center_x = 0
  309.       @mp_space = (@type == "MP" or @type == "TP") ? MP_TP_STRING_SPACE : 0      
  310.       if @value.is_a?(Numeric)
  311.          create_damage_number
  312.       elsif @value == "Missed" or  @value == "Evaded"  
  313.          create_damage_miss
  314.       else   
  315.          create_damage_string
  316.       end
  317.       self.x =  @x - (@center_x * (@cw / 2)) + DAMAGE_POSITION_CORRECTION[0]
  318.       self.y = @y + DAMAGE_POSITION_CORRECTION[1]
  319.       self.opacity = 1
  320.       zx = self.viewport != nil ? self.viewport.z : 0
  321.       self.z = DAMAGE_Z + zx
  322.       self.visible = false
  323.       damage_dir = rand(2)
  324.       @speed_x = straight_pop? ? 0 : damage_dir == 1 ? -rand(2) : rand(2)
  325.       @speed_y = 0
  326.   end
  327.  
  328.   #--------------------------------------------------------------------------
  329.   # ● Straight Pop
  330.   #--------------------------------------------------------------------------               
  331.   def straight_pop?
  332.       case @type
  333.          when "Gold";        return true
  334.          when "Exp";         return true
  335.          when "Level_UP";    return true
  336.       end
  337.       return false
  338.   end  
  339.  
  340.   #--------------------------------------------------------------------------
  341.   # ● Create Damage Number
  342.   #--------------------------------------------------------------------------            
  343.   def create_damage_miss
  344.       dam = @value == "Missed" ? 5 : 6
  345.       self.bitmap = Bitmap.new(@cw * 5, @ch)  
  346.       src_rect = Rect.new(0, dam * @ch,  @cw * 10, @ch)
  347.       self.bitmap.blt(0, 0, @image, src_rect)
  348.       @center_x += 5
  349.   end
  350.  
  351.   #--------------------------------------------------------------------------
  352.   # ● Create Damage Number
  353.   #--------------------------------------------------------------------------           
  354.   def create_damage_number
  355.       dam = @critical ? @ch * 2 : @value >= 0 ? 0 : @ch
  356.       f = @value >= 0 ? 0 : 1
  357.       ve = @value >= 0 ? 10 : 0
  358.       number_value = @value.to_s.split(//)
  359.       self.bitmap = Bitmap.new(@mp_space + (@cw * number_value.size + 16),@ch * 4)     
  360.       for r in f...number_value.size        
  361.          number_value_abs = number_value[r].to_i
  362.          src_rect = Rect.new(@cw * number_value_abs, dam, @cw, @ch)
  363.          self.bitmap.blt(@mp_space + ve + (@cw *  r), 0, @image, src_rect)
  364.          @center_x += 1
  365.       end
  366.       if @type == "MP" or @type == "TP"
  367.          ty = @type == "MP" ? 3 : 4
  368.          src_rect = Rect.new(0, @ch * ty, @cw * 10, @ch)
  369.          self.bitmap.blt(0, 0, @image, src_rect)         
  370.          @center_x += 2
  371.       end
  372.       @center_x += 1 if @value < 0
  373.   end  
  374.  
  375.   #--------------------------------------------------------------------------
  376.   # ● Create Damage String
  377.   #--------------------------------------------------------------------------            
  378.   def create_damage_string
  379.       string_size = @value.to_s.split(//)
  380.       @stg_size = string_size.size > 0 ? ((1 + string_size.size) * 24) : 32      
  381.       self.bitmap = Bitmap.new(@stg_size,32)
  382.       self.bitmap.font.size = 28
  383.       self.bitmap.font.bold = true
  384.       @center_x = 2 + (string_size.size / 2)
  385.       if @state_index != nil
  386.          draw_states
  387.        else
  388.          execute_font_color
  389.          damage_string = @value.to_s         
  390.          self.bitmap.draw_text(0, 0, @stg_size, 32, damage_string,0)
  391.       end
  392.   end  
  393.  
  394.   #--------------------------------------------------------------------------
  395.   # ● Execute Font Color
  396.   #--------------------------------------------------------------------------               
  397.   def execute_font_color
  398.       case @type
  399.            when "Gold"
  400.                @duration = 160
  401.                self.bitmap.font.color = Color.new(255,255,100)
  402.            when "Exp"
  403.                @duration = 120
  404.                self.bitmap.font.color = Color.new(0,255,100)
  405.            when "Level_UP"   
  406.                self.bitmap.font.color = Color.new(50,155,255)  
  407.            else  
  408.                self.bitmap.font.color = Color.new(255,255,255)
  409.       end
  410.   end
  411.  
  412.   #--------------------------------------------------------------------------
  413.   # ● Draw States
  414.   #--------------------------------------------------------------------------               
  415.   def draw_states
  416.       icon_image = Cache.system("Iconset")
  417.       if @type == "States Plus"
  418.          self.bitmap.font.color = Color.new(200,150,50)
  419.          damage_string = "+ " + @value.to_s
  420.       elsif @type == "States Minus"
  421.           self.bitmap.font.color = Color.new(100,100,100)   
  422.          damage_string = "- " + @value.to_s
  423.       end        
  424.       rect = Rect.new(@state_index % 16 * 24, @state_index / 16 * 24, 24, 24)
  425.       self.bitmap.blt(0, 0, icon_image, rect)  
  426.       self.bitmap.draw_text(26, 0, @stg_size - 24, 32, damage_string,0)
  427.       @center_x += 5
  428.       icon_image.dispose
  429.       icon_image = nil
  430.   end  
  431.  
  432.   #--------------------------------------------------------------------------
  433.   # ● Dispose
  434.   #--------------------------------------------------------------------------         
  435.   def dispose
  436.       return if @image == nil
  437.       @image.dispose
  438.       @image = nil
  439.       self.bitmap.dispose
  440.       self.bitmap = nil
  441.       @duration = -1
  442.   end  
  443.  
  444.   #--------------------------------------------------------------------------
  445.   # ● Update
  446.   #--------------------------------------------------------------------------         
  447.   def update
  448.       return if self.bitmap == nil   
  449.       @duration -= 1 if @duration > 0
  450.       self.visible = @duration > 80 ? false : true
  451.       case @duration
  452.          when 65..80
  453.             self.opacity += 5
  454.             self.x += @speed_x
  455.             self.y -= 5
  456.             critical_effect(0.05)
  457.          when 50..65  
  458.              self.opacity = 255
  459.              self.y -= 3
  460.              self.x += @speed_x
  461.              critical_effect(0.05)
  462.          when 35..50
  463.              self.opacity = 255
  464.              self.y += 3
  465.              critical_effect(-0.05)
  466.          when 0..35  
  467.              self.opacity -= 7
  468.              self.y -= 1
  469.              critical_effect(-0.05)
  470.       end
  471.       dispose if self.opacity <= 0  
  472.   end
  473.  
  474.   #--------------------------------------------------------------------------
  475.   # ● Critical Effect
  476.   #--------------------------------------------------------------------------           
  477.   def critical_effect(value)
  478.       return if !@critical
  479.       self.zoom_x += value
  480.       self.zoom_y = self.zoom_x      
  481.   end
  482.  
  483. end
  484.  
  485. #==============================================================================
  486. # ■ Sprite Battle
  487. #==============================================================================
  488. class Sprite_Battler < Sprite_Base
  489.  
  490.   #--------------------------------------------------------------------------
  491.   # ● Initialize
  492.   #--------------------------------------------------------------------------
  493.   alias mog_damagepop_initialize initialize
  494.   def initialize(viewport, battler = nil)
  495.       mog_damagepop_initialize(viewport, battler)
  496.       create_damage_sprite
  497.   end  
  498.  
  499.   #--------------------------------------------------------------------------
  500.   # ● Create Damage Sprite
  501.   #--------------------------------------------------------------------------           
  502.   def create_damage_sprite
  503.       dispose_damage_sprite
  504.       @damage_sprites = []
  505.   end
  506.  
  507.   #--------------------------------------------------------------------------
  508.   # ● Dispose
  509.   #--------------------------------------------------------------------------            
  510.   alias mog_damge_sprite_dispose dispose
  511.   def dispose
  512.       mog_damge_sprite_dispose
  513.       dispose_damage_sprite
  514.   end  
  515.  
  516.   #--------------------------------------------------------------------------
  517.   # ● Dispose Damage Sprite
  518.   #--------------------------------------------------------------------------               
  519.   def dispose_damage_sprite
  520.       return if @damage_sprites == nil
  521.       @damage_sprites.each {|sprite| sprite.dispose }
  522.       @damage_sprites.clear
  523.       @battler.damage.clear if [url=home.php?mod=space&uid=133701]@battler[/url] != nil
  524.   end  
  525.  
  526.   #--------------------------------------------------------------------------
  527.   # ● Update
  528.   #--------------------------------------------------------------------------                 
  529.   alias mog_damage_sprite_update update
  530.   def update
  531.       mog_damage_sprite_update
  532.       update_damage_sprite
  533.   end
  534.  
  535.   #--------------------------------------------------------------------------
  536.   # ● Create Damage
  537.   #--------------------------------------------------------------------------                    
  538.   def create_damage
  539.       return if !@battler.use_sprite?
  540.       index = 0
  541.       sx = @battler.screen_x != nil ? @battler.screen_x : self.x
  542.       sy = @battler.screen_y != nil ? @battler.screen_y : self.y
  543.       @damage_sprites = [] if @damage_sprites == nil
  544.       for i in @battler.damage
  545.           @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
  546.           index += 1
  547.       end
  548.       @battler.damage.clear
  549.   end
  550.  
  551.   #--------------------------------------------------------------------------
  552.   # ● Update Damage Sprite
  553.   #--------------------------------------------------------------------------                  
  554.   def update_damage_sprite
  555.       return if @damage_sprites == nil or @battler == nil
  556.       if @initial_damage == nil
  557.          @initial_damage = true
  558.          @battler.damage.clear
  559.          return
  560.       end      
  561.       create_damage if !@battler.damage.empty?
  562.       if !@damage_sprites.empty?
  563.           clear = 0
  564.           for sprite in @damage_sprites
  565.               sprite.update
  566.               if sprite.duration == 0
  567.                  sprite.dispose
  568.               end   
  569.               clear += 1 if sprite.duration > 0
  570.           end
  571.           clear_damage if clear == 0
  572.       end
  573.   end  
  574.  
  575.   #--------------------------------------------------------------------------
  576.   # ● Update Damage Sprite
  577.   #--------------------------------------------------------------------------                     
  578.   def clear_damage
  579.       @damage_sprites.each {|sprite| sprite.dispose }
  580.       @damage_sprites.clear
  581.   end  
  582.  
  583.   #--------------------------------------------------------------------------
  584.   # ● Update Collapse
  585.   #--------------------------------------------------------------------------  
  586.   alias mog_damage_pop_update_collapse update_collapse
  587.   def update_collapse
  588.       mog_damage_pop_update_collapse
  589.       execute_exp_pop
  590.   end
  591.  
  592.   #--------------------------------------------------------------------------
  593.   # ● Update Instant Collapse
  594.   #--------------------------------------------------------------------------  
  595.   alias mog_damage_pop_update_instant_collapse update_instant_collapse
  596.   def update_instant_collapse
  597.       mog_damage_pop_update_instant_collapse
  598.       execute_exp_pop
  599.   end   
  600.  
  601.   #--------------------------------------------------------------------------
  602.   # ● Update Boss Collapse
  603.   #--------------------------------------------------------------------------  
  604.   alias mog_damage_pop_update_boss_collapse update_boss_collapse
  605.   def update_boss_collapse
  606.       mog_damage_pop_update_boss_collapse
  607.       execute_exp_pop
  608.   end
  609.  
  610.   #--------------------------------------------------------------------------
  611.   # ● Execute Exp Pop
  612.   #--------------------------------------------------------------------------  
  613.   def execute_exp_pop
  614.       return if @dam_exp != nil
  615.       return if !MOG_DAMAGEPOP::EXP_POPUP
  616.       return if @battler.is_a?(Game_Actor)
  617.       @dam_exp = true
  618.       if $mog_rgss3_active_bonus_gauge != nil
  619.          if bonus_exp?
  620.             real_exp = @battler.exp * 2
  621.          else
  622.             real_exp = @battler.exp
  623.          end
  624.          if bonus_gold?
  625.             real_gold = @battler.gold * 2
  626.          else
  627.             real_gold = @battler.gold
  628.          end                    
  629.       else
  630.         real_exp = @battler.exp
  631.         real_gold = @battler.gold
  632.       end
  633.       @battler.damage.push(["EXP " + real_exp.to_s,"Exp"]) if @battler.exp > 0
  634.       @battler.damage.push([Vocab::currency_unit + " " + real_gold.to_s,"Gold"]) if @battler.gold > 0
  635.   end  
  636.  
  637.   if $mog_rgss3_active_bonus_gauge != nil  
  638.   #--------------------------------------------------------------------------
  639.   # ● Bonus Gold
  640.   #--------------------------------------------------------------------------  
  641.   def bonus_gold?
  642.       $game_system.bonus_gauge[3] and $game_system.bonus_gauge[2] == 3
  643.   end
  644.  
  645.   #--------------------------------------------------------------------------
  646.   # ● Bonus Exp
  647.   #--------------------------------------------------------------------------  
  648.   def bonus_exp?
  649.       $game_system.bonus_gauge[3] and $game_system.bonus_gauge[2] == 2      
  650.   end      
  651.   end
  652.  
  653. end
  654.  
  655.  
  656. #==============================================================================
  657. # ■ Game Interpreter
  658. #==============================================================================
  659. class Game_Interpreter
  660.  
  661.   #--------------------------------------------------------------------------
  662.   # ● Damage Popup
  663.   #--------------------------------------------------------------------------      
  664.   def damage_popup(value,type = nil, critical = false)
  665.       type = (type == nil and value.is_a?(Numeric)) ? "HP" : type
  666.       $game_map.events[@event_id].damage.push([value,type,critical]) if same_map? && @event_id > 0
  667.   end  
  668.  
  669. end  
  670.  
  671. #==============================================================================
  672. # ■ Game Character
  673. #==============================================================================
  674. class Game_CharacterBase
  675.  
  676.   attr_accessor :damage
  677.  
  678.   #--------------------------------------------------------------------------
  679.   # ● Initialize
  680.   #--------------------------------------------------------------------------   
  681.   alias mog_damage_popup_initialize initialize
  682.   def initialize
  683.       @damage = []
  684.       mog_damage_popup_initialize
  685.   end
  686.  
  687.   #--------------------------------------------------------------------------
  688.   # ● damage Popup
  689.   #--------------------------------------------------------------------------      
  690.   def damage_popup(value,type = nil, critical = false)
  691.       type = (type == nil and value.is_a?(Numeric)) ? "HP" : type
  692.       @damage.push([value,type,critical])
  693.   end
  694.  
  695. end  
  696.  
  697. #==============================================================================
  698. # ■ Sprite Character
  699. #==============================================================================
  700. class Sprite_Character < Sprite_Base
  701.  
  702.   #--------------------------------------------------------------------------
  703.   # ● Initialize
  704.   #--------------------------------------------------------------------------  
  705.   alias mog_damage_popup_initialize initialize
  706.   def initialize(viewport, character = nil)
  707.       mog_damage_popup_initialize(viewport, character)
  708.       create_damage_sprite
  709.   end
  710.  
  711.   #--------------------------------------------------------------------------
  712.   # ● Create Damage Sprite
  713.   #--------------------------------------------------------------------------           
  714.   def create_damage_sprite
  715.       dispose_damage_sprite
  716.       @damage_sprites = []
  717.   end
  718.  
  719.   #--------------------------------------------------------------------------
  720.   # ● Dispose
  721.   #--------------------------------------------------------------------------
  722.   alias mog_damage_popup_dispose dispose
  723.   def dispose
  724.       mog_damage_popup_dispose
  725.       dispose_damage_sprite
  726.   end  
  727.  
  728.   #--------------------------------------------------------------------------
  729.   # ● Dispose Damage Sprite
  730.   #--------------------------------------------------------------------------               
  731.   def dispose_damage_sprite
  732.       return if @damage_sprites == nil
  733.       @damage_sprites.each {|sprite| sprite.dispose }
  734.       @damage_sprites.clear
  735.       @character.damage.clear
  736.       $game_temp.dispose_damage_sprite = false
  737.   end   
  738.  
  739.   #--------------------------------------------------------------------------
  740.   # ● Update
  741.   #--------------------------------------------------------------------------  
  742.   alias mog_damage_popup_update update
  743.   def update
  744.       mog_damage_popup_update
  745.       update_damage_sprite
  746.   end
  747.  
  748.   #--------------------------------------------------------------------------
  749.   # ● Create Damage
  750.   #--------------------------------------------------------------------------                    
  751.   def create_damage
  752.       index = 0
  753.       sx = self.x
  754.       sy = self.y + @ch
  755.       @damage_sprites = [] if @damage_sprites == nil
  756.       for i in @character.damage
  757.           @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
  758.           index += 1
  759.       end
  760.       @character.damage.clear
  761.   end
  762.  
  763.   #--------------------------------------------------------------------------
  764.   # ● Update Damage Sprite
  765.   #--------------------------------------------------------------------------                  
  766.   def update_damage_sprite
  767.       return if @damage_sprites == nil
  768.       if @initial_damage == nil
  769.          @initial_damage = true
  770.          @character.damage.clear
  771.          return
  772.       end      
  773.       create_damage if !@character.damage.empty?
  774.       if !@damage_sprites.empty?
  775.           clear = 0
  776.           for sprite in @damage_sprites
  777.               sprite.update
  778.               if sprite.duration == 0
  779.                  sprite.dispose
  780.               end   
  781.               clear += 1 if sprite.duration > 0
  782.           end
  783.           clear_damage if clear == 0
  784.       end
  785.   end   
  786.  
  787.   #--------------------------------------------------------------------------
  788.   # ● Update Damage Sprite
  789.   #--------------------------------------------------------------------------                     
  790.   def clear_damage
  791.       @damage_sprites.each {|sprite| sprite.dispose }
  792.       @damage_sprites.clear
  793.       @character.damage.clear
  794.   end   
  795.  
  796. end
  797.  
  798. #=============================================================================
  799. # ■ Game_Temp
  800. #=============================================================================
  801. class Game_Temp
  802.  
  803.   attr_accessor :dispose_damage_sprite
  804.  
  805.   #--------------------------------------------------------------------------
  806.   # ● Initialize
  807.   #--------------------------------------------------------------------------           
  808.   alias mog_dispose_damage_initialize initialize
  809.   def initialize
  810.       @dispose_damage_sprite = true
  811.       mog_dispose_damage_initialize
  812.   end
  813.  
  814. end
  815.  
  816. #=============================================================================
  817. # ■ Scene Manager
  818. #=============================================================================
  819. class << SceneManager
  820.  
  821.   #--------------------------------------------------------------------------
  822.   # ● Call
  823.   #--------------------------------------------------------------------------         
  824.   alias mog_damage_pop_call call
  825.   def call(scene_class)
  826.       $game_temp.dispose_damage_sprite = true
  827.       mog_damage_pop_call(scene_class)
  828.   end
  829.  
  830. end
  831.  
  832. #=============================================================================
  833. # ■ Scene Map
  834. #=============================================================================
  835. class Scene_Map < Scene_Base
  836.  
  837.   #--------------------------------------------------------------------------
  838.   # ● Update Scene
  839.   #--------------------------------------------------------------------------           
  840.   alias mog_dispose_damage_sprites_update update_scene
  841.   def update_scene
  842.       @spriteset.dispose_damage_sprites
  843.       mog_dispose_damage_sprites_update
  844.   end
  845.  
  846. end
  847.  
  848. #=============================================================================
  849. # ■ Spriteset Map
  850. #=============================================================================
  851. class Spriteset_Map
  852.  
  853.   #--------------------------------------------------------------------------
  854.   # ● Dispose Damage Sprites
  855.   #--------------------------------------------------------------------------            
  856.   def dispose_damage_sprites
  857.       return if !$game_temp.dispose_damage_sprite   
  858.       return if @character_sprites == nil
  859.       @character_sprites.each {|sprite| sprite.dispose_damage_sprite }
  860.       $game_temp.dispose_damage_sprite = false
  861.   end
  862.  
  863. end
  864.  
  865. #=============================================================================
  866. # ■ Scene Battle
  867. #=============================================================================
  868. class Scene_Battle < Scene_Base
  869.  
  870.   #--------------------------------------------------------------------------
  871.   # ● Update
  872.   #--------------------------------------------------------------------------               
  873.   alias mog_damage_popup_dispose_sprite_update update  
  874.   def update
  875.       @spriteset.dispose_damage_sprites
  876.       mog_damage_popup_dispose_sprite_update
  877.   end  
  878.  
  879. end
  880.  
  881. #=============================================================================
  882. # ■ Spriteset Battle
  883. #=============================================================================
  884. class Spriteset_Battle  
  885.  
  886.   #--------------------------------------------------------------------------
  887.   # ● Dispose Damage Sprites
  888.   #--------------------------------------------------------------------------            
  889.   def dispose_damage_sprites
  890.       return if !$game_temp.dispose_damage_sprite   
  891.       battler_sprites.each {|sprite| sprite.dispose_damage_sprite }
  892.       $game_temp.dispose_damage_sprite = false
  893.   end  
  894.  
  895. end
  896.  
  897. $mog_rgss3_damage_pop = true

战斗测试的时候可以用可是整个测试就出状况{:2_272:}
哪位大神来帮帮忙吧TAT{:2_271:}  

搜狗截图13年06月26日2058_1.png (2.5 KB, 下载次数: 32)

搜狗截图13年06月26日2058_1.png

Lv1.梦旅人

梦石
0
星屑
50
在线时间
521 小时
注册时间
2011-12-7
帖子
305
2
发表于 2013-6-27 00:33:00 | 只看该作者
此脚本也我也报错过,原因是和新加入的脚本有冲突
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
80 小时
注册时间
2012-1-26
帖子
26
3
 楼主| 发表于 2013-6-27 07:51:16 | 只看该作者
Ceopal 发表于 2013-6-27 00:33
此脚本也我也报错过,原因是和新加入的脚本有冲突

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

点评

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

使用道具 举报

Lv2.观梦者

梦石
0
星屑
367
在线时间
1292 小时
注册时间
2013-1-12
帖子
3590

贵宾

4
发表于 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][email protected]_drain,"HP",@result.critical]) if @result.hp_drain != 0
  164.       user.damage.push([[email][email protected]_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 [email protected]_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 [email protected]?
  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 [email protected]?
  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 感谢帮忙

查看全部评分


回复 支持 反对

使用道具 举报

Lv1.梦旅人

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


于是产生了新的问题{:2_253:}

点评

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

使用道具 举报

Lv1.梦旅人

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


目前这些,会冲突么……

点评

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
73 小时
注册时间
2013-2-18
帖子
56
7
发表于 2013-7-12 14:54:16 | 只看该作者
你是不是用的没加此脚本前的存档啊,把游戏从都开始测试试试
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

从头到尾的用过了{:2_272:}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-27 15:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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