Skip to content

ScoreModule

Koukunn_ edited this page Feb 25, 2025 · 5 revisions

ScoreModule

このモジュールは、Minecraft Bedrock Edition の Script API を拡張し、スコアボード操作、チーム管理、プレイヤー制御、ブロック/アイテム操作など、ゲームプレイをより豊かにするための様々なコマンドを提供します。

✨ 主な機能 (カテゴリ別) ✨

1. スコアボード操作

  • リセット: スコアボードのスコアを初期化 (個別/全スコアボード)。
  • コピー: 別のスコアボードから値をコピー (プレースホルダーで動的な値も取得可能)。
  • 削除: 不要なスコアボードを削除 (フォームUI/一括削除)。
  • 数値選択: 指定した数値リストからランダムに1つ選び、スコアボードに設定。

2. チーム管理

  • チーム分け: 特定のタグを持つプレイヤーを指定数・上限人数でチーム分けし、スコアボードに記録。
  • チーム人数に応じたコマンド実行: 指定タグを持つプレイヤー数に応じて、異なるコマンドを実行 (0人判定、最多人数判定)。

3. プレイヤー操作

  • フォーム強制閉鎖: プレイヤーが開いているフォームを強制的に閉じる。
  • タグ変更: 指定タグを持つ全プレイヤーのタグを一括変更。

4. ブロック操作

  • クローン: 指定座標のブロックを別の座標に複製。
  • コンテナアイテム設定: チェスト/樽などのコンテナにアイテムを設定 (詳細なアイテムカスタマイズ、ランダムスロット配置)。
  • ランダムブロック設置: 指定座標に、指定ブロックをランダムな比率で設置。

5. アイテム操作

  • アイテムランダムドロップ: 指定範囲内に、指定されたアイテムをランダムな比率でドロップ

📖 コマンド詳細 (完全版) 📖

resetScore - スコアボードリセット

機能: スコアボードのスコアをリセット (個別 or 全部)。

コマンド: /scriptevent ws:resetScore <スコアボード名|-all>

  • <スコアボード名>: リセット対象のスコアボード名。
  • -all: すべてのスコアボードをリセット。

例:

  • my_scoreboardをリセット: /scriptevent ws:resetScore my_scoreboard
  • 全スコアボードをリセット: /scriptevent ws:resetScore -all

number - ランダム数値設定

機能: 指定数値からランダムに1つ選び、ws_numberスコアボードへ設定。

コマンド: /scriptevent ws:number <数値1>,<数値2>,...

  • <数値1>,<数値2>,...: カンマ区切りの数値リスト。

例: 1, 5, 10, 20からランダム: /scriptevent ws:number 1,5,10,20

score - スコアボード値コピー (プレースホルダー対応)

機能: 指定スコアボードの値をws_<コピー元>スコアボードへコピー。

コマンド: /scriptevent ws:score=<コピー元スコアボード名>

  • <コピー元スコアボード名>: コピー元のスコアボード。

プレースホルダー (動的な値を生成):

プレースホルダー 説明
[allPlayer] ワールド内の全プレイヤー数。
[uptime] サーバーの稼働時間 (秒)。
[ver] スクリプトバージョン (ver 変数の値)。
[time] 現在時刻 (時:分)。例: 14:35
[tag=<タグ名>] 指定タグを持つプレイヤー数。
[score=<スコアボード名>] 指定スコアボードの 最高スコア。
[score=<スコアボード名>,<プレイヤー名>] 指定スコアボードの、指定 プレイヤーのスコア。
[scoreN=<スコアボード名>] 指定スコアボードの最初の参加者の名前
[scoreN=<スコアボード名>,<プレイヤー名>] 指定スコアボードの、指定プレイヤーの名前。見つからない場合は0

例:

  • player_kills を ws_player_kills へコピー: /scriptevent ws:score=player_kills

team set - チーム分け & スコアボード記録

機能: 指定条件でプレイヤーをチーム分け、チーム番号をスコアボードへ。

コマンド: /scriptevent ws:team set <チーム数>:<チーム内上限人数> <タグ名> <スコアボード名>

  • <チーム数>: 作成するチーム数。
  • <チーム内上限人数>: 1チームの最大人数。
  • <タグ名>: チーム分け対象プレイヤーのタグ (このタグを持つ人のみ対象)。
  • <スコアボード名>: チーム番号を記録するスコアボード名。

例: gameタグ持ちを2チーム(最大2人)に分け、team_numberへ記録: /scriptevent ws:team set 2:2 game team_number

teamCount - チーム人数に応じたコマンド実行

機能: タグ別プレイヤー数で異なるコマンドを実行 (0人判定、最多判定)。

コマンド: /scriptevent ws:teamCount <チームタグ1,チームタグ2,...> <JSON> [true]

  • <チームタグ1,チームタグ2,...>: カンマ区切りのタグリスト。
  • <JSON>: 各タグに対応するコマンド (JSON配列)。
    • { "チームタグ": "実行コマンド" } の形式。
  • [true] (オプション):
    • 無し/false: いずれかのチームが 0人になった時、そのタグのコマンド実行。
    • true: 最も人数の多いチーム のタグのコマンド実行。
      • 最多同数の場合、"same"キーのコマンド実行 (無ければ何もしない)。

例:

  • red_team 0人で say Red team eliminated!、blue_team 0人で say Blue team eliminated!:

    /scriptevent ws:teamCount red_team,blue_team [{"red_team":"say Red team eliminated!"},{"blue_team":"say Blue team eliminated!"}]
    
  • team1, team2で最多人数のチームでコマンド分岐、同数ならsameのコマンド:

    /scriptevent ws:teamCount team1,team2 [{"team1":"say Team 1 wins!"},{"team2":"say Team 2 wins!"},{"same":"say It's a tie!"}] true
    

scoreDelete form - スコアボード削除フォーム表示

機能: スコアボード削除用フォーム(UI)を表示。

コマンド: /scriptevent ws:scoreDelete form

scoreDelete all - スコアボード一括削除

機能: ws_で始まるスコアボードを 一括削除 (ws_moduleは除く)。

コマンド: /scriptevent ws:scoreDelete all

closeForm - 全フォーム強制閉鎖

機能: 現在開いているすべてのフォームを閉じます コマンド: /scriptevent ws:closeForm

changeTag - 全プレイヤーのタグ一括変更

機能: 指定タグを持つ 全プレイヤー のタグを変更。

コマンド: /scriptevent ws:changeTag <元のタグ>,<新しいタグ>

  • <元のタグ>: 変更前のタグ。
  • <新しいタグ>: 変更後のタグ。

例: old_tag持ち全員をnew_tagへ: /scriptevent ws:changeTag old_tag,new_tag

cloneBlock - ブロッククローン

機能: 指定座標のブロックを別の座標へ複製。

コマンド: /scriptevent ws:cloneBlock <JSON>

  • <JSON>: 以下の構造のJSON文字列。
{
  "form": [
    {"x": <x座標>, "y": <y座標>, "z": <z座標>},
    ...
  ],
  "to": [
    {"x": <x座標>, "y": <y座標>, "z": <z座標>},
    ...
  ]
}
  • form: コピー元の座標配列。
  • to: コピー先の座標配列。

例: (0, 64, 0) を (10, 64, 10) へ: /scriptevent ws:cloneBlock {"form":[{"x":0,"y":64,"z":0}],"to":[{"x":10,"y":64,"z":10}]}

chestFill - コンテナアイテム設定 (高機能)

機能: コンテナ(チェスト等)にアイテムを設定。詳細設定、ランダム配置可。

コマンド: /scriptevent ws:chestFill <JSON>

  • <JSON>: 以下の構造のJSON文字列。
{
"locations": [
    { "x": <x座標>, "y": <y座標>, "z": <z座標>},
     ...
     ],
    "items": [
        {
        "id": "<アイテムID>",
        "amount": <数量>,
         "data":<データ値>,
        "name": "<アイテム名>",
        "lore": ["<説明文1>", "<説明文2>", ...],
         "lockMode":<ロックモード>,
         "keepOnDeath":<死亡時保持>,
        "enchantments": [
                 {"type": "<エンチャントの種類>", "level": <レベル>},
                ...
            ]
        },
    ...
    ],
     "randomSlot": <true/false>
}
  • locations: コンテナの座標配列。
  • items: 設定アイテムの配列。
    • id: アイテムID (例: minecraft:diamond)。 必須
    • amount: 数量 (デフォルト: 1)。
    • data: データ値(デフォルトは0)
    • name: カスタム名。
    • lore: 説明文 (文字列配列)。
    • lockMode:コンテナスロットのロックモード。"slot"でスロット固定、"inventory"でインベントリ固定(省略可)。
    • keepOnDeath:プレイヤー死亡時にアイテムを保持するかどうか(省略可)。
    • enchantments: エンチャント配列。
      • type: エンチャントの種類 (例: sharpness)。
      • level: エンチャントレベル。
  • randomSlot:
    • true: ランダムスロットに配置。
    • false/省略: 空きスロットの先頭から順に配置。

例: (0, 64, 0)のチェストにダイヤ2個(名前:Special Diamond, 説明:Shiny!)をランダム配置:

/scriptevent ws:chestFill {"locations":[{"x":0,"y":64,"z":0}],"items":[{"id":"minecraft:diamond","amount":2,"name":"§bSpecial Diamond","lore":["§7Shiny!"]}],"randomSlot":true}

randomBlock - ランダムブロック設置

機能: 指定座標に、指定ブロックをランダム比率で設置。

コマンド: /scriptevent ws:randomBlock <JSON>

  • <JSON>: 以下の構造のJSON。
{
    "locations": ["<x1> <y1> <z1>", "<x2> <y2> <z2>", ...],
    "blocks": [
        { "id": "<ブロックID>", "weight": <重み> },
...
]
}
  • locations: 設置座標の配列 (文字列形式 "x y z")。
  • blocks: 設置ブロックと重みの配列。
    • id: ブロックID (例: minecraft:stone)。 必須
    • weight: 出現率の重み (大きいほど出やすい)。

例: (0, 64, 0) と (1, 64, 0) に土(重み3)と石(重み1)をランダム設置:

/scriptevent ws:randomBlock {"locations":["0 64 0", "1 64 0"],"blocks":[{"id":"minecraft:dirt","weight":3},{"id":"minecraft:stone","weight":1}]}

randomDrop - アイテムランダムドロップ

機能: 指定範囲にアイテムをランダム比率でドロップ。詳細設定可。

コマンド: /scriptevent ws:randomDrop <JSON>

  • <JSON>: 以下の構造のJSON。
{
    "start": { "x": <x1>, "y": <y1>, "z": <z1> },
    "end": { "x": <x2>, "y": <y2>, "z": <z2> },
    "items": [
    {
         "id": "<アイテムID>",
         "amount": <数量>,
        "data": <データ値>,
         "name": "<アイテム名>",
        "lore": ["<説明文1>", "<説明文2>", ...],
         "lockMode": <ロックモード>
         "keepOnDeath":<死亡時保持>
         "enchantments": [
                {"type": "<エンチャントの種類>", "level": <レベル>},
            ...
        ],
        "weight": <重み>
     },
    ...
    ],
    "dropCount": <ドロップ数>
}
  • start: 範囲開始座標 (直方体の最小角)。
  • end: 範囲終了座標 (直方体の最大角)。
  • items: ドロップアイテムと重みの配列。
    • id: アイテムID。 必須
    • amount: 個数 (デフォルト: 1)。
    • data: データ値(デフォルトは0)
    • name: カスタム名。
    • lore: 説明文。
  • lockMode:コンテナスロットのロックモード。"slot"でスロット固定、"inventory"でインベントリ固定(省略可)。 * keepOnDeath:プレイヤー死亡時にアイテムを保持するかどうか(省略可)。 * enchantments: エンチャント配列。
    • type:エンチャントの種類(例: sharpness)。
    • level: エンチャントレベル(例: 5) * weight: 出現重み。
  • dropCount: ドロップ試行回数。

例: (0, 60, 0)~(20, 65, 20)にダイヤ(重み1)、鉄(重み5, 3個)、土(重み10)を5回ドロップ:

/scriptevent ws:randomDrop {"start":{"x":0,"y":60,"z":0},"end":{"x":20,"y":65,"z":20},"items":[{"id":"minecraft:diamond","weight":1,"amount":1,"name":"§bLucky Diamond","lore":["§7Found you!"]},{"id":"minecraft:iron_ingot","weight":5, "amount": 3},{"id":"minecraft:dirt","weight":10}],"dropCount": 5}

Clone this wiki locally