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

Project1

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

[已经过期] 血槽显示问题

[复制链接]

Lv2.观梦者

梦石
0
星屑
775
在线时间
92 小时
注册时间
2018-2-5
帖子
70
跳转到指定楼层
1
发表于 2018-7-10 22:44:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问,要怎样改才可以让HP一直显示,而不是只有攻击时才显示。
  1. $imported = {} if $imported.nil?
  2. $imported[:mog_enemy_hp] = true

  3. module MOG_ENEMY_HP
  4.    #相对于敌人战斗图的Hp条的位置.
  5.    POSITION_CORRECTION = [0,130]
  6.    #HP进度条的位置.
  7.    HP_METER_POSITION = [2,4]
  8.    #是否在选择目标时显示敌人HP条.
  9.    SHOW_ENEMY_HP_SELECTION = true
  10.    #HP条的Z坐标.
  11.    PRIORITY_Z = 101
  12. end

  13. #==============================================================================
  14. # ■ Game Enemy
  15. #==============================================================================
  16. class Game_Enemy < Game_Battler

  17.   attr_accessor :hp_meter_active               
  18.   
  19.   #--------------------------------------------------------------------------
  20.   # ● Initialize
  21.   #--------------------------------------------------------------------------
  22.   alias mog_enemy_hp_initialize initialize
  23.   def initialize(index, enemy_id)
  24.       mog_enemy_hp_initialize(index, enemy_id)
  25.       hide = enemy.note =~ /<Hide HP>/i ? true : false
  26.       @hp_meter_active = [false,hide]
  27.   end  

  28. end

  29. #==============================================================================
  30. # ■ Game_Battler
  31. #==============================================================================
  32. class Game_Battler < Game_BattlerBase
  33.   
  34.   #--------------------------------------------------------------------------
  35.   # ● Item Apply
  36.   #--------------------------------------------------------------------------  
  37.    alias mog_enemy_hp_item_apply item_apply
  38.    def item_apply(user, item)
  39.        mog_enemy_hp_item_apply(user, item)
  40.        self.hp_meter_active[0] = true if self.is_a?(Game_Enemy) and @result.hp_damage != 0   
  41.    end

  42.   #--------------------------------------------------------------------------
  43.   # ● Regenerate HP
  44.   #--------------------------------------------------------------------------
  45.   alias mog_enemy_hp_regenerate_hp regenerate_hp
  46.   def regenerate_hp
  47.       mog_enemy_hp_regenerate_hp
  48.       self.hp_meter_active[0] = true if self.is_a?(Game_Enemy) and @result.hp_damage != 0   
  49.   end
  50.    
  51. end
  52.   
  53. #==============================================================================
  54. # ■ Game Temp
  55. #==============================================================================
  56. class Game_Temp
  57.   
  58.   attr_accessor :cache_enemy_hp
  59.   attr_accessor :battle_end
  60.   
  61.   #--------------------------------------------------------------------------
  62.   # ● Initialize
  63.   #--------------------------------------------------------------------------      
  64.   alias mog_enemy_hp_initialize initialize
  65.   def initialize
  66.       @battle_end = false   
  67.       mog_enemy_hp_initialize
  68.       cache_ehp
  69.   end
  70.   
  71.   #--------------------------------------------------------------------------
  72.   # ● Cache EHP
  73.   #--------------------------------------------------------------------------     
  74.   def cache_ehp
  75.       @cache_enemy_hp = []
  76.       @cache_enemy_hp.push(Cache.system("Battle_Enemy_HP_Layout"))
  77.       @cache_enemy_hp.push(Cache.system("Battle_Enemy_HP_Meter"))
  78.   end
  79.   
  80.   #--------------------------------------------------------------------------
  81.   # ● Sprite Visible
  82.   #--------------------------------------------------------------------------   
  83.   def sprite_visible
  84.       return false if $game_message.visible
  85.       return false if $game_temp.battle_end
  86.       return true
  87.   end
  88.   
  89. end

  90. #==============================================================================
  91. # ■ Enemy HP
  92. #==============================================================================
  93. class Enemy_HP
  94.   include MOG_ENEMY_HP
  95.   
  96.   #--------------------------------------------------------------------------
  97.   # ● Initialize
  98.   #--------------------------------------------------------------------------   
  99.   def initialize(viewport = nil,enemy,index)
  100.       $game_temp.battle_end = false
  101.       @enemy = enemy ; @index = index ; @fade_time = -1
  102.       create_layout ; create_hp_meter      
  103.       @layout.opacity = 0 ; @layout.visible = false
  104.       @layout.viewport = viewport ; @hp_meter.opacity = 0
  105.       @hp_meter.visible = false ; @hp_meter.viewport = viewport
  106.       @layout.z = PRIORITY_Z ; @enemy.hp_meter_active[0] = false
  107.       @enemy_old = @enemy ; @enemy_old2 = nil
  108.       @hide = @enemy.hp_meter_active[1]
  109.       set_meter_position ; @force_visbible = false
  110.   end
  111.   
  112.   #--------------------------------------------------------------------------
  113.   # ● Set Meter Position
  114.   #--------------------------------------------------------------------------   
  115.   def set_meter_position
  116.       return if @enemy == nil
  117.       b_pos = [@enemy.screen_x - (@layout.width / 2) + POSITION_CORRECTION[0],
  118.                @enemy.screen_y + POSITION_CORRECTION[1] - (@layout.height / 2)]
  119.       @org_pos1 = [b_pos[0],b_pos[1]]
  120.       @layout.x = @org_pos1[0] ; @layout.y = @org_pos1[1]   
  121.       @org_pos2 = [b_pos[0] + HP_METER_POSITION[0],
  122.                    b_pos[1] + HP_METER_POSITION[1]]
  123.       @hp_meter.x = @org_pos2[0] ; @hp_meter.y = @org_pos2[1]
  124.       @hp_meter.z = PRIORITY_Z   
  125.   end     
  126.       
  127.   #--------------------------------------------------------------------------
  128.   # ● Create HP Meter
  129.   #--------------------------------------------------------------------------        
  130.   def create_layout
  131.       @layout = Sprite.new ; @layout.bitmap = $game_temp.cache_enemy_hp[0]
  132.   end
  133.    
  134.   #--------------------------------------------------------------------------
  135.   # ● Create HP Meter
  136.   #--------------------------------------------------------------------------      
  137.   def create_hp_meter
  138.       @meter_image = $game_temp.cache_enemy_hp[1]
  139.       @meter_cw = @meter_image.width ; @meter_ch = @meter_image.height / 2      
  140.       @hp_meter = Sprite.new
  141.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  142.       @hp_width_old = @meter_cw * @enemy.hp / @enemy.mhp
  143.     end  
  144.   
  145.   #--------------------------------------------------------------------------
  146.   # ● Hp Flow Update
  147.   #--------------------------------------------------------------------------
  148.   def update_hp_flow
  149.       return if [email protected]     
  150.       hp_width = @meter_cw * @enemy.hp / @enemy.mhp
  151.       @hp_meter.bitmap.clear ; execute_damage_flow(hp_width)
  152.       hp_src_rect = Rect.new(0,0,hp_width, @meter_ch)
  153.       @hp_meter.bitmap.blt(0,0, @meter_image, hp_src_rect)
  154.   end
  155.    
  156.   #--------------------------------------------------------------------------
  157.   # ● Execute Damage Flow
  158.   #--------------------------------------------------------------------------
  159.   def execute_damage_flow(hp_width)
  160.       n = (@hp_width_old - hp_width).abs * 3 / 100
  161.       damage_flow = [[n, 2].min,0.5].max
  162.       @hp_width_old -= damage_flow
  163.       @hp_width_old = hp_width if @hp_width_old <= hp_width
  164.       src_rect_old = Rect.new(0,@meter_ch,@hp_width_old, @meter_ch)
  165.       @hp_meter.bitmap.blt(0,0, @meter_image, src_rect_old)      
  166.   end   
  167.   
  168.   #--------------------------------------------------------------------------
  169.   # ● Dispose
  170.   #--------------------------------------------------------------------------      
  171.   def dispose
  172.       return if @layout == nil
  173.       @layout.dispose ; @hp_meter.bitmap.dispose ; @hp_meter.dispose
  174.   end
  175.   
  176.   #--------------------------------------------------------------------------
  177.   # ● Update
  178.   #--------------------------------------------------------------------------      
  179.   def update
  180.       return if @meter_image == nil
  181.       return if @hide
  182.       if force_hide_enemy_hp?
  183.          @hp_meter.visible = false
  184.          @layout.visible = false   
  185.          return
  186.       end
  187.       update_clear ; update_fade ; update_visible
  188.       update_hp_flow ; refresh if @enemy.hp_meter_active[0]
  189.       update_battle_camera if $imported[:mog_battle_camera]
  190.   end  
  191.   
  192.   #--------------------------------------------------------------------------
  193.   # ● Update Battle Camera
  194.   #--------------------------------------------------------------------------               
  195.   def update_battle_camera
  196.       @hp_meter.ox = $game_temp.viewport_oxy[0]
  197.       @hp_meter.oy = $game_temp.viewport_oxy[1]
  198.       @layout.ox = $game_temp.viewport_oxy[0]
  199.       @layout.oy = $game_temp.viewport_oxy[1]
  200.   end  
  201.   
  202.   #--------------------------------------------------------------------------
  203.   # ● Force Hide Enemy HP
  204.   #--------------------------------------------------------------------------      
  205.   def force_hide_enemy_hp?
  206.       if $imported[:mog_atb_system]
  207.          return true if $game_temp.atb_user == nil
  208.          return true if $game_temp.end_phase_duration[1] > 0
  209.       end
  210.       return true if !$game_temp.sprite_visible
  211.       return true if $game_message.visible
  212.       return true if $game_temp.battle_end
  213.       return false
  214.   end         
  215.   
  216.   #--------------------------------------------------------------------------
  217.   # ● Can Update Force Refresh
  218.   #--------------------------------------------------------------------------      
  219.   def can_update_force_refresh?
  220.       return false if @index != 0
  221.       return false if !SHOW_ENEMY_HP_SELECTION
  222.       return false if $imported[:mog_battle_cursor] == nil
  223.       return false if $game_temp.battle_cursor_data == nil
  224.       @force_visbible = true ; force_refresh if can_force_refresh?
  225.       return true
  226.   end
  227.    
  228.   #--------------------------------------------------------------------------
  229.   # ● Update force_refresh
  230.   #--------------------------------------------------------------------------        
  231.   def can_force_refresh?
  232.       return false if @enemy_old2 == $game_temp.battle_cursor_data
  233.       return false if $game_temp.battle_cursor_data.is_a?(Game_Actor)
  234.       return true
  235.   end
  236.   
  237.   #--------------------------------------------------------------------------
  238.   # ● Update clear
  239.   #--------------------------------------------------------------------------        
  240.   def update_clear
  241.       return if !@force_visbible
  242.       @force_visbible = false ; @enemy = @enemy_old ; @enemy_old2 = nil
  243.       @layout.visible = false ;  @hp_meter.visible = false         
  244.   end
  245.    
  246.   #--------------------------------------------------------------------------
  247.   # ● Update Fade
  248.   #--------------------------------------------------------------------------        
  249.   def update_fade
  250.       @fade_time -= 1 if @fade_time > 0
  251.       return if @fade_time != 0
  252.       @layout.opacity -= 10 ; @hp_meter.opacity -= 10
  253.       @layout.x += 1 ; @hp_meter.x += 1 ; @fade_time = -1 if @layout.opacity == 0
  254.   end  
  255.   
  256.   #--------------------------------------------------------------------------
  257.   # ● Update Visible
  258.   #--------------------------------------------------------------------------        
  259.   def update_visible
  260.       return if [email protected]
  261.       vis = can_visible? ; @layout.visible = vis ; @hp_meter.visible = vis
  262.   end
  263.   
  264.   #--------------------------------------------------------------------------
  265.   # ● Refresh
  266.   #--------------------------------------------------------------------------         
  267.   def refresh
  268.       set_meter_position
  269.       @enemy.hp_meter_active[0] = false ; @fade_time = 60
  270.       @layout.opacity = 255  ; @hp_meter.opacity = 255   
  271.       @layout.visible = true ; @hp_meter.visible = true
  272.       @layout.x = @org_pos1[0] ;  @layout.y = @org_pos1[1]
  273.       @hp_meter.x = @org_pos2[0]; @hp_meter.y = @org_pos2[1]      
  274.       hp_width = @meter_cw * @enemy.hp / @enemy.mhp
  275.       @hp_width_old = hp_width if @hp_width_old < hp_width
  276.       update_hp_flow      
  277.   end
  278.   
  279.   #--------------------------------------------------------------------------
  280.   # ● Refresh
  281.   #--------------------------------------------------------------------------         
  282.   def force_refresh
  283.       return if $game_temp.battle_cursor_data == nil
  284.       @enemy_old2 = $game_temp.battle_cursor_data
  285.       @enemy = $game_temp.battle_cursor_data
  286.       set_meter_position
  287.       @enemy.hp_meter_active[0] = false ; @fade_time = 2
  288.       @layout.opacity = 255 ;  @hp_meter.opacity = 255   
  289.       @layout.visible = true ; @hp_meter.visible = true
  290.       @layout.x = @org_pos1[0] ;  @layout.y = @org_pos1[1]
  291.       @hp_meter.x = @org_pos2[0]; @hp_meter.y = @org_pos2[1]      
  292.       hp_width = @meter_cw * @enemy.hp / @enemy.mhp
  293.       @hp_width_old = hp_width ; update_hp_flow
  294.   end  
  295.   
  296.   #--------------------------------------------------------------------------
  297.   # ● Can Visible?
  298.   #--------------------------------------------------------------------------         
  299.   def can_visible?
  300.       return false if @layout.opacity == 0
  301.       return false if $game_message.visible
  302.       return false if $game_temp.battle_end      
  303.       return true
  304.   end
  305.    
  306. end

  307. #==============================================================================
  308. # ■ Spriteset Battle
  309. #==============================================================================
  310. class Spriteset_Battle
  311.   
  312.   #--------------------------------------------------------------------------
  313.   # ● Initialize
  314.   #--------------------------------------------------------------------------  
  315.   alias mog_enemy_hp_initialize initialize
  316.   def initialize
  317.       mog_enemy_hp_initialize
  318.       create_enemy_hp
  319.   end
  320.   
  321.   #--------------------------------------------------------------------------
  322.   # ● Create Battle Hud
  323.   #--------------------------------------------------------------------------   
  324.   def create_enemy_hp
  325.       @enemy_hp = []      
  326.       $game_troop.members.each_with_index do |i, index| @enemy_hp.push(Enemy_HP.new(nil,i,index)) end
  327.   end
  328.   
  329.   #--------------------------------------------------------------------------
  330.   # ● Dispose
  331.   #--------------------------------------------------------------------------      
  332.   alias mog_enemy_hp_dispose dispose
  333.   def dispose
  334.       dispose_enemy_hp
  335.       mog_enemy_hp_dispose
  336.   end  
  337.   
  338.   #--------------------------------------------------------------------------
  339.   # ● Dispose Enemy HP
  340.   #--------------------------------------------------------------------------        
  341.   def dispose_enemy_hp
  342.       return if @enemy_hp == nil
  343.       @enemy_hp.each {|sprite| sprite.dispose } ; @enemy_hp.clear
  344.   end
  345.   
  346.   #--------------------------------------------------------------------------
  347.   # ● Update
  348.   #--------------------------------------------------------------------------        
  349.   alias mog_enemy_hp_update update
  350.   def update
  351.       mog_enemy_hp_update
  352.       update_enemy_hp
  353.   end
  354.   
  355.   #--------------------------------------------------------------------------
  356.   # ● Update Enemy HP
  357.   #--------------------------------------------------------------------------         
  358.   def update_enemy_hp
  359.       return if @enemy_hp == nil
  360.       @enemy_hp.each {|sprite| sprite.update }
  361.   end
  362.    
  363. end
复制代码
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-17 04:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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