丨年轻人丶

目前在做一个原版RPG,但是生物的血量上限为1024,所以我就想弄个记分板来代替生物的血量

我想实现的功能是 血量记分板减去受到的伤害数值,然后杀死生物血量记分版为小于或等于0的生物

要求兼容多人,版本1.16.4,可用数据包


丨年轻人丶
相当于用记分版给生物重做了个血量系统

kuzuanpa
本帖最后由 kuzuanpa 于 2021-8-21 18:55 编辑

你具体是想实现哪些内容呢…我这先把rpg可能用得上的给你

1.攻击系统
通过mcbbs内已有的左键检测命令方块组(自行搜索)检测,给玩家正前方几各/一定范围内的生物减分即可

这里如果不想替换原版攻击系统也可以检测生物血量并实时利用scoreboard player operation运算将差值扣入虚拟计分板后加回无伤血量值,但缺点是单次伤害不能超过1024
举例:

2. 0/负分死亡
scoreboard objectives add entiy.Health dummy 生物血量 //创建计分板,可自行命名
kill @e[scores={entity.Health=..0}] //杀死血量低于0的生物
3.血量显示
scoreboard objectives setdisplay belowName entity.Health

先这些,如果还有想问的可以继续提问w


丨年轻人丶
kuzuanpa 发表于 2021-8-21 18:51
你具体是想实现哪些内容呢…我这先把rpg可能用得上的给你

1.攻击系统

感谢提供的思路,还有一些问题

1.武器的随机伤害怎么实现 比如一把武器的伤害为10~15,如何配合这种记分板血量来实现?

2.怪物的血量显示我想做成boss栏的那种,如何显示当前正在攻击怪物的血条(boss栏)?

kuzuanpa
本帖最后由 kuzuanpa 于 2021-8-21 19:54 编辑

B
丨年轻人丶 发表于 2021-8-21 19:15
感谢提供的思路,还有一些问题

1.武器的随机伤害怎么实现 比如一把武器的伤害为10~15,如何配合这种记分 ...

1.
scoreboard players add r10-15 create.RandomNum 1//命令方块设置为循环 始终,每tick给r10-15加1
execute if score r10-15 create.RandomNum 15.. run scoreboard players set r10-15 create.RandomNum 10//当数字到达15时降回10
//创建一个在10-15之间循环的计分板项,因为玩家攻击的时间是随机的,所以只要玩家攻击时让血量扣除这个分数即可


当然你也可以利用nbt标签设置武器伤害/附魔,利用mc自己的攻击系统也可

2.
苦钻怕才能有限…不太清楚…原版bossbar指令似乎只能直接往里写数字…
而且苦钻怕认为如果周围有多个怪物似乎显示在bossbar也不合适…还是belowName干脆直接一些qxq


丨年轻人丶
kuzuanpa 发表于 2021-8-21 19:51
B
1.
scoreboard players add r10-15 create.RandomNum 1//命令方块设置为循环 始终,每tick给r10-15加1

血量计分板和随机伤害我已经做出来了

不过好像没有方法让生物调用伤害来源玩家的随机计分板

kuzuanpa
丨年轻人丶 发表于 2021-8-24 16:06
血量计分板和随机伤害我已经做出来了

不过好像没有方法让生物调用伤害来源玩家的随机计分板 ...

你用的是哪套伤害判定系统…左键检测还是原版

丨年轻人丶
kuzuanpa 发表于 2021-8-24 16:17
你用的是哪套伤害判定系统…左键检测还是原版

就是你上面那个
我让手持带指定tag武器的玩家调用随机函数
但是怎么将这个随机数作用到生物身上

kuzuanpa
丨年轻人丶 发表于 2021-8-24 16:35
就是你上面那个
我让手持带指定tag武器的玩家调用随机函数
但是怎么将这个随机数作用到生物身上 ...

我上面给了你2个啊…有个只讲思路的,有个带示例的,你用的哪个…?

丨年轻人丶
本帖最后由 丨年轻人丶 于 2021-8-24 18:03 编辑
kuzuanpa 发表于 2021-8-24 16:53
我上面给了你2个啊…有个只讲思路的,有个带示例的,你用的哪个…?

用的是循环加分的那个

我还是说明一下我的伤害系统吧,武器是没有伤害的,但是带有一个tag,然后让持有指定tag武器的玩家调用对应区间的随机函数
比如让手持武器的tag为r10_15的玩家循环调用r10_15函数并将每次的结果储存到random计分板里,但是生物无法选中伤害来源的玩家,所以也无法调用该玩家的random计分板来进行后续操作

不过我有了解决方法:
让每个分数执行修改武器的伤害
虽然这样枚举比较麻烦,但似乎没有更好的方法了
刚刚想起来玩家数据无法修改,以上方法作废

kuzuanpa
本帖最后由 kuzuanpa 于 2021-8-24 17:19 编辑
丨年轻人丶 发表于 2021-8-24 17:10
用的是循环加分的那个

我还是说明一下我的伤害系统吧,武器是没有伤害的,但是带有一个tag,然后让持有 ...

我问的是这个…
1.攻击系统
通过mcbbs内已有的左键检测命令方块组(自行搜索)检测,给玩家正前方几各/一定范围内的生物减分即可

这里如果不想替换原版攻击系统也可以检测生物血量并实时利用scoreboard player operation运算将差值扣入虚拟计分板后加回无伤血量值,但缺点是单次伤害不能超过1024
举例:


我们先创建个Test生物,它的血量设定为200
创建计分板:
prober.Damage准则为health
data.entityHealth准则为dummy,设置Test = 200
此时假设Test受到了150点伤害
那么prober.Damage中Test生物的分数就会变成50
那么用data.entityHealth减去prober.Damage即可得出伤害值:150
再把这个值减去entity.Health来应用伤害值
最后把生物真实血量加回200即可

不过看起来你是用的后一种,你可以这样
检测伤害值是否为0,不为0则计算一次随机值,把生物的计分板血量减去这个值即可,最后记得把真实血量加回上限,

丨年轻人丶
kuzuanpa 发表于 2021-8-24 17:16
我问的是这个…
不过看起来你是用的后一种,你可以这样
检测伤害值是否为0,不为0则计算一次随机值,把生 ...

因为要弄很多把随机伤害的武器,这样的话还是要确定伤害来源玩家手上武器的tag,这样才能进行对应的随机值计算,问题就在“生物如何检测伤害来源的玩家”,我也搜了相关帖子,貌似并没有方法直接检测伤害来源

第一页 上一页 下一页 最后一页