Re: [讨论] 关闭隐形药水的使用

楼主: darkk6 (Mr. Pan)   2016-01-03 23:19:19
: 在游戏中输入指令1:
: /scoreboard objectives add i_see_you dummy I see you
: 接着输入指令2:
: /scoreboard players set @a i_see_you 0
: 再来输入指令3:
: /scoreboard players set @a i_see_you 1 {ActiveEffects:[{Id:14b}]}
: /effect @a[score_i_see_you_min=1] 14 0
※ 补充一下, t 大的方法在执行 /effect @a[score_i_see_you_min=1] 14 0
  之前,可以加上这个,告知 op 哪些人有隐形:( 假设darkk6 是 op)
/tellraw darkk6
[ "",
{"selector":"@a[score_i_see_you_min=1]","color":"red"},
{"text":" 喝了隐形药水"}
]
之前有再研究 Command block (其实是玩过盘灵古域之后发现 Command 很有趣 XD)
想做个讨论和交流,同样是要达到相同的目的,我有另一个想法
先贴上图片,这边有三个 Command Block , 中间是比较器 (注意方向要对阿~)

我先直接写这三个 Command 的内容,再来解说和讨论
A : /testfor @a {ActiveEffects:[{Id:14b}]}
B : /effect @a 14 0
C : /blockdata ~? ~? ~? {SuccessCount:0}
然后一样透过连闪器或矿车+铁轨触发 A 即可
我想到的是,因为要禁止所有人使用隐形效果,所以我想直接透过
/effect @a 14 0
直接将所有玩家的 14 号效果设为 0 秒 (隐形效果)
但不确定如果一直执行这个指令会不会造成什么问题,因此借由 A 的 testfor 先测试
所有玩家中,是否有隐形效果状态的人。
底下是这三个 Command 的解说:
A : 用 testfor 侦测所有拥有隐形效果的人
@a ==> 所有玩家
{ActiveEffects:[{Id:14b}]} ==> 拥有隐形效果的人
若侦测到,就会透过比较器送出红石讯号,借此触发 B 和 C
B : 将所有玩家的隐形效果状态设为 0 秒 (这个同 t 大所述)
C : 将 A 命令方块的侦测资料重置
这边要稍微解释一下 ~ 代表目前的座标 ( C 方块的座标),
后面跟的 ? 代表相对位置
假设 C 的座标在 (1 , 2 , 3) <=== 按照 xyz 顺序
而 A 的座标在 ( 1 , 1 , 5 )
这边就要用 /blockdata ~ ~-1 ~2
代表 x 不变、 y 座标 -1 、 z 座标 +2
而 SuccessCount 则是当 testfor 指令有侦测到符合的资料时,
会将所有符合的数量记录在 SuccessCount,进而触发比较器,传送讯号
这边将其设为 0 就是将记录重置,因此比较器的讯号就会消失,以便下次侦测
如果要排除某人或者排除某群组的人,可以在 @a 的后面加上
@a[name!=darkk6] <=== 排除特定的人
或者先设定一个 scoreboard , 一样是 dummy , 假设名称是 is_op
大家都设为 0 , 在手动把所有 op 都设为 1,然后 @a 改成
@a[score_is_op=0] <=== 只对 is_op=0 的有作用
作者: haidai (haidai)   2016-01-03 23:20:00
你看看你被M了吧(?
作者: c60203 (只看周日正赛的一日迷)   2016-01-04 00:05:00
hahaha ㄩㄈㄈㄩ
作者: LPH66 (-6.2598534e+18f)   2016-01-04 02:06:00
SuccessCount 是个很有用的技巧, 玩指令方块的这招值得记下
作者: tst5381 (tst)   2016-01-05 11:11:00
selector有个team可以使用,建一个op用的team在名单管理上会比用dummy方便

Links booklink

Contact Us: admin [ a t ] ucptt.com