Project1

标题: BOSS血条的脚本提示RGSS ERROR [打印本页]

作者: melatin    时间: 2018-12-28 22:35
标题: BOSS血条的脚本提示RGSS ERROR
本帖最后由 melatin 于 2018-12-28 22:35 编辑

使用脚本如下,之前使用都没有问题,也不知道动了什么一进战斗287行就报错RGSS ERROR disposed bitmap。
但诡异的是这个错只会在新开游戏时报一次,读一个战斗前的存档再打这个战斗就完全正常了……
这场战斗单独拿出来放到其他地方新开游戏打也没任何问题,就是在特定的地方才会报这个错,但是这里与其他地方的区别只有有几句剧情对话而已……

  1. #==============================================================================
  2. # +++ MOG - BossHP条 (V1.5) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # https://atelierrgss.wordpress.com/
  6. #==============================================================================
  7. # 专门为Boss设置的大型HP条.
  8. #
  9. #==============================================================================
  10. # 使用方法
  11. #==============================================================================
  12. # 敌人备注:
  13. #
  14. # <Boss HP Meter>
  15. #
  16. # 隐藏HP数字的备注.
  17. #
  18. # <Boss HP Hide Number>
  19. #
  20. #==============================================================================
  21. # 使用脚本来改变BossHp条的位置
  22. #
  23. # boss_hp_position(X,Y)
  24. #
  25. #==============================================================================
  26. # 需要图片
  27. #
  28. # Battle_Boss_Meter.png
  29. # Battle_Boss_Meter_Layout.png
  30. #==============================================================================
  31. # 脸图 (可选)
  32. #==============================================================================
  33. # 在HP条上显示Boss的脸图,图片放在: Graphics/Faces/
  34. #
  35. # 敌人名 + _F.png         (Slime_F.png)
  36. #
  37. # 或者
  38. #
  39. # BF_ + 敌人ID.png          (BF_11.png)
  40. #
  41. #==============================================================================
  42. # 显示Boss等级 (可选)
  43. #==============================================================================
  44. # 显示Boss等级的备注:
  45. #
  46. # <Level = X>
  47. #
  48. # X为你需要显示的等级数
  49. #==============================================================================

  50. #==============================================================================
  51. # Histórico
  52. #==============================================================================
  53. # v1.5 - Definição do nome da face pelo ID do battler
  54. # v1.4 - Melhoria de compatibilidade de scripts.
  55. #==============================================================================

  56. $imported = {} if $imported.nil?
  57. $imported[:mog_blitz_commands] = true

  58. module MOG_BOSS_HP_METER
  59.     #图片位置.
  60.     LAYOUT_POSITION = [65,25]
  61.     #Hp条位置.
  62.     METER_POSITION = [3,3]
  63.     #名称位置.
  64.     NAME_POSITION = [45,8]
  65.     #脸图位置.
  66.     FACE_POSITION = [-80,-55]
  67.     #等级位置.
  68.     LEVEL_POSITION = [150, -24]#[290, 0]
  69.     #Hp数字位置
  70.     HP_NUMBER_POSITION = [230, 15]
  71.     #Hp数字间距
  72.     HP_STRING_SPACE = 36
  73.     #是否显示Hp数字波动效果
  74.     HP_NUMBER_WAVE_EFFECT = false
  75.     #等级的文本
  76.     LEVEL_WORD = "Lv. "
  77.     #Hp条的动画速度
  78.     METER_ANIMATION_SPEED = 0   
  79.     #字体大小.
  80.     FONT_SIZE = 18
  81.     #字体是否加粗.
  82.     FONT_BOLD = false
  83.     #字体是否斜体.
  84.     FONT_ITALIC = false
  85.     #字体颜色.
  86.     FONT_COLOR = Color.new(255,255,255)
  87.     #Hp条Z坐标.
  88.     PRIORITY_Z = 70
  89. end

  90. #==============================================================================
  91. # ■ Game System
  92. #==============================================================================
  93. class Game_System
  94.   
  95. attr_accessor :boss_hp_meter
  96.   
  97. #--------------------------------------------------------------------------
  98. # ● Initialize
  99. #--------------------------------------------------------------------------  
  100. alias mog_boss_hp_meter_initialize initialize
  101. def initialize
  102.      ix = MOG_BOSS_HP_METER::LAYOUT_POSITION[0]
  103.      iy = MOG_BOSS_HP_METER::LAYOUT_POSITION[1]
  104.      @boss_hp_meter = [ix,iy,false,"",0,1,0,nil,0,false]
  105.      mog_boss_hp_meter_initialize
  106. end
  107.   
  108. end

  109. #==============================================================================
  110. # ■ Game Enemy
  111. #==============================================================================
  112. class Game_Enemy < Game_Battler
  113.    
  114.   attr_accessor :boss_hp_meter
  115.   attr_accessor :boss_hp_number
  116.   attr_accessor :level
  117.   
  118.   #--------------------------------------------------------------------------
  119.   # ● Initialize
  120.   #--------------------------------------------------------------------------
  121.   alias mog_boss_hp_meter_initialize initialize
  122.   def initialize(index, enemy_id)
  123.       mog_boss_hp_meter_initialize(index, enemy_id)
  124.       @boss_hp_meter = enemy.note =~ /<Boss HP Meter>/ ? true : false
  125.       @boss_hp_number = enemy.note =~ /<Boss HP Hide Number>/ ? false : true
  126.       @level = enemy.note =~ /<Level = (\d+)>/i ? $1 : nil
  127.   end  

  128. end

  129. #==============================================================================
  130. # ■ Game Temp
  131. #==============================================================================
  132. class Game_Temp
  133.   
  134.   attr_accessor :battle_end
  135.   
  136.   #--------------------------------------------------------------------------
  137.   # ● Initialize
  138.   #--------------------------------------------------------------------------  
  139.   alias mog_boss_hp_meter_initialize initialize
  140.   def initialize
  141.       @battle_end = false
  142.       mog_boss_hp_meter_initialize
  143.   end  

  144. end

  145. #==============================================================================
  146. # ■ Game Interpreter
  147. #==============================================================================
  148. class Game_Interpreter
  149.   
  150. #--------------------------------------------------------------------------
  151. # ● Initialize
  152. #--------------------------------------------------------------------------   
  153. def boss_hp_position(x = 0,y = 0)
  154.      $game_system.boss_hp_meter[0] = x
  155.      $game_system.boss_hp_meter[1] = y
  156. end
  157.   
  158. end

  159. #==============================================================================
  160. # ■ Game Temp
  161. #==============================================================================
  162. class Game_Temp

  163.   attr_accessor :cache_boss_hp
  164.   
  165. #--------------------------------------------------------------------------
  166. # ● Initialize
  167. #--------------------------------------------------------------------------   
  168.   alias mog_boss_hp_initialize initialize
  169.   def initialize
  170.       mog_boss_hp_initialize
  171.       cache_bosshp
  172.   end
  173.   
  174. #--------------------------------------------------------------------------
  175. # ● Cache Bosshp
  176. #--------------------------------------------------------------------------  
  177.   def cache_bosshp
  178.       @cache_boss_hp = []
  179.       @cache_boss_hp.push(Cache.system("Battle_Boss_Meter_Layout"))
  180.       @cache_boss_hp.push(Cache.system("Battle_Boss_Meter"))
  181.       @cache_boss_hp.push(Cache.system("Battle_Boss_Number"))
  182.   end
  183.   
  184. end

  185. #==============================================================================
  186. # ■ Boss HP Meter
  187. #==============================================================================
  188. class Boss_HP_Meter
  189.   include MOG_BOSS_HP_METER
  190.   
  191.   #--------------------------------------------------------------------------
  192.   # ● Initialize
  193.   #--------------------------------------------------------------------------  
  194.   def initialize(viewport = nil)
  195.       clear_enemy_setup
  196.       @hp_vieport = nil
  197.       check_boss_avaliable
  198.   end
  199.   
  200.   #--------------------------------------------------------------------------
  201.   # ● Clear Enemy Setup
  202.   #--------------------------------------------------------------------------   
  203.   def clear_enemy_setup
  204.       @name = ""   
  205.       @hp = 0
  206.       @hp2 = 0
  207.       @hp3 = 0
  208.       @maxhp = 0
  209.       @hp_old = 0
  210.       @level = nil
  211.       $game_system.boss_hp_meter[2] = false
  212.       $game_system.boss_hp_meter[3] = ""
  213.       $game_system.boss_hp_meter[4] = 0
  214.       $game_system.boss_hp_meter[5] = 1
  215.       $game_system.boss_hp_meter[7] = nil
  216.       $game_system.boss_hp_meter[8] = 0
  217.       $game_system.boss_hp_meter[9] = true
  218.   end

  219.   #--------------------------------------------------------------------------
  220.   # ● Check Boss Avaliable
  221.   #--------------------------------------------------------------------------   
  222.   def check_boss_avaliable
  223.       return if $game_troop.all_dead?
  224.       for i in $game_troop.members
  225.           if i.boss_hp_meter and !i.hidden? and i.hp > 0
  226.              create_boss_hp_meter(i)
  227.              break
  228.           end
  229.       end
  230.   end

  231.   #--------------------------------------------------------------------------
  232.   # ● Create Boss HP Meter
  233.   #--------------------------------------------------------------------------      
  234.   def create_boss_hp_meter(i)
  235.       $game_system.boss_hp_meter[2] = true
  236.       $game_system.boss_hp_meter[3] = i.name
  237.       $game_system.boss_hp_meter[4] = i.hp
  238.       $game_system.boss_hp_meter[5] = i.mhp
  239.       $game_system.boss_hp_meter[6] = i.hp
  240.       $game_system.boss_hp_meter[7] = i.level rescue nil
  241.       $game_system.boss_hp_meter[8] = 0
  242.       $game_system.boss_hp_meter[9] = i.boss_hp_number
  243.       $game_system.boss_hp_meter[10] = i.enemy_id
  244.       refresh_hp_meter
  245.       create_layout
  246.       create_meter
  247.       create_name
  248.       create_face
  249.       create_level
  250.       create_hp_number
  251.   end
  252.    
  253.   #--------------------------------------------------------------------------
  254.   # ● Create Layout
  255.   #--------------------------------------------------------------------------        
  256.   def create_layout
  257.       return if @layout != nil
  258.       @layout = Sprite.new
  259.       @layout.bitmap = $game_temp.cache_boss_hp[0]
  260.       @layout.x = $game_system.boss_hp_meter[0]
  261.       @layout.y = $game_system.boss_hp_meter[1]
  262.       @layout.viewport = @hp_vieport
  263.       @layout.z = PRIORITY_Z
  264.   end
  265.   
  266.   #--------------------------------------------------------------------------
  267.   # ● Create Meter
  268.   #--------------------------------------------------------------------------         
  269.   def create_meter
  270.       return if @meter_image != nil
  271.       hp_setup
  272.       @meter_image = $game_temp.cache_boss_hp[1]
  273.       @meter_cw = @meter_image.width / 3
  274.       @meter_ch = @meter_image.height / 2
  275.       @meter = Sprite.new
  276.       @meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  277.       @meter.z = @layout.z + 1
  278.       @meter.x = @layout.x + METER_POSITION[0]
  279.       @meter.y = @layout.y + METER_POSITION[1]
  280.       @meter.viewport = @hp_vieport
  281.       @hp_flow = 0
  282.       @hp_flow_max = @meter_cw * 2
  283.       update_hp_meter
  284.   end

  285.   #--------------------------------------------------------------------------
  286.   # ● Create Name
  287.   #--------------------------------------------------------------------------            
  288.   def create_name
  289.       @name_sprite = Sprite.new
  290.       @name_sprite.bitmap = Bitmap.new(200,32)
  291.       @name_sprite.z = @layout.z + 2
  292.       @name_sprite.x = @layout.x + NAME_POSITION[0]
  293.       @name_sprite.y = @layout.y + NAME_POSITION[1]
  294.       @name_sprite.bitmap.font.size = FONT_SIZE
  295.       @name_sprite.bitmap.font.bold = FONT_BOLD
  296.       @name_sprite.bitmap.font.italic = FONT_ITALIC
  297.       @name_sprite.bitmap.font.color = FONT_COLOR
  298.       @name_sprite.viewport = @hp_vieport
  299.       refresh_name
  300.   end
  301.   
  302.   #--------------------------------------------------------------------------
  303.   # ● Create Face
  304.   #--------------------------------------------------------------------------
  305.   def create_face
  306.       @face_sprite = Sprite.new
  307.       @face_sprite.x = @layout.x + FACE_POSITION[0]
  308.       @face_sprite.y = @layout.y + FACE_POSITION[1]
  309.       @face_sprite.z = @layout.z + 2
  310.       @face_sprite.viewport = @hp_vieport
  311.       refresh_face
  312.   end

  313.   #--------------------------------------------------------------------------
  314.   # ● Create Level
  315.   #--------------------------------------------------------------------------  
  316.   def create_level
  317.       @level_sprite = Sprite.new
  318.       @level_sprite.bitmap = Bitmap.new(120,32)
  319.       @level_sprite.z = @layout.z + 2
  320.       @level_sprite.x = @layout.x + LEVEL_POSITION[0]
  321.       @level_sprite.y = @layout.y + LEVEL_POSITION[1]
  322.       @level_sprite.bitmap.font.size = FONT_SIZE
  323.       @level_sprite.bitmap.font.bold = FONT_BOLD
  324.       @level_sprite.bitmap.font.italic = FONT_ITALIC
  325.       @level_sprite.bitmap.font.color = FONT_COLOR
  326.       @level_sprite.viewport = @hp_vieport
  327.       refresh_level
  328.   end
  329.   
  330.   #--------------------------------------------------------------------------
  331.   # ● Create HP Number
  332.   #--------------------------------------------------------------------------   
  333.   def create_hp_number
  334.       @hp2 = $game_system.boss_hp_meter[4]
  335.       @hp3 = @hp2
  336.       @hp_old2 = @hp2
  337.       @hp_ref = @hp_old2
  338.       @hp_refresh = false   
  339.       @hp_number_image = $game_temp.cache_boss_hp[2]
  340.       @hp_cw = @hp_number_image.width / 10
  341.       @hp_ch = @hp_number_image.height / 2
  342.       @hp_ch2 = 0
  343.       @hp_ch_range = HP_NUMBER_WAVE_EFFECT == true ? @hp_ch / 3 : 0
  344.       @hp_number_sprite = Sprite.new
  345.       @hp_number_sprite.bitmap = Bitmap.new(@hp_number_image.width, @hp_ch * 2)
  346.       @hp_number_sprite.z = @layout.z + 2
  347.       @hp_number_sprite.x = @layout.x + HP_NUMBER_POSITION[0]
  348.       @hp_number_sprite.y = @layout.y + HP_NUMBER_POSITION[1]
  349.       @hp_number_sprite.viewport = @hp_vieport
  350.       @hp_number_sprite.visible = $game_system.boss_hp_meter[9]
  351.       refresh_hp_number
  352.   end
  353.   
  354.   #--------------------------------------------------------------------------
  355.   # ● update_hp_number
  356.   #--------------------------------------------------------------------------
  357.   def update_hp_number
  358.       return if @hp_number_sprite == nil
  359.       @hp_number_sprite.visible = $game_system.boss_hp_meter[9]
  360.       if @hp_old2 < $game_system.boss_hp_meter[4]
  361.          number_refresh_speed
  362.          @hp2 += @hp_ref     
  363.          reset_hp_number  if @hp2 >= $game_system.boss_hp_meter[4]
  364.       elsif @hp_old2 > $game_system.boss_hp_meter[4]           
  365.          number_refresh_speed
  366.          @hp2 -= @hp_ref               
  367.          reset_hp_number if @hp2 <= $game_system.boss_hp_meter[4]
  368.       end  
  369.   end   
  370.   
  371.   #--------------------------------------------------------------------------
  372.   # ● Number Refresh Speed
  373.   #--------------------------------------------------------------------------
  374.   def number_refresh_speed
  375.       @hp_refresh = true  
  376.       @hp_ref = (3 * (@hp_old2 - $game_system.boss_hp_meter[4]).abs / 100) rescue nil
  377.       @hp_ref = 1 if @hp_ref == nil or @hp_ref < 1
  378.   end
  379.   
  380.   #--------------------------------------------------------------------------
  381.   # ● Refresh HP Number
  382.   #--------------------------------------------------------------------------      
  383.   def refresh_hp_number
  384.       return if @hp_number_sprite == nil
  385.       @hp_refresh = false
  386.       @hp_number_sprite.bitmap.clear
  387.       number = @hp2.abs.to_s.split(//)
  388.       @hp_ch2 = 0
  389.       for r in 0..number.size - 1
  390.           number_abs = number[r].to_i
  391.           nsrc_rect = Rect.new(@hp_cw * number_abs, 0, @hp_cw, @hp_ch)
  392.           @hp_ch2 = @hp_ch2 == @hp_ch_range ? 0 : @hp_ch_range
  393.           @hp_number_sprite.bitmap.blt(HP_STRING_SPACE + (@hp_cw *  r), @hp_ch2, @hp_number_image, nsrc_rect)        
  394.       end      
  395.       nsrc_rect = Rect.new(0, @hp_ch, @hp_number_image.width, @hp_ch)
  396.       @hp_number_sprite.bitmap.blt(0, 0, @hp_number_image, nsrc_rect)     
  397.   end
  398.   
  399.   #--------------------------------------------------------------------------
  400.   # ● Reset HP Number
  401.   #--------------------------------------------------------------------------        
  402.   def reset_hp_number
  403.       @hp_refresh = true
  404.       @hp_old2 = $game_system.boss_hp_meter[4]
  405.       @hp2 = $game_system.boss_hp_meter[4]
  406.       @hp_ref = 0
  407.       refresh_hp_number
  408.   end
  409.    
  410.   #--------------------------------------------------------------------------
  411.   # ● Refresh Level
  412.   #--------------------------------------------------------------------------   
  413.   def refresh_level
  414.       return if @level_sprite == nil
  415.       @level_sprite.bitmap.clear
  416.       @level = $game_system.boss_hp_meter[7]
  417.       return if @level == nil
  418.       level_text = LEVEL_WORD + @level.to_s
  419.       @level_sprite.bitmap.draw_text(0,0,120,32,level_text.to_s)
  420.   end
  421.   
  422.   #--------------------------------------------------------------------------
  423.   # ● Refresh Face
  424.   #--------------------------------------------------------------------------  
  425.   def refresh_face
  426.       return if @face_sprite == nil
  427.       dispose_bitmap_face
  428.       @face_sprite.bitmap = Cache.face(@name + "_f") rescue nil
  429.       @face_sprite.bitmap = Cache.face("BF_" + $game_system.boss_hp_meter[10].to_s) rescue nil if @face_sprite.bitmap == nil
  430.       @face_sprite.bitmap = Cache.face("") if @face_sprite.bitmap == nil
  431.   end
  432.   
  433.   #--------------------------------------------------------------------------
  434.   # ● Refresh Name
  435.   #--------------------------------------------------------------------------              
  436.   def refresh_name
  437.       return if @name_sprite == nil
  438.       @name = $game_system.boss_hp_meter[3]   
  439.       @name_sprite.bitmap.clear
  440.       @name_sprite.bitmap.draw_text(0,0,190,32,@name.to_s)
  441.       refresh_face
  442.       refresh_level
  443.       reset_hp_number
  444.       @hp_old = @meter_cw * @hp / @maxhp
  445.   end
  446.   
  447.   #--------------------------------------------------------------------------
  448.   # ● HP Setup
  449.   #--------------------------------------------------------------------------            
  450.   def hp_setup
  451.       @hp = $game_system.boss_hp_meter[4]
  452.       @maxhp = $game_system.boss_hp_meter[5]
  453.   end  
  454.   
  455.   #--------------------------------------------------------------------------
  456.   # ● Dispose
  457.   #--------------------------------------------------------------------------  
  458.   def dispose
  459.       dispose_layout
  460.       dispose_meter
  461.       dispose_name
  462.       dispose_face
  463.       dispose_level
  464.       dispose_hp_number      
  465.   end

  466.   #--------------------------------------------------------------------------
  467.   # ● Dispose Name
  468.   #--------------------------------------------------------------------------              
  469.   def dispose_name
  470.       return if @name_sprite == nil
  471.       @name_sprite.bitmap.dispose
  472.       @name_sprite.dispose
  473.       @name_sprite = nil
  474.   end  
  475.   
  476.   #--------------------------------------------------------------------------
  477.   # ● Dispose Layout
  478.   #--------------------------------------------------------------------------   
  479.   def dispose_layout
  480.       return if @layout == nil
  481.       @layout.dispose
  482.       @layout = nil
  483.   end
  484.   
  485.   #--------------------------------------------------------------------------
  486.   # ● Dispose Meter
  487.   #--------------------------------------------------------------------------      
  488.   def dispose_meter
  489.       return if @meter == nil
  490.       @meter.bitmap.dispose
  491.       @meter.dispose
  492.       @meter = nil
  493.   end
  494.   
  495.   #--------------------------------------------------------------------------
  496.   # ● Dispose Face
  497.   #--------------------------------------------------------------------------  
  498.   def dispose_face
  499.       return if @face_sprite == nil
  500.       dispose_bitmap_face
  501.       @face_sprite.dispose
  502.       @face_sprite = nil
  503.   end
  504.   
  505.   #--------------------------------------------------------------------------
  506.   # ● Dispose Bitmap Face
  507.   #--------------------------------------------------------------------------   
  508.   def dispose_bitmap_face
  509.       return if @face_sprite == nil
  510.       return if @face_sprite.bitmap == nil
  511.       @face_sprite.bitmap.dispose rescue nil
  512.       @face_sprite.bitmap = nil
  513.   end  
  514.   
  515.   #--------------------------------------------------------------------------
  516.   # ● Dispose Level
  517.   #--------------------------------------------------------------------------   
  518.   def dispose_level
  519.       return if @level_sprite == nil
  520.       @level_sprite.bitmap.dispose
  521.       @level_sprite.dispose
  522.       @level_sprite = nil
  523.   end  
  524.   
  525.   #--------------------------------------------------------------------------
  526.   # ● Dispose HP Number
  527.   #--------------------------------------------------------------------------      
  528.   def dispose_hp_number
  529.       return if @hp_number_sprite == nil
  530.       @hp_number_sprite.bitmap.dispose
  531.       @hp_number_sprite.dispose
  532.   end   
  533.   
  534.   #--------------------------------------------------------------------------
  535.   # ● Update
  536.   #--------------------------------------------------------------------------  
  537.   def update
  538.       refresh_hp_meter
  539.       refresh_hp_number if @hp_refresh
  540.       update_hp_meter
  541.       update_hp_number
  542.       update_fade_end
  543.       update_visible
  544.   end
  545.   
  546.   #--------------------------------------------------------------------------
  547.   # ● Update Visible
  548.   #--------------------------------------------------------------------------  
  549.   def update_visible
  550.       return if @meter_image == nil
  551.       vis = bhp_visible?
  552.       @layout.visible = vis   
  553.       @meter.visible = vis   
  554.       @name_sprite.visible = vis   
  555.       @face_sprite.visible = vis   
  556.       @level_sprite.visible = vis   
  557.       @hp_number_sprite.visible = vis   
  558.   end
  559.   
  560.   #--------------------------------------------------------------------------
  561.   # ● Bhp Visible?
  562.   #--------------------------------------------------------------------------  
  563.   def bhp_visible?
  564.       return false if $game_message.visible
  565.       return true
  566.   end
  567.   
  568.   #--------------------------------------------------------------------------
  569.   # ● Update Fade End
  570.   #--------------------------------------------------------------------------   
  571.   def update_fade_end
  572.       return if !$game_temp.battle_end
  573.       return if @meter_image == nil
  574.       @layout.opacity -= 5
  575.       @meter.opacity -= 5
  576.       @name_sprite.opacity -= 5
  577.       @face_sprite.opacity -= 5
  578.       @level_sprite.opacity -= 5
  579.       @hp_number_sprite.opacity -= 5
  580.   end
  581.   
  582.   #--------------------------------------------------------------------------
  583.   # ● Refresh HP Meter
  584.   #--------------------------------------------------------------------------         
  585.   def refresh_hp_meter
  586.       return if !$game_system.boss_hp_meter[2]
  587.       $game_system.boss_hp_meter[2] = false
  588.       hp_setup
  589.       refresh_name if @name != $game_system.boss_hp_meter[3]
  590.   end
  591.   
  592.   #--------------------------------------------------------------------------
  593.   # ● Update HP Meter
  594.   #--------------------------------------------------------------------------            
  595.   def update_hp_meter
  596.       return if @meter_image == nil
  597.       @meter.bitmap.clear
  598.       hp_width = @meter_cw * @hp / @maxhp      
  599.       execute_damage_flow(hp_width)      
  600.       hp_src_rect = Rect.new(@hp_flow, 0,hp_width, @meter_ch)
  601.       @meter.bitmap.blt(0,0, @meter_image, hp_src_rect)  
  602.       @hp_flow += METER_ANIMATION_SPEED
  603.       @hp_flow = 0 if @hp_flow >= @hp_flow_max
  604.   end  
  605.    
  606.   #--------------------------------------------------------------------------
  607.   # ● Execute Damage Flow
  608.   #--------------------------------------------------------------------------
  609.   def execute_damage_flow(hp_width)
  610.       return if @hp_old == hp_width
  611.       n = (@hp_old - hp_width).abs * 3 / 100
  612.       damage_flow = [[n, 2].min,0.5].max
  613.       @hp_old -= damage_flow      
  614.       @hp_old = hp_width if @hp_old <= hp_width
  615.       src_rect_old = Rect.new(0,@meter_ch, @hp_old, @meter_ch)
  616.       @meter.bitmap.blt(0,0, @meter_image, src_rect_old)      
  617.   end   
  618.   
  619. end

  620. #==============================================================================
  621. # ■ Spriteset Battle
  622. #==============================================================================
  623. class Spriteset_Battle
  624.   
  625.   #--------------------------------------------------------------------------
  626.   # ● Initialize
  627.   #--------------------------------------------------------------------------  
  628.   alias mog_enemy_bhp_initialize initialize
  629.   def initialize
  630.       mog_enemy_bhp_initialize
  631.       create_boss_hp_meter
  632.   end
  633.   
  634.   #--------------------------------------------------------------------------
  635.   # ● Create Boss HP Meter
  636.   #--------------------------------------------------------------------------  
  637.   def create_boss_hp_meter
  638.       @boss_hp_meter = Boss_HP_Meter.new(@viewport1)
  639.   end
  640.   
  641.   #--------------------------------------------------------------------------
  642.   # ● Dispose
  643.   #--------------------------------------------------------------------------      
  644.   alias mog_enemy_bhp_dispose dispose
  645.   def dispose
  646.       dispose_boss_hp_meter   
  647.       mog_enemy_bhp_dispose
  648.   end  

  649.   #--------------------------------------------------------------------------
  650.   # ● Dispose Boss HP Meter
  651.   #--------------------------------------------------------------------------         
  652.   def dispose_boss_hp_meter
  653.       return if @boss_hp_meter == nil
  654.       @boss_hp_meter.dispose
  655.       @boss_hp_meter = nil
  656.   end
  657.   
  658.   #--------------------------------------------------------------------------
  659.   # ● Update
  660.   #--------------------------------------------------------------------------        
  661.   alias mog_enemy_bhp_update update
  662.   def update
  663.       mog_enemy_bhp_update
  664.       update_boss_hp_meter
  665.   end
  666.   
  667.   #--------------------------------------------------------------------------
  668.   # ● Update Boss HP Meter
  669.   #--------------------------------------------------------------------------            
  670.   def update_boss_hp_meter
  671.       return if @boss_hp_meter == nil
  672.       @boss_hp_meter.update
  673.   end
  674.    
  675. end

  676. #==============================================================================
  677. # ■ Game_Battler
  678. #==============================================================================
  679. class Game_Battler < Game_BattlerBase
  680.   
  681.   #--------------------------------------------------------------------------
  682.   # ● Item Apply
  683.   #--------------------------------------------------------------------------        
  684.   alias mog_boss_hp_item_apply item_apply
  685.   def item_apply(user, item)
  686.       check_boss_hp_before
  687.       mog_boss_hp_item_apply(user, item)
  688.       check_boss_hp_after
  689.   end
  690.   
  691.   #--------------------------------------------------------------------------
  692.   # ● Regenerate HP
  693.   #--------------------------------------------------------------------------
  694.   alias mog_boss_hp_regenerate_hp regenerate_hp
  695.   def regenerate_hp
  696.       check_boss_hp_before
  697.       mog_boss_hp_regenerate_hp
  698.       check_boss_hp_after
  699.   end  
  700.   
  701.   #--------------------------------------------------------------------------
  702.   # ● Check Boss HP Before
  703.   #--------------------------------------------------------------------------         
  704.   def check_boss_hp_before
  705.       return if self.is_a?(Game_Actor)
  706.       return if !self.boss_hp_meter
  707.       $game_system.boss_hp_meter[6] = self.hp
  708.   end
  709.   
  710.   #--------------------------------------------------------------------------
  711.   # ● Check Boss HP After
  712.   #--------------------------------------------------------------------------            
  713.   def check_boss_hp_after
  714.       return if self.is_a?(Game_Actor)
  715.       return if !self.boss_hp_meter
  716.       $game_system.boss_hp_meter[2] = true
  717.       $game_system.boss_hp_meter[3] = self.name
  718.       $game_system.boss_hp_meter[4] = self.hp
  719.       $game_system.boss_hp_meter[5] = self.mhp
  720.       $game_system.boss_hp_meter[7] = self.level rescue nil     
  721.       $game_system.boss_hp_meter[9] = self.boss_hp_number
  722.   end
  723.   
  724. end

  725. #==============================================================================
  726. # ■ Game_Interpreter
  727. #==============================================================================
  728. class Game_Interpreter

  729.   #--------------------------------------------------------------------------
  730.   # ● Check Boss Meter
  731.   #--------------------------------------------------------------------------   
  732.   def check_boss_meter
  733.       return if !SceneManager.scene_is?(Scene_Battle)
  734.       iterate_enemy_index(@params[0]) do |enemy|
  735.         if enemy.boss_hp_meter
  736.            $game_system.boss_hp_meter[2] = true
  737.            $game_system.boss_hp_meter[3] = enemy.name
  738.            $game_system.boss_hp_meter[4] = enemy.hp
  739.            $game_system.boss_hp_meter[5] = enemy.mhp
  740.            $game_system.boss_hp_meter[6] = enemy.hp   
  741.            $game_system.boss_hp_meter[7] = enemy.level rescue nil
  742.            $game_system.boss_hp_meter[9] = enemy.boss_hp_number
  743.         end
  744.      end
  745.   end

  746.   #--------------------------------------------------------------------------
  747.   # ● Command 331
  748.   #--------------------------------------------------------------------------  
  749.   alias mog_boss_meter_command_331 command_331
  750.   def command_331
  751.       mog_boss_meter_command_331
  752.       check_boss_meter
  753.   end
  754.   
  755.   #--------------------------------------------------------------------------
  756.   # ● Command 334
  757.   #--------------------------------------------------------------------------  
  758.   alias mog_boss_meter_command_334 command_334
  759.   def command_334
  760.       mog_boss_meter_command_334
  761.       check_boss_meter
  762.   end   
  763.   
  764. end

  765. #==============================================================================
  766. # ■ BattleManager
  767. #==============================================================================
  768. class << BattleManager
  769.   
  770.   #--------------------------------------------------------------------------
  771.   # ● Init Members
  772.   #--------------------------------------------------------------------------         
  773.   alias mog_boss_meter_init_members init_members
  774.   def init_members
  775.       $game_temp.battle_end = false
  776.       mog_boss_meter_init_members
  777.   end  
  778.   
  779.   #--------------------------------------------------------------------------
  780.   # ● Process Victory
  781.   #--------------------------------------------------------------------------            
  782.   alias mog_boss_meter_process_victory process_victory
  783.   def process_victory
  784.       $game_temp.battle_end = true
  785.       mog_boss_meter_process_victory
  786.   end
  787.   
  788.   #--------------------------------------------------------------------------
  789.   # ● Process Abort
  790.   #--------------------------------------------------------------------------            
  791.   alias mog_boss_meter_process_abort process_abort
  792.   def process_abort
  793.       $game_temp.battle_end = true
  794.       mog_boss_meter_process_abort
  795.   end

  796.   #--------------------------------------------------------------------------
  797.   # ● Process Defeat
  798.   #--------------------------------------------------------------------------            
  799.   alias mog_boss_meter_process_defeat process_defeat
  800.   def process_defeat
  801.       $game_temp.battle_end = true
  802.       mog_boss_meter_process_defeat
  803.   end
  804.   
  805. end
复制代码


报错.png (2.98 KB, 下载次数: 23)

报错.png

作者: 百里_飞柳    时间: 2018-12-29 13:51
286行 @meter_image = $game_temp.cache_boss_hp[1] 改成 @meter_image = Cache.system("Battle_Boss_Meter") 试试?
作者: melatin    时间: 2018-12-29 18:01
百里_飞柳 发表于 2018-12-29 13:51
286行 @meter_image = $game_temp.cache_boss_hp[1] 改成 @meter_image = Cache.system("Battle_Boss_Meter ...

感谢,不过好像没用……
太诡异了这个,换个脚本算了……




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1