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

Project1

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

[有事请教] Sprite_Character更改成 Spriteset_Map 血条显示

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7802
在线时间
1343 小时
注册时间
2015-8-15
帖子
752
跳转到指定楼层
1
发表于 2023-10-24 16:59:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
把角色头上显示血条改成血条的位置固定在显示端口
      比如 hp_p = (($game_party.actors[0].hp * 100)/$game_party.actors[0].maxhp)
       $game_screen.pictures[4].show("hp.png",0,123+x(i*87),435,hp_p,100,255,0)

RUBY 代码复制
  1. #==============================================================================
  2. # ■ 事件头上显血条 RMXP
  3.   #--------------------------------------------------------------------------
  4.   #  作者:后知后觉
  5.   #  日期:2012-6-26
  6.   #  版本:1.0
  7.   #  申明:刺夜之枪定制 正太君改
  8.   #        [url]http://bbs.66rpg.com/thread-237126-1-1.html[/url]  
  9. #==============================================================================
  10. #==============================================================================
  11. # ■ Sprite_Character
  12. #==============================================================================
  13.  
  14. class Sprite_Character < RPG::Sprite
  15.   #--------------------------------------------------------------------------
  16.   # ● 参数设置 正太君改
  17.   #--------------------------------------------------------------------------
  18.   # 设置图片文件名.不想要底图就让底图完全透明或设置为 ""
  19.   # 图片放在 Graphics/Pictures/ 文件夹下
  20.   HPBarFileName = "HPBar"
  21.   HPBarBackFileName = "HPBarBack"
  22.   MPBarFileName = "MPBar"
  23.   MPBarBackFileName = "MPBarBack"
  24.   # 设置显示友军血条的开关号
  25.   #TeamHPBarSwitchID = 5
  26.   # 设置显示敌军血条的开关号
  27.   #EnemyHPBarSwitchID = 6
  28.  
  29.   # 设置显示血条的开关号
  30.   HPBarSwitchID = 5
  31.  
  32.   #禁止显示血条 开关
  33.   HPBarDOESNOTSwitchID = 6
  34.  
  35.  
  36.   # 被攻击后血条显示多久
  37.   HPbarTimeDisplay = 60
  38.  
  39.  
  40.   #--------------------------------------------------------------------------
  41.   # ● 初始化对像
  42.   #--------------------------------------------------------------------------
  43. #别名hzhj旧初始化使事件参数栏初始化
  44.   alias hzhj_old_init_make_event_param_bar initialize
  45.   def initialize(*args)#定义初始化(*参数)
  46.     @hp_sprite = Sprite.new(args[0])#@hp精灵=精灵.新(参数[0])
  47.     @hp_back_sprite = Sprite.new(args[0])#@hp后台精灵 = 精灵.新(参数[0])
  48.     @mp_sprite = Sprite.new(args[0])
  49.     @mp_back_sprite = Sprite.new(args[0])
  50.     @param_sprites = []#@参数精灵=[]
  51.     @param_sprites << @hp_sprite# @参数精灵 << @hp精灵
  52.     @param_sprites << @hp_back_sprite# @参数精灵=@hp后台精灵
  53.     @param_sprites << @mp_sprite
  54.     @param_sprites << @mp_back_sprite
  55.     #@hp精灵。位图 = RPG::Cache.picture(HPBarFileName)绿色
  56.     @hp_sprite.bitmap = RPG::Cache.picture(HPBarFileName)
  57.     #@hp后台精灵.位图= RPG::Cache.picture(HPBarBackFileName)#黑色
  58.     @hp_back_sprite.bitmap = RPG::Cache.picture(HPBarBackFileName)#黑色
  59.     @mp_sprite.bitmap = RPG::Cache.picture(MPBarFileName)
  60.     @mp_back_sprite.bitmap = RPG::Cache.picture(MPBarBackFileName)
  61.     #别名hzhj旧初始化使事件参数栏(*参数)
  62.     hzhj_old_init_make_event_param_bar(*args)
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 释放
  66.   #--------------------------------------------------------------------------
  67.   #别名hzhj旧的布置使事件参数栏布置除非$@
  68.   alias hzhj_old_dispose_make_event_param_bar dispose unless $@
  69.   def dispose#定义可用
  70.     #@参数精灵。每个{|精灵|精灵.释放}
  71.     @param_sprites.each{|sprite|sprite.dispose}
  72.     #hzhj旧的布置生成事件参数栏
  73.     hzhj_old_dispose_make_event_param_bar
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 获取事件 HP # 正太君改
  77.   #--------------------------------------------------------------------------
  78.   def event_hp#定义事件hp
  79.      return 0 if @character.nil?#如果@角色,则返回0。无
  80.      return @character.hp#返回角色HP
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 获取事件 MHP # 正太君改
  84.   #--------------------------------------------------------------------------
  85.   def event_mhp#定义事件MHP
  86.     return 0 if @character.nil?#如果@角色,则返回0。无
  87.     return @character.hp_max#返回角色HP最大值
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 获取事件 MP # 正太君改
  91.   #--------------------------------------------------------------------------
  92.   def event_mp
  93.     return 0 if @character.nil?
  94.     return @character.sp if @character.is_a?(EFS_Hero)
  95.     return @character.ammo
  96.     #return @character.get_group.morale
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 获取事件 MMP # 正太君改
  100.   #--------------------------------------------------------------------------
  101.   def event_mmp
  102.     return 0 if @character.nil?
  103.     return @character.sp_max if @character.is_a?(EFS_Hero)
  104.     return @character.ammo_max
  105.     #return 100
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 判断是否显示 HP 条
  109.   #--------------------------------------------------------------------------
  110.   def show_hp_bar?#是否显示hp栏?
  111.     #return false if @character.is_a?(EFS_Hero)
  112.    # 如果$场景,则返回假的。efs故事模式
  113.     return false if $scene.efs_story_mode
  114.     #如果事件hp>0&&@角色已删除  &&表示与,意为同时都要满足。&&逻辑运算符,并且是双目运算符
  115.     if event_hp > 0 && !@character.removed
  116.       #返回$游戏开关[HPBarSwitchID]||@角色.hp计数器>0
  117.       return $game_switches[HPBarSwitchID] || @character.hp_counter > 0 #) && ! $game_switches[HPBarDOESNOTSwitchID]
  118.     else #否则
  119.       return false#返回假的
  120.     end  
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 判断是否显示 MP 条
  124.   #--------------------------------------------------------------------------
  125.   def show_mp_bar?
  126.     #return false if @character.is_a?(EFS_Hero)
  127.      return false if $scene.efs_story_mode
  128.     if event_mmp > 0 && !@character.removed
  129.       return $game_switches[HPBarSwitchID] || @character.hp_counter > 0 #) && ! $game_switches[HPBarDOESNOTSwitchID]
  130.     else
  131.       return false
  132.     end  
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 更新画面
  136.   #--------------------------------------------------------------------------
  137.   #别名hzhj旧更新使事件参数栏更新
  138.   alias hzhj_old_update_make_event_param_bar update
  139.   def update #定义更新
  140.     #hzhj旧更新生成事件参数栏
  141.     hzhj_old_update_make_event_param_bar
  142.     #如果@角色.是_a?(EFS_战斗者)
  143.     if !@character.is_a?(EFS_Battler)
  144.      # @参数精灵。每个{|精灵|精灵.可见=假的}
  145.       @param_sprites.each{|sprite|sprite.visible = false}
  146.     else
  147.  
  148.       # 刷新 HP 可见状态
  149.       if show_hp_bar? #如果显示hp栏?
  150.         #@hp精灵。可见=@hp后台精灵可见=真
  151.         @hp_sprite.visible = @hp_back_sprite.visible = true
  152.        # @hp精灵。bitmap=角色扮演::缓存图片(“HPBar-E”)如果@角色。团队!=1.
  153.         @hp_sprite.bitmap = RPG::Cache.picture("HPBar-E") if @character.team != 1 #wtf you doing
  154.  
  155.  
  156.         #减少计数
  157.        # 除非$游戏切换[HPBarSwitchID]
  158.         unless $game_switches[HPBarSwitchID]
  159.           #如果@角色。hp计数器==hp条形时间显示
  160.           if @character.hp_counter == HPbarTimeDisplay
  161.             @param_sprites.each do |sprite| #@参数精灵。每个做|精灵|
  162.               sprite.opacity = 255 #精灵不透明度=255
  163.             end
  164.             #els if@字符。hp计数器< HPbarTimeDisplay /3
  165.           elsif  @character.hp_counter < HPbarTimeDisplay/3
  166.             @param_sprites.each do |sprite|#@参数精灵。每个做|精灵|
  167.               ##精灵不透明度-=255/(HPbarTimeDisplay/3)
  168.               sprite.opacity -= 255/(HPbarTimeDisplay/3)
  169.             end
  170.           end
  171.           #@性格。hp计数器-=1
  172.           @character.hp_counter -= 1
  173.         else#否则
  174.             @param_sprites.each do |sprite|#@参数精灵。每个做|精灵|
  175.               sprite.opacity = 255#精灵不透明度=255
  176.             end
  177.  
  178.         end
  179.  
  180.         # 刷新坐标
  181.         @param_sprites.each do |sprite|#@参数精灵。每个做|精灵|
  182.           sprite.ox = sprite.bitmap.width / 2#精灵ox=精灵位图宽度/2
  183.           sprite.oy = sprite.bitmap.height#精灵.oy=精灵。位图高度
  184.           sprite.x = x
  185.           #sprite.y = y - 52
  186.  
  187.           #sprite.opacity = 255
  188.           shif = @character.is_cal#盖印图层=@角色。是计算函数
  189.           sprite.y = y - (shif ? 82 : 52)#精灵.y=y-(盖印图层?82:52)
  190.           sprite.z = z#精灵.z = z
  191.         end
  192.         @hp_sprite.z += 1#hp_精灵.z = z
  193.         @mp_sprite.z += 1
  194.         # 计算 HP 显示区域
  195.         #hp宽=(@hp 精灵.位图.宽*1.0*事件hp/事件mhp)。圆形的
  196.         hpw = (@hp_sprite.bitmap.width * 1.0 * event_hp / event_mhp).round
  197.        # hp宽=[hp宽,@hp精灵位图宽度].最小值,0].最大值
  198.         hpw = [[hpw, @hp_sprite.bitmap.width].min, 0].max
  199.         hph = @hp_sprite.bitmap.height#hp高=@hp精灵位图高度
  200.         #@hp精灵。src矩形。集合(0,0,hp宽,hp高)
  201.         @hp_sprite.src_rect.set(0, 0, hpw, hph)
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.         # 刷新 MP 可见状态
  212.  
  213.         @mp_sprite.visible = @mp_back_sprite.visible = (show_mp_bar? and event_mmp > 0) # 正太君改
  214.         if show_mp_bar?
  215.           # 修正 HP 坐标
  216.           @hp_sprite.y -= (@mp_sprite.oy + 1)
  217.           @hp_back_sprite.y = @hp_sprite.y
  218.           # 计算 MP 显示区域
  219.           if event_mmp > 0 # 正太君改
  220.             mpw = (@mp_sprite.bitmap.width * 1.0 * event_mp / event_mmp).round
  221.             mpw = [[mpw, @mp_sprite.bitmap.width].min, 0].max
  222.             mph = @mp_sprite.bitmap.height
  223.             @mp_sprite.src_rect.set(0, 0, mpw, mph)
  224.           end
  225.         end
  226.       else
  227.         @param_sprites.each{|sprite|sprite.visible = false}
  228.       end
  229.     end
  230.   end
  231. end
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-21 19:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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