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

Project1

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

[有事请教] 如何让精灵显示剩余战斗力脚本

[复制链接]

Lv4.逐梦者

梦石
0
星屑
6286
在线时间
1103 小时
注册时间
2015-8-15
帖子
658
跳转到指定楼层
1
发表于 2024-1-18 22:23:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 金芒芒 于 2024-1-18 22:53 编辑

  p  @attacker.get_battle_effective.to_s   #p我方战斗力
  p  @defender.get_battle_effective.to_s  #p敌方战斗力
就会显示战斗力(如图490 300 )

-----------不断循环就会让战斗力下降-------------------
    #主循环Main loop for efs
    loop do  #===============================↑战斗前
    # p  @attacker.get_battle_effective.to_s
      #提示消息更新
      Notification.update
      #画面与输入的更新
      Graphics.update                        
      Input.update
      #更新EFS系统
      _update_efs                           #←战斗中
      #如果不在EFS就中断循环
      break if ! $game_temp.inefs or $scene != self  
    end



如何将血条精灵脚本改成剩余战斗力脚本
33行和35行的语句这么修改

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

我方战斗力.png (345.88 KB, 下载次数: 2)

我方战斗力.png

敌方战斗力.png (345.39 KB, 下载次数: 4)

敌方战斗力.png

Lv5.捕梦者

梦石
0
星屑
33183
在线时间
10490 小时
注册时间
2009-3-15
帖子
4756
2
发表于 2024-1-18 23:51:16 | 只看该作者
74行~~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6286
在线时间
1103 小时
注册时间
2015-8-15
帖子
658
3
 楼主| 发表于 2024-1-19 04:49:48 | 只看该作者
本帖最后由 金芒芒 于 2024-1-19 12:15 编辑


74行这么改返回@character.get-batte-effective吗?
RUBY 代码复制
  1. def get_battle_effective#定义获得实际战斗力
  2.     sum = 0#数字=0
  3.     @member.each do|group|#@每个do|组的成员|
  4.       next if group.get_all_dead#如果下一个组。全部阵亡
  5.       num = group.calculate_effective#数字=组。计算有效
  6.       sum+= num #总和+=数字
  7.  
  8.     end  
  9.     return sum.round*10
  10.   end
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-27 21:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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