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

Project1

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

[已经过期] 关于显示敌人hp 和 mp.

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
15 小时
注册时间
2011-5-1
帖子
13
跳转到指定楼层
1
发表于 2013-4-28 10:52:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 w61351006 于 2013-4-28 11:00 编辑

我是用 Sideview 1.00 的   血槽显示是 MOG - Enemy HP Meter  (v1.1) . 但我想增加mp显示. 就去网上找了个.. 但发现2L 那个脚本.http://rpg.blue/thread-238990-1-1.html
RUBY 代码复制
  1. #==============================================================================
  2. # 功能:战斗中显示敌人血和蓝于敌人脚下
  3. # 适用:RMVX Ace
  4. # 作者:殇殃 2012.3.10
  5. # 使用方法:复制整个脚本插入到Main之前
  6. # 注意:由于血条是显示在敌人脚下,所以敌群的位置不能太靠底部,不然会被挡住。
  7. # 可以自行更改坐标修改显示位置、血条的颜色等。
  8. #==============================================================================
  9. # ■ Window_Base
  10. #------------------------------------------------------------------------------
  11. #  游戏中全部窗口的超级类。
  12. #==============================================================================
  13.  
  14. class Window_Base < Window
  15. #--------------------------------------------------------------------------
  16. # ● 描绘敌人HP
  17. #--------------------------------------------------------------------------
  18. def draw_enemy_hp(enemy, x, y, width = 80)
  19. draw_gauge(x, y, width, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
  20. self.contents.font.color = system_color
  21. self.contents.draw_text(x, y, 30, line_height, Vocab::hp_a)
  22. self.contents.font.color = hp_color(enemy)
  23. self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.hp, 2)
  24. #一个数字占16像素
  25. end
  26. #--------------------------------------------------------------------------
  27. # ● 绘制敌人MP
  28. #--------------------------------------------------------------------------
  29. def draw_enemy_mp(enemy, x, y, width = 80)
  30. draw_gauge(x, y, width, enemy.mp_rate, mp_gauge_color1, mp_gauge_color2)
  31. self.contents.font.color = system_color
  32. self.contents.draw_text(x, y, 30, line_height, Vocab::mp_a)
  33. self.contents.font.color = mp_color(enemy)
  34. self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.mp, 2)
  35. end
  36. end
  37. #==============================================================================
  38. # ■ Sprite_Battler
  39. #------------------------------------------------------------------------------
  40. #  战斗显示用活动块。Game_Battler 类的实例监视、
  41. # 活动块的状态的监视、活动块状态自动变化。
  42. #==============================================================================
  43.  
  44. class Sprite_Battler < Sprite_Base
  45. #--------------------------------------------------------------------------
  46. # ● 初始化对象
  47. # viewport : 视区
  48. # battler : 战斗者 (Game_Battler)
  49. #--------------------------------------------------------------------------
  50. def initialize(viewport, battler = nil)
  51. super(viewport)
  52. [url=home.php?mod=space&uid=133701]@battler[/url] = battler
  53. @battler_visible = false
  54. @effect_type = nil
  55. @effect_duration = 0
  56. if @battler.is_a?(Game_Enemy)
  57. width = 24 + 80 #边距12*2+血条的长度(在draw_enemy_hp中定义)
  58. height = 24 + 24*2 #边距12*2+line_height*2
  59. x = @battler.screen_x - width/2 #screen_x是怪物图片水平方向上的中点位置
  60. y = @battler.screen_y - 12 #边距12,显示HP/MP的窗口无边框
  61. @enemy_hpmp_window = Window_Base.new(x, y, width, height)
  62. @enemy_hpmp_window.opacity = 0
  63. @enemy_hpmp_window.contents = Bitmap.new(width - 24, height - 24)#位图比窗口小24像素取消边框
  64. @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
  65. @old_hp = -1
  66. @enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
  67. @old_mp = -1
  68. end
  69. end
  70. #--------------------------------------------------------------------------
  71. # ● 释放
  72. #--------------------------------------------------------------------------
  73. def dispose
  74. if self.bitmap != nil
  75. self.bitmap.dispose
  76. @enemy_hpmp_window.dispose
  77. end
  78. super
  79. end
  80. #--------------------------------------------------------------------------
  81. # ● 更新画面
  82. #--------------------------------------------------------------------------
  83. def update
  84. super
  85. if @battler == nil
  86. self.bitmap = nil
  87. else
  88. @use_sprite = @battler.use_sprite?
  89. if @use_sprite
  90. update_bitmap
  91. update_origin
  92. update_position
  93. end
  94. setup_new_effect
  95. setup_new_animation
  96. update_effect
  97. if @enemy_hpmp_window != nil and (@old_hp != @battler.hp or @old_mp != @battler.mp)
  98. if @battler.hp == 0
  99. @enemy_hpmp_window.hide
  100. else
  101. @enemy_hpmp_window.contents.clear
  102. @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
  103. @old_hp = @battler.hp
  104. @enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
  105. @old_mp = @battler.mp
  106. @enemy_hpmp_window.show #怪物死后再被复活
  107. end #if battler.hp == 0
  108. end
  109. end #if @battler == nil
  110. end
  111.  
  112. end


貌似和我那个战斗系统有冲突. 人物攻击没动画,卡住了.. 求大神帮看 这脚本哪里冲突了.  如果找不到.  也请帮看原来的hp脚本,怎么修改坐标..而且被袭击时候的血槽是反的..如图  


另外附上 hp脚本  
RUBY 代码复制
  1. #==============================================================================
  2. # +++ MOG - Enemy HP Meter  (v1.1) +++
  3. #==============================================================================
  4. # By Moghunter
  5. #==============================================================================
  6. # Apresenta um medidor animado com o HP do inimigo.
  7. #==============================================================================
  8. # Para ocultar o HP do inimigo use a TAG abaixo na caixa de notas.
  9. #
  10. # <Hide HP>
  11. #
  12. #==============================================================================
  13. # Serão necessários as imagens.
  14. #
  15. # Battle_Enemy_HP_Layout.png
  16. # Battle_Enemy_HP_Meter.png
  17. #
  18. #
  19. #==============================================================================
  20.  
  21. #==============================================================================
  22. # ● Histórico (Version History)
  23. #==============================================================================
  24. # v 1.1 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.)
  25. #==============================================================================
  26.  
  27. module MOG_ENEMY_HP
  28.    #Posição geral do medidor em relação ao battler.
  29.    POSITION_CORRECTION = [6,10]
  30.    #Posição do medidor de HP.
  31.    HP_METER_POSITION = [2,4]
  32.    #Prioridade do medidor na tela.
  33.    PRIORITY_Z = 1000   
  34. end
  35.  
  36. #==============================================================================
  37. # ■ Game Enemy
  38. #==============================================================================
  39. class Game_Enemy < Game_Battler
  40.  
  41.   attr_accessor :hp_meter_active               
  42.  
  43.   #--------------------------------------------------------------------------
  44.   # ● Initialize
  45.   #--------------------------------------------------------------------------
  46.   alias mog_enemy_hp_initialize initialize
  47.   def initialize(index, enemy_id)
  48.       mog_enemy_hp_initialize(index, enemy_id)
  49.       hide = enemy.note =~ /<Hide HP>/i ? true : false
  50.       @hp_meter_active = [false,hide]
  51.   end  
  52.  
  53. end
  54.  
  55. #==============================================================================
  56. # ■ Game_Battler
  57. #==============================================================================
  58. class Game_Battler < Game_BattlerBase
  59.  
  60.   #--------------------------------------------------------------------------
  61.   # ● Item Apply
  62.   #--------------------------------------------------------------------------  
  63.    alias mog_enemy_hp_item_apply item_apply
  64.    def item_apply(user, item)
  65.        mog_enemy_hp_item_apply(user, item)
  66.        if self.is_a?(Game_Enemy)
  67.           self.hp_meter_active[0] = true if @result.hp_damage != 0
  68.        end
  69.    end
  70.  
  71.   #--------------------------------------------------------------------------
  72.   # ● Regenerate HP
  73.   #--------------------------------------------------------------------------
  74.   alias mog_enemy_hp_regenerate_hp regenerate_hp
  75.   def regenerate_hp
  76.       mog_enemy_hp_regenerate_hp
  77.       if self.is_a?(Game_Enemy)
  78.          self.hp_meter_active[0] = true if @result.hp_damage != 0      
  79.       end         
  80.   end
  81.  
  82. end
  83.  
  84.  
  85. #==============================================================================
  86. # ■ Battle_Hud
  87. #==============================================================================
  88. class Enemy_HP
  89.   include MOG_ENEMY_HP
  90.  
  91.   #--------------------------------------------------------------------------
  92.   # ● Initialize
  93.   #--------------------------------------------------------------------------   
  94.   def initialize(viewport = nil,enemy)
  95.       dispose
  96.       @enemy = enemy
  97.       @fade_time = -1
  98.       create_layout   
  99.       create_hp_meter      
  100.       b_pos = [enemy.screen_x - (@layout.width / 2) + POSITION_CORRECTION[0], enemy.screen_y + POSITION_CORRECTION[1] - (@layout.height / 2)]
  101.       @layout.opacity = 0
  102.       @org_pos1 = [b_pos[0],b_pos[1]]
  103.       @layout.x = @org_pos1[0]
  104.       @layout.y = @org_pos1[1]
  105.       @layout.visible = false
  106.       @hp_meter.opacity = 0
  107.       @hp_meter.visible = false
  108.       @org_pos2 = [b_pos[0] + HP_METER_POSITION[0], b_pos[1] + HP_METER_POSITION[1]]
  109.       @hp_meter.x = @org_pos2[0]
  110.       @hp_meter.y = @org_pos2[1]
  111.       @hp_meter.viewport = viewport
  112.       @hp_meter.z = PRIORITY_Z
  113.       @layout.viewport = viewport
  114.       @layout.z = PRIORITY_Z
  115.       @enemy.hp_meter_active[0] = false
  116.       @hide = @enemy.hp_meter_active[1]
  117.   end
  118.  
  119.   #--------------------------------------------------------------------------
  120.   # ● Create HP Meter
  121.   #--------------------------------------------------------------------------        
  122.   def create_layout
  123.       @layout = Sprite.new
  124.       @layout.bitmap = Cache.system("Battle_Enemy_HP_Layout")
  125.   end
  126.  
  127.   #--------------------------------------------------------------------------
  128.   # ● Create HP Meter
  129.   #--------------------------------------------------------------------------      
  130.   def create_hp_meter
  131.       @meter_image = Cache.system("Battle_Enemy_HP_Meter")
  132.       @meter_cw = @meter_image.width
  133.       @meter_ch = @meter_image.height / 2      
  134.       @hp_meter = Sprite.new
  135.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  136.       @hp_width_old = @meter_cw * @enemy.hp / @enemy.mhp
  137.     end  
  138.  
  139.   #--------------------------------------------------------------------------
  140.   # ● Hp Flow Update
  141.   #--------------------------------------------------------------------------
  142.   def update_hp_flow
  143.       return if !@layout.visible     
  144.       hp_width = @meter_cw * @enemy.hp / @enemy.mhp
  145.       @hp_meter.bitmap.clear      
  146.       execute_damage_flow(hp_width)
  147.       hp_src_rect = Rect.new(0, 0,hp_width, @meter_ch)
  148.       @hp_meter.bitmap.blt(0,0, @meter_image, hp_src_rect)
  149.   end
  150.  
  151.   #--------------------------------------------------------------------------
  152.   # ● Execute Damage Flow
  153.   #--------------------------------------------------------------------------
  154.   def execute_damage_flow(hp_width)
  155.       n = (@hp_width_old - hp_width).abs * 3 / 100
  156.       damage_flow = [[n, 2].min,0.5].max
  157.       @hp_width_old -= damage_flow
  158.       if @hp_width_old <= hp_width
  159.          @hp_width_old = hp_width
  160.       end   
  161.       src_rect_old = Rect.new(0,@meter_ch,@hp_width_old, @meter_ch)
  162.       @hp_meter.bitmap.blt(0,0, @meter_image, src_rect_old)      
  163.   end   
  164.  
  165.   #--------------------------------------------------------------------------
  166.   # ● Dispose
  167.   #--------------------------------------------------------------------------      
  168.   def dispose
  169.       return if @meter_image == nil
  170.       @layout.bitmap.dispose
  171.       @layout.dispose
  172.       @hp_meter.bitmap.dispose
  173.       @hp_meter.dispose
  174.       @meter_image.dispose
  175.       @meter_image = nil
  176.   end
  177.  
  178.   #--------------------------------------------------------------------------
  179.   # ● Update
  180.   #--------------------------------------------------------------------------      
  181.   def update
  182.       return if @meter_image == nil
  183.       return if @hide
  184.       update_fade   
  185.       update_visible
  186.       update_hp_flow
  187.       refresh if @enemy.hp_meter_active[0]
  188.   end  
  189.  
  190.   #--------------------------------------------------------------------------
  191.   # ● Update Fade
  192.   #--------------------------------------------------------------------------        
  193.   def update_fade
  194.       @fade_time -= 1 if @fade_time > 0
  195.       return if @fade_time != 0
  196.       @layout.opacity -= 10
  197.       @hp_meter.opacity -= 10
  198.       @layout.x += 1
  199.       @hp_meter.x += 1
  200.       @fade_time = -1 if @layout.opacity == 0
  201.   end  
  202.  
  203.   #--------------------------------------------------------------------------
  204.   # ● Update Visible
  205.   #--------------------------------------------------------------------------        
  206.   def update_visible
  207.       return if !@layout.visible
  208.       vis = can_visible?
  209.       @layout.visible = vis
  210.       @hp_meter.visible = vis
  211.   end
  212.  
  213.   #--------------------------------------------------------------------------
  214.   # ● Refresh
  215.   #--------------------------------------------------------------------------         
  216.   def refresh     
  217.       @enemy.hp_meter_active[0] = false
  218.       @layout.opacity = 255
  219.       @hp_meter.opacity = 255   
  220.       @layout.visible = true
  221.       @hp_meter.visible = true
  222.       @fade_time = 60
  223.       @layout.x = @org_pos1[0]
  224.       @layout.y = @org_pos1[1]
  225.       @hp_meter.x = @org_pos2[0]
  226.       @hp_meter.y = @org_pos2[1]      
  227.       hp_width = @meter_cw * @enemy.hp / @enemy.mhp
  228.       @hp_width_old = hp_width if @hp_width_old < hp_width
  229.       update_hp_flow
  230.   end
  231.  
  232.   #--------------------------------------------------------------------------
  233.   # ● Can Visible?
  234.   #--------------------------------------------------------------------------         
  235.   def can_visible?
  236.       return false if @layout.opacity == 0      
  237.       return true
  238.   end
  239.  
  240. end
  241.  
  242. #==============================================================================
  243. # ■ Spriteset Battle
  244. #==============================================================================
  245. class Spriteset_Battle
  246.  
  247.   #--------------------------------------------------------------------------
  248.   # ● Initialize
  249.   #--------------------------------------------------------------------------  
  250.   alias mog_enemy_hp_initialize initialize
  251.   def initialize
  252.       mog_enemy_hp_initialize
  253.       create_enemy_hp      
  254.   end
  255.  
  256.   #--------------------------------------------------------------------------
  257.   # ● Create Battle Hud
  258.   #--------------------------------------------------------------------------   
  259.   def create_enemy_hp
  260.       dispose_enemy_hp
  261.       @enemy_hp = []      
  262.       for i in $game_troop.members
  263.           @enemy_hp.push(Enemy_HP.new(@viewport1,i))
  264.       end
  265.   end
  266.  
  267.   #--------------------------------------------------------------------------
  268.   # ● Dispose
  269.   #--------------------------------------------------------------------------      
  270.   alias mog_enemy_hp_dispose dispose
  271.   def dispose
  272.       mog_enemy_hp_dispose
  273.       dispose_enemy_hp
  274.   end  
  275.  
  276.   #--------------------------------------------------------------------------
  277.   # ● Dispose Enemy HP
  278.   #--------------------------------------------------------------------------        
  279.   def dispose_enemy_hp
  280.       return if @enemy_hp == nil
  281.       @enemy_hp.each {|sprite| sprite.dispose }
  282.       @enemy_hp.clear
  283.       @enemy_hp = nil
  284.   end
  285.  
  286.   #--------------------------------------------------------------------------
  287.   # ● Update
  288.   #--------------------------------------------------------------------------        
  289.   alias mog_enemy_hp_update update
  290.   def update
  291.       mog_enemy_hp_update
  292.       update_enemy_hp
  293.   end
  294.  
  295.   #--------------------------------------------------------------------------
  296.   # ● Update Enemy HP
  297.   #--------------------------------------------------------------------------         
  298.   def update_enemy_hp
  299.       return if @enemy_hp == nil
  300.       @enemy_hp.each {|sprite| sprite.update }
  301.   end  
  302. end
  303.  
  304. $mog_rgss3_enemy_hp_meter = true

1.jpg (94.6 KB, 下载次数: 13)

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

本版积分规则

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

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

GMT+8, 2024-11-22 23:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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