查看: 1135|回复: 6

[有事请教] [已经解决]用状态法制作的持续回复SP状态没法显示回复SP...

[复制链接]
梦石
0
星屑
668
在线时间
93 小时
注册时间
2025-5-5
回帖
10
发表于 2025-7-7 03:51:16 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 YAOHUAN 于 2025-7-8 17:59 编辑

如题,用的是RTAB豪华版0.17b版本,脚本用的是伤害值美化系统整合SP版,按照论坛里的做法自己修改了RTAB里持续伤害的定义
可以做出持续回复SP的状态,但不会显示回复SP的数值,只会显示0,但SP确实回复了,就是不显示
试过去搜索找办法,可不是冲突就是办法残缺没有具体做法导致无法实现
走投无路了才发帖请求帮助的
附几张图片

持续伤害的脚本

持续伤害的脚本

伤害值美化系统脚本

伤害值美化系统脚本

这是伤害显示的图片

这是伤害显示的图片

这是实际测试的效果

这是实际测试的效果

第四张是实际测试的效果,那个带有sp回复状态的角色他是每回合恢复固定SP的
但是恢复的数字显示却是0,而且还是HP的伤害数字显示(sp回复那个状态的ID是97号,第一张图片脚本里的97号ID注释我还没改,所以注释上的内容是玄凝诀2,但实际的状态名是sp回复)
(哦对了,第三张图片那个HP数字显示的名字设置里本来是大写的,但是实际名字却是小写
但他的定义还是大写,所以伤害值美化系统脚本里的图片选取是没任何问题的)
梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2025-7-7 09:40:23 | 显示全部楼层
关键在你第二张图那个 sp_damage 的判断上,  因为你没截图出来, 自己去检查"制作SP伤害"时, 这个判断是否准确
回复

使用道具 举报

梦石
0
星屑
668
在线时间
93 小时
注册时间
2025-5-5
回帖
10
 楼主| 发表于 2025-7-7 16:43:32 | 显示全部楼层
灯笼菜刀王 发表于 2025-7-7 09:40
关键在你第二张图那个 sp_damage 的判断上,  因为你没截图出来, 自己去检查"制作SP伤害"时, 这个判断是否准 ...

好的,我去看看
回复

使用道具 举报

梦石
0
星屑
668
在线时间
93 小时
注册时间
2025-5-5
回帖
10
 楼主| 发表于 2025-7-7 22:53:45 | 显示全部楼层
灯笼菜刀王 发表于 2025-7-7 09:40
关键在你第二张图那个 sp_damage 的判断上,  因为你没截图出来, 自己去检查"制作SP伤害"时, 这个判断是否准 ...

[pre lang="ruby"]#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================


# ============================================================================
# 伤害效果美化 v1.0 by SailCat
# ============================================================================
# 脚本使用说明:
# 1.使用时需要将Damage.png复制到你的游戏的Graphics/Pictures目录下
# 2.Damage.png文件的格式:
#   大小为180 x 96
#   (0, 0) - (179, 31)为伤害值的数字表,其中每个数字宽18,高32
#   (0, 32) - (179, 63)为回复值(伤害负值)的数字表,其中每个数字宽18,高32
#   (0, 64) - (89, 95)为会心一击标记的图画,长宽为90 x 32
#   (90, 64) - (179, 95)为未命中标记的图画,长宽为90 x 32
# ============================================================================
module RPG
  class Sprite < ::Sprite
    #--------------------------------------------------------------------------
    # ● 伤害值描画
    #--------------------------------------------------------------------------
    def damage(value, critical, sp_damage = false)
      @_animation_duration = 5
     # 释放伤害
      dispose_damage
      # 如果伤害值是数值
      if value.is_a?(Numeric)
        # 绝对值转为字符串
        damage_string = value.abs.to_s
      else
        # 转为字符串
        damage_string = value.to_s
      end
      # 初始化位图
      bitmap = Bitmap.new(162, 64)
      bitmap.font.name = "Arial Black"
      bitmap.font.size = 32
      # 伤害值是数值的情况下
      if value.is_a?(Numeric)
        # 分割伤害值字符串
        damage_array = damage_string.scan(/./)
        damage_x = 81 - damage_string.size * 9
        # 伤害值为负的情况下
        if value < 0
          # 调用回复数字表
          rect_y = 32
        else
          # 调用伤害数字表
          rect_y = 0
        end
        # 循环伤害值字符串
       for char in damage_array
         number = char.to_i
          # 显示伤害数字
       if sp_damage
         bitmap.blt(damage_x, 32, RPG::Cache.picture("Damagesp"),
         Rect.new(number * 18, rect_y, 18, 32))
         damage_x += 18
      else
         bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
         Rect.new(number * 18, rect_y, 18, 32))
         damage_x += 18
      end
end
      # 伤害值不是数值的情况
      else
        # 如果伤害值不是 Miss
        unless value == "Miss"
          # 系统默认描画字符串
          bitmap.font.color.set(0, 0, 0)
          bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
          bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
          bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
          bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
          bitmap.font.color.set(255, 255, 255)
          bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
        # Miss 的情况下
        else
          # 显示未击中图画
          bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
        end
      end
      # 会心一击标志打开的情况
      if critical
        # 显示会心一击图画
        bitmap.blt(36, 0, RPG::Cache.picture("Damage"), Rect.new(0, 64, 90, 32))
      end
      # 伤害值定位
      @_damage_sprite = ::Sprite.new(self.viewport)
      @_damage_sprite.bitmap = bitmap
      @_damage_sprite.ox = 81
      @_damage_sprite.oy = 20
      @_damage_sprite.x = self.x
      @_damage_sprite.y = self.y - self.oy / 2
      @_damage_sprite.z = 3000
      @_damage_duration = 40
    end
  end
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#=============================================================================[/pre]
额,我找了半天,不知道哪个是制作SP伤害的判断,所以我还是直接发代码框吧(这些代码是伤害值美化系统整合SP版的,没有私自做过改动)
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2025-7-8 10:56:48 | 显示全部楼层
YAOHUAN 发表于 2025-7-7 22:53
#==============================================================================
# 本脚本来自www.66 ...

sp_damage 是传递过来的参数,  那你要搜索  "damage("  这个关键词(半边括号不能少) , 然后在需要做成SP伤害显示的地方, 把第三个参数填 true
回复

使用道具 举报

梦石
0
星屑
668
在线时间
93 小时
注册时间
2025-5-5
回帖
10
 楼主| 发表于 2025-7-8 16:35:19 | 显示全部楼层
灯笼菜刀王 发表于 2025-7-8 10:56
sp_damage 是传递过来的参数,  那你要搜索  "damage("  这个关键词(半边括号不能少) , 然后在需要做成SP ...

好的,明白了,我去试试看
回复

使用道具 举报

梦石
0
星屑
668
在线时间
93 小时
注册时间
2025-5-5
回帖
10
 楼主| 发表于 2025-7-8 17:51:34 | 显示全部楼层
灯笼菜刀王 发表于 2025-7-8 10:56
sp_damage 是传递过来的参数,  那你要搜索  "damage("  这个关键词(半边括号不能少) , 然后在需要做成SP ...

我根据你的提示,自己去摸索了一下,然后尝试在第一张图的self.damage["slip"] = a这行代码下面加了一行这个代码self.damage_sp["slip"] = b。然后再把持续伤害SP的伤害定义改成这样    self.sp -= self.damage_sp["slip"]
就能显示出SP伤害了!谢谢大佬的提示
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部