開発日誌

素材

[ ゲームリリース情報 ] [ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] アイテム発見イベント規格化プラグインとサンプルミニゲーム

2020-08-28 18:53:17

引き続き自分で使うプラグインをRPGツクールMZ向けに作成していっています。

第3弾は、アイテム発見イベント規格化プラグインです。

これはVXの時に作ったRGSSスクリプトのリメイクで、宝箱やタンス、タルなどを調べるとアイテムが見つかる、というイベントを簡単に組むためのRPGツクールMZ用プラグインです。

私はもう、このプラグイン無しでは宝箱ひとつ満足に設置できない体になってしまいました。

宝箱は「イベントの簡単作成」で簡単に設置できますが、後から中身を別の物に変更したい場合、アイテムを増減するイベントと、「○○を手に入れた!」というメッセージ表示の両方を修正しなければならず、面倒かつミスしやすいです。

そんな面倒なアイテム発見イベントを、簡単に作れるようにするプラグインです。導入方法は以下の通り。

  1. 上記プラグインを組み込む。
  2. アイテム発見のコモンイベントを作る。
  3. 宝箱やタンスなどをイベントとして設置する。イベントの名前を入手品のIDとし、2で作ったアイテム発見のコモンイベントを呼び出します。

以下、詳しく説明します。

プラグインパラメータ

このプラグインには2つのパラメータがあります。

入手品の種別(アイテム、武器、防具など)を表す番号と入手品のIDを、それぞれ格納する変数の番号をパラメータとして設定します。

あと、追加のプラグインとして「文章中にアイテムや敵キャラ等の名前を表示」で紹介した「データベースの名前表示プラグイン(PANDA_ConvertDataName.js)」も、併せて導入すると便利です。

これでプラグインの準備は完了です。

アイテム発見コモンイベント

次に、アイテム発見のコモンイベントを作成します。

最初にセルフスイッチAの状態で分岐し、ONなら既に入手している旨のメッセージを出します。セルフスイッチAがOFFなら未入手なので、入手イベントを実行します。

「プラグインコマンド」で導入した「PANDA_FindItemEvent」の「入手イベント起動(Find Item Event)」を実行します。引数の指定はありません。

プラグインのパラメータで指定した「種別変数番号」の変数に入手品の種別を表す数字(お金=1、アイテム=2、武器=3、防具=4、敵グループ=5)、「アイテム変数番号」の変数に入手品や敵グループのIDもしくは入手金額が取得されます。

アイテムやお金の増減はプラグイン内で処理していますので、後は効果音の演出や入手メッセージの表示などを行えばOKです。ミミックなど敵モンスターを出現させる場合は戦闘の処理が必要です。最後にセルフスイッチAをONにしてやれば、同じ場所から再度入手できてしまうのを避けることができます。

併せて導入した「データベースの名前表示プラグイン(PANDA_ConvertDataName.js)」を使うと、メッセージ内で\item[n] \weapon[n] \armor[n] \troop[n]と記述することによって、n番のアイテム、武器、防具、敵グループ名が表示できます。

入手品の種別で分岐させつつ、文章の表示で\item[\V[x]](xはアイテム変数番号)を使えば、入手時のメッセージを共通化させることができます。

こうしておけば、アイテム入手時の演出やメッセージを後から変更したい場合、ここだけを変えればよいので非常に楽です。デフォルトとはちょっと違う、凝った演出などもやりやすくなるでしょう。

イベント設置

コモンイベントを用意したら、実際の宝箱などのオブジェクトをイベントとして設置します。

実行内容は、先ほどのコモンイベントを呼び出すだけでOKです。

そしてここがポイント。イベントの名前を中身の種別+ID番号とします。

アイテムの場合は「i+アイテムID」、武器の場合は「w+武器ID」、防具の場合は「a+防具ID」とします。例えばi1ならば1番のIDのアイテムが、w25ならば25番のIDの武器が手に入ります。また、お金の場合は「g+金額」とし、モンスターを出現させる場合は「e+敵グループID」とすればOKです。

後で中身を変更したくなったら、イベント名を変更するだけでOK。非常に簡単です。

最初はイベントの名前ではなくメモ欄に中身を記述する予定でしたが、いざやってみると、メモ欄だとイベントを開いてみないと記述が分かりません。その点、名前だとMZから登場したイベントリストや右下のステータスバーにも表示されるので、分かりやすかったです。いちいちイベント名を「宝箱」とか「ツボ」とかする人もいないでしょうし……。

サンプルミニゲーム

これだけだと、なんのこっちゃだと思いますので、例によって実際のサンプルプロジェクトを用意しました。

ただのサンプルでは味気ないので、ちょっとしたミニゲームに仕立ててみました。

『夫婦戦争MZ - Find Item MZ -』

  • 部屋の中を調べて、ダンナの浮気の証拠を探しましょう。
  • 宝箱、ツボ、タル、木箱、机、タンス、戸棚、本棚、額縁の裏からベッドの下まで、あらゆるオブジェクトが調べられます。
  • 浮気の証拠だけでなく、便利アイテムや装備品、ストレス解消に役立つ道具もあります。中には敵が潜んでいる場所も……。
  • 探せるチャンスは10回です。10回調べ終わると、ダンナが帰ってきます。
  • それまでに入手したアイテム等によって、エンディングが変わります。
  • エンディングは全部で10種類。ハッピーエンドを目指してがんばってください!

RPGツクールVX用に作ったスクリプトのサンプルゲーム『夫婦戦争 ~ Find Item ~』のMZ版リメイクです。

部屋を広げて調べられるオブジェクトを増やしたほか、アイテムや装備品、ストレス解消法(魔法)も増量。敵モンスターは一新しました。

VX版のリリースから9年の月日が経っていますが、照代さんは1歳しか年を取っていないとか何とか……。

ダウンロードした「FindItemMZ.zip」を解凍してください。解凍されたフォルダの中にある「Game - ショートカット」をダブルクリックすると、ゲームが始まります。

RPGツクールMZをお持ちの方は、「GameData」フォルダー内の「game.rmmzproject」をプロジェクトとして開くと、実際にどのようにイベントが組まれているかを確認することができます。ご利用の際の参考にしてください。

RPGツクールMZをお持ちでない方も、単純にミニゲームとして遊んでいただけます。

バグ報告、ご質問、ご要望等は、お気軽にコメント欄までどうぞ!

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 任意のセルフスイッチを消去

2020-08-24 22:55:43

自分で使うプラグインをRPGツクールMZ向けに作成していっています。

イベントコマンドでセルフスイッチを操作するのは、そのイベントもしくはそのイベントから呼び出されたコモンイベントでしかできませんが、宝箱や扉の状態をリセットするなど、イベント外からセルフスイッチを操作したいというケースはよくあります。

VXやVX Aceの頃はスクリプトで都度記述していましたが、MVからプラグインコマンドが登場したお陰で、より簡単に記述することができるようになり、さらにMZでプラグインコマンドの仕様がより使いやすくなりました。

というわけで作りました。

※2025-01-05追記:
不具合修正および「セルフスイッチのON」もできるようにしました。詳細は「任意のセルフスイッチをONに」をご覧ください。

このプラグインを導入すると、「セルフスイッチの消去(Reset Self Switches)」のプラグインコマンドが使用できます。

対象のマップID、イベントIDを数字で、対象のセルフスイッチをA-Dで指定すると、該当のセルフスイッチをOFFにすることができます。

マップIDに0を指定すると全てのマップ、-1を指定すると現在のマップが対象になります。

イベントIDに0を指定すると対象マップの全てのイベントが対象になります。

対象セルフスイッチを空欄にするとA-D全てのセルフスイッチが対象になります。

ミニゲームなどでよく必要になる、特定のマップの全てのセルフスイッチをOFFにする、といったことが簡単にできるようになります。

ごく基本的な機能なので、より高機能なものが探せば既にあるかもしれませんが、探すのがめんどk……プラグイン制作の勉強も兼ねて自分で作ってみました。

いったんは必要最低限の機能のみ。今後さらに拡張して、対象マップの番号を変数で指定するとか、マップやイベントの名前やメモ欄に特定の文字列があるもののみを対象にするとか、OFFだけじゃなくてONにもできるとか、柔軟な指定が可能になるといいかなと思っています。

質問やアドバイスなどはコメント欄まで、お気軽にどうぞ。プラグイン素材の利用条件についてはMITライセンスとしています。丸パクリなどでなければ基本的に利用は自由です。このサイトについての「提供素材について」の項目なども併せてご覧ください。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 文章中にアイテムや敵キャラ等の名前を表示

2020-08-22 12:41:50

天下御免!からくり屋敷』の歴史編制作と並行して、RPGツクールMZも触っていこうと思っているので、さっそく自分で使いそうなプラグインを作ってみました。

MZ用に作ったものですが、試したら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に変数を用いることも可能です。この場合、1番の変数に格納されているID番号のアイテム名が表示されます。

さらに\*skill[n]のように頭に*を付けると、そのスキルのアイコンを表示できます。item、weapon、armor、stateも同様です。もちろんclass、enemy、troopは、*を付けてもアイコンは表示されません(付けてもエラーにはなりません)。

具体的な使い方は以下の通り。

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

こうしておけば、アイテム名や敵キャラ名を後で変更した時に、台詞もいちいち変更して回る必要がなくなるので、非常に便利だと思います。

プレビューだと正しく表示されないのですが、実際のゲームではちゃんと置き換わって表示されます。ウィンドウの横幅からはみ出さないようにご注意ください。

質問やアドバイスなどはコメント欄まで、お気軽にどうぞ。プラグイン素材の利用条件についてはMITライセンスとしています(英文を考えるのが面倒くさかったから)。丸パクリなどでなければ基本的に利用は自由です。このサイトについての「提供素材について」の項目なども併せてご覧ください。

[ 天下御免!からくり屋敷 ] [ テクニック ] [ 素材 ] お行儀良く寝ましょう

2020-08-09 22:48:30

和風マップチップの豪華なお布団って、横に2マス分ありますね。

ここに一人を寝かすと、布団の左右どちらかに寄ってしまって、見栄えが良くありません。

そんなにこだわらなくても、という気もしますが、シリアスなシーンでは、そういう突っ込み甲斐のある部分はできるだけ避けた方が無難です。

というわけで、ちゃんとお布団の真ん中で寝てくれるように直しました。

具体的にどうしたかと言うと、専用のキャラクターチップを作って対処しました。

専用キャラチップは、横幅が通常の2倍になっており、そのうち左右どちらかにキャラを寄せた形にしています。

キャラクターチップは置いたマスの下端中央が基準になるので、こうすれば布団の中央にキャラを寝かすことができます。

しかし、ここで問題がいくつか。

2マス分の布団のうち、イベントが設置されているのは左右どちらかだけになるので、このままだと話しかけたりした場合に片方でしかイベントが発生しませんし、反対側から話しかけようとすると顔の半分を踏んづけてしまうことになります。

というわけで、もう片方にも通行不可の空のイベントを設置して、同じイベントが発生するようにしました。これだとセルフスイッチとかは使えなくなるので、スイッチやコモンイベントを多用することになりますが。

これでちゃんと布団の中央で寝てくれるようになりましたが、今度は目が開いたままなのが気になってきました。

特に死に別れのシーンなどでは、「目を開けてくれ!」などの台詞も飛び出しているのに、キャラは目が開いてるじゃん、というのもオマヌケな感じです。これはキャラチップを加工して、閉じた目のキャラ画像にしました。この程度なら何とかできます。

さらに、フキダシアイコンは元のマスが基準になるので、このままだとずれて表示されてしまいます。

これはスクリプトを作って対処しました。相変わらずRPGツクールVX用ですが、スクリプトを公開します。

指定した番号の変数にX座標・Y座標の調整値を代入しておくと、その分だけフキダシアイコンがずれて表示されるようになります。X座標だけで十分でしたが、ついでなのでY座標も調整できるようにしました。表示後に変数の値を0にするのを、忘れないようにしてください。

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

簡易な実装なので、いくつか制約があります。

調整は同時に表示されているフキダシアイコン全てに適用されます。特定のキャラのフキダシアイコンのみを調整することはできません。また、調整値の変数はフキダシアイコンが消えるまで保持しておかないといけません。「フキダシアイコンの表示」コマンドの直後で調整値の変数を0に戻すと、調整値が反映されなくなってしまいます。必ずフキダシアイコンが消えるまで待ってから、調整値を戻しましょう。

うーん……。

最初はお布団の真ん中でお行儀良く寝かせたいだけだったのに、一つを直したことによって連鎖的に他の部分も直す必要が出てきてしまうという。まさに角を矯めて牛を殺す状態になるため、ある程度のところで割り切るのが必須だと思いました。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 重要語句の色を変える

2020-07-21 01:19:33

メッセージの中でキーワードとなる言葉――人名やアイテム名などは、色を変えて目立たせてやると、プレイヤーが見落としにくくなるので親切です。

特殊文字の\C[n]で文字色の変更ができるので、キーワードの手前で特定の色に変更し、その後で元の色に戻してやれば、標準でも特に難なく実現可能です。

しかし、何番が何色なのか分からなくなったり、後で色を戻し忘れたりで、実際にやるとなるとけっこう面倒くさいし、間違えやすいです。

というわけで、特殊文字を拡張して、重要語句の文字色変更を簡略化するスクリプトを作りました。

相変わらずRPGツクールVX用ですが、VX Aceでも多少の修正で動くようになるはずです。やっていることは単純なので、MVでも同様にプログラムを組めば動作すると思います。

「文章の表示」の中で、 <●テキスト> のようにテキストを <● > で囲むと、その部分の文字色を手軽に変更することが可能です。

●には語句の種類に合わせてアルファベット1文字が入り、以下に対応させています。

<N > 人名
<P > 地名
<E > モンスター名
<I > アイテム名
<S > スキル名
<K > その他の重要語句(なんでKにしたのかは忘れた)

これによって、人名は赤色、アイテム名は黄色のように、タイプに応じて色を変えることができるので、よりいっそう分かりやすくできます。

色はスクリプトの中の\x01[3]などの数字を変えればOKです。また同様にすれば、新たな語句タイプを設定することも可能です。

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