目前在做一个原版RPG,但是生物的血量上限为1024,所以我就想弄个记分板来代替生物的血量
我想实现的功能是 血量记分板减去受到的伤害数值,然后杀死生物血量记分版为小于或等于0的生物
要求兼容多人,版本1.16.4,可用数据包
相当于用记分版给生物重做了个血量系统
本帖最后由 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
你具体是想实现哪些内容呢…我这先把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 于 2021-8-21 19:54 编辑
B
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
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
血量计分板和随机伤害我已经做出来了
不过好像没有方法让生物调用伤害来源玩家的随机计分板
丨年轻人丶 发表于 2021-8-24 16:06
血量计分板和随机伤害我已经做出来了
不过好像没有方法让生物调用伤害来源玩家的随机计分板 ...
你用的是哪套伤害判定系统…左键检测还是原版
丨年轻人丶 发表于 2021-8-24 16:35
就是你上面那个
我让手持带指定tag武器的玩家调用随机函数
但是怎么将这个随机数作用到生物身上 ...
我上面给了你2个啊…有个只讲思路的,有个带示例的,你用的哪个…?
本帖最后由 丨年轻人丶 于 2021-8-24 18:03 编辑
用的是循环加分的那个
我还是说明一下我的伤害系统吧,武器是没有伤害的,但是带有一个tag,然后让持有指定tag武器的玩家调用对应区间的随机函数
比如让手持武器的tag为r10_15的玩家循环调用r10_15函数并将每次的结果储存到random计分板里,但是生物无法选中伤害来源的玩家,所以也无法调用该玩家的random计分板来进行后续操作
不过我有了解决方法:
让每个分数执行修改武器的伤害
虽然这样枚举比较麻烦,但似乎没有更好的方法了
刚刚想起来玩家数据无法修改,以上方法作废
kuzuanpa 发表于 2021-8-24 16:53
我上面给了你2个啊…有个只讲思路的,有个带示例的,你用的哪个…?
用的是循环加分的那个
我还是说明一下我的伤害系统吧,武器是没有伤害的,但是带有一个tag,然后让持有指定tag武器的玩家调用对应区间的随机函数
比如让手持武器的tag为r10_15的玩家循环调用r10_15函数并将每次的结果储存到random计分板里,但是生物无法选中伤害来源的玩家,所以也无法调用该玩家的random计分板来进行后续操作
不过我有了解决方法:
让每个分数执行修改武器的伤害
虽然这样枚举比较麻烦,但似乎没有更好的方法了
刚刚想起来玩家数据无法修改,以上方法作废
本帖最后由 kuzuanpa 于 2021-8-24 17:19 编辑
我问的是这个…
不过看起来你是用的后一种,你可以这样
检测伤害值是否为0,不为0则计算一次随机值,把生物的计分板血量减去这个值即可,最后记得把真实血量加回上限,
丨年轻人丶 发表于 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,这样才能进行对应的随机值计算,问题就在“生物如何检测伤害来源的玩家”,我也搜了相关帖子,貌似并没有方法直接检测伤害来源
丨年轻人丶 发表于 2021-8-24 17:33
因为要弄很多把随机伤害的武器,这样的话还是要确定伤害来源玩家手上武器的tag,这样才能进行对应的随机 ...
这个你可以检测玩家实体nbt中的SelectedItem,也就是玩家手上拿着的物品,再利用计分板等标记玩家
kuzuanpa 发表于 2021-8-24 17:42
这个你可以检测玩家实体nbt中的SelectedItem,也就是玩家手上拿着的物品,再利用计分板等标记玩家 ...
我不太懂为什么要标记玩家
我提醒一下,这个伤害系统要兼容多人,不会发生冲突
还有刚刚发现修改武器属性的方法也不行,因为玩家数据无法修改
本帖最后由 kuzuanpa 于 2021-8-24 18:36 编辑
emm…标记玩家是为了不同的武器给不同的随机伤害啊)
就是玩家a某个计分板为1表明他拿的是某个武器,玩家b为2表明是另一个武器这样…
对了我想到一个办法,利用原版nbt修改武器伤害,这样攻击怪物会有不同的真实伤害值
检测这个真实伤害值再给予随机计分板伤害值就可以了
举例:
我将一个武器A伤害设置为20,武器B伤害设置为10
然后一个怪物被打了,计分板检测他收到了20点伤害
那么就可以判断这是收到了武器A的伤害,再去给予不同的计分板伤害值
缺点的话…cd没读完就攻击怪物和跳劈攻击都没法正常检测,后者倒是可以做两个伤害值指同一个物品,前者就没办法了…
最后我还是推荐你用原版伤害系统…这个随机伤害不太好做似乎
丨年轻人丶 发表于 2021-8-24 17:59
我不太懂为什么要标记玩家
我提醒一下,这个伤害系统要兼容多人,不会发生冲突
emm…标记玩家是为了不同的武器给不同的随机伤害啊)
就是玩家a某个计分板为1表明他拿的是某个武器,玩家b为2表明是另一个武器这样…
对了我想到一个办法,利用原版nbt修改武器伤害,这样攻击怪物会有不同的真实伤害值
检测这个真实伤害值再给予随机计分板伤害值就可以了
举例:
我将一个武器A伤害设置为20,武器B伤害设置为10
然后一个怪物被打了,计分板检测他收到了20点伤害
那么就可以判断这是收到了武器A的伤害,再去给予不同的计分板伤害值
缺点的话…cd没读完就攻击怪物和跳劈攻击都没法正常检测,后者倒是可以做两个伤害值指同一个物品,前者就没办法了…
最后我还是推荐你用原版伤害系统…这个随机伤害不太好做似乎
kuzuanpa 发表于 2021-8-24 18:29
emm…标记玩家是为了不同的武器给不同的随机伤害啊)
就是玩家a某个计分板为1表明他拿的是某个武器,玩家 ...
所以到底怎么给被攻击的生物随机的伤害,方便举个实例吗?
丨年轻人丶 发表于 2021-8-24 18:36
所以到底怎么给被攻击的生物随机的伤害,方便举个实例吗?
请看我上一个回复更新的内容,进行了很多修改
kuzuanpa 发表于 2021-8-24 18:37
请看我上一个回复更新的内容,进行了很多修改
懂了,你的意思是,受到不同的伤害后进行相应的随机值计算后再减去计分板的血量
这样也可以,不过我刚刚也找到解决如何修改玩家背包物品的方法了:
https://www.mcbbs.net/thread-860954-1-1.html
我先去试试
丨年轻人丶 发表于 2021-8-24 18:55
懂了,你的意思是,受到不同的伤害后进行相应的随机值计算后再减去计分板的血量
这样也可以,不过我刚刚 ...
对的,我一开始以为你想要单独几个武器随机,大部分固定
如果不想也可以直接按比例运算再加随机,那样也可以的