zhc2008025
如何让命令方块探测一个人身上的经验是否有10点(不是10级)。如果有就输出红石信号(直接执行下一个命令方块也行),如果没有就不输出?

Peanutz_OwO
本帖最后由 Peanutz_OwO 于 2020-8-7 19:52 编辑
  1. /execute if entity @r[nbt={XpTotal:10}] ...
复制代码
这句意思是检测随机玩家(@r)的经验是否 10 点(只有等于是能通过检测的)。后面怎么执行就看你了,用比较器输出红石信号。下面有个更好的,可以看看。(我的理解有误差,所以没用 scoreboard)



zhc2008025
谢谢,我去试试

TorkenCommander

其实并不需要输出红石信号
毕竟execute的执行模式除了检测还有执行"run"
且这种方式并不好,如果这个人经验点数为"11",
这种方式就无法检测到了,如果你想要检测到经验点数
在指定范围内不需要进行穷举,你需要将玩家的经验点数
储存到一个被创建的dummy记分板,然后当分数被存储了
就可以通过原版内置的目标选择器来检测scores
这个scores可以检测指定范围内的玩家,就可以通过这种
方式来检测到了
下面是举例指令组,dummyscore换成你需要的名字,不一定要写成这个名字
绿色指令部分选择一个就可以了,而不需要选择多个,say指令可以换成别的
而并非必须这样,当然你也可以把run换成if或其他检测器,这样就能实现二次检测
/execute as @a at @s store result score @s dummyscore run experience query @s points
/execute as @a[scores={dummyscore=10..}] run say 我拥有10点经验(或以上!
/execute as @a[scores={dummyscore=..10}] run say 我并没有10点经验
/execute as @a[scores={dummyscore=10..100}] run say 我的经验点数处于10和100之间!

WYL0zhu
楼上的做法都是错的,其实不管是Score和XpTotal标签还是scoreboard都是有误差的,这些命令一旦遇到/xp命令、铁砧、附魔台的增加/消耗命令就傻了不会更新,所以其实正确的做法是使用我的数据包经验值查询(我真的没打广告),然后先放个(不受控制),里面写:
  1. function xp:xp_query_player
复制代码
命令,然后在这个命令方块的输出端放一个(不受控制),里面写:
  1. execute if entity @a[scores={xp=10..}]
复制代码
就行了啊,然后红石信号会在连锁命令方块的输出端输出的。

zhc2008025
有什么不用数据包的方法吗?

凌空的猫
zhc2008025 发表于 2020-8-9 20:33
有什么不用数据包的方法吗?

那就硬检测呗,送个经验为0的经验球再检测,或者把指令包拆开来看看

zhc2008025
凌空的猫 发表于 2020-8-9 22:04
那就硬检测呗,送个经验为0的经验球再检测,或者把指令包拆开来看看

指令萌新表示听不懂

凌空的猫
zhc2008025 发表于 2020-8-10 11:01
指令萌新表示听不懂

首先,把指令包下载下来,然后把函数展开,每一行代码复制进指令方块即可

zhc2008025
函数在哪?(经验值查询\data 后面有一个minecraft和一个xp,是那个?)

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