giveコマンドとreplaceitemコマンドについて

レッドストーン回路、ピストン、新要素など技術紹介や検証などで盛り上がろう!
  • (PostNo.303750)

giveコマンドとreplaceitemコマンドについて

投稿記事by 匿名希望03271192 » 2017年6月20日(火) 22:44

giveコマンドとreplaceitemコマンドについての質問です。
まずgiveコマンドについて、個数の指定にscoreboardの値を用いることはできないでしょうか。
(giveコマンドでなくても疑似的に他のコマンドで再現可能であればアドバイスをいただきたいです。)

次にreplaceitemコマンドについて、slotの指定を全スロット対象にすることはできないでしょうか。
(41個のコマンドブロックを使わなくても数個で済む方法をご教授願いたいです。)
また、replaceitemでスロット指定でアイテムを置き換えるのではなくもともと持っているアイテムを指定して置き換えする、
といったことはできないでしょうか。(こちらも疑似的に他のコマンドで再現可能あればかまいません。)

不躾ではありますがどうかお力を貸していただけたらと思います。
匿名希望03271192
ID:651698a9
 

  • (PostNo.303797)

Re: giveコマンドとreplaceitemコマンドについて

投稿記事by Steve2856 » 2017年6月22日(木) 22:55

giveコマンドの件についてですがscoreboardの値で個数の指定はやろうと思えば可能です。
1番手っ取り早い方法は
give @a[score_item_min=1,2,3,4...,score_item=1,2,3,4...] ...
とやることでその値だけを指定しますが、数が膨大だとコマンドの量も増えてきます
解決策として2の累乗数ごとに高い数値から計算させるといいかと思います(数が少ないと逆にコマンドの量が増えてしまいます)
例 (itemが41のとき)
/execute @a ~ ~ ~ scoreboard players operation @s item2 = @s item
give @a[score_item2_min=32] stone 32
scoreboard players remove @a[score_item2_min=32] item2 32    41-32=9
 give @a[score_item2_min=16] stone 16
 scoreboard players remove @a[score_item2_min=16] item2 16    実行不可能
  give @a[score_item2_min=8] stone 8
  scoreboard players remove @a[score_item2_min=8] item2 8     9-8=1
   give @a[score_item2_min=4] stone 4
   scoreboard players remove @a[score_item2_min=4] item2 4    実行不可能
    give @a[score_item2_min=2] stone 2
    scoreboard players remove @a[score_item2_min=2] item2 2    実行不可能
     give @a[score_item2_min=1] stone 1
     scoreboard players remove @a[score_item2_min=1] item2 1    1-1=0
このような計算をすると41個必要なコマンドが約13個で収めることができます。
replaceitemについてはあまり利用したことがないのでなんとも言えませんが、
おそらく全スロットの指定は出来ないかと思います。
アイテムを指定して置き換えることについては1つずつスロットがその条件に合っているかを確認して合っていたらscoreboardにスロットの値にして、
scoreboardの条件からreplaceitemするという面倒な感じのコマンドしか今のところ思いつきませんでした。
長文失礼しました。
Steve2856
ID:8c67cede
水から上がったとこ
 
記事: 9
登録日時: 2016年6月14日(火) 19:15


Return to テクニック研究/紹介

x