Version: 3.3.2
Last Updated: 2025-09-22
- 1. Command System Overview
- 2. Colon Commands (: prefix)
- 3. Slash Commands (/ prefix)
- 4. JSONサンプルの適用方法
- 5. DynamicProcComponent System
- 5.1 コンポーネントとオブジェクトの関係
- 5.2 Base Component (DynamicProcComponent)
- 5.3 UI_Button (DynamicButtonComponent)
- 5.4 CollisionTriggerBox (DynamicCollisionComponent)
- 5.5 UI_InputField (DynamicInputFieldComponent)
- 5.6 PickupTriggerBox (DynamicPickupComponent)
- 5.7 UI_Text (DynamicTextComponent)
- 5.8 UI_Toggle (DynamicToggleComponent)
- 6. Condition System (cond)
- 7. Special Variables and Replacements
- 8. Complete Usage Examples
- 8.1 Damage Trap
- 8.2 Healing Station
- 8.3 Interactive Door
- 8.4 Quest NPC
- 8.6 Dice-Based Action Sequence
- 8.5 Dynamic Status Display
- 8.7 Variable Damage Weapon
- 8.8 Healing Potion with Random Effect
- 8.9 Self-Targeting Commands
- 8.10 Character-Specific Status Update
- 8.11 Object Creation and Reference
- 8.12 User and Character Variables
- 8.13 Collision System Examples
- 9. Important Notes
1. Command System Overview
CatsUdon には2つのコマンドシステムがあります:
- Colonコマンド (
:
): プレイヤーステータス操作 - Slashコマンド (
/
): システム・オブジェクト操作
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タグの位置に生成
カスタムオブジェクトデータの取得方法:
- Object Control Gunに切り替え
- 以下のメニューを選択:
カスタムデータ管理 → オブジェクトセーブ
- セーブしたいDynamicObjectに向けて発射
- 表示されたデータ文字列をコピー
注意:
- カスタムオブジェクトデータは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デッキの下に挿入
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 オブジェクト生成手順
- Object Create Gunで対象のオブジェクトを選択して生成:
- UIオブジェクト(UI_Button、UI_Text、UI_InputField、UI_Toggle):
アイテム → ゲーム道具 → UI
- Triggerオブジェクト(CollisionTriggerBox、PickupTriggerBox):
アイテム → ゲーム道具 → 道具
- Object Control Gunに切り替え
- 以下のメニューでJSONを適用:
属性変更 → コマンド管理 → 文字列適応
- 生成したオブジェクトに対してJSON文字列を適応
4.2 重要な設定
Playerに反応するTriggerを使用する場合:
- 必ず以下の設定を行ってください:
属性変更 → 衝突有効
オブジェクトにタグを付ける方法:
多くのサンプルでtag:player
やtag:warrior
などのタグ指定を使用しています。これらのタグをオブジェクトに付ける手順:
- Object Control Gunに切り替え
- 以下のメニューを選択:
属性変更 → コマンド管理 → 文字列適応
- JSON文字列を入力:
{"tag":"player,PC"}
- タグを付けたいオブジェクトに撃って適応
タグの使用例:
{"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_Text | DynamicTextComponent | テキスト表示UI |
UI_InputField | DynamicInputFieldComponent | 入力フィールドUI |
UI_Button | DynamicButtonComponent | ボタンUI |
UI_Toggle | DynamicToggleComponent | トグルボタンUI |
CollisionTriggerBox | DynamicCollisionComponent | 衝突判定ボックス |
PickupTriggerBox | DynamicPickupComponent | 拾える物体 |
5. DynamicProcComponent System
5.1 コンポーネントとオブジェクトの関係
各オブジェクトは対応するコンポーネントを持ち、オブジェクト名によってコンポーネントの種類が決まります:
オブジェクト | コンポーネント | 説明 |
---|---|---|
UI_Text | DynamicTextComponent | テキスト表示UI。ステータス表示などに使用 |
UI_InputField | DynamicInputFieldComponent | 入力フィールドUI。ユーザーからのテキスト入力 |
UI_Button | DynamicButtonComponent | ボタンUI。クリックで発動 |
UI_Toggle | DynamicToggleComponent | トグルボタンUI。ON/OFF切り替え |
CollisionTriggerBox | DynamicCollisionComponent | 衝突判定ボックス。プレイヤーやオブジェクトが触れると発動 |
PickupTriggerBox | DynamicPickupComponent | 拾える物体。掴む/離すで発動 |
セットアップ手順:
- 対応するオブジェクトを作成
- コマンド設定で実行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
: UpperLeft1
: UpperCenter2
: UpperRight3
: MiddleLeft4
: MiddleCenter5
: MiddleRight6
: LowerLeft7
: LowerCenter8
: 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": "ステータスボード",
"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
– 指定キャラクターのステータス値を表示- 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 オブジェクトが複製されました"
]
}
}
オブジェクトがボックスに入ると、そのオブジェクトが複製される
複製後操作システム(複数コンポーネント使用)
{
"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 利用可能な変数
コマンド変数
{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_character}
– 衝突したプレイヤーのキャラクター名(name:
形式、キャラ名がない場合は{hit_player}
と同じ){hit_object}
– 衝突したオブジェクト(タグ形式で利用){hit_card}
– 衝突したカード(card:id
形式)
UI変数
{text}
– UIコンポーネントのテキスト値- DynamicInputFieldComponent: 入力フィールドの値
- DynamicTextComponent: テキストの値
- DynamicButtonComponent: ボタンテキストの値
9.3 コマンド実行の注意点
{dice_result}
変数を使用する場合は、必ず/wait diceroll
でダイスロール完了を待つ- 衝突変数は
DynamicCollisionComponent
でのみ利用可能 - オブジェクトID形式は内部的にサポートされていますが、基本的にはタグや衝突変数を使用してください
- 条件チェック(cond)は現在tagsのみサポート
- 複数コマンドは順次実行される
- エラーが発生すると後続コマンドは実行されない
enable: false
の場合、procは実行されない