305822437
本帖最后由 305822437 于 2018-2-26 17:49 编辑

关于检测玩家是否结束潜行
作为萌新可能写的不太好,请见谅.请问还有没有更好的解决方法?

创建计分板
  1. scoreboard objectives add Ram dummy
  2. scoreboard objectives add M dummy
  3. scoreboard objectives add sneakT stat.sneakTime
复制代码
fill高频
  1. <font color="#ff0000">fill ~ ~-1 ~ ~ ~-1 ~-2 redstone_block
  2. fill ~ ~1 ~ ~ ~1 ~-2 air</font>
复制代码


进行检测
  1. scoreboard players add @a[score_sneakT_min=1] M 1
  2. scoreboard players operation @a[score_Ram_min=0] Ram = @a[score_Ram_min=0] sneakT
  3. scoreboard players operation @a Ram -= @a M
  4. scoreboard players set @a[score_Ram=-1] M -1
复制代码

解析:
  1. scoreboard players add @a[score_sneakT_min=1] M 1
复制代码
用于模拟潜行加分

  1. scoreboard players operation @a[score_Ram_min=0] Ram = @a[score_Ram_min=0] sneakT
复制代码
Ram作为临时存储器

  1. scoreboard players operation @a Ram -= @a M
复制代码


不停地比较Ram[sneakT]与模拟潜行的大小,判断潜行是否结束
  1. <font color="black">scoreboard players set @a[score_Ram=-1] M -1</font>
复制代码


[增强容错]


  1. testfor @a[score_Ram=-1]
  2. scoreboard players test ……
复制代码

输出


  1. scoreboard players set @a sneakT 0
复制代码


归零





305822437
本帖最后由 305822437 于 2018-2-26 17:54 编辑



乱码修复好了,不过这排版简直不忍直视

305822437
305822437 发表于 2018-2-26 16:22
输出那段好像乱码了
想了一天,脑袋疼

见谅后面的?请无视,不知道哪来的

⊙v⊙
本帖最后由 ⊙v⊙ 于 2018-2-26 17:19 编辑

好像看懂了...
/scoreboard objectives add ifsneak stat.sneakTime
/scoreboard objectives setdisplay sidebar ifsneak

下面这条紫cb高频
/scoreboard players set @a[score_ifsneak_min=1] ifsneak 0刚才没写完...
紫色cb后面接个绿cb,条件约束,用于给玩家+Tag


放另一个紫cb,检测ifsneak=0且有Tag的玩家,使其执行去Tag。后接一个条件绿。
只用到一个stat.sneakTime板,和一个Tag
3个cb和一个输出用的绿cb...


反正无论怎么想,你用dummy检测sneakTime还模拟,基本是多余的。

看后面的楼层...

305822437
⊙v⊙ 发表于 2018-2-26 16:47
M(dummy)=stat.sneakTime
Ram(dummy)=stat.sneakTime
M(dummy)-Ram(dummy)=0

嗯,归〇忘写了。

但是stat.sneakTime不会主动归0呀,必须主动归0为下一次检测做准备
但是主动归0就必须知道你有没有退出潜行
这几条命令的作用就在这

305822437
本帖最后由 305822437 于 2018-2-26 17:33 编辑
⊙v⊙ 发表于 2018-2-26 16:47
好像看懂了...
/scoreboard objectives add ifsneak stat.sneakTime
/scoreboard objectives setdisplay si ...
好像不行,试了下绿CB会不停的触发


305822437
⊙v⊙ 发表于 2018-2-26 16:47
好像看懂了...
/scoreboard objectives add ifsneak stat.sneakTime
/scoreboard objectives setdisplay si ...

但是这样不还是潜行中就有输出了吗,
/scoreboard players set @a[score_ifsneak_min=1] ifsneak 0
只要ifsneak≥1【在潜行中】。ifsneak就会在0、1不停的波动
给玩家+Tag还是相当与把未结束潜行的玩家涵括进去了呀
后面再检测几乎就无意义了呀

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