#scriptAPIがうごかない

1 messages · Page 1 of 1 (latest)

solar perch
#

エラーはないです!!!!!!!!!

//厳選
system.runInterval(() => {
  for (const players of world.getAllPlayers()) {
    const eq = players.getComponent("minecraft:equippable").getEquipment("Mainhand")
    if (!eq) return
    if (!eq.getLore().length) {
      switch (eq.typeId) {
        case "hajime:first_short_sword":
          item_select(players);
          break;
      
        case "hajime:first_sword":
          item_select(players);
          break;
      
        case "hajime:first_hammer":
          item_select(players);
          break;
      
        default:
          // eq.typeIdがどのケースにも一致しない場合
          break
      }
    }
  }
})```これplayerが持っているアイテムのloreが書いてないときにswitch内にあるアイテムを持っていたらfunctionを実行してloreをつける的な奴なんですがなぜかマルチ対応できません。
2人いる時に片方のプレイヤーがアイテムを持ったとき、自分も持っていないと実行されない?的な感じです。
エラーは全くないし書き方も間違ってないと思うのでどうすればいいか教えてもらいたいです。
#

武器パラメーターと出ているならfunctionは実行されています。
この動画では片方のプレイヤーが武器を持たないとこっちのfunctionが実行されていないみたいな現象になっています。

limpid forum
#

現状見えているコード自体に問題はありません
強いて言えばcaseは並べられるので同じ関数を呼び出すならまとめてもいいとは思います

なので原因があるとすれば関数側かと

solar perch
#

関数側は前まで動いてたので問題はないと思います(タブンですが)
ifでまとめてみたりもしましたが結果は変わらなかったのでとりあえずswitchにしてみました

#

前回まで手に持っていたらではなくtagを付けたらでやっていたんですが、その時ではちゃんとマルチ対応でした

#

ちなみにfunction側ではない理由として、パーティクルをfunction実行と同じ場所(case内)に入れてみたら先ほどと同じように2人とも持たないとパーティクルは出ずfunctionも実行されませんでした

eager ore
#
if (!eq) return;```としていると、途中でループを抜けてしまい後のプレイヤーの処理がされないので、returnではなくcontinueを使ってください
solar perch
limpid forum
#

たしかにreturnではダメだな

limpid forum
solar perch
#

あ、これでもできるんですね

#

いったんやってみます