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

Project1

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

[已经解决] 求教这个脚本如何通过公共事件调用在事件上触发伤害数字

[复制链接]

Lv1.梦旅人 (暗夜天使)

永夜蟄居の玖瀨

梦石
0
星屑
71
在线时间
1018 小时
注册时间
2011-9-5
帖子
2813

开拓者贵宾

跳转到指定楼层
1
发表于 2014-6-25 22:16:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 千葉玖濑 于 2014-6-25 22:16 编辑

虽然直接通过地图事件调用这个damage_popup(STRING)可以在事件上显示伤害数字…
但是想要通过公共事件显示就只有$game_player.damage_popup(STRING)方法嘛?
咱试着用$game_event[1].damage_popup(STRING)…但貌似不行来着…
所以说求指教QUQ

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 = true
  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 [url=home.php?mod=space&uid=133701]@battler[/url] == 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
  

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

2
发表于 2014-6-25 23:44:24 | 只看该作者
试试
  1. get_character(事件id).damage_popup(STRING)
复制代码
param : -1 则玩家、0 则本事件、其他 则是指定的事件ID

点评

成功了~多谢前辈www  发表于 2014-6-26 14:15

评分

参与人数 1星屑 +132 收起 理由
VIPArcher + 132 认可答案

查看全部评分

Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 10:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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