開発日誌

プラグイン/スクリプト

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

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-07-21 01:19:33

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

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

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

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

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

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

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

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

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

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

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

[ 天下御免!からくり屋敷 ] [ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] [ ツクール情報 ] 正しい蘇生術

2018-08-12 01:35:53

お久しぶりです!

続編の制作を始めると、既存部分に不具合があっても修正が困難になるので、心ゆくまで修正しようとしています。

敵が蘇生方術を使ってくる際に、複数の死亡者がいたとしても、必ず先頭の死亡者を蘇生させてくるような気がしていました。ランダムで選ばれるはずなのにおかしいな、と思っていろいろ調べてみた結果、プリセットスクリプトの不具合であることが分かりました。

Game_BattleActionのdecide_random_targetメソッドにおいて、対象が味方単体(for_friend?)ならば(生存中の)味方からターゲットをランダムに決定、対象が戦闘不能の味方単体(for_dead_friend?)ならば戦闘不能の味方からランダムに決定、としているのですが、for_friend?にはfor_dead_friend?の場合も含まれるので、この判定順序では対象を戦闘不能の味方にしていても、通常の味方単体で選ばれてしまいます。

というわけで、判定の順序を入れ替えたら、蘇生対象がちゃんとランダムに選ばれるようになりました。

また、蘇生や途中で仲間を召喚する際に、アニメーションが表示されていないことに気付きました。蘇生や召喚した時点では、まだ対象が非表示の状態になっているため、アニメーションも表示されないのだろうと思って諦めていたのですが、修正の仕方が分かったので、ちゃんと表示されるようにしました。

今さらVX用のスクリプトに、どこまで需要があるのか分かりませんが、修正版のスクリプトを公開します。

蘇生対象者の選択修正は、Game_BattleActionのdecide_random_targetメソッドを直接書き換えています。また、アニメーションの表示はSprite_Battlerに親クラスであるSprite_Baseのanimation_set_spritesメソッドを継承して追加定義しています。この辺りに関わる改変スクリプトを入れている場合は、競合で正常に動作しない可能性がありますので、ご注意ください。

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