CatsUdon Command機能の使い方

CatsUdon Complete Command Reference

Version: 3.3.4
Last Updated: 2025-10-02

  1. 更新履歴
    1. Version 3.3.4 (2025-10-02)
    2. Version 3.3.3 (2025-09-23)
  2. 1. Command System Overview
    1. 1.1 Chat System Features
  3. 2. Colon Commands (: prefix)
    1. 構文
    2. 対象指定 (target_specifier)
    3. 使用例
  4. 3. Slash Commands (/ prefix)
    1. 3.1 System Commands
    2. 3.2 Video Commands
    3. 3.3 Teleport Commands
    4. 3.4 Object Management Commands
    5. 3.5 Object Transform Commands
    6. 3.6 Tag Management Commands
    7. 3.7 Card System Commands
  5. 4. JSONサンプルの適用方法
    1. 4.1 オブジェクト生成手順
    2. 4.2 重要な設定
    3. 4.3 オブジェクト対応表
  6. 5. DynamicProcComponent System
    1. 5.1 コンポーネントとオブジェクトの関係
    2. 5.2 Base Component (DynamicProcComponent)
    3. 5.3 UI_Button (DynamicButtonComponent)
    4. 5.4 CollisionTriggerBox (DynamicCollisionComponent)
    5. 5.5 UI_InputField (DynamicInputFieldComponent)
    6. 5.6 PickupTriggerBox (DynamicPickupComponent)
    7. 5.7 UI_Text (DynamicTextComponent)
    8. 5.8 UI_Toggle (DynamicToggleComponent)
  7. 6. Condition System (cond)
    1. 6.1 タグ条件
  8. 7. Special Variables and Replacements
    1. 7.1 InputField Variables
    2. 7.2 Dice Result Variables
    3. 7.3 Character Variables
    4. 7.4 Object Reference Variables
    5. 7.5 Status Display
  9. 8. Complete Usage Examples
    1. 8.1 Damage Trap
    2. 8.2 Healing Station
    3. 8.3 Interactive Door
    4. 8.4 Quest NPC
    5. 8.6 Dice-Based Action Sequence
    6. 8.5 Dynamic Status Display
    7. 8.7 Variable Damage Weapon
    8. 8.8 Healing Potion with Random Effect
    9. 8.9 Self-Targeting Commands
    10. 8.10 Character-Specific Status Update
    11. 8.11 Object Creation and Reference
    12. 8.12 User and Character Variables
    13. 8.13 Collision System Examples
  10. 9. Important Notes
    1. 9.1 権限システム
    2. 9.2 DynamicProcComponent専用コマンド
    3. 9.3 利用可能な変数
    4. 9.4 コマンド実行の注意点

更新履歴

Version 3.3.4 (2025-10-02)

  • 新カードシステムコマンド追加: /shuffle deck:id – デッキをシャッフル
  • デッキ枚数表示機能追加: =deck:id – DynamicTextComponent/DynamicInputFieldComponentでデッキの現在枚数を表示

Version 3.3.3 (2025-09-23)

  • チャットシステム改善: コマンド履歴機能、キーボードショートカット(/キー、上矢印キー)を追加
  • 新変数追加: {hit_tag} – 衝突したオブジェクト/プレイヤーのタグを取得
  • タグコマンド修正: /tag-add/tag-del/tag-clearの動作を改善

1. Command System Overview

CatsUdon には2つのコマンドシステムがあります:

  • Colonコマンド (:): プレイヤーステータス操作
  • Slashコマンド (/): システム・オブジェクト操作

1.1 Chat System Features

キーボードショートカット

  • T キー: チャット入力フィールドをアクティベート(テキストをクリア)
  • / キー: チャット入力フィールドをアクティベートし、”/” を自動入力
  • 上矢印キー: 直前に入力したコマンドを再入力(コマンド履歴)

コマンド履歴

  • 最後に入力したコマンドが自動的に保存されます
  • 上矢印キーで簡単に再実行可能
  • コマンドに限らず、すべての入力が履歴として保存されます

2. Colon Commands (: prefix)

構文

:status_name=value [target_specifier]  # 数値または文字列の設定
:status_name+value [target_specifier]  # 数値の加算のみ
:status_name-value [target_specifier]  # 数値の減算のみ

注意: +-演算子は数値ステータスのみ対応。文字列パラメータには=のみ使用可能。

対象指定 (target_specifier)

  • tag:tagname – 指定タグを持つ全プレイヤー
  • name:charactername – 特定のキャラクター名
  • user:displayname – プレイヤーのディスプレイネームで指定
  • 指定なし – 自分自身

使用例

:HP=100                   # 自分のHPを100に設定
:HP+20 tag:warrior        # warriorタグを持つ全員のHPに20加算
:MP-10 name:Alice         # AliceのMPから10減算
:strength=15 tag:party    # partyタグの全員のstrengthを15に設定
:HP+10 user:Player123     # Player123のHPに10加算

3. Slash Commands (/ prefix)

3.1 System Commands

wait

構文: /wait seconds または /wait diceroll
説明: 指定秒数待機、またはダイスロール完了まで待機してから次のコマンドを実行

/wait 3.5       # 3.5秒待機
/wait diceroll  # ダイスロール完了まで待機

roll

構文: /roll diceString または /roll "system_name" diceString
説明: ダイスロールを実行。システム名を指定して特定のダイスシステムを使用可能

/roll 2d6+3                    # 2つの6面ダイスに3を加算
/roll 1d20                     # 20面ダイス1つ
/roll "CoC" 1d100              # Call of Cthulhuシステムで1d100をロール
/roll "DnD5e" 1d20+5           # D&D 5eシステムで1d20+5をロール

message

構文: /message 内容
説明: 指定した内容をメッセージとして表示

/message クエストを開始します
/message 戦闘が始まりました!

load

構文: /load data
説明: ワールドデータを読み込み
権限: GM専用

/load map_dungeon_1    # ダンジョンマップをロード

3.2 Video Commands

video-play

構文: /video-play index url

/video-play 0 https://example.com/video.mp4

video-stop

構文: /video-stop index

/video-stop 0    # インデックス0のビデオを停止

video-pause

構文: /video-pause index

/video-pause 0   # インデックス0のビデオを一時停止

3.3 Teleport Commands

teleport

構文: /teleport target destination [rotation]
説明: プレイヤーやオブジェクトを移動
権限: GM専用

対象指定:

  • tag:tagname – タグを持つプレイヤー
  • name:charactername – キャラクター名
  • user:displayname – VRChatユーザー名

移動先指定:

  • tag:tagname – タグを持つプレイヤーまたはオブジェクトの位置
  • {hit_object} – 衝突したオブジェクトの位置
  • name:charactername – 指定キャラクターの位置
  • user:displayname – 指定VRChatユーザーの位置
  • x,y,z – 座標指定
  • x,y,z rotX,rotY,rotZ – 座標と回転指定
/teleport tag:player1 tag:spawn_point        # player1をspawn_pointに移動
/teleport name:Alice 0,10,0                  # Aliceを座標(0,10,0)に移動
/teleport user:PlayerName 5,0,5 0,90,0      # PlayerNameを座標(5,0,5)、回転(0,90,0)に移動
/teleport tag:player1 name:Bob              # player1をBobの位置に移動
/teleport name:Alice user:GameMaster        # AliceをGameMasterユーザーの位置に移動
/teleport name:Alice {hit_object}           # Aliceを衝突したオブジェクトの位置に移動
/teleport {my_char} name:Healer             # 自分のキャラクターをHealerの位置に移動

3.4 Object Management Commands

create

構文:

  • /create objectData – カスタムオブジェクトをデフォルト位置に生成
  • /create tag:tagname objectData – 指定タグの位置にカスタムオブジェクトを生成

推奨される使用方法:
SaveLoadシステムで保存したカスタムオブジェクトデータ文字列を使用して生成
注意: データ文字列にスペースが含まれる場合は使用できません(ダブルクォートで囲んでも分割されます)

使用例:

# カスタムオブジェクトデータで生成(推奨)
/create SavedObjectDataString                    # デフォルト位置に生成
/create tag:spawnpoint SavedObjectDataString     # spawnpointタグの位置に生成
/create tag:table SavedObjectDataString          # tableタグの位置に生成

# 実際のデータ文字列例
/create 4.cg<|0.75Z^|a.90D❶0|25.=/|0❶1.cTR|1|1.cTR❶0❶d❶r⑧⑧❶0❶GROUP    # グループオブジェクトを生成
/create tag:spawn 4.cg<|0.75Z^|a.90D❶0|25.=/|0❶1.cTR|1|1.cTR❶0❶d❶r⑧⑧❶0❶GROUP    # spawnタグの位置に生成

カスタムオブジェクトデータの取得方法:

  1. Object Control Gunに切り替え
  2. 以下のメニューを選択:
   カスタムデータ管理 → オブジェクトセーブ
  1. セーブしたいDynamicObjectに向けて発射
  2. 表示されたデータ文字列をコピー

注意:

  • カスタムオブジェクトデータはSaveLoadシステムで取得できます
  • オブジェクト作成後は{last_created}変数で参照可能
  • オブジェクト番号による生成も可能ですが、番号の確認方法がないため非推奨

delete

構文: /delete target

対象指定:

  • tag:tagname – タグ名(複数削除可能)
  • {hit_object} – 衝突したオブジェクト
/delete tag:enemy        # enemyタグの全オブジェクトを削除
/delete {hit_object}     # 衝突したオブジェクトを削除

注意: 内部的にはオブジェクトID形式もサポートしていますが、基本的には上記の方法を使用してください。

duplicate

構文: /duplicate target
説明: DynamicObjectを複製

対象指定:

  • tag:tagname – タグ名(複数複製可能)
  • {this} – 自分自身(DynamicProcComponentで使用)
/duplicate tag:item    # itemタグの全オブジェクトを複製
/duplicate {this}      # 自分自身を複製

注意: 内部的にはオブジェクトID形式もサポートしていますが、基本的には上記の方法を使用してください。

fixed

構文: /fixed target
説明: DynamicObjectをFixedObjectに変換
権限: GM専用

/fixed tag:furniture_01 # furniture_01タグをFixedObjectに変換
/fixed tag:furniture    # furnitureタグの全てをFixedObjectに変換

unfixed

構文: /unfixed tag:tagname または /unfixed {hit_object}
説明: FixedObjectをDynamicObjectに変換
権限: GM専用

/unfixed tag:furniture  # furnitureタグの全てをDynamicObjectに変換
/unfixed {hit_object}   # 衝突したFixedObjectをDynamicObjectに変換

3.5 Object Transform Commands

move

構文: /move source_object target [duration]

オブジェクト指定:

  • tag:tagname – タグ名

移動先指定:

  • tag:tagname – タグを持つオブジェクト/プレイヤーの位置
  • name:charactername – 指定キャラクター名のプレイヤー位置
  • user:displayname – 指定ユーザー名のプレイヤー位置
  • x,y,z – 座標指定
/move tag:ball tag:target         # ballタグをtargetタグの位置に瞬間移動
/move tag:ball tag:target 3.0     # ballタグをtargetタグの位置に3秒かけて移動
/move tag:ball 0,10,0 2.0         # ballタグを座標(0,10,0)に2秒かけて移動
/move tag:ball tag:GM             # ballタグをGMタグを持つプレイヤーの位置に移動
/move tag:ball name:アディン        # ballタグをアディンの位置に移動
/move tag:ball user:PlayerName    # ballタグをPlayerNameの位置に移動

rotate

構文: /rotate source_object target [duration]

/rotate tag:door_01 0,90,0 2.0   # door_01タグを回転(0,90,0)に2秒かけて回転
/rotate tag:door tag:open_pos    # doorタグをopen_posタグの回転に合わせる

scale

構文: /scale source_object target [duration]

/scale tag:item_01 2.0,2.0,2.0 1.5 # item_01タグを2倍のサイズに1.5秒かけて拡大
/scale tag:item tag:large_size   # itemタグをlarge_sizeタグのサイズに変更

stop

構文: /stop target または /stop all

/stop tag:moving_obj # moving_objタグの移動/回転/スケール処理を停止
/stop all       # 全ての移動/回転/スケール処理を停止

3.6 Tag Management Commands

tag-add

構文: /tag-add target tag_names
説明: 対象にタグを追加。重複は自動的に除外されます。

対象指定:

  • tag:tagname – 指定タグを持つプレイヤーとDynamicObjectの両方
  • name:charactername – 指定キャラクター名のプレイヤーのみ
  • user:displayname – 指定ディスプレイネームのプレイヤーのみ
/tag-add tag:player hero warrior    # playerタグを持つ全対象にhero,warriorタグを追加
/tag-add name:Alice mage healer     # Aliceにmage,healerタグを追加
/tag-add {last_created} effect      # 最後に作成したオブジェクトにeffectタグを追加

tag-del

構文: /tag-del target tag_names
説明: 対象から指定したタグを削除。

/tag-del tag:enemy weak             # enemyタグを持つ全対象からweakタグを削除
/tag-del name:Bob temporary         # Bobからtemporaryタグを削除

tag-clear

構文: /tag-clear target
説明: 対象の全タグをクリア。

/tag-clear tag:temporary            # temporaryタグを持つ全対象の全タグをクリア
/tag-clear name:TestUser            # TestUserの全タグをクリア

3.7 Card System Commands

draw

構文: /draw deck:id [target] [position]

ターゲット指定:

  • deck:id – 別のデッキ
  • tag:tagname – タグの位置
  • {hit_object} – 衝突したオブジェクトの位置
/draw deck:main                        # mainデッキからカードドロー
/draw deck:main deck:hand              # mainデッキから手札デッキに移動
/draw deck:main deck:hand top          # mainデッキから手札デッキの上に移動
/draw deck:main deck:hand bottom       # mainデッキから手札デッキの下に移動
/draw deck:main tag:table              # mainデッキからtableタグの位置に配置
/draw deck:main {hit_object}           # mainデッキから衝突したオブジェクトの位置に配置

insert

構文: /insert card:id deck:id [position]

/insert card:abc123 deck:main          # カードabc123をmainデッキの上に挿入
/insert card:xyz789 deck:hand bottom   # カードxyz789をhandデッキの下に挿入

shuffle

構文: /shuffle deck:id

/shuffle deck:main                     # mainデッキをシャッフル
/shuffle deck:hand                     # handデッキをシャッフル

showid

構文: /showid card [index] または /showid deck [index]

/showid card           # 最も近いカードのIDを表示
/showid card 5         # インデックス5のカードIDを表示
/showid deck           # 最も近いデッキのIDを表示
/showid deck 2         # インデックス2のデッキIDを表示

4. JSONサンプルの適用方法

4.1 オブジェクト生成手順

  1. Object Create Gunで対象のオブジェクトを選択して生成:
  • UIオブジェクト(UI_Button、UI_Text、UI_InputField、UI_Toggle):
    アイテム → ゲーム道具 → UI
  • Triggerオブジェクト(CollisionTriggerBox、PickupTriggerBox):
    アイテム → ゲーム道具 → 道具
  1. Object Control Gunに切り替え
  2. 以下のメニューでJSONを適用:
   属性変更 → コマンド管理 → 文字列適応
  1. 生成したオブジェクトに対してJSON文字列を適応

4.2 重要な設定

Playerに反応するTriggerを使用する場合:

  • 必ず以下の設定を行ってください:
  属性変更 → 衝突有効

オブジェクトにタグを付ける方法:

多くのサンプルでtag:playertag:warriorなどのタグ指定を使用しています。これらのタグをオブジェクトに付ける手順:

  1. Object Control Gunに切り替え
  2. 以下のメニューを選択:
   属性変更 → コマンド管理 → 文字列適応
  1. JSON文字列を入力:
   {"tag":"player,PC"}
  1. タグを付けたいオブジェクトに撃って適応

タグの使用例:

  • {"tag":"player"} – プレイヤー識別用
  • {"tag":"warrior,PC"} – 戦士クラスのPC(複数タグをカンマ区切り)
  • {"tag":"enemy,orc"} – オーク族の敵
  • {"tag":"item,weapon,sword"} – 剣系の武器アイテム

重要なポイント:

  • 複数タグは1つの文字列内でカンマ区切り
  • タグ名にスペースは使用不可
  • コマンドではtag:タグ名の形式で参照
  • 条件の"tag":"warrior,mage"は「warriorまたはmageタグを持つ」という意味

4.3 オブジェクト対応表

各Trigger Objectタイプに対応するコンポーネント:

生成するオブジェクトコンポーネント説明
UI_TextDynamicTextComponentテキスト表示UI
UI_InputFieldDynamicInputFieldComponent入力フィールドUI
UI_ButtonDynamicButtonComponentボタンUI
UI_ToggleDynamicToggleComponentトグルボタンUI
CollisionTriggerBoxDynamicCollisionComponent衝突判定ボックス
PickupTriggerBoxDynamicPickupComponent拾える物体

5. DynamicProcComponent System

5.1 コンポーネントとオブジェクトの関係

各オブジェクトは対応するコンポーネントを持ち、オブジェクト名によってコンポーネントの種類が決まります:

オブジェクトコンポーネント説明
UI_TextDynamicTextComponentテキスト表示UI。ステータス表示などに使用
UI_InputFieldDynamicInputFieldComponent入力フィールドUI。ユーザーからのテキスト入力
UI_ButtonDynamicButtonComponentボタンUI。クリックで発動
UI_ToggleDynamicToggleComponentトグルボタンUI。ON/OFF切り替え
CollisionTriggerBoxDynamicCollisionComponent衝突判定ボックス。プレイヤーやオブジェクトが触れると発動
PickupTriggerBoxDynamicPickupComponent拾える物体。掴む/離すで発動

セットアップ手順:

  1. 対応するオブジェクトを作成
  2. コマンド設定で実行JSONデータを設定

5.2 Base Component (DynamicProcComponent)

DynamicProcComponentとは:
全てのDynamicコンポーネント(Button、Collision、Pickup等)の基礎となる共通システムです。
これにより、全てのコンポーネントで以下の共通機能が使用できます:

  • proc: 実行するコマンドの定義
  • enable: コンポーネントの有効/無効切り替え
  • cond: 条件チェック(タグによるフィルタリング)
  • tag: オブジェクト自体にタグを設定

基本JSON構造:

{
  "enable": true,
  "tag": "interactive,quest_item",
  "proc": [
    "/roll 2d6",
    ":HP+10",
    "/wait 2"
  ]
}

単一コマンドの場合:

{
  "enable": true,
  "tag": "healing_station",
  "proc": "/roll 1d20"
}

5.3 UI_Button (DynamicButtonComponent)

完全なJSON例:

{
  "enable": true,
  "text": "Attack Button",
  "size": 16,
  "width": 200,
  "height": 60,
  "color": "#FFFFFF",
  "input-color": "#FF4444",
  "alignment": 4,
  "proc": [
    "/roll 1d20+5",
    ":HP-10",
    "/create tag:target 4.cg<|0.75Z^|a.90D❶0|25.=/|0❶1.cTR|1|1.cTR❶0❶d❶r⑧⑧❶0❶GROUP",
    "/tag-add {last_created} attack_marker"
  ],
  "cond": {
    "tag": "warrior,mage"
  }
}

最小構成例:

{
  "text": "Simple Button",
  "proc": "/roll 2d6"
}

TextAnchor値:

  • 0: UpperLeft
  • 1: UpperCenter
  • 2: UpperRight
  • 3: MiddleLeft
  • 4: MiddleCenter
  • 5: MiddleRight
  • 6: LowerLeft
  • 7: LowerCenter
  • 8: LowerRight

5.4 CollisionTriggerBox (DynamicCollisionComponent)

完全なJSON例:

{
  "enable": true,
  "enter": {
    "cond": {
      "tag": "player,npc"
    },
    "proc": [
      "/roll 1d6",
      ":HP-5"
    ]
  },
  "exit": {
    "proc": [
      "/create tag:exit_point 4.cg<|0.75Z^|a.90D❶0|25.=/|0❶1.cTR|1|1.cTR❶0❶d❶r⑧⑧❶0❶GROUP",
      "/tag-add {last_created} exit_marker",
      ":MP+2"
    ]
  }
}

プレイヤー専用トリガー:

{
  "enter": {
    "cond": {
      "tag": "hero"
    },
    "proc": [
      ":XP+100",
      "/load next_area"
    ]
  }
}

5.5 UI_InputField (DynamicInputFieldComponent)

完全なJSON例:

{
  "enable": true,
  "text": "Enter damage amount",
  "size": 14,
  "width": 300,
  "height": 40,
  "color": "#000000",
  "input-color": "#FFFFFF",
  "alignment": 4,
  "line-type": 0,
  "proc": [
    ":HP-{text}",
    "/roll {text}d6"
  ]
}

ステータス表示例:

{
  "text": "=HP",
  "size": 12,
  "proc": [
    ":HP+{text}"
  ]
}

LineType値:

  • 0: SingleLine(単一行)
  • 1: MultiLineSubmit(複数行、Enterで送信)
  • 2: MultiLineNewline(複数行、Enterで改行)

5.6 PickupTriggerBox (DynamicPickupComponent)

完全なJSON例:

{
  "enable": true,
  "pickup": {
    "cond": {
      "tag": "player"
    },
    "proc": [
      "/roll 1d20",
      ":MP-5",
      "/create tag:pickup_effect 4.cg<|0.75Z^|a.90D❶0|25.=/|0❶1.cTR|1|1.cTR❶0❶d❶r⑧⑧❶0❶GROUP",
      "/tag-add {last_created} pickup_marker active"
    ]
  },
  "drop": {
    "proc": [
      ":MP+5",
      "/delete tag:pickup_effect"
    ]
  },
  "use-up": {
    "proc": [
      ":MP-10",
      "/create 4.cg<|0.75Z^|a.90D❶0|25.=/|0❶1.cTR|1|1.cTR❶0❶d❶r⑧⑧❶0❶GROUP",
      "/tag-add {last_created} use_effect"
    ]
  },
  "use-down": {
    "proc": [
      ":casting=1"
    ]
  }
}

アイテム例:

{
  "pickup": {
    "proc": [
      ":HP+20"
    ]
  }
}

5.7 UI_Text (DynamicTextComponent)

完全なJSON例:

{
  "enable": true,
  "text": "=HP",
  "size": 24,
  "width": 200,
  "height": 50,
  "color": "#FFFFFF",
  "alignment": 4
}

注意: DynamicTextComponentは技術的にはprocフィールドをサポートしていますが、トリガーイベントがないため実際の使用は想定されていません。

ステータス表示例:

{
  "text": "=HP tag:warrior",
  "size": 18,
  "color": "#00FF00"
}
{
  "text": "=MP name:Alice",
  "size": 16,
  "color": "#0080FF"
}

デッキ枚数表示例:

{
  "text": "=deck:main",
  "size": 20,
  "color": "#FFFF00"
}

通常テキスト例:

{
  "text": "ステータスボード",
  "size": 20,
  "alignment": 1
}

5.8 UI_Toggle (DynamicToggleComponent)

完全なJSON例:

{
  "enable": true,
  "toggle": true,
  "width": 200,
  "height": 30,
  "input-color": "#FF0000",
  "proc": [
    "/message トグル状態が変更されました",
    ":pvp_mode={text}"
  ]
}

トグル状態の活用:

  • {text} 変数でトグルのON/OFF状態(”True”/”False”)を取得
  • ゲーム設定の切り替えやフラグ管理に使用

6. Condition System (cond)

発動条件設定について:
condフィールドを使用することで、特定の条件を満たす対象のみにコンポーネントの処理を実行させることができます。これにより、プレイヤーのロールやステータスに応じた制限を設けることが可能です。

適用対象:

  • DynamicButtonComponent: ボタンを押したプレイヤーのタグをチェック
  • DynamicCollisionComponent: 衝突したオブジェクト(プレイヤーまたはオブジェクト)のタグをチェック
  • DynamicPickupComponent: オブジェクトを掴んだプレイヤーのタグをチェック

6.1 タグ条件

単一タグ:

{
  "cond": {
    "tag": "warrior"
  }
}

複数タグ(OR条件):

{
  "cond": {
    "tag": "warrior,mage,rogue"
  }
}

7. Special Variables and Replacements

7.1 InputField Variables

  • {text} – 入力された文字列に置換

7.2 Dice Result Variables

  • {dice_result} – 最後に実行されたダイスロールの結果(allDiceSum)に置換

7.3 Character Variables

  • {my_char} – 自分のキャラクター名をname:charactername形式に置換(各種コマンドでの対象指定用)
  • {user_name} – 自分のディスプレイネームに置換
  • {character_name} – 自分のキャラクター名に置換(キャラクター名が設定されている場合のみ)

7.4 Object Reference Variables

  • {last_duplicate} – 最後に複製されたオブジェクトを参照
  • {last_created} – 最後に作成されたオブジェクトを参照

7.5 Status Display

  • =status_name – 自分のステータス値を表示
  • =status_name tag:target – 指定タグを持つプレイヤーのステータス値を表示
  • =status_name name:character – 指定キャラクターのステータス値を表示
  • =deck:id – 指定デッキの現在の枚数を表示
  • DynamicInputFieldComponent、DynamicTextComponentで利用可能

8. Complete Usage Examples

8.1 Damage Trap

DynamicCollisionComponentを使用したダメージトラップ。プレイヤーが踏むと2d6のダメージを与え、エフェクトオブジェクトを生成します。

{
  "enter": {
    "cond": {
      "tag": "player"
    },
    "proc": [
      "/roll 2d6",
      "/wait diceroll",
      ":HP-{dice_result}",
      "/create 4.cg<|0.75Z^|a.90D❶0|25.=/|0❶1.cTR|1|1.cTR❶0❶d❶r⑧⑧❶0❶GROUP",
      "/tag-add {last_created} damage_effect trap_effect"
    ]
  }
}

8.2 Healing Station

{
  "text": "Heal (+20 HP)",
  "color": "#00FF00",
  "proc": [
    ":HP+20",
    "/wait 5",
    "/enable false"
  ],
  "cond": {
    "tag": "player"
  }
}

8.3 Interactive Door

{
  "text": "Open Door",
  "proc": [
    "/rotate tag:door 0,90,0 2.0",
    "/wait 5",
    "/rotate tag:door 0,0,0 2.0"
  ]
}

8.4 Quest NPC

{
  "text": "Talk to Guard",
  "proc": [
    "/roll 1d20",
    "/teleport tag:player tag:quest_area"
  ],
  "cond": {
    "tag": "adventurer"
  }
}

8.6 Dice-Based Action Sequence

{
  "text": "Attack with Dice",
  "proc": [
    "/roll 2d6",
    "/wait diceroll",
    ":HP-{dice_result}",
    "/create tag:target 4.cg<|0.75Z^|a.90D❶0|25.=/|0❶1.cTR|1|1.cTR❶0❶d❶r⑧⑧❶0❶GROUP",
    "/tag-add {last_created} attack_marker"
  ]
}

8.5 Dynamic Status Display

{
  "text": "=HP",
  "size": 16,
  "proc": [
    ":HP+{text}"
  ]
}

8.7 Variable Damage Weapon

{
  "text": "Magic Sword",
  "proc": [
    "/roll 1d8+2",
    "/wait diceroll",
    ":HP-{dice_result} tag:enemy",
    ":MP-5"
  ],
  "cond": {
    "tag": "warrior,paladin"
  }
}

8.8 Healing Potion with Random Effect

{
  "pickup": {
    "proc": [
      "/roll 3d4+4",
      "/wait diceroll",
      ":HP+{dice_result}"
    ]
  }
}

8.9 Self-Targeting Commands

{
  "text": "Heal Self",
  "proc": [
    ":HP+20 {my_char}",
    "/teleport {my_char} tag:healing_area"
  ]
}

8.10 Character-Specific Status Update

{
  "text": "Level Up",
  "proc": [
    ":level+1 {my_char}",
    ":XP=0 {my_char}",
    "/message {my_char}がレベルアップしました!"
  ]
}

8.11 Object Creation and Reference

DynamicButtonComponentを使用したオブジェクト作成と操作。オブジェクトを作成した後、{last_created}変数を使って移動・回転させます。

{
  "text": "Summon and Move",
  "proc": [
    "/create 4.cg<|0.75Z^|a.90D❶0|25.=/|0❶1.cTR|1|1.cTR❶0❶d❶r⑧⑧❶0❶GROUP",
    "/tag-add {last_created} summoned magical",
    "/move {last_created} 5,0,0",
    "/rotate {last_created} 0,90,0",
    "/message {user_name}がオブジェクトを召喚しました"
  ]
}

8.12 User and Character Variables

{
  "text": "Identify",
  "proc": [
    "/message ユーザー名: {user_name}",
    "/message キャラクター名: {character_name}",
    ":HP+10 {my_char}",
    "/message {character_name}の体力が回復しました"
  ]
}

8.13 Collision System Examples

アイテム取得システム(DynamicCollisionComponent使用)

{
  "tag": "item1",
  "enter": {
    "cond": {"tag": "player"},
    "proc": [
      "/message ビデオポーションを発見しました",
      ":HP+20",
      "/delete {this}"
    ]
  }
}

アイテム自身にtag: item1を設定し、プレイヤーが触れると自分のHPを回復して、自分自身を削除

別の方法(タグ削除)

{
  "tag": "item1",
  "enter": {
    "cond": {"tag": "player"},
    "proc": [
      "/message ビデオポーションを発見しました",
      ":HP+20",
      "/delete {this_tag}"
    ]
  }
}

{this_tag}を使ってtag:item1形式で自分自身を削除

敵との戦闘システム(DynamicCollisionComponent使用)

{
  "enter": {
    "cond": {"tag": "player"},
    "proc": [
      "/message {my_char}は敵に攻撃されました!",
      ":HP-10"
    ]
  }
}

敵オブジェクトに設定し、プレイヤーが触れると自分のHPが減少

トラップシステム(DynamicCollisionComponent使用)

{
  "enter": {
    "cond": {"tag": "player"},
    "proc": [
      "/message 罠を発見!ダメージを受けました",
      ":HP-5",
      "/teleport {my_char} tag:safe_zone"
    ]
  }
}

罠オブジェクトに設定し、プレイヤーが触れるとダメージを受けて安全地帯に移動

より安全なトラップシステム(使い捨て)

{
  "tag": "trap",
  "enter": {
    "cond": {"tag": "player"},
    "proc": [
      "/message 罠を発見!ダメージを受けました",
      ":HP-5",
      "/teleport {my_char} tag:safe_zone",
      "/delete {this}"
    ]
  }
}

一度発動すると自分自身を削除する使い捨てトラップ

自己削除システム(DynamicButtonComponent使用)

{
  "text": "Delete This Object",
  "proc": [
    "/message オブジェクトを削除します",
    "/delete {this}"
  ]
}

ボタンを押すと自分自身を削除

自己変換システム(DynamicButtonComponent使用)

{
  "text": "Convert to Fixed",
  "proc": [
    "/fixed {this}",
    "/message オブジェクトをFixedObjectに変換しました"
  ]
}

ボタンを押すと自分自身をFixedObjectに変換

自己複製システム(DynamicButtonComponent使用)

{
  "text": "Duplicate This",
  "proc": [
    "/duplicate {this}",
    "/message オブジェクトを複製しました"
  ]
}

ボタンを押すと自分自身を複製

複製ボックス(DynamicCollisionComponent使用)

{
  "enter": {
      "proc": [
        "/duplicate {hit_object}",
        "/message オブジェクトが複製されました"
      ]
  }
}

オブジェクトがボックスに入ると、そのオブジェクトが複製される

タグベース処理システム(DynamicCollisionComponent使用)

{
  "enter": {
    "proc": [
      "/message {hit_tag}のオブジェクトが接触しました",
      "/tag-add {hit_tag} processed"
    ]
  }
}

衝突したオブジェクトのタグを取得して、そのタグに基づいて処理を実行

プレイヤータグ対応システム(DynamicCollisionComponent使用)

{
  "enter": {
    "cond": {"tag": "player"},
    "proc": [
      "/message {hit_player}({hit_tag})が入場しました",
      ":XP+10 {hit_player}"
    ]
  }
}

プレイヤーが衝突した場合、そのプレイヤーのタグも表示

複製後操作システム(複数コンポーネント使用)

{
  "text": "Duplicate and Move",
  "proc": [
    "/duplicate {this}",
    "/move {last_duplicate} 0,5,0 2.0"
  ]
}

自分自身を複製してから、複製されたオブジェクトを上に移動


9. Important Notes

9.1 権限システム

  • GM専用コマンド: teleport, fixed, unfixed, loadの4つ
  • 権限チェックの適用範囲:
  • チャットシステムから実行時: 権限チェックあり(ProcessCommandWithPermissionCheck使用)
  • チャットパレットから実行時: 権限チェックあり(ProcessCommandWithPermissionCheck使用)
  • DynamicProcComponentから実行時: 権限チェックなし(PurseCatsUdonCommand直接使用)
  • DynamicProcComponent経由なら、GMコマンドも誰でも実行可能(ワールド制作者が意図的に配置したものだから)

9.2 DynamicProcComponent専用コマンド

DynamicProcComponentのproc内でのみ使用可能な特殊コマンド:

/enable

構文: /enable true または /enable false
説明: そのDynamicProcComponentの実行を有効/無効化
注意: このコマンドは通常のチャットやスラッシュコマンドでは使用できません

{
  "proc": [
    "/enable false"
  ]
}

使用例:一度だけ実行したいトリガーを作る場合

{
  "enter": {
    "proc": [
      "/message 宝箱を開けました!",
      "/enable false"
    ]
  }
}

9.3 利用可能な変数

コマンド変数

  • {dice_result} – 最後のダイスロール結果(/wait diceroll後に利用可能)
  • {my_char} – 自分のキャラクター名(コロンコマンドでname:形式に変換)
  • {user_name} – 自分のディスプレイネーム
  • {character_name} – 自分のキャラクター名(キャラクター名が設定されている場合のみ)
  • {last_duplicate} – 最後に複製されたオブジェクト
  • {last_created} – 最後に作成されたオブジェクト

自己参照変数(DynamicProcComponentのみ)

  • {this} – オブジェクト自身(タグ形式で利用)
  • {this_tag} – オブジェクト自身のタグ(tag:形式)

衝突変数(DynamicCollisionComponentのみ)

  • {hit_player} – 衝突したプレイヤー(user:形式)
  • {hit_tag} – 衝突したオブジェクト/プレイヤーのタグ(tag:形式)
  • {hit_character} – 衝突したプレイヤーのキャラクター名(name:形式、キャラ名がない場合は{hit_player}と同じ)
  • {hit_object} – 衝突したオブジェクト(タグ形式で利用)
  • {hit_card} – 衝突したカード(card:id形式)

UI変数

  • {text} – UIコンポーネントのテキスト値
  • DynamicInputFieldComponent: 入力フィールドの値
  • DynamicTextComponent: テキストの値
  • DynamicButtonComponent: ボタンテキストの値

9.4 コマンド実行の注意点

  • {dice_result}変数を使用する場合は、必ず/wait dicerollでダイスロール完了を待つ
  • 衝突変数はDynamicCollisionComponentでのみ利用可能
  • オブジェクトID形式は内部的にサポートされていますが、基本的にはタグや衝突変数を使用してください
  • 条件チェック(cond)は現在tagsのみサポート
  • 複数コマンドは順次実行される
  • エラーが発生すると後続コマンドは実行されない
  • enable: falseの場合、procは実行されない
タイトルとURLをコピーしました