プロジェクト間で同じスクリプト条件を何度も使い回していたので、ここで共有しようと思います。これらは「条件分岐」→「スクリプト」(最後のタブ)に記述します。特に注記がない限り、MVとMZの両方で動作します。私はRPG Maker MZの開発者/ユーザーなのでこちらに慣れ親しんでいますが、MZとMVではJavaScriptの多くの部分が同じです。
すべてのスクリプト条件は、以下の画像のようにコマンド「条件分岐…」の4ページ、スクリプト欄に入力します。
仲間とアクター
- 特定のアクターが現在のパーティーに所属しているか確認:
$gameParty.members().some(a => a.actorId() === 3)
- 特定のアクターが生きているか確認:
$gameActors.actor(3).isAlive()
- パーティー全体がHPの半分を超えているか確認(ボスゲートの前に有用):
$gameParty.members().every(a => a.hp >= a.mhp / 2)
- 現在のリーダー(パーティーメンバー0)を確認:
$gameParty.leader().actorId() === 1
- 特定のパーティーメンバーが生きているか確認(0はリーダー):
$gameParty.members()[1].isAlive()
装備とアイテム
- パーティーメンバーの誰かが特定の武器を装備しているか確認:
$gameParty.members().some(a => a.weapons().some(w => w && w.id === 5))
- パーティーが特定のアイテムをいくつ持っているか確認:
$gameParty.numItems($dataItems[7]) >= 3
- パーティーが少なくとも1つの重要アイテムを持っているか確認(「まだ準備ができていない」というゲートに便利):
$gameParty.items().some(item => item.itypeId === 2)
スイッチ、変数、時間
- 範囲内のすべてのスイッチがONか確認(「Xをすべて集める」クエストなどに有用):
[10, 11, 12, 13].every(id => $gameSwitches.value(id))
- 範囲内のいずれかのスイッチがONか確認:
[10, 11, 12, 13].some(id => $gameSwitches.value(id))
- 範囲内のスイッチがちょうど1つだけONか確認:
[10, 11, 12, 13].filter(id => $gameSwitches.value(id)).length === 1
- 範囲内のすべてのスイッチがOFFか確認:
!([10, 11, 12, 13].some(id => $gameSwitches.value(id)))
- 完全一致ではなく、変数の値が範囲内にあるか確認:
$gameVariables.value(5) >= 10 && $gameVariables.value(5) <= 20
- 総プレイ時間を秒単位で確認(MV/MZ):
$gameSystem.playtime() >= 3600 // 1時間以上
マップと位置
- プレイヤーが特定の方向を向いているか確認:
$gamePlayer.direction() === 8 // 2=下, 4=左, 6=右, 8=上
- プレイヤーとイベントの距離(タイル単位)を確認:
$gameMap.distance($gamePlayer.x, $gamePlayer.y, $gameMap.event(5).x, $gameMap.event(5).y) <= 2
- プレイヤーが現在特定のリージョンIDにいるか確認(MZ):
$gamePlayer.regionId() === 4
その他、何度もお世話になったもの
- 変数で現在が夜かどうか確認(昼夜切り替えプラグインと組み合わせて使用):
$gameVariables.value(1) >= 18 || $gameVariables.value(1) < 6 // 変数1は時刻を表し、18時〜6時の間か確認
- デフォルトの「所持金」条件ではなく比較演算子で所持金を確認(より大きな式の中で >= を使用可能):
$gameParty.gold() >= 500 && $gameSwitches.value(20)
そして…
// スラッシュ2つ以降 の部分はコメントであり、JavaScriptの条件式やJavaScriptを使用する場所では無視されます。
私の具体的な例に縛られる必要はありません。それらを組み合わせることもできます。例えば、プレイヤーの所持金がプレイ時間(秒単位)より多いかどうかを確認したい場合は、以下のようにチェックします:
$gameParty.gold() > $gameSystem.playtime() // または任意の「無意味な」チェック
誰かの時間節約になれば幸いです。もしあなたのお気に入りの条件式があれば、下に投稿してください。良いアイデアはいつでもありがたく頂戴します。
