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

Project1

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

[已经过期] [脚本]关于敌人的血条和自己的血条

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2013-11-17
帖子
72
跳转到指定楼层
1
发表于 2014-2-16 13:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. *#==============================================================================
  2. # +++ MOG - Enemy HP Meter  (v1.0) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # http://www.atelier-rgss.com/
  6. #==============================================================================
  7. # Apresenta um medidor animado com o HP do inimigo.
  8. #==============================================================================
  9. # Para ocultar o HP do inimigo use a TAG abaixo na caixa de notas.
  10. #
  11. # <Hide HP>
  12. #
  13. #==============================================================================
  14. # Serão necessários as imagens.
  15. #
  16. # Battle_Enemy_HP_Layout.png
  17. # Battle_Enemy_HP_Meter.png
  18. #
  19. #==============================================================================
  20. module MOG_ENEMY_HP
  21.    #Posição geral do medidor em relação ao battler.
  22.    POSITION_CORRECTION = [0,0]
  23.    #Posição do medidor de HP.
  24.    HP_METER_POSITION = [2,4]
  25.    #Prioridade do medidor na tela.
  26.    PRIORITY_Z = 101   
  27. end

  28. #==============================================================================
  29. # ■ Game Enemy
  30. #==============================================================================
  31. class Game_Enemy < Game_Battler

  32.   attr_accessor :hp_meter_active               
  33.   
  34.   #--------------------------------------------------------------------------
  35.   # ● Initialize
  36.   #--------------------------------------------------------------------------
  37.   alias mog_enemy_hp_initialize initialize
  38.   def initialize(index, enemy_id)
  39.       mog_enemy_hp_initialize(index, enemy_id)
  40.       hide = enemy.note =~ /<Hide HP>/i ? true : false
  41.       @hp_meter_active = [false,hide]
  42.   end  

  43. end

  44. #==============================================================================
  45. # ■ Game_Battler
  46. #==============================================================================
  47. class Game_Battler < Game_BattlerBase
  48.   
  49.   #--------------------------------------------------------------------------
  50.   # ● Item Apply
  51.   #--------------------------------------------------------------------------  
  52.    alias mog_enemy_hp_item_apply item_apply
  53.    def item_apply(user, item)
  54.        mog_enemy_hp_item_apply(user, item)
  55.        if self.is_a?(Game_Enemy)
  56.           self.hp_meter_active[0] = true if @result.hp_damage != 0
  57.        end
  58.    end

  59.   #--------------------------------------------------------------------------
  60.   # ● Regenerate HP
  61.   #--------------------------------------------------------------------------
  62.   alias mog_enemy_hp_regenerate_hp regenerate_hp
  63.   def regenerate_hp
  64.       mog_enemy_hp_regenerate_hp
  65.       if self.is_a?(Game_Enemy)
  66.          self.hp_meter_active[0] = true if @result.hp_damage != 0      
  67.       end         
  68.   end
  69.    
  70. end
  71.   

  72. #==============================================================================
  73. # ■ Battle_Hud
  74. #==============================================================================
  75. class Enemy_HP
  76.   include MOG_ENEMY_HP
  77.   
  78.   #--------------------------------------------------------------------------
  79.   # ● Initialize
  80.   #--------------------------------------------------------------------------   
  81.   def initialize(viewport = nil,enemy,image)
  82.       @enemy = enemy
  83.       @image = image
  84.       @fade_time = -1
  85.       create_layout   
  86.       create_hp_meter      
  87.       b_pos = [enemy.screen_x - (@layout.width / 2) + POSITION_CORRECTION[0], enemy.screen_y + POSITION_CORRECTION[1] - (@layout.height / 2)]
  88.       @layout.opacity = 0
  89.       @org_pos1 = [b_pos[0],b_pos[1]]
  90.       @layout.x = @org_pos1[0]
  91.       @layout.y = @org_pos1[1]
  92.       @layout.visible = false
  93.       @hp_meter.opacity = 0
  94.       @hp_meter.visible = false
  95.       @org_pos2 = [b_pos[0] + HP_METER_POSITION[0], b_pos[1] + HP_METER_POSITION[1]]
  96.       @hp_meter.x = @org_pos2[0]
  97.       @hp_meter.y = @org_pos2[1]
  98.       @hp_meter.viewport = viewport
  99.       @hp_meter.z = PRIORITY_Z
  100.       @layout.viewport = viewport
  101.       @layout.z = PRIORITY_Z
  102.       @enemy.hp_meter_active[0] = false
  103.       [url=home.php?mod=space&uid=94902]@Hide[/url] = @enemy.hp_meter_active[1]
  104.   end
  105.   
  106.   #--------------------------------------------------------------------------
  107.   # ● Create HP Meter
  108.   #--------------------------------------------------------------------------        
  109.   def create_layout
  110.       @layout = Sprite.new
  111.       @layout.bitmap = @image[0]
  112.   end
  113.    
  114.   #--------------------------------------------------------------------------
  115.   # ● Create HP Meter
  116.   #--------------------------------------------------------------------------      
  117.   def create_hp_meter
  118.       @meter_cw = @image[1].width
  119.       @meter_ch = @image[1].height / 2      
  120.       @hp_meter = Sprite.new
  121.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  122.       @hp_width_old = @meter_cw * @enemy.hp / @enemy.mhp
  123.     end  
  124.   
  125.   #--------------------------------------------------------------------------
  126.   # ● Hp Flow Update
  127.   #--------------------------------------------------------------------------
  128.   def update_hp_flow
  129.       return if [email protected]     
  130.       hp_width = @meter_cw * @enemy.hp / @enemy.mhp
  131.       @hp_meter.bitmap.clear      
  132.       execute_damage_flow(hp_width)
  133.       hp_src_rect = Rect.new(0, 0,hp_width, @meter_ch)
  134.       @hp_meter.bitmap.blt(0,0, @image[1], hp_src_rect)
  135.   end
  136.    
  137.   #--------------------------------------------------------------------------
  138.   # ● Execute Damage Flow
  139.   #--------------------------------------------------------------------------
  140.   def execute_damage_flow(hp_width)
  141.       n = (@hp_width_old - hp_width).abs * 3 / 100
  142.       damage_flow = [[n, 2].min,0.5].max
  143.       @hp_width_old -= damage_flow
  144.       if @hp_width_old <= hp_width
  145.          @hp_width_old = hp_width
  146.       end   
  147.       src_rect_old = Rect.new(0,@meter_ch,@hp_width_old, @meter_ch)
  148.       @hp_meter.bitmap.blt(0,0, @image[1], src_rect_old)      
  149.   end   
  150.   
  151.   #--------------------------------------------------------------------------
  152.   # ● Dispose
  153.   #--------------------------------------------------------------------------      
  154.   def dispose
  155.       @layout.bitmap.dispose
  156.       @layout.dispose
  157.       @hp_meter.bitmap.dispose
  158.       @hp_meter.dispose
  159.   end
  160.   
  161.   #--------------------------------------------------------------------------
  162.   # ● Update
  163.   #--------------------------------------------------------------------------      
  164.   def update
  165.       return if @hide
  166.       update_fade   
  167.       update_visible
  168.       update_hp_flow
  169.       refresh if @enemy.hp_meter_active[0]
  170.   end  
  171.   
  172.   #--------------------------------------------------------------------------
  173.   # ● Update Fade
  174.   #--------------------------------------------------------------------------        
  175.   def update_fade
  176.       @fade_time -= 1 if @fade_time > 0
  177.       return if @fade_time != 0
  178.       @layout.opacity -= 10
  179.       @hp_meter.opacity -= 10
  180.       @layout.x += 1
  181.       @hp_meter.x += 1
  182.       @fade_time = -1 if @layout.opacity == 0
  183.   end  
  184.   
  185.   #--------------------------------------------------------------------------
  186.   # ● Update Visible
  187.   #--------------------------------------------------------------------------        
  188.   def update_visible
  189.       return if [email protected]
  190.       vis = can_visible?
  191.       @layout.visible = vis
  192.       @hp_meter.visible = vis
  193.   end
  194.   
  195.   #--------------------------------------------------------------------------
  196.   # ● Refresh
  197.   #--------------------------------------------------------------------------         
  198.   def refresh     
  199.       @enemy.hp_meter_active[0] = false
  200.       @layout.opacity = 255
  201.       @hp_meter.opacity = 255   
  202.       @layout.visible = true
  203.       @hp_meter.visible = true
  204.       @fade_time = 60
  205.       @layout.x = @org_pos1[0]
  206.       @layout.y = @org_pos1[1]
  207.       @hp_meter.x = @org_pos2[0]
  208.       @hp_meter.y = @org_pos2[1]      
  209.       hp_width = @meter_cw * @enemy.hp / @enemy.mhp
  210.       @hp_width_old = hp_width if @hp_width_old < hp_width
  211.       update_hp_flow
  212.   end
  213.   
  214.   #--------------------------------------------------------------------------
  215.   # ● Can Visible?
  216.   #--------------------------------------------------------------------------         
  217.   def can_visible?
  218.       return false if @layout.opacity == 0      
  219.       return true
  220.   end
  221.    
  222. end

  223. #==============================================================================
  224. # ■ Spriteset Battle
  225. #==============================================================================
  226. class Spriteset_Battle
  227.   
  228.   #--------------------------------------------------------------------------
  229.   # ● Initialize
  230.   #--------------------------------------------------------------------------  
  231.   alias mog_enemy_hp_initialize initialize
  232.   def initialize
  233.       mog_enemy_hp_initialize
  234.       create_enemy_hp      
  235.   end
  236.   
  237.   #--------------------------------------------------------------------------
  238.   # ● Create Battle Hud
  239.   #--------------------------------------------------------------------------   
  240.   def create_enemy_hp   
  241.       ie1 = Cache.system("Battle_Enemy_HP_Layout")
  242.       ie2 = Cache.system("Battle_Enemy_HP_Meter")
  243.       @enemy_hp_images = [ie1,ie2]
  244.       @enemy_hp = []      
  245.       for i in $game_troop.members
  246.           @enemy_hp.push(Enemy_HP.new(@viewport1,i,@enemy_hp_images))
  247.       end
  248.   end
  249.   
  250.   #--------------------------------------------------------------------------
  251.   # ● Dispose
  252.   #--------------------------------------------------------------------------      
  253.   alias mog_enemy_hp_dispose dispose
  254.   def dispose
  255.       mog_enemy_hp_dispose
  256.       dispose_enemy_hp
  257.   end  
  258.   
  259.   #--------------------------------------------------------------------------
  260.   # ● Dispose Enemy HP
  261.   #--------------------------------------------------------------------------        
  262.   def dispose_enemy_hp
  263.       return if @enemy_hp_images == nil
  264.       @enemy_hp_images.each {|sprite| sprite.dispose }
  265.       @enemy_hp_images.clear
  266.       @enemy_hp.each {|sprite| sprite.dispose }
  267.       @enemy_hp.clear
  268.   end
  269.   
  270.   #--------------------------------------------------------------------------
  271.   # ● Update
  272.   #--------------------------------------------------------------------------        
  273.   alias mog_enemy_hp_update update
  274.   def update
  275.       mog_enemy_hp_update
  276.       update_enemy_hp
  277.   end
  278.   
  279.   #--------------------------------------------------------------------------
  280.   # ● Update Enemy HP
  281.   #--------------------------------------------------------------------------         
  282.   def update_enemy_hp
  283.       return if @enemy_hp_images == nil
  284.       @enemy_hp.each {|sprite| sprite.update }
  285.   end  
  286. end

  287. $mog_rgss3_enemy_hp_meter = true
复制代码
突然有这样一个想法先看脚本————【va敌人血条】这是一种用图片显示敌人血条的脚本,有了这样一个思路是否就可以做出一个用图片显示队友状态的脚本呢?

Lv1.梦旅人

梦石
0
星屑
50
在线时间
121 小时
注册时间
2013-9-19
帖子
163
2
发表于 2014-2-16 19:16:04 | 只看该作者
状态有图标,自己做图标即可。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21616
在线时间
9412 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
发表于 2014-2-16 19:31:36 | 只看该作者
默认的战斗系统究竟什么情况下才必须显示队友的状态......
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 14:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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