【嵐】【指令】Q鍵、F鍵偵測,製作技能觸發的神器
技術部
雪色 (hoarhsu)
2016-07-22 20:40:37
#1
大家好,我是嵐,
這篇是繼上篇文章「左、右鍵偵測」(連結在文章下方)未完成的技能觸發事件的用途, 這次是教學如何用F鍵、Q鍵,甚至是蹲下、旋轉、移動而放出技能。
指令機關主打不耗效能、精準、快速!
-------------------------------------------------------------------------------------------------
一、Q鍵偵測
原理試探測玩家的drop記分板(丟出),再來偵測被丟出的物品是否為指定物品
教程:
先創立一個記分板以便計算玩家是否丟出物品:
/scoreboard objectives add Drop stat.drop
接著是從丟出物品的玩家身上判定附近是否有指定的物品,如果有就把指定物品加入標籤:
/execute @a[score_Drop_min=1] ~ ~ ~ /scoreboard players tag @e add Qtest {Item:{id:(物品ID),tag:{display:{Name:(自訂義名稱)}}}}
重複執行的指令方塊後面就可以接你想要在偵測Q鍵後執行的指令,
而在後面再放置指令方塊讓物品還原到玩家身上(讓可撿取時間歸0):
/entitydata @e[tag=Qtest] {PickupDelay:0}
最後讓玩家的丟出分數歸0:
/scoreboard players set @a[score_Drop_min=1] Drop 0
簡單的Q鍵偵測機關就完成了:
-------------------------------------------------------------------------------------------------
二、F鍵偵測
原理試探測玩家左手是否持著指定物品
教程:
將玩家左手手持指定物品的玩家加入標籤:
/scoreboard players tag @a add Ftest {Inventory:[{id:minecraft:(物品ID),Slot:-106b,tag:{display:{Name:(自訂義名稱)}}}]}
重複執行的指令方塊後面就可以接你想要在偵測F鍵後執行的指令,
而在後面將玩家的指定物品清除:
/clear @a[tag=Test] (物品ID) (物品附加值) (數量) {display:{Name:(自訂義名稱)}}
/give @a[tag=Test] (物品ID) (數量) (物品附加值) {display:{Name:(自訂義名稱)}}
最後清除玩家的標籤:
/scoreboard players tag @a[tag=Ftest] remove Ftest
簡單的F鍵偵測機關就完成了:
-------------------------------------------------------------------------------------------------
結尾:
這次的指令教學稍微比較簡單,左右鍵的偵測會稍微困難,
如果想查看左右偵測的文章請點下面傳送門的連結。
喜歡我的文章或想詢問任何的指令問題都可以訂閱和按讚,或在下方留言喔~
所有的指令問題我幾乎都可以回答~
-------------------------------------------------------------------------------------------------
看較舊的 47 則留言
雪色:
B51
2018-06-29 22:26
在標籤的地方會改成:{SelectedItem:{id:"diamond_sword",tag:{display:{Name:"聖劍EXcaliburrrrrrrrrr!!!!!!"}}}}
雪色:
B52
2018-06-29 22:26
(抱歉暑假前這一個月太忙了...根本沒空上線...有點晚才回.
雪色:
B54
2018-06-30 16:22
沒關係 我也開放問問題(X 只是我很不常上.
斯卡路:
B55
2019-09-17 17:18
1.14.4適用嗎
爽啦!我是商人~! (raventree)
2017-06-28 16:02:47
#3
痾..新手需要求救我看了之後覺得應該可以實現我的夢想...回家道具
後來發現 甚麼反應都沒有QQ
請大家幫我看看出問題在哪 感恩
1.先打一個/scoreboard objectives add Drop stat.drop (對話框)
2.叫一個命令方塊(重複,永遠啟動)
/execute @a[score_Drop_min=1] ~ ~ ~ /scoreboard players tag @e add Qtest {Item:{id:"emerald",tag:{display:{Name:"回家石"}}}}
3.叫一個命令方塊排在後面(連鎖,永遠啟動)
/entitydata @e[tag=Qtest] {PickupDelay:0}
4..叫一個命令方塊排在後面(連鎖,永遠啟動)
/scoreboard players set @a[score_Drop_min=1] Drop 0
5.叫一個命令方塊排在後面(脈衝,永遠啟動)
/tp @p 0 15 0
就沒有後續了...OTZ
然後有其他一些疑惑的問題,不知道該添加什麼..
就是 我丟綠寶石 或丟其他物品 指令都會跑...
然後地上的東西也沒有收走 囧
麻煩大師教我如何修改 先感謝你們QQ
看較舊的 32 則留言
杰斯:
B33
2017-06-28 18:29
你是1.12的話, 應該要改
爽啦!我是商人~!:
B36
2017-06-28 18:33
不過有辦法設置感應嗎? 不然怕距離問題 傳到不該傳送的人OTZ
爽啦!我是商人~!:
B37
2017-06-28 18:34
反覆測試一下 結果 又變成所有物品都可以傳送QQ
杰斯 (jshiuanliu)
2017-06-28 18:42:41
#4
我先把你的文章內容copy過來....
指令我用藍色的字, 然後我修改的地方用紅色的字,
你對照一下有沒有哪裡有打錯....
1.先打一個/scoreboard objectives add Drop stat.drop (對話框)
2.叫一個命令方塊(重複,永遠啟動)
/execute @a[score_Drop_min=1] ~ ~ ~ /scoreboard players tag @e add Qtest {Item:{id:"minecraft:emerald",tag:{display:{Name:"回家石"}}}}
3.叫一個命令方塊排在後面(連鎖,有條件,永遠啟動)
/entitydata @e[tag=Qtest] {PickupDelay:0}
4.叫一個命令方塊排在後面(連鎖,有條件,永遠啟動)
/scoreboard players set @a[score_Drop_min=1] Drop 0
5.叫一個命令方塊排在後面(連鎖,有條件,永遠啟動)
/tp @p 0 15 0
然後按Q丟出手上 名字叫"回家石"的綠寶石
以上, 我是可以正常執行的唷~~~
至於你說要改成可以偵測位置的方式, 我等等打下一篇回覆你
看較舊的 6 則留言
爽啦!我是商人~!:
B7
2017-06-28 18:53
用創造測試 跟一般模式 原來會不同QQ
爽啦!我是商人~!:
B8
2017-06-28 18:54
這樣第一階段沒問題了 就差感應位置這個
杰斯:
B9
2017-06-28 18:54
有時候總是會有奇怪的情況發生,這時候我會先把所有的指令方塊改成紅石啟動(要按確定)再全部改成永遠啟動,就會正常了
杰斯:
B10
2017-06-28 18:55
晚一點吃完飯,我把改好的指令(可偵測丟道具的人)再po給你
杰斯 (jshiuanliu)
2017-06-28 19:33:16
#5
首先呢~~ 第1和第2不用改,
第3要刪除, 因為改成丟出的道具被刪除, TP後再拿回來,
所以撿取延遲=0就沒有用了, 然後第4也不用改,
因此指令就變成了以下這樣~~
1. /scoreboard objectives add Drop stat.drop (對話框)
2. /execute @a[score_Drop_min=1] ~ ~ ~ /scoreboard players tag @e add Qtest {Item:{id:"minecraft:emerald",tag:{display:{Name:"回家石"}}}} (重複,永遠啟動)
3. /scoreboard players set @a[score_Drop_min=1] Drop 0 (連鎖,有條件,永遠啟動)
(目前都沒有改動, 只是少了原本的第3)
再來就是, 因為按Q丟出了指定道具, 所以先用give把道具拿回來
4. /execute @e[tag=Qtest] ~ ~ ~ /give @p minecraft:emerald 1 0 {display:{Name:"回家石"}} (連鎖,有條件,永遠啟動)
然後就是原本的第5, 只是多加上了偵測位置的設定
5. /execute @e[tag=Qtest] ~ ~ ~ /tp @p 0 15 0 (連鎖,有條件,永遠啟動)
最後, 記得把丟出去的道具刪除唷~~
6. /kill @e[tag=Qtest] (連鎖,有條件,永遠啟動)
以上指令即可完成你要的效果!!
再來是簡單說明一下,
注意看第4和第5的前半段是一樣的 /execute @e[tag=Qtest] ~ ~ ~
這就是利用了 execute 讓後半段的指令, 以前半段的實體為主,
沒指定實體的話, 就會以指令方塊本身為主,
那我所指定的實體 @e[tag=Qtest] 就是丟出去的道具,
所以後半段的指令使用 @p 當然就是離道具最近的, 丟出道具的人,
因此就不會有TP錯人, 和道具給錯人的情況發生囉~~~
看較舊的 12 則留言
杰斯:
B13
2018-08-29 15:31
是,獨立一個用來計時就好
烤雞洋芋片:
B14
2018-08-29 16:38
能舉個例子嗎? 對scoreboard還不太熟悉..
杰斯:
B15
2018-08-29 17:27
舉例是指實際的指令嗎?因為1.12和1.13指令大改動…
烤雞洋芋片:
B16
2018-08-29 17:58
阿 我用的是1.12.2
萊姆球0д0-☆ (Snady0610)
2017-08-10 21:41:57
#7
大大妳好:
為甚麼這一條我用了但沒反應??
(可更改: 紅色 不可: 藍色 )
/execute @a[score_Drop_min=1] ~ ~ ~ /scoreboard players tag @e add Qtest {Item:{id:"Diamond_sword",tag:{display:{Name:"冰封印 導魔之劍"}}}}
貓狗喵:
B1
2017-08-10 21:48
Diamond_sword改成minecraft:diamond_sword
燚元 (zcb135789)
2017-09-22 00:44:28
#8
請問如果我想讓他物品等待10秒後再歸還到背包要怎麼打?
這是我目前的指令
/execute @e[tag=Qtest] ~ ~ ~ /give @p minecraft:totem_of_undying 1 0 {display:{Name:"隱身"}}
求大大幫忙
看較舊的 20 則留言
想不到名字:
B23
2017-10-01 16:44
6那個所有的score_clock_min的數字由2000改為400 算錯(20x20=2000...)
想不到名字:
B24
2017-10-01 17:39
第4個改為execute @a[tag=cd,score_clock_min=400] ~ ~ ~ give @a[tag=cd] minecraft:totem_of_undying 1
想不到名字:
B25
2017-10-01 17:39
第5個改為execute @a[tag=cd,score_cd_min=1] ~ ~ ~ scoreboard players reset @a[tag=cd] cd
想不到名字:
B26
2017-10-01 17:42
最後新增一個連鎖指令方塊 放在第5個前 kill @e[type=item] {Item:{id:"minecraft:totem_of_undying"}} 原第6,7則變成第7,8
燚元:
B27
2017-10-03 00:05
感謝~
March (a38974401)
2017-12-02 14:50:56
#10
我打/scoreboard players tag @a add Ftest {Inventory:[{id:minecraft_apple,Slot:-106b,tag:{display:{Name_123}}}]}但他寫[14:50:42] Players tag command failed, reason: Expected ':' but got '}' at: ...,Slot:-106b,tag:{display:{Name_123}<--[HERE]
peter:
B1
2017-12-02 15:40
版本...
大同寶寶:
B2
2017-12-02 17:43
除了版本,Name那裡也出問題了
大同寶寶:
B3
2017-12-02 17:44
要是你版本低於1.9,副手會失效
大同寶寶:
B4
2017-12-02 17:45
不過看這錯誤報告……你的Name那裡少了:
大同寶寶:
B5
2017-12-02 17:45
(按到發送)更正,少了:""
曉義 (choyee)
2018-03-24 20:09:16
#11
此資料標籤不符合 Cho_Yee
Cho_Yee是我的ID
/scoreboard players tag @a add Ftest {Inventory:[{id:"minecraft:diamond_sword",Slot:-106b,tag:{display:{Name:"鑽石劍"}}}]}
向你請教一下 哪裡錯了
烤雞洋芋片 (koaruXcoaoca)
2018-09-01 13:44:23
#12
版主安~ 我是前幾天詢問冷卻的玩家 注 版本是1.11.2
我後來決定使用F鍵去觸發指令 但它東西並沒有歸還給我 但第一列指令是正常的..
也就是說 按F時東西是會正常發揮(指令)的 只是它不會歸還給我orz...
以下是我的指令 希望有bug能幫我抓...
第一行 /scoreboard players tag @a add heal {Inventory:[{id:minecraft:book,Slot:-106b,tag:{display:{Name:"包紮",Lore:["按F可回復生命值"]}}}]} --- 指令方塊 重複 無條件 永遠啟動
第二行 /replaceitem entity @a[tag=heal] slot.weapon.offhand minecraft:air --- 連鎖 有條件 永遠啟動
<中間放了一些指令> /execute @e[tag=heal] ~ ~ ~ /effect @p 10 12 0 true 之類的
第三行 /scoreboard players tag @a[tag=heal] remove heal 連鎖 有條件 永遠啟動
-----
上面都沒問題 但是到這裡的時候... (冷卻時間部分)
第一行 /scoreboard objectives add healCD dummy 指令方塊 脈衝 無條件 需要紅石 (觸發過囉)
第二行 /scoreboard players set @a[tag=heal] healCD 100 --- 重複 無條件 永遠啟動
第三行 /scoreboard players remove @a[score_healCD_min=1] healCD 1 --- 重複 無條件 永遠啟動
第四行 /give @a[score_healCD_min=1,score_healCD=1] minecraft:book 1 0 {display:{Name:"包紮",Lore:["按F可回復生命值"]}} --- 重複 無條件 永遠啟動
有開過 healCD 的記分板 </scoreboard objectives setdisplay sidebar healCD> 不過他沒顯示出來...
看較舊的 5 則留言
雪色:
B6
2018-09-01 14:56
stat.playOneMinute是一個可以讓每個玩家每tick都讓分數+1的記分板類型,就只是用來省去你每刻都要去加減分數的功用而已
雪色:
B7
2018-09-01 14:56
你目前的機關是每刻-1,而stat.playOneMinute是每刻+1,所以如果要換記分板的話可能要有一點點的範圍調整
雪色:
B8
2018-09-01 14:57
stat.playOneMinute類型的記分板是可以用set來重新歸0的
烤雞洋芋片:
B9
2018-09-01 15:26
可以用在計時的感覺?
烤雞洋芋片:
B10
2018-09-01 15:33
[hoarhsu:雪色]剛剛試了一下 成功了!!!
GAMEADO (gameado)
2018-11-14 22:45:43
#13
請問一下,為甚麼他這樣說
無法執行/scoreboard players tag @a add Ftest {Inventory:[{id:minecraft:skull,Slot:-106b,tag:{display:{Name:(扔頭臚就會死)}}}]} 於 (我的id)