開発日誌

プラグイン/スクリプト

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] ショップでの利用金額を取得

2023-03-23 21:25:18

お店での購入金額と売却金額をそれぞれ指定した変数に取得するプラグインを作成しました。

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

イベントコマンドの「ショップの処理」で、購入した金額および売却した金額をそれぞれ指定した変数に格納することができます。

例えば、購入金額が0だった場合は、何も購入していないことになります。

購入金額が0より大きいか否かで分岐することによって、購入していたら「毎度ありがとうございます」、何も購入していなければ「買わないなら消えろ!」みたいに、購入の有無でメッセージを変えることができます。

購入金額が一定以上で特殊なメッセージを出したり、イベントを発生させたりすることもできます。

購入か売却かでメッセージを変更することもできます。

購入金額を別の変数に加算していくことで、累積の利用金額によってイベントを起こすことも可能です。

購入のみのショップであれば、前後の所持金を比較することで利用金額を算出することができますが、売却も可能なショップだと、前後の比較だけでは正しい利用金額が割り出せないので、このプラグインが必要になります。

変数に格納されるのは、直前の「ショップの処理」で変動した金額のみです。「ショップの処理」実行時に、購入金額と売却金額の変数は0にリセットされます。累積の利用金額を出したい場合は、別の変数を作って加算してやる必要があります。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 「盗む」スキルの実装

2023-03-16 22:28:14

敵の持っているアイテムを奪うスキル、いわゆる「盗む」スキルを実装できるプラグインを作成しました。

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

いわゆる「盗む」のスキルは、盗賊職の花形スキルとして数多くのRPGで採用されていますが、ツクールシリーズには標準では用意されていません。

既存のプラグインでより高機能なものもありましたが、もっと単純な設定で動くものが欲しかったので自作しました。

「盗む」ステートの作成

まず事前準備として、「盗む」が成功した状態を表すステートを1つ作成します。

このステートはダミーステートなので、名前以外の各種設定やこの状態になった時のメッセージなどは、設定しなくて構いません。むしろ行動制約やアイコンなど、余計な設定が付与されないように気を付けましょう。

そしてプラグインパラメータの「盗む成功ステート」で、この作成したステートを指定します。

このステートの付加をもって、「盗む」が成功したか否かを判定する仕組みとなっています。

「盗む」スキルの作成

次に「盗む」スキルを作成します。

スキルの使用効果で、先ほど作成した「盗む成功ステート」を付加するように設定します。

「ステート付加」の確率を調整することで、「盗む」スキルの基本成功率を設定することができます。

スキルのメッセージやアニメーションは、敵からアイテムを盗もうと狙っている時のものを設定します。「盗む」が成功/失敗した時のメッセージやアニメーションは、別で設定するようになっています。

また、敵キャラの特徴の「ステート有効度」を設定することで、敵キャラごとに「盗む」の成功しやすさを調整することができます。

なお、本プラグインで実装できる「盗む」スキルはアクター専用であり、敵がプレイヤーのアイテムを盗むような仕様には対応していません。

盗めるアイテムの設定

盗んだ時に手に入れるアイテムは、基本的に敵キャラのドロップアイテムがそのまま適用されます。

既存の「盗む」プラグインは、盗めるアイテムを別途メモ欄で指定する方式だったため、ドロップアイテムの設定をそのまま利用できるものとして開発しました。

プラグインパラメータの「盗めるアイテム」で、盗む対象となるドロップアイテムを指定できます。

「ドロップアイテム1~3のみ」を選ぶと、それぞれ指定したドロップアイテムのみが盗めるアイテムとなります。例えば「ドロップアイテム2のみ」を指定した時に、敵キャラのドロップアイテム2が設定されていなかった場合、その敵キャラは何も盗めるアイテムを持っていないことになります。

「ドロップアイテムの出現率依存」を選ぶと、複数のドロップアイテムの中から、出現率によってアイテムが決まります。例えば、アイテムAの出現率が1/2、アイテムBが1/4、アイテムCが1/8だった場合、A:B:C=4:2:1の割合、すなわちアイテムAが4/7の確率、アイテムBが2/7、アイテムCが1/7の確率で、それぞれ盗んだ時に手に入ります。

また、プラグインパラメータの「再度盗めるかどうか」をONにすると、同じ相手から何度でも盗むことができます。OFFにすると、一度盗んだ相手からは盗めなくなり、倒した時にアイテムもドロップしなくなります。

メッセージとアニメーション

プラグインパラメータで、以下のメッセージとアニメーションをそれぞれ指定できます。

  • 「盗む」が成功した時
  • 「盗む」が失敗した時
  • 相手が盗めるアイテムを何も持っていない時
  • 相手から既にアイテムを盗んでいてこれ以上盗めない時

メッセージでは、%1で自分のアクター名、%2で相手の敵キャラ名が表示できます。盗む成功時のメッセージでは、これに加えて%3で盗んだアイテム名を表示することができます。

相手から既にアイテムを盗み済みの判定は、「再度盗めるかどうか」がOFFの場合のみ有効です。

「盗めるアイテムなし」と「既に盗み済み」の判定は、「盗む」の成功判定より先に行われます。盗めるアイテムがないのに、何度も「盗む」にトライしてしまう、という心配はありません。

まとめ

いわゆる「盗む」のスキルは、かなり仕組みがそれ専用な上に、成功確率や盗めるアイテムといった細かい仕様が千差万別なため、なかなかツクールの標準機能として組み込むのが難しいと思います。

今回は個人的に標準的な「盗む」スキルとして、以下のような仕様で作りました。

  • 味方専用
  • 成功率はステートの付与率で判定
  • 盗めるアイテムはドロップアイテムに準拠
  • 何度でも盗めるかどうかはパラメータで変更可

したがって、以下のような仕様は、本プラグインでは対応していません。

  • 敵がプレイヤーのアイテムを盗む
  • 成功率に運以外のパラメータを関与させる
  • ドロップアイテムとは別で盗めるアイテムを設定

成功率などはプログラムの改造でできると思いますので、細かい仕様変更はご自身でお願いします。変更が大がかりでなく、汎用的だと思える要望であれば、修正も可能ですので、ご要望をお寄せください。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 敵キャラの複数回行動を細かく制御・2

2022-10-15 19:10:14

以前公開した「複数回行動条件設定プラグイン(PANDA_MultiAction.js)」の、バージョン2を作成しました。

RPGツクールMV/MZ両対応です。

※ Version 2.1.0 (2024-02-23)
n回目行動が設定されていないと行動しなくなる不具合を修正しました。

機能は特に変わっていませんが、複数回行動の条件の設定方法を刷新しています。

以前のバージョンは、敵キャラのメモ欄に行動パターンのインデックス番号を記述する方式だったのですが、インデックス番号が画面上に表示されているわけではないので、番号を数えるのが面倒でした。

新しいバージョンではそれを改善して、「行動パターン複数条件プラグイン(PANDA_ActionMultiCondition.js)」と同様の、ダミースキルを利用した指定方式に変更しました。

インデックス番号を数える必要もなく、行動パターンのリスト内で直接設定できるため、より直感的に条件設定を行うことができるでしょう。

敵キャラの複数回行動と行動パターン

以前の記事「敵キャラの複数回行動を細かく制御」と重複する内容になりますが、VX Ace以降のRPGツクールでは、特徴の「行動回数追加」で、1ターンに2回以上行動する敵キャラを簡単に作成できます。

しかし、複数回行動の内訳を自由に決めることはできないため、場合によっては同じ補助魔法を2回連続で唱えてしまったり、凶悪な全体攻撃を2回連続で放ってきたりといった事態に陥ります。

そこで役立つのが、複数回行動での条件を細かく設定できる、本プラグインです。

このプラグインを使えば、2回行動のうち1回目は通常攻撃で2回目は魔法攻撃とか、1回目は攻撃魔法で2回目は補助魔法とか、強力な全体ブレス攻撃の場合は1回行動で終了とかいった、細かい調整が可能になります。

旧バージョンとの違いは設定方法だけで、基本コンセプト等は一切変わっていません。複数回行動の制御について詳しくは、上記の記事も参考にしてください。

事前準備

今回のバージョンは事前準備が必要です。

まずは「データベース」の「スキル」で、ダミーのスキルを2つ追加します。

1つは複数回行動のうち特定の回にのみ有効な行動を指定するスキル。もう1つはその行動で複数回行動を終了させるためのスキルです。

名前は何でもいいですが、それぞれ「↓n回目行動」「↓行動終了」などとしておくと、分かりやすいかと思います。

ダミーのスキルなので、スキルの設定内容は何も変更しなくてOKです。

そしてこれらのスキルを、プラグインパラメータの「n回目行動条件スキル」と「行動終了条件スキル」にそれぞれ設定します。

以上で事前準備は完了です。

n回目行動条件

このプラグインでは、上記で設定したダミースキルを敵キャラの行動パターンとして組み込むことで、行動パターンの条件設定を行います。

複数回行動のうち特定の回にのみ有効な行動を指定するには、上記で指定した「n回目行動条件スキル」とレーティングの値を利用します。

「n回目行動条件スキル」以降の行動パターンは、複数回行動のうちレーティングで指定された値の回でのみ有効な行動となります。

設定の有効範囲は、次の「n回目行動条件スキル」が登場するまでです。

例えば以下のような行動パターンが設定されている場合、

スキル R
↓n回目行動 1
攻撃 5
ファイア 4
アイス 4
↓n回目行動 2
ヒール 5
体当たり 5

2回行動のうち、1回目の行動では「攻撃」「ファイア」「アイス」のいずれかが、2回目の行動では「ヒール」「体当たり」のいずれかが、行動パターンとして選択されます。

レーティングの値はデフォルトが5なので、間違えないように注意してください。

「n回目行動条件スキル」における採用条件の設定は無視されます。

最初の「n回目行動条件スキル」が登場するまでに設定された行動パターンは、全ての回で採用候補となります。

例えば以下のような行動パターンが設定されている場合、

スキル R
攻撃 5
↓n回目行動 1
6
↓n回目行動 2
ウェポンブレス 4
アーマーブレス 4

2回行動のうち、1回目の行動では「攻撃」「炎」のいずれか、2回目の行動では「攻撃」「ウェポンブレス」「アーマーブレス」のいずれかとなり、「攻撃」は常に採用候補となります。

3回行動のうち、1回目と3回目で有効な行動とか、2回目と3回目で有効な行動とか、そういった指定の仕方はできません。そのようなパターンを指定したい場合は、お手数ですがそれぞれの回で行動パターンを設定してください。

また、レーティングに設定できる値は9までなので、1ターンに10回以上行動する敵キャラは指定できませんが、そんなに行動させることもないだろうということで、この方式を採用しています。

行動終了条件

普段は2回行動するけれど、大技を放ったターンは手加減のため1回で行動を終えたい、というケースがあります。

そういう場合に活用できるのが「行動終了条件スキル」です。

このダミースキルが設定された以降の行動パターンは、その行動で複数回行動を終えるようになります。

ダミースキルのため、条件やレーティングの設定は無視されます。

設定の有効範囲は、次の「n回目行動条件スキル」が登場するまでです。

例えば以下のような行動パターンが設定されている場合、

スキル R
攻撃 5
↓n回目行動 1
ファイア 5
↓行動終了 1
フレイム 4
↓n回目行動 2
アイス 5
↓行動終了 1
ブリザード 4
↓n回目行動 3
ヒール 5

3回行動のうち、1回目の行動では「攻撃」「ファイア」「フレイム」のいずれかが選択され、「フレイム」が採用された場合はそこで行動を終了します。

2回目の行動では「攻撃」「アイス」「ブリザード」のいずれかが選択され、「ブリザード」が採用された場合はそこで行動を終了します。

3回目の行動では「攻撃」「ヒール」のいずれかが選択されます。

全体が大ダメージを受けるような大技の際にも複数回行動が発動すると、プレイヤーの負担が大きくなります。この行動終了の仕組みを利用すれば、適度なバランス調整が行えるでしょう。

複数条件プラグインとの併用

拙作「行動パターン複数条件プラグイン(PANDA_ActionMultiCondition.js)」との併用も可能です。本バージョンで、より併用がしやすくなりました。

例えば右のような行動パターンの場合、3回目の行動、かつHPが0~70%の範囲で、かつターン数が2+3*Xに合致する場合のみ、ヒールが行動候補となります。

「複数条件プラグイン」による追加条件の指定は、直後の行動パターンのみに影響するのに対して、本「複数回行動条件設定プラグイン」によるn回目行動条件と行動終了条件の指定は、次のn回目行動条件が登場するまで影響する、という違いがあります。どちらも、その仕様の方が使いやすいため、このようにしているのですが、間違えないよう注意してください。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 隊列歩行のメンバーを操作

2022-09-24 22:31:33

RPGツクールMZで、隊列歩行のメンバーの向きを変えたり、現在の位置を取得したり、キャラクターをイベントに変換して自由に動かしたりできるような、プラグインを作成しました。

いずれもプラグインコマンドで操作するようになっているため、RPGツクールMZ専用のプラグインとなっています。

システムのオプション設定で「パーティの隊列歩行」にチェックを入れると、いわゆるドラクエのように、主人公の後ろをパーティーの仲間メンバーがついてくるようになります。

これを隊列歩行と呼び、最近ではRPGツクールVX Ace以降で採用されています。(かつてはRPGツクール95にもあった)

しかし、この隊列歩行のメンバー(ツクールの用語的にはフォロワー)を直接操作するイベントコマンドは用意されておらず、イベント等で隊列メンバーを動かしたりしたい時に困ります。

そこで、プラグインコマンドを使って隊列メンバーを操作できるようにしました。

用途に応じてプラグインコマンドは3種類あります。

  • 隊列メンバーの向き指定
  • 隊列メンバーの位置取得
  • 隊列メンバーをイベントに変換

以下、1つずつ使い方を解説します。

隊列メンバーの向き指定

対象のメンバーを指定した向きに向かせるプラグインコマンドです。

対象となる隊列メンバーと、向かせたい向きの2つをパラメータで指定します。

代表的な使い方としては、イベントキャラに話しかけて、隊列メンバーがそれに対して反応を返すような時、隊列メンバーがそのイベントキャラの方向を向いていない場合があります。

このままだと、あさっての方向を向いたまま隊列メンバーキャラが話すことになってしまいます。そこでこのプラグインコマンドで対象キャラの向きを変えてやれば、ちゃんと相手の方向を向いて話すようになるので、自然な演出ができます。

▲あさっての方向を向いて喋るプリシア

▲ちゃんと前を向いて喋るようになった

対象となるメンバーは番号で指定します。1を指定すると1人目の隊列メンバー、すなわち2人目のパーティーメンバーを指定したことになるので、注意してください。1人目のパーティーメンバー、すなわち主人公キャラの向きを変えたい場合は、普通に「移動ルートの設定」で設定してください。

また、対象となる隊列メンバー番号に0を指定すると、隊列歩行のメンバー全員の向きを同時に指定できます。

向きは、上下左右の4方向のほか、プレイヤーキャラクターと同じ向きを指定することも可能です。

何かを発見したり、誰かと会話するようなイベントで、メンバー全員に同じ方向を向かせたい場合は、隊列メンバー番号に0を、向きに「プレイヤーと同じ向き」を指定してやれば、たいていの場合は自然な動きになります。

隊列メンバーの位置取得

指定した隊列歩行メンバーの、現在の位置(マップXY座標)と向きをそれぞれ変数に取得するプラグインコマンドです。

対象となる隊列メンバーの番号と、それぞれマップX座標、マップY座標、向きを受け取る変数を指定します。

隊列メンバー番号は前述の「隊列メンバーの向き指定」と同様に、1が1人目の隊列メンバー(2人目のパーティーメンバー)となります。主人公キャラの位置や向きは、普通に「変数の操作」のゲームデータで取得が可能です。0で全員の指定とかは当然できません。

変数は一部の項目のみ指定することもできます。位置だけ取得できればよくて向きは不要、といった場合には、向きの変数指定を「なし」にすればOKです。

想定している使い方としては、通せんぼしているキャラを移動させる際に、隊列歩行のメンバーの現在位置を取得して条件分岐し、隊列歩行と重ならないように移動させるとか、隊列メンバーの現在地や向きに応じて他のキャラを移動させたりといったケースが考えられます。

▲左にケイシーがいる場合は右によける

▲右にケイシーがいる場合は左によける

また応用として、隊列メンバーにアニメーションやフキダシアイコンを表示することも、標準機能ではできませんが、以下のようにすれば実現できます。

  1. 透明の画像を設定したダミーイベントを用意する
  2. 対象となるメンバーの位置を変数に取得する
  3. イベントの位置設定でダミーイベントの位置を変数で指定する
  4. ダミーイベントに対してアニメーションやフキダシアイコンを表示させる
  5. ダミーイベントを邪魔にならない位置に戻す

▲ダミーイベントをメンバーの位置に移動

▲隊列メンバーにフキダシアイコンを表示

隊列メンバーをイベントに変換

本プラグインのメイン機能にして、使い方もやや難しいプラグインコマンドです。

このコマンドを使うと、隊列歩行メンバーのキャラクターをイベントに変換することができます。変換後は単なる通常のイベントとなるため、移動ルートの設定やフキダシアイコンの表示、アニメーションの表示など、自由自在な演出が可能です。

使い方としては、まずマップ上に隊列メンバー用のイベントを設置します。画像は空、位置はマップの端などどこでもOKです。オプションで「すり抜け」にチェックをしておくと、障害物に引っかかって動きが止まるのを避けられるのでよいかもしれません。

そしてイベント内でこのプラグインコマンドを発動させます。

イベントIDリストに、1番目の隊列歩行メンバー(2人目のパーティーメンバー)から順番に、変換先のイベントのID番号を指定します。

こうすると、隊列メンバーの現在位置・向き・画像が、指定されたイベントにそれぞれ引き継がれ、隊列歩行のグラフィックは消えます。

あとは、このイベントを隊列メンバーとして動かしてやればOKです。

一部のメンバーだけイベントに変換したい場合は、イベントIDに0を指定すると、そのメンバーはイベントに変換されません。

また、オプションとして「隊列歩行継続」のON/OFFがあります。ONにすると隊列歩行は継続したままになるので、一部のメンバーのみイベントに変換してパーティーから離脱させる場合は役に立ちます。逆に全メンバーをイベントに変換する場合はOFFを指定して、イベント終了後に再度集合させ、イベントコマンドの「隊列歩行の変更」でONにしてやるといいでしょう。

隊列歩行からイベントシーンに突入する際、一度暗転を挟んで、その間に隊列歩行を解除してメンバーキャラクターをイベントとして配置するといった手法が、ツクール製の作品ではよく用いられます。

しかし、いちいち暗転を挟むとテンポが悪くなったり、またイベント作成上の都合であることがどうしても垣間見えてしまいます。

シームレスにイベントシーンに突入したい場合は、このプラグインコマンドが役に立つでしょう。

ただし、隊列メンバーの取り得る位置は数十パターンに及ぶため、キャラを動かす際はそれぞれの初期位置での場合分けがけっこう大変です。

まとめ

イベントキャラの操作系コマンドでは、プレイヤーや「このイベント」を操作することは可能ですが、隊列メンバーを直接的に操作する仕組みは、標準では用意されていません。

おそらく隊列メンバーは人数に決まりがないため、標準機能として用意するには、UI的にも簡単ではないのでしょう。

隊列歩行のメンバーを操作するプラグインは他にもいくつかありましたが、よく使う向きの変更や位置の取得に簡易なプラグインコマンドが欲しかったので、自分でプラグインを作成しました。

隊列メンバーをイベントに変換するコマンドは、やや癖があって使い方が難しいかもしれませんが、一度イベントに変換してしまえば、後は通常のイベントと同じように扱えるため、コツさえ掴んでしまえば、非常に便利だと思います。

このプラグインコマンドを使って、隊列歩行の仲間たちもイベントシーンに参加させてやると、演出効果が高まることでしょう。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] アイテムやスキルの使用可否をスイッチで制御

2022-09-08 00:24:43

特定のスイッチがONの時だけ、アイテムやスキルを使用可能にするプラグインを作成しました。

RPGツクールMV/MZの両方に対応しています。

かつてVX用のスクリプトとして公開した「使用可否スイッチ制御スクリプト」の、MV/MZ版となります。

アイテムやスキルのメモ欄に <enableSwitch:n> と記述すると、そのアイテムやスキルは、n番のスイッチがONの時にだけ使用可能となり、OFFの時は使用不可能になります。戦闘中かメニュー画面か、消費MPなどの使用条件は、もちろんこれとは別に適用されます。

具体的な使用イメージは、現在のマップがダンジョンか否かというスイッチを用意して、ダンジョンからの脱出魔法やアイテムはそのスイッチがONの時にだけ使用可能にするといった使い方や、特定のイベント中は移動魔法・アイテムを使えなくする、といった使い方でしょうか。

スイッチのON/OFFで表現できる状態であれば、何でも条件にできます。

スイッチ以外でも少し工夫することで対応可能です。例えば変数の値が一定値以上という条件であれば、並列処理でその変数の値を監視して、一定値以上の時にスイッチをONに、一定値未満の時にスイッチをOFFにしてやれば、対応できます。

似たようなプラグインは多数存在し、スイッチ以外を使用条件にできる高機能なものもありますが、スキルだけでアイテムには対応していなかったり、他のベースプラグインを必要としたり、高機能すぎて設定方法が複雑だったりしたので、もっと単純なものが欲しいと思って自作しました。

たぶん同じような単純機能のプラグインもあるとは思いますが、見つけきれなかった……。

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