1人1回だけアイテムをもらえるコマンドを教えてください

シングル/マルチ含め、ゲームプレイに関する質問ができます
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.306041)

1人1回だけアイテムをもらえるコマンドを教えてください

投稿記事by Mr_IK » 2017年8月09日(水) 10:40

件名のとおりです。1人1回だけアイテムをもらえるコマンドを作りたいのですが
調べてもHITせず、なんとなくで作っても失敗してしまってつまずいております。
作り方を教えていただけないでしょうか?お願いします。
1.12.1 jar版 プラグイン・MOD無しでお願いします。
Mr_IK
ID:ef00c2c3
水から上がったとこ
 
記事: 3
登録日時: 2017年8月07日(月) 17:34

  • (PostNo.306121)

Re: 1人1回だけアイテムをもらえるコマンドを教えてください

投稿記事by Hira04 » 2017年8月10日(木) 22:57

Mr_IK さんが書きました:件名のとおりです。1人1回だけアイテムをもらえるコマンドを作りたいのですが
調べてもHITせず、なんとなくで作っても失敗してしまってつまずいております。
作り方を教えていただけないでしょうか?お願いします。
1.12.1 jar版 プラグイン・MOD無しでお願いします。

どのようなシチュエーションを想定していますか?
ボタン等があって押すと押した人に対し一度だけもらえるものですか?
一斉にアイテムを配布し、二度目の人には配らないものですか?

可能な限り想定している運用や状況を明記するようにしていただけると回答しやすいかと思われます
検証勢を見守る勢
コマンド難しいです…
JSONのエスケープは手打ち勢には厳しい…
アバター
Hira04
ID:0522cf22
石掘り
 
記事: 87
登録日時: 2016年6月29日(水) 16:48
お住まい: biome 127

  • (PostNo.319832)

Re: 1人1回だけアイテムをもらえるコマンドを教えてください

投稿記事by yuyumo » 2018年9月03日(月) 01:17

質問者ではないですが...
ボタンを押したら人に対して一回のみコマンドが実行される方法を知りたいです。
回答よろしくお願い致します(_ _)
yuyumo
ID:d104b5f8
 

  • (PostNo.319925)

Re: 1人1回だけアイテムをもらえるコマンドを教えてください

投稿記事by kamikaze » 2018年9月06日(木) 18:54

コマンドの因数を@p[tag=!<タグ名>]などにして、(例:/give @p[tag=!end] minecraft:stone)
チェーンで/scoreboard players tag @p add <タグ名>を実行すればいけると思います。
1.9より前のバージョンであれば、スコア関連を使用すればできます。
サーバー運営してるぜ!
画像

運営募集中!
なりたい人はPM送ってね!
kamikaze
ID:0d96a7ad
大工さん
 
記事: 61
登録日時: 2015年10月18日(日) 17:34
お住まい: ブラックシティ

  • (PostNo.319945)

Re: 1人1回だけアイテムをもらえるコマンドを教えてください

投稿記事by yuyumo » 2018年9月07日(金) 23:21

つまりコマンドの流れとしては
1/give @p[tag=!end] minecraft:stone
2/scoreboard players tag @p add <タグ名>
ということであってますでしょうか?

また、1回目(コマンドが実行されるとき)は「おめでとうございます」等のメッセージを表示して、2回目からは「すでに受け取り済みです」等と表示させるにはどうすればよろしいのでしょうか?
yuyumo
ID:d104b5f8
 

  • (PostNo.319991)

Re: 1人1回だけアイテムをもらえるコマンドを教えてください

投稿記事by Hira04 » 2018年9月09日(日) 09:05

yuyumo さんが書きました:つまりコマンドの流れとしては
1/give @p[tag=!end] minecraft:stone
2/scoreboard players tag @p add <タグ名>
ということであってますでしょうか?

また、1回目(コマンドが実行されるとき)は「おめでとうございます」等のメッセージを表示して、2回目からは「すでに受け取り済みです」等と表示させるにはどうすればよろしいのでしょうか?

バージョンの明記があればお答え出来るかと思います。
動作としては下記の通りでよろしいですか?
#前提条件
  1. ボタン周辺には一人しかいない(同じマスに複数人いない)
  2. 動作するコマンドブロック周辺において一番近いプレイヤーはボタンを押したその人である(ボタンを押した人よりコマンドブロックに近いプレイヤーはいない)
  3. アイテムgiveに対して拾えなかったかどうかの判定は一切含まない(手持ちがいっぱい等は考慮しない)
#動作内容
  1. ボタンを押す
  2. ボタンを押したプレイヤーに判定発生(A:もう貰った場合 B:まだ貰ってない場合)
  3. A.「すでに受け取り済みです」と対象プレイヤーのみにチャット表示
  4. B.「おめでとうございます」と対象プレイヤーのみにチャット表示と共にアイテムをgive
  5. 動作終了
検証勢を見守る勢
コマンド難しいです…
JSONのエスケープは手打ち勢には厳しい…
アバター
Hira04
ID:580b7a09
石掘り
 
記事: 87
登録日時: 2016年6月29日(水) 16:48
お住まい: biome 127

  • (PostNo.320048)

Re: 1人1回だけアイテムをもらえるコマンドを教えてください

投稿記事by yuyumo » 2018年9月10日(月) 22:55

バージョンは1.12.2になります
条件内容ともにその通りです
yuyumo
ID:d104b5f8
 

  • (PostNo.320060)

Re: 1人1回だけアイテムをもらえるコマンドを教えてください

投稿記事by Hira04 » 2018年9月11日(火) 15:31

yuyumo さんが書きました:バージョンは1.12.2になります
条件内容ともにその通りです

下記の順番通りにコマンドブロックを設置してください。
2番目のminecraft:stone 1部分をお好きなプレゼントに書き換えてご使用ください。
  1. インパルス
    コード: 全て選択
    execute @p ~ ~ ~ execute @s[tag=!gived] ~ ~ ~ tellraw @s {"text":"おめでとうございます"}
  2. チェーン常時実行
    コード: 全て選択
    execute @p ~ ~ ~ execute @s[tag=!gived] ~ ~ ~ give @s minecraft:stone 1
  3. チェーン常時実行
    コード: 全て選択
    execute @p ~ ~ ~ execute @s[tag=gived] ~ ~ ~ tellraw @s {"text":"すでに受け取り済みです"}
  4. チェーン常時実行
    コード: 全て選択
    execute @p ~ ~ ~ execute @s[tag=!gived] ~ ~ ~ scoreboard players tag @s add gived
動作としては下記となります。
付与前に受け取り済み処理を入れることで一回目なのに受け取り済み処理が行われることがないようになっています
  1. 一番近くのプレイヤーがタグ:givedを持っていなければtellraw
  2. 同様にタグ:givedを持っていなければgive
  3. タグ:givedを持っていればtellraw
  4. タグ:givedを持っていなければgivedを付与
検証勢を見守る勢
コマンド難しいです…
JSONのエスケープは手打ち勢には厳しい…
アバター
Hira04
ID:580b7a09
石掘り
 
記事: 87
登録日時: 2016年6月29日(水) 16:48
お住まい: biome 127

  • (PostNo.320071)

Re: 1人1回だけアイテムをもらえるコマンドを教えてください

投稿記事by yuyumo » 2018年9月11日(火) 22:26

ありがとうございます!!
givedを持っていない方に実行するコマンドを増やす場合は「execute @p ~ ~ ~ execute @s[tag=!gived] ~ ~ ~ 」をつけて2と3の間に増やせばいいのですかね?
早速使わせていただきます
yuyumo
ID:d104b5f8
 


Return to 質問:プレイ全般

x