開発日誌

プラグイン/スクリプト

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

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メソッドを継承して追加定義しています。この辺りに関わる改変スクリプトを入れている場合は、競合で正常に動作しない可能性がありますので、ご注意ください。

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

[ 天下御免!からくり屋敷 ] [ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] [ ツクール情報 ] 画面全体アニメーションの不具合修正

2017-10-29 16:44:30

RPGツクールVXのプリセットスクリプトのバグというか仕様として、アニメーションの基準位置が「画面」に設定されていても、対象となるキャラクターの分だけアニメーションが表示される、というものがあります。

単に重なって表示されるだけなので、実害がないと言えばないのですが、透明度を設定している場合は、重なっている分だけ濃く表示されてしまうため、気になると言えば気になります。

これまでは、EnDlEss DREamERさんの「アニメーション軽量化」を参考に、全体アニメーションの場合は最初の1体分だけを表示するようにしていたのですが、これだと今度は、対象のフラッシュが最初の1体にしか反映されないため、全体技なのに単体技のように見えてしまうという点が気になっていました。

というわけで、いろいろいじって、アニメーションは1体分だけ、ただし対象のフラッシュは対象者ごとに全部反映させる、というスクリプトを作ったので公開します。今さらVX用のスクリプトに、どこまで需要があるのかは分かりませんが……。

晴れて敵全体がフラッシュするようになった

問題なく意図通りに動作しているはずですが、アニメーションの仕様はいまいちよく把握していないので、思わぬエラーが潜んでいる可能性があります。また、なるべくaliasを用いた追加定義にしていますが、アニメーション周りの改変スクリプトを入れている場合は、競合で正常に動作しない可能性がありますので、ご注意ください。

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

いやー、それにしても、この1ヶ月で相当制作が進みました。最初からこのペースで進めていれば、とっくの昔に完成していたものを……!