開発日誌

素材

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 乗り物の乗降時等にイベントを実行

2024-03-24 16:15:55

乗り物への乗降開始時や完了時、また乗り物から下りられない時に、指定したコモンイベントを実行させるプラグインを作成しました。

RPGツクールMV/MZ、どちらにも対応しています。

小型船・大型船・飛行船といった、乗り物への乗り込みを開始した時と乗り込みが完了した時、および乗り物から下り始めた時と下り終わった時、さらに障害物などがあって乗り物から下りられない時に、指定したコモンイベントを発動させることができます。

コモンイベントはプラグインパラメータで指定することが可能です。

プラグイン自体に発動条件を設定する機能はありませんので、特定の条件でのみコモンイベントを起動させたい場合は、コモンイベントの方で条件分岐を行ってください。

乗り物は小型船・大型船・飛行船それぞれで指定することが可能です。特定の項目にはコモンイベントを指定しないことも可能ですし、同じコモンイベントを複数の項目に設定することも可能です。

Yana様の作成された「ビークルコモン(VehicleCommon.js)」というプラグインをベースに、機能を追加して作成しました。この場を借りて御礼申し上げます。

乗降時にシステム的な設定を行ったり、乗った直後に会話イベントを自動実行したりすることが可能になります。

また、下りられない場所で下りようとした時にメッセージを出すといったことも可能になります。特に飛行船は、下りられる場所か否かの区別が一見難しいこともあるため、メッセージを出してやると親切でしょう。

並列処理のイベントでどの乗り物に乗っているか(あるいは乗っていないか)によって条件分岐すれば、プラグインを使わなくとも同じような処理を実装することは可能ですが、隊列歩行メンバーの移動や飛行船の降下などにより乗り物への乗降の開始と完了は微妙にタイミングが異なることや、下りられない時にイベントを動かすのは難しいことから、プラグインを作成しました。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] メッセージのウェイト無効化を無効化

2024-01-16 21:46:31

RPGツクールMZの最新バージョンとなるVersion 1.8.0がリリースされました。

開発部からのリリースノートを見る限り、ピクチャの設定でX,Y座標を表示したり、方向キーで移動させたりできるなど、いくつか便利機能が加わったようです。

が、その中に1つ、既存のプロジェクトに大きな影響を及ぼしそうな機能が。

決定キーを押している間のイベントの倍速処理の実行中に、メッセージのウェイトを無効化するように改善しました。

イベントの実行中、決定キーを押しっぱなしにしている間は、イベントの処理速度が倍速になるという機能があります。

キャラの動きやメッセージの表示速度など全て倍速になるので、テストプレイ時や簡易的なイベントスキップ機能として役に立つ機能ではあったのですが、「文章の表示」の制御文字で1秒ウェイトの\|と1/4秒ウェイトの\.については倍速処理されないため、メッセージ中にこれらのウェイトを多用していると、結局そこで待たされるという現象が発生していました。

メッセージ中のウェイトの多用は、プレイヤーをイライラさせる制作者がやりがちな失敗例としてよく言われるため、そのウェイトが倍速処理でスキップできるようになったのは好ましいことである反面、既存のプロジェクトでメッセージ中のウェイトを用いて、イベントの動きの制御を行っているようなケースでは、タイミングがずれてしまう可能性もあるため、注意が必要です。

というわけで暫定的に、メッセージのウェイトを無効化する機能を無効化(ややこしい)するプラグインを作成しました。

このプラグインを導入すれば、決定キー押しっぱなしでイベントの倍速処理をしている最中も、メッセージ中の制御文字によるウェイトは有効のままになります。

※ 2024-01-17追記:スイッチでON/OFFの切替機能を実装しました。

そもそもウェイトの多用は好ましくなく、通常はスキップできて然るべきと考えます。ただし、イベントの動きと合わせている場合や、クレジット表示などスキップされては困る場面でも、強制的にスキップされてしまうのが問題です。

そこで、指定したスイッチがONの場合だけ、決定キー押しっぱなしによる倍速処理中でも、メッセージ中のウェイトが有効になります。

スイッチを指定していなかったり、スイッチがOFFの場合は、倍速処理中はメッセージ中のウェイトが無効になります。

スキップされると困るシーンの直前でスイッチをONにし、シーン終了後にスイッチをOFFにして、普段はメッセージ中のウェイトもスキップできるようにしておくのが良いでしょう。それ以前に、あまりメッセージ中のウェイトを多用すべきでない、というのは前提です。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 戦闘画面のキャンセルボタンの位置を調整する

2023-11-18 00:00:49

戦闘画面におけるキャンセル(戻る)ボタンを非表示にしたり、ボタンの位置を調整したりすることのできるプラグインを作成しました。

キャンセルボタン自体がRPGツクールMZから登場したものなので、MZ専用のプラグインとなります。

RPGツクールMZでは、オプションの「タッチUI」をONにすると、画面上にメニューボタンやキャンセルボタンが表示され、キーボードやゲームパッド(コントローラー)以外の、マウス操作やタッチ操作でも快適なプレイができるユーザーインターフェイスが標準機能として搭載されました。

しかしながら、デフォルトの戦闘画面におけるキャンセルボタンは、一見すると中途半端な位置に配置されています。

▲右上の中途半端な位置にあるキャンセルボタン

これは一見すると違和感のある配置ですが、スキルやアイテムの選択中はヘルプウィンドウが上部に表示されるため、そのヘルプウィンドウのすぐ右下に配置されているのです。なので、そこまでおかしなレイアウトというわけではありません。

▲スキルやアイテムのヘルプウィンドウのすぐ右下にある

ただ、小型~中型程度の敵キャラならば問題ありませんが、大型の敵キャラを画面端まで出現させているような場合、このキャンセルボタンが敵キャラのグラフィックに被ってしまって、少々見映えが悪くなります。

▲大型の敵キャラだとボタンが被ってしまう

そこで、戦闘画面におけるキャンセルボタンを、指定した位置に表示したり、非表示にしたりできるプラグインを公開しました。

もとは公式のツクールWebフォーラムのスレッドで上がっていた要望に応えたものに、機能追加したプラグインです。

キャンセルボタンの位置は「ボタンを非表示」「コマンドの直上」「ボタン位置を指定」の3種類から選べます。

デフォルトは「コマンドの直上」で、これを選んだ場合、キャンセルボタンはアクターコマンドのすぐ上に表示されます。

▲「コマンドの直上」ではアクターコマンドのすぐ上に表示

この場合でも、小型の敵など画像によっては、敵キャラのグラフィックにキャンセルボタンが被ってしまいます。

ただ、被るといっても基本的に足下なのと、アクターコマンドのすぐ右上という配置なので、そこまで違和感はないのではないでしょうか。

▲小型の敵だとボタンが被ってしまうが、そこまで違和感はない

このほか、表示方法を「ボタンを非表示」にした場合は、キャンセルボタンが表示されなくなります。

ボタンが非表示になっても、マウスの右クリックや2本指タップでキャンセルの操作自体は可能です。ただ、右クリックはともかく、2本指タップは知らないとかなり難しく(MV時代からこの操作は評判が悪かった)、キャンセルボタンを隠す場合は、キャンセル自体が必要ない戦闘システム(自動戦闘メインなど)の時に限ることをお勧めします。

▲「ボタンを非表示」ではキャンセルボタンが表示されない

また、「ボタン位置を指定」にした場合は、ボタン左上のXY座標を指定して、任意の位置にキャンセルボタンを置くことができます。

座標は固定値で指定するため、一つの作品内で条件によって位置を変えたり、といったことはできません。

▲「ボタン位置を指定」でキャンセルボタンを自由に配置。邪魔w

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] ダメージが0なら追加効果も発動しない

2023-11-10 02:13:28

物理タイプのスキルでHPダメージが0だった場合は、スキルの追加効果も乗らないようにするプラグインを作成しました。

RPGツクールMV/MZ、どちらにも対応しています。

例えば毒の追加効果がある通常攻撃の場合、ツクールのデフォルトシステムでは、相手の防御力が高くて通常攻撃が通らなくても、毒の追加効果が発生します。

しかしこれは何となく直感に反しています。ダメージが0だった場合は、毒などの追加効果も付与されないでいてほしい気がします。

というわけで、スキルの命中タイプが「物理攻撃」で、かつダメージのタイプがHPに作用する(HPダメージ、HP回復、HP吸収)スキルの場合、ダメージが0であったら使用効果が付かないようにするプラグインを作成しました。

注意点としては、命中タイプが「物理攻撃」で、かつダメージのタイプがHP系のスキル全てに適用される点と、全ての使用効果に適用される点です。

スキル個別に、あるいは使用効果個別に、ダメージが0の場合に発動させるか否かを設定する機能はありません。

毒の効果は乗らないでほしいが、追加のコモンイベントは発動してほしいとか、毒攻撃や麻痺攻撃はダメージが0なら追加効果が発動しないでほしいが、足払いはダメージが0でもスタンしてほしい、とかいった個別の設定には対応していませんので、ご注意ください。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 画面外のイベントをカスタム移動させる

2023-11-07 22:15:24

表示画面範囲外のイベントでも、自律移動が「カスタム」に指定されているイベントは、自律移動を行うようにするプラグインを作成しました。

RPGツクールMV/MZ、どちらにも対応しています。

ツクールの標準機能では、画面に表示されている範囲内またはその近くにあるイベントのみ自律移動を行い、遠く離れた位置にあるイベントは自律移動が「固定」以外に設定されていても、自動的には動かないようになっています。

これは負荷軽減のための仕組みです。

イベントを自律移動させるには、移動先のタイルが動けるかどうか、他の全てのイベントと重なっていないかどうかを調べる必要があります。広いマップで100以上のイベントが設置されているような場合、これを全てのイベントについて逐一処理すると、非常に重くなってしまいます。

そこで、画面表示に関わらないイベントは自律移動を行わないようにして、負荷を軽減しているわけです。

具体的には、標準画面サイズである17x13マスの場合、プレイヤーから横17マス、縦13マスよりも遠くにあるイベントは、自律移動を行わないようです。プレイヤーが画面の隅にいても表示範囲のイベントはちゃんと自律移動するので、基本的にはこの仕様で問題はありません。

ただし、自律移動が「カスタム」のイベントで、ダンジョンギミックになっていたり、複数のイベントで動きを合わせているような場合は、問題が起こり得ます。

例えば、左右に移動する足場に乗って進むダンジョンギミックを作る場合、足場の初期位置が遠く離れた場所にあると、待っていても永遠に来ない足場となってしまいます。

また、複数のイベントを並べて動かしたい場合、プレイヤーに近い方のイベントが先に動き出してしまうため、各イベントの動きが揃わなくなってしまいます。

下の動画は、連動するモブキャラの代表とも言える、池の周りを回る子供たちのイベントですが、本来は2人がくっついて動くべきところ、先頭の男の子の方が先に動き出してしまうため、女の子との間が開いてしまいます。

これを解消するために、自律移動が「カスタム」であるイベントは、遠く離れた位置にいても強制的に自律移動させるプラグインを作成しました。

「ランダム」や「近づく」のイベントは従来通り動きません。「カスタム」のイベントのみを動かします。

カスタム移動のイベントが大量に置かれている場合は、重くなる可能性がありますので、注意してください。

イベント個別に自律移動の可否を設定するような機能はありません。全てのカスタム移動のイベントが対象となります。

個別のイベントについて自律移動を制御したい場合は、砂川赳さんの「画面外イベントの自律移動を許可」のご利用をお勧めします。

基本的に画面外のイベントの自律移動が問題となるのはカスタム移動の場合だけであり、カスタム移動のイベントを1つのマップに大量に置くことも少ないので、設定不要ですぐに使えるものがあると便利だと思い、作成しました。

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