累計閲覧数

RPGツクール2000/2003でメッセージスキップ処理

1:概要

メッセージスキップ処理とはADVやNVLなどのジャンルでよく見かける、
特定のキーを押したり、モードを切り替える事で文章を高速スキップする機能です。
文章量の多いジャンルを作成する時にあると、とても便利な機能です。

RPGツクールにおいては、RPGツクールXP以降ではスクリプト素材として
メッセージスキップ処理を実現したものがありますが、
これら処理を擬似的にRPGツクール2000で実装する為のTipsです。

2:文章の表示と制御文字

RPGツクール2000/2003において、[文章の表示]の際に主人公の名前を表示するには
\n[xx](xxの部分は対応する数字)と記述する。
例えば、主人公1番の名前が「アレックス」ならば以下の様に表示される。

\n[1]は死んでしまった!

Fig.1-1 入力した文章

アレックスは死んでしまった!

Fig.1-2 実際に表示される文章

さて、この名前の表示、主人公の名前に制御文字を含めると、[文章の表示]で有効なのです。
先ほどの例で主人公の名前を「\c[4]」に変更すると…あら不思議。

\c[4]は死んでしまった!

Fig.2 実際に表示される文章

主人公の名前を使って制御文字を使う事ができる事が分かります。
つまりは[主人公の名前変更]コマンドを使い、主人公の名前を上手く変更できれば
動的に制御文字を操る事ができますね。

3:メッセージスキップ処理

さて、前提を理解した上で実際にイベントコマンドを見て行きましょう。
この例では[Shift]キーを押した時にメッセージスキップが行われるようにしてみます。

まずは文章の表示中にキーを入力を取るコモンイベントの作成を行います。

Code.1 メッセージスキップ制御処理(定期的に並列処理する)
◆注釈://-----------------------------------------------------
:  :// # 初期化処理
:  ://-----------------------------------------------------
◆変数の操作:[0001:◇キー入力変数1]代入, 0
◆変数の操作:[0003:◇キー連続入力判定用]代入, 0

◆注釈://-----------------------------------------------------
:  :// # スキップキーの押下状態取得
:  ://-----------------------------------------------------
◆キー入力の処理:[0001:◇キー入力変数1](押されるまで待たない)
◆ウエイト:0.0秒
◆キー入力の処理:[0003:◇キー連続入力判定用](押されるまで待たない)
◆条件分岐:変数[0001]がV[0003]以外
 ◆ウエイト:0.0秒
 ◆イベント処理の中断
 ◆
:分岐終了

◆注釈://-----------------------------------------------------
:  :// # スキップキーが押されているかどうか
:  ://-----------------------------------------------------
◆条件分岐:変数[0001:◇キー入力変数1]が7
 ◆条件分岐:スイッチ[0001:□メッセージスキップON]がOFF
  ◆主人公の名前変更:主人公[20]の名前を\^\>に変更
  ◆スイッチの操作:[0001:□メッセージスキップON]をONにする
  ◆
 :分岐終了
 ◆ウエイト:0.1秒
 ◆イベント処理の中断
 ◆
:分岐終了

◆注釈://-----------------------------------------------------
:  :// # スキップキーが押されていない場合
:  ://-----------------------------------------------------
◆条件分岐:スイッチ[0001:□メッセージスキップON]がON
 ◆主人公の名前変更:主人公[20]の名前をに変更
 ◆スイッチの操作:[0001:□メッセージスキップON]をOFFにする
 ◆
:分岐終了
◆ウエイト:0.1秒

※スイッチや変数は任意のものに置き換えて下さい。
※キー入力を複数取っている理由は[RPGツクール2000におけるマルチコア問題]を参照。

[Shift]キー(7)を押した時に制御文字用の主人公20番の名前を「\^\>」に変更しています。
[Shift]キーが押されていない場合は「」に変更、つまり[Shift]の時のみ制御文字が有効になります。

これを文章に反映させる為、文章の表示を以下の様に記述します。

Fig.3 文章の表示の記述

さてここまで作ったところでテストプレイをして見ましょう。
文章の表示中に[Shift]キーを押しっぱなしにすると、次の文章から瞬間表示+自動ページ送りとなり、
メッセージスキップ状態になります。

メッセージスキップ状態で選択詞にぶつかった場合、自動的に止まってくれるので誤爆の心配もありません。

実際に使う時はパフォーマンスを考慮し、
並列処理の出現条件のスイッチを設定しておき、必要な時だけ機能をONにする様にしましょう。

一々行の先頭に対して制御文字を指定しなければならない煩わしさがありますが、
これで擬似的なメッセージスキップ処理ができました。
周回要素のあったりリトライ機能があるゲームで使用してみてはいかがでしょうか。