迪s尼在逃律师函
那么怎么才能对比自定义的实体名和指定字符串是否相同呢

指定字符串也可以是别的实体名

自定义的方式是https://www.mcbbs.net/thread-1325748-1-1.html

就是用告示牌手写,然后用实体名抄写

如果实体名不行,也可以用别的字符串储存方式

就是问能不能对比字符串,怎么对比

@晴路卡



晴路卡
本帖最后由 晴路卡 于 2022-4-21 10:49 编辑

实体名称和木牌上的那些通常称为json文本...和字符串(书与笔,命令方块中的文本内容)还是有区别的。

比对俩实体名称是否相同:
  1. data modify storage custom:test temp set from entity @e[tag=entity.0,limit=1] CustomName
  2. execute store success score #result temp run data modify storage custom:test temp set from entity @e[tag=entity.1,limit=1] CustomName
  3. # 如果是和木牌上的内容比对第二条指令换成这个
  4. # execute store success score #result temp run data modify storage custom:test temp set from block 2 10 -28 Text1
  5. execute unless score #result temp matches 1 run say 名称一致
复制代码

另外这样比对json文本的时候不只是比对文本本身的内容,json文本当中的其他格式信息(如粗体,斜体等)也是会被比对的。

迪s尼在逃律师函
晴路卡 发表于 2022-4-21 10:45
实体名称和木牌上的那些通常称为json文本...和字符串(书与笔,命令方块中的文本内容)还是有区别的。

比 ...

直接复制?#result是个什么,要我改的意思吗,temp应该是计分板名字吧,可为什么最后出来是一个一直输出成功的命令方块,名字不一样也输出成功

晴路卡
迪s尼在逃律师函 发表于 2022-4-21 11:39
直接复制?#result是个什么,要我改的意思吗,temp应该是计分板名字吧,可为什么最后出来是一个一直输出 ...

#result是假玩家名,用以存储比对结果的

具体情况你可以直接发你那边的存档。

迪s尼在逃律师函
晴路卡 发表于 2022-4-21 12:00
#result是假玩家名,用以存储比对结果的

具体情况你可以直接发你那边的存档。 ...

我自己调试了一下,可以用了,但execute store success score #result temp这段不太懂啥意思,后面懂

迪s尼在逃律师函
晴路卡 发表于 2022-4-21 12:00
#result是假玩家名,用以存储比对结果的

具体情况你可以直接发你那边的存档。 ...

还有一个就是custom:test temp中的temp显示的是targetpath,我不太懂,是计分板的名字吗,为什么存储一个实体名的数据需要计分板的名字,或者是其他意思

晴路卡
迪s尼在逃律师函 发表于 2022-4-21 12:27
还有一个就是custom:test temp中的temp显示的是targetpath,我不太懂,是计分板的名字吗,为什么存储一个 ...

store success子命令可以讲后**令的执行结果(成功/失败)存储下来(可以存到分数或是NBT里)。

custom:test是自定义的一个storage,可以在storage下存储NBT数据(你输data get storage custom:test就能看到这个storage底下的信息了),这里的temp并非记分板而是nbt路径

迪s尼在逃律师函
晴路卡 发表于 2022-4-21 13:35
store success子命令可以讲后**令的执行结果(成功/失败)存储下来(可以存到分数或是NBT里)。

custom: ...

整段指令用到计分板了吗,wiki说 store success score是把输出的结果或成功的次数记录到计分板里
score #result temp的意思应该是记录在temp计分板上玩家名的分数,可是我创建了temp计分板一直无变化
score #result temp应该被理解成什么意思
store子命令只是一个附加项用于记录输出结果,不是一个条件吗,也就是说后面的run是百分百运行的?

迪s尼在逃律师函
晴路卡 发表于 2022-4-21 13:35
store success子命令可以讲后**令的执行结果(成功/失败)存储下来(可以存到分数或是NBT里)。

custom: ...

我突然发现带#名字的积分版不会显示,我理解了

迪s尼在逃律师函
晴路卡 发表于 2022-4-21 13:35
store success子命令可以讲后**令的执行结果(成功/失败)存储下来(可以存到分数或是NBT里)。

custom: ...

execute store success score #result temp run data modify storage custom:test temp set from entity @e[tag=entity.1,limit=1] CustomName
所以这条指令的意思是用#result的计分板记录“用比对实体的实体名替换掉被比对实体的实体名”的输出成功次数
运行一次就是1,然后execute unless score #result temp matches 1 run say 名称一致
这句的意思是如果#result的temp记分项≠1运行成功,因为不等于1也就是两者名字一样,无法替换,上条指令运行失败,计分板没有数值,但如果这样的话需要重置计分板才有效吧,不然计分板除了第一次不是永远都处于1吗

晴路卡
命令执行成功输出1 执行失败输出0
不是说执行失败就不会改记分板分数的

迪s尼在逃律师函
晴路卡 发表于 2022-4-21 13:35
store success子命令可以讲后**令的执行结果(成功/失败)存储下来(可以存到分数或是NBT里)。

custom: ...

好了,没事了,我去掉#测试了一下,如果运行失败还会自动清零,智能到不像mojang的东西,离谱