開発日誌

プラグイン/スクリプト

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] RPGツクールMZプラグインまとめ

2021-01-22 21:37:22

去年の8月以降、RPGツクールMZ(MVも一部対応)のプラグイン素材をいくつか公開してきましたが、埋もれてしまったものも多そうなので、ここらでまとめて紹介します。

ルビ表示プラグイン

詳しくは「RPGツクールMZでルビを振る」記事参照。

こんな感じでテキストにルビを振ることができるプラグインです。

{九尾|きゅうび}の{狐|きつね}のように、ルビを振りたい文字を{ }で囲んで、 | の手前の漢字、後ろにルビを記述すれば、ルビ付きのテキストとして表示されるようになります。

とてもシンプルな記述でルビを実現できるので便利!

ややルビの文字サイズが小さめですが、1行の高さを標準から変えずにルビ振りができるので、ウィンドウレイアウトに影響しないのが特徴です。文章の表示だけでなく、アクター名、スキル名、敵キャラ名、説明文や戦闘メッセージなど、基本的に全てのテキストに対応しています。

進行状況ウィンドウプラグイン

詳しくは「メニュー画面に物語の進行状況を表示」記事参照。

メニュー画面上部に、現在の物語の進行状況を示す簡単なテキストを表示できるプラグインです。

進行度を管理する変数を1つ用意し、その変数の値に応じたテキストを入力しておけば、メニュー画面を開いた際に常に現在の進行状況が表示されます。日をまたいでプレイ再開した時に、「次は何をすればいいんだっけ?」となるのを防げます。

ウィンドウの位置は好みの場所に調整可能です。

※ MVにも対応したVersion 1.1.1をリリースしました。「進行状況ウィンドウプラグインをMVにも対応」記事参照。

データベースの名前表示プラグイン

詳しくは「文章中にアイテムや敵キャラ等の名前を表示」記事参照。

「文章の表示」コマンドやアイテム等の説明文で、以下の制御文字をそれぞれの名前に置き換えてくれるプラグインです。

\class[n] n番の職業名
\skill[n] n番のスキル名
\item[n] n番のアイテム名
\weapon[n] n番の武器名
\armor[n] n番の防具名
\enemy[n] n番の敵キャラ名
\troop[n] n番の敵グループ名
\state[n] n番のステート名

\item[\V[1]]のように、nに変数を用いることも可能です。また\*skill[n]のように頭に*を付けると、そのスキルのアイコンを表示できます(item、weapon、armor、stateも同様)。

上のように書いておくと、下のように表示されます。

アイテム発見イベント規格化プラグイン

詳しくは「アイテム発見イベント規格化プラグインとサンプルミニゲーム」記事参照。

宝箱やタンス、タルなどを調べるとアイテムが見つかる、というイベントを簡単に組むためのプラグインです。

イベントの名前を例えばi1とすればID1番のアイテムが、w25とすればID25番の武器が、g500とすればお金500Gが、手に入るイベントを作成できます。アイテム入手時の演出やメッセージは、上の「データベースの名前表示プラグイン」と組み合わせたコモンイベントで作成します。

後から宝箱の中身を変更する際に、イベント名を変更するだけで済むので、とても便利です。ちょっと作成方法がややこしいので、上記記事で紹介しているサンプルゲームも参考にしてください。

重要語句の文字色変更プラグイン

詳しくは「重要語句の文字色変更プラグイン」記事参照。

「文章の表示」コマンドや説明文等で <N人名> のようにテキストを囲むと、囲まれた部分の文字色を手軽に変更することができます。人名は青、アイテム名は赤のように、語句のタイプに応じて色を変えることができ、語句のタイプと対応する色は自由に指定可能です。

プラグインがなくても色の変更は制御文字の\C[n]で可能ですが、人名は青にしてたっけ赤にしてたっけとか、色を戻し忘れたりとか、後から人名はやっぱり黄色にしたいとか、このプラグインが役に立つ場面はいくらでもあるはずです。

アイテム獲得メッセージにアイコン表示プラグイン

詳しくは「アイテム獲得メッセージにアイコンを表示」記事参照。

こんな感じで、戦闘終了時のアイテム獲得メッセージにおいて、アイテム名の頭にアイコンを表示させることができるプラグインです。

なお、サンプル画像ではアイテム名の色も変わっていますが、これは「用語」の「メッセージ」で色を変更しているだけです。

バフ・デバフ効果個別設定プラグイン

詳しくは「バフ・デバフの効果を個別に設定」記事参照。

バフ・デバフの倍率を、能力値および強化か弱体かでそれぞれ個別に設定できるプラグインです。

デフォルトだと全て1段階につき25%共通なので、能力値によっては物足りなかったりします。それが柔軟に設定できます。

セルフスイッチ操作プラグイン

詳しくは「任意のセルフスイッチを消去」記事参照。

プラグインコマンドで、対象のマップID、イベントID、スイッチID(A-D)を指定すると、該当のセルフスイッチをOFFにすることができます。マップIDは全てのマップや現在のマップ、イベントIDやスイッチIDは全てのものなども指定可能です。

特定セルフスイッチ消去プラグイン

詳しくは「特定のセルフスイッチをリセット」記事参照。

マップに入った際、そのマップにあるイベントのうち、名前が指定した正規表現にマッチするイベントのセルフスイッチをOFFにできるプラグインです。

マップに出入りするたびに復活する宝箱とか、開けた扉や押したスイッチを元の状態に戻したい時とかに使えます。

メッセージ中にスイッチ操作プラグイン

詳しくは「台詞の途中でスイッチ操作 in MZ」記事参照。

文章表示の途中でスイッチのON/OFFができるプラグインです。

「文章の表示」の制御文字で、\+switch[n]と入れるとn番のスイッチをONに、\-switch[n]でOFFにできます。

スイッチに連動した並列処理を使うことで、台詞の途中の狙ったタイミングでキャラクターを動かしたり、フキダシアイコンを表示したり、効果音を入れたりすることが可能になります。

戦闘終了時特殊処理プラグイン

詳しくは「戦闘終了時に特殊処理」記事参照。

戦闘終了後に直ちにフェードアウトさせたり、BGM/BGSを継続させずに停止したり、勝利時・敗北時など条件によってスイッチをONにできるプラグインです。バトルイベントの0ターン目(戦闘開始時)に、プラグインコマンドで指定するようになっています。

ボス戦後などにイベントを実行したい時、標準だと経験値やお金の獲得メッセージを出している間に元のBGMが流れてしまいますし、イベントが始まる前に一瞬だけ元のマップが表示されてしまいます。このプラグインを使うと、BGMを停止させたり、フェードアウトした状態でイベントに移行することができます。

選択肢表示時SEプラグイン

詳しくは「選択肢表示時にSEを鳴らす」記事参照。

「選択肢の表示」で選択肢ウィンドウが表示される際に、SEを鳴らすプラグインです。

職業名の代わりに二つ名表示プラグイン

詳しくは「職業の代わりに二つ名を表示」記事参照。

ステータス画面等で職業名の代わりに二つ名を、二つ名の代わりに職業名を表示するプラグインです。後者はプラグインパラメータで非表示にすることもできます。

長編RPGなどで、ストーリーに応じて主人公の職業が「村の自警団兵」→「王国兵」→「勇者」などと変化する場合、それを職業の代わりに二つ名の変更で済ますことができます。

イベントスキッププラグイン

詳しくは「イベントスキップを実装した」記事参照。

並列処理イベントと連携して動くプラグインで、指定したラベルの位置(もしくはイベントの最後)までイベントをスキップさせることができます。あまり高機能ではなく、会話だけのイベントを飛ばすといった限定的な使い方を想定しています。

VX方式経験値算出プラグイン

詳しくは「必要経験値の計算をVX方式で」記事参照。

レベルアップに必要な経験値の算出方法をVXでの方式に変更するプラグインです。

VX Ace以降、MV、MZの算出方法だと、序盤はなかなかレベルが上がらない一方、中盤以降はどんどんレベルアップしてしまい、バランス調整が非常に難しいです。VXでの算出方法に変えることで、調整をやりやすくすることができます。


以上、全部で15個ありました。思ったより作ってましたね。

あまり派手なものはないですが、ツクールのちょっと物足りないところや融通の利かない部分を補う、便利なプラグインだと思います。ぜひご利用ください!

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] メニュー画面に物語の進行状況を表示

2020-12-08 00:00:10

本記事は「ツクールフォーラムアドベントカレンダー Advent Calendar 2020」12月8日分の投稿記事です。

長編RPGをプレイしていてありがちなこと。「次は何をすればいいんだっけ?」

大人になると毎日ゲームして遊ぶというわけにもいかず、忙しくて数日、下手をすると数週間以上も間が空いてプレイ再開ということもあり得ます。

それだけブランクがあると、多くのプレイヤーはこれまでの話の内容や、次に何をすればいいのかをほとんど忘れてしまうでしょう。

ストーリーを百も承知な制作者目線ではなかなか気付きにくいポイントですが、途中で次の目的が分からなくなってプレイを断念するというのはよくある話で、その対策として「思い出すコマンド」や「あらすじノート」など、様々な手法が開発されてきました。

とはいえ、あまり凝った仕組みを作るのはコストがかかりますし、あまりに自己主張が激しい見せ方も抵抗があります。

いろいろ思案した結果、現在の進行状況を示す簡単なテキストを、メニュー画面に表示するようにしました。シンプル!

RPGツクールMZでは、メニュー画面の上部にマウス操作用のボタンスペースがあります。そのままだと1行が収まりきらないのですが、余白を調整することで、何とかこのスペースに1行テキストのウィンドウを表示させることができました。デッドスペースの有効活用!

プラグイン素材として公開します。

※ RPGツクールMVにも対応したVersion 1.1.1をリリースしました。「進行状況ウィンドウプラグインをMVにも対応」記事参照。

使い方は簡単です。

まず物語の進行度を管理する変数を1つ用意し、その変数の番号をプラグインパラメータの「進行度変数」に指定します。

そして、その進行度変数の値に応じたテキストを、「進行度テキスト」にリストの形で入力します。

変数の値がリストの番号に相当していますので、進行度変数の値は1がスタートとなります。値が0の時は何も表示されませんので、オープニングイベントの中で進行度を1にしてやる必要があります。

後は、イベントの時にこの進行度変数の値を順次操作してやればOKです。

数が多いとテキストを用意するのも入力するのもかなり大変ですが、そこは頑張りましょう……。

ウィンドウ系のプラグイン作成にあたって

今回、プラグイン化するにあたって悩んだのが、メニュー画面のレイアウトは様々なプラグインが出ており、各自で変更されていることが多い点です。

そのため、プラグインとして公開しても、ウィンドウの位置がネックとなって、あまり使われないのではないかという懸念がありました。かといって、数あるウィンドウレイアウト系のプラグイン全てに対応させるのは不可能です。

どのようにしたかというと、プラグインパラメータでデフォルトのウィンドウ位置にするかのON/OFFを設けました。

ONの場合はデフォルトの通りにメニューの上部に表示。OFFの場合は別途パラメータで、ウィンドウの左上隅のX座標とY座標、および幅と高さを指定できるようにして、その値に従ってウィンドウを表示させるようにしました。

こうして自由に位置を設定できるようにしておけば、どんなレイアウトでも対応可能ですし、逆にデフォルトでよい場合は何も設定しなくて済みます。

このように、デフォルトレイアウトをOFFにして、ウィンドウの位置とサイズを指定すれば、好きな位置にウィンドウを置けます。ていうか邪魔w

ウィンドウの高さを調整すれば、複数行表示にも対応しています。進行度テキストは\nで改行できます。\N[n]\C[n]などの各種制御文字も反映されます。

ウィンドウをいじる系のプラグインは競合が厄介ですが、このようにデフォルトか位置・サイズ指定かを選べるようにしておけば、柔軟性が増すのではないかと思います。プラグイン化を検討する際は、ぜひ参考にしてください。

単行テキスト入力で改行したい

パラメータの型(type)で文字列型には、単行のテキストであるstringと、複数行のテキストを入力できるmultiline_stringの2種類があります。

今回のプラグインでは、基本は単行のテキストで、指定の仕方によっては複数行も表示できるよ、という形だったので、パラメータ型は単行テキストのstringを採用し、改行したい場合は改行文字\nを入れてもらうようにしています。け……決してmultiline_stringがあることを知らなかったわけじゃありません(汗

当然、単行テキストで\nと入力しても、そのままでは改行だと認識されないため、スクリプト内で改行コードに変換しています。

変数textにパラメータの値が代入されているとして、通常のテキストなら、

text = text.replace("\\n", "\n");

で、\nが改行コードに変換されます。

今回のようなリスト形式であれば、

text = text.replace(/\\\\n/g, "\\n");
text = JSON.parse(text);

で、textに改行反映済みのテキストの配列が格納されます。\がカオス……。

基本は1行だけど、場合によっては改行も可能、みたいなパラメータを設定する場合は、ぜひ参考にしてみてください。

今回も最後まで読んでいただきありがとうございました。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 戦闘終了時に特殊処理

2020-11-28 02:35:06

ボス戦の後、そのまま暗転して感動的なイベントに移行したいとします。

RPGツクールの標準仕様だと、戦闘終了後にすぐ「画面のフェードアウト」を実行しても、戦闘が終わってマップ画面に戻った際に、一瞬ですが戦闘前の画面が表示されてしまいます。

また、戦闘終了後はBGMを変えたいと思っても、経験値やお金の獲得やレベルアップのメッセージなどが表示されているうちに、戦闘前のマップBGMが流れ出してしまうため、感動が薄れてしまいます。戦闘開始前にBGMをなしにすれば、戦闘終了時にBGMは流れなくなりますが、戦闘に負けた場合は通常通りマップBGMで始めたかったりします。

戦闘終了後にスイッチを操作して、キャラの配置などを変えたい場合は、戦闘中にスイッチを操作しておけば、スイッチの状態が反映されてマップに戻れますが、勝利時のみスイッチをONにしたい場合は、それも上手くいきません。

というわけで、戦闘終了後に直ちにフェードアウトさせたり、BGM/BGSを継続させずに停止したり、勝利時・敗北時など条件によってスイッチをONにできるプラグインを作成しました。

プラグインコマンドで実装したので、RPGツクールMZ用となっています。

バトルイベント内に、プラグインコマンドで指定するようになっています。

効果を発動させたい敵グループで、0ターン目(戦闘開始時)のバトルイベントに設定すればよいでしょう。

以下の項目が設定可能です。

  • 勝利時・逃亡時・中断時・敗北時それぞれでONにするスイッチ番号
  • 戦闘終了後ただちにフェードアウト
  • 戦闘終了後、BGMを停止
  • 戦闘終了後、BGSを停止

フェードアウト、BGM/BGSの停止は、勝利時・逃亡時(中断時も含む)・敗北時、どのケースで発動させるかも設定可能です。例えば、戦闘に勝利時と敗北時はフェードアウトさせて、逃亡時はそのまま、といった設定が可能です。

このプラグインを組み込むと、こんな感じになります。

使用前は、レベルアップのメッセージを処理している間に元のBGMが流れてしまいますし、イベントが始まる前に一瞬だけ元のマップが表示されてしまうため、美しくありません。プラグインコマンドを入れた後は、BGMが停止し、フェードアウトした状態でスムースにイベントに移行しています。

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] バフ・デバフの効果を個別に設定

2020-11-22 22:58:21

攻撃力や防御力を強化・弱体化する、いわゆるバフ・デバフの仕組みは、RPGツクールVX Aceから改良され、2段階までの重ねがけが可能になりました。VXまではステートでバフ・デバフを実現する仕組みだったので、相殺は標準機能でできましたが、重ねがけは困難でした。VX Ace以降のバフ・デバフの仕組みは、重ねがけをしたいという要望に応えたものとなっています。

しかしその反面、VXまでは強化・弱体化される倍率が自由に設定できましたが、VX Ace以降は1段階につき25%とスクリプト内で指定されてしまっているため、倍率を変更したい場合はスクリプトの改造やプラグインの導入が必要となりました。1カ所数字を変えるだけなので、スクリプトの改造としては非常に簡単な部類ではありますが、自由度が下がったのは事実です。

とにかくVX Ace以降、デフォルトでは1段階につき25%、すなわち1段階強化なら1.25倍、2段階強化で1.5倍になり、逆に1段階弱体なら0.75倍、2段階弱体で0.5倍(半分)となります。

しかし、攻撃力ならこのくらいの変動でちょうど良さそうに思いますが、敏捷性や運がこのくらいの変動幅だと、ほとんど効果が感じられないように思います。かといって変動幅を50%にすると、2段階強化で2倍になりますが、攻撃力も同じ強化幅になってしまうため強すぎる感もあります。また弱体の場合は2段階弱体で0になってしまうため、それはそれで都合が悪いです。

というわけで、バフ・デバフの倍率を、能力値および強化か弱体かでそれぞれ個別に設定できるプラグインを作成しました。RPGツクールMVとRPGツクールMZの両方に対応しています。

能力値8個×強弱2種で計16個を設定する必要があるため、ややパラメーターの数は多いですが、使わないものはデフォルトの0.25のままで構いません。弱体倍率の方は0.5以上にすると、2段階弱体の際に0以下になってしまうため、ご注意ください。

また、強化・弱体がそれぞれ2段階ずつというのは変わりません。3段階以上にしたいなどの場合は、他のより柔軟な設定が可能なプラグインがあるようなので、そちらをご利用ください。個人的には、3段階とかあっても戦闘のテンポが悪くなるだけの気がしていて、せいぜい2段階までが有効に使える範囲かなと思います。アイコンも2段階までですし。

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

[ ゲームリリース情報 ] [ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] イベントスキップを実装した

2020-11-02 21:08:18

ミニゲーム『夫婦戦争MZ(まさに絶体絶命)』を少しバージョンアップしました。

進行のテンポを改善してほしいというフィードバックをいただいたので、一部のウェイトを短縮してみたほか、一度見たバッドエンドは次回から飛ばせるように、イベントスキップの機能を取り入れました。

イベントスキップ機能については、そもそも飛ばしたくなるような長いイベントを作るなというのと、飛ばしてもストーリーが成立するような無意味なイベントを作るなという理由で、個人的には不要派です。

実際、『天下御免!からくり屋敷』では、ボス戦前の会話イベントなど、そもそもそんなに長くはしていませんが、2回目に戦う時は前半を飛ばして最後の2〜3台詞ですぐに戦闘に入れるようにしています。

しかし、この『夫婦戦争MZ(まさに絶体絶命)』は周回前提のゲームなので、何度も同じエンディングを見るのは、たとえ数秒程度とは言え時間のロスになるのは確かです。

というわけで、一度見たバッドエンドは↑キーを押せばスキップできるようにしてみました。

本音を言うと、何も考えずにスキップするのではなくて、今回手に入れたアイテムでどのエンディングになったのか、よく考えながら戦略を練ってほしいというのはありますが……。

いくつかイベントスキップのプラグインは探してみたのですが、多機能すぎたり、いまいち使い方がよく分からなかったりしたので、結局自分で作ってしまいました。

プラグインだけでイベントスキップを実現しているのではなく、並列処理イベントと連携して動かす前提になっているので、機能はシンプルですが実装は難しいかもしれません。

スキップさせたいイベントの実行中に、特定のスイッチをONにします。そのスイッチに連動して起動する並列処理イベントを作成し、スキップ時に押すキー(ここでは↑キー)が押されていたら、プラグインコマンドで「実行中イベントのスキップ」を実行します。これでイベントスキップが実現できます。

プラグインコマンドの「実行中イベントのスキップ」は、現在メインで実行しているイベントを、指定したラベルの位置までスキップさせる機能です。ラベルが指定されていなければ最後までスキップされます。もちろん呼び出し元の並列処理イベントはスキップされません。

イベントからコモンイベントを呼び出して……みたいな入れ子状態になっている場合は未対応です。「文章の表示」中であれば直ちにメッセージウィンドウを閉じてスキップしますが、それ以外のイベントコマンド、例えば選択肢の表示や移動ルートの設定などは、そのコマンドが完了してからスキップされます。

なので汎用性は非常に低いと思いますが、会話だけのイベントを飛ばすといった限定的な使い方であれば、これで十分です。