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 , 中間是比較器 (注意方向要對阿~)
http://imgur.com/AlwUMXP
我先直接寫這三個 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