天候機能を拡張【RPGツクールMZ&MVプラグイン】

2021年05月28日

 天候機能を拡張します。
 通常は不可能な強さを指定したり、オリジナルの天候を作ったりできます。


特徴

  • 天候の強さ、向き、速度、色などを自由に変更
  • 指定した画像を降らせる
  • 戦闘時も天候を有効に

目次


導入方法(Install)

更新履歴(History)

使用方法(Usage)

MZ用プラグインコマンド(PluginCommandMZ)

MV用プラグインコマンド(PluginCommandMV)

プラグインパラメータ(基本)

戦闘中も天候を表示(WeatherOnBattle)

天候の強さ(MaxSpritesByPower)

暗くする度合(DimmerLevel)

暗くする限界値(DimmerLimit)

テンプレート一覧(TemplateList)


プラグインパラメータ(テンプレート:基本設定)

テンプレートID(TemplateId)

タイプ(Type)

強さ(Power)

時間(Duration)

完了までウェイト(Wait)

暗くする度合(DimmerLevel)

画像(Image)


プラグインパラメータ(テンプレート:画像を指定しない場合)

色調(Color)

画像を個別作成(IndividualBitmap)

粒の横幅(ParticleWidth)

粒の縦幅(ParticleHeight)


プラグインパラメータ(テンプレート:速度設定)

速度X(SpeedX)

速度Y(SpeedY)


プラグインパラメータ(テンプレート:位置設定)

発生地点の横範囲(StartWidth)

発生地点の縦範囲(StartHeight)

発生地点のX座標補正(AdjustStartX)

発生地点のY座標補正(AdjustStartY)


プラグインパラメータ(テンプレート:表示設定)

合成する色調(BlendColor)

合成方法(BlendMode)

拡大率(Scale)

角度(Angle)


プラグインパラメータ(テンプレート:不透明度設定)

開始不透明度(StartOpacityBase)

開始不透明度分散(StartOpacityRandom)

不透明度減少値(ReduceOpacity)

終了不透明度(EndOpacity)


導入方法(install)


 以下のファイルをダウンロードし 、[プロジェクト]\js\plugins に放り込みます。ツクールのプラグイン管理から機能をONにしてください。
 ※このプラグインはMV、MZの両方で有効です。

 NRP_WeatherEX.js ver1.00(2021/05/28)

更新履歴(History)


2021/05/28(ver1.00)

  • 公開!

使用方法(Usage)


 プラグインパラメータを調整すれば、既存の天候の挙動を調整できます。

 プラグインコマンドを使用することで、既存の天候(雨、嵐、雪)を通常とは異なる設定で呼び出すことが可能となります。

 また『テンプレート一覧』に詳細な設定をすることで、オリジナルの天候を作成可能です。
 作成した天候はプラグインコマンドで呼び出します。

MZ用プラグインコマンド(PluginCommandMZ)


天候の設定

 天候を変更します。
 テンプレートIDを指定すれば、設定を呼び出すことが可能です。

 初期状態では以下が利用可能です。
  • colorful:カラフルな雪が降り注ぎます。
  • sandstorm:横に向かって砂嵐のような線が流れます。
  • earthlight:地面から上に向かって光の球が上昇します。



 その他にも様々な設定が可能です。
 詳細はプラグインコマンド内の説明を参照してください。
 テンプレートに対して、一部の設定だけを変更することも可能です。

 なお、終了する場合はタイプを『なし』に指定すればOKです。
 普通のイベントコマンドでも問題ありません。

MV用プラグインコマンド(PluginCommandMV)


NRP.WeatherEX.Id [テンプレートID]

 処理内容はMZ版と同じです。
 ※大文字小文字は不問。[]は含めないでください。

 このコマンドを指定する前に、オプション(下記参照)を指定可能です。
 例えば、以下のようになります。
NRP.WeatherEX.Power 20
NRP.WeatherEX.Time 60
NRP.WeatherEX.Wait true
NRP.WeatherEX.Id colorful

 Powerは強さ、Timeは時間、Waitは完了までウェイトに相当します。
 ※MZ版と異なり、プラグインコマンドでの詳細な設定はできません。
  作者が面倒になって諦めました。
  そんなわけで、テンプレート内に設定してください。


 また、テンプレートからの呼び出しを行わない場合は、タイプ(rain, storm, snowのいずれか)を指定すればOKです。
NRP.WeatherEX.Power 20
NRP.WeatherEX.Time 60
NRP.WeatherEX.Wait true
NRP.WeatherEX.Type rain


プラグインパラメータ(基本)


戦闘中も天候を表示(WeatherOnBattle)

 戦闘中も天候を表示するようにします。戦闘中の天候変化も有効となります。
 ※公式のWeatherOnBattle.jsにも同様の機能がありますが、あちらは戦闘中の天候変化は受けつけない模様です。

天候の強さ(MaxSpritesByPower)

 天候の強さです。10を基準にして雨や雪の降る量を調整できます。

暗くする度合(DimmerLevel)

 天候の強さに応じて画面を暗くする度合いです。
 初期値は6。一段階毎にX/255暗くなります。

暗くする限界値(DimmerLimit)

 画面を暗くする効果の限界値です。強さを上げても、これ以上暗くならないようにします。

 なお、これらの画面を暗くする効果は、ツクールMV〜MZの標準機能です。
 個人的には雪の白さを強調したい場面などでも勝手に暗くなるので、ありがた迷惑だったりします。
 そういった場合、0にすると無効化できます。

テンプレート一覧(TemplateList)

 定義された天候テンプレートの一覧です。新しいテンプレートの追加も可能です。

プラグインパラメータ(テンプレート:基本設定)


 以下はテンプレートの設定となります。

テンプレートID(TemplateId)

 テンプレートを呼び出すためのIDです。

タイプ(Type)

 天候の種類です。雪の場合は円形、他の場合は線になります。

強さ(Power)

 天候の強さです。

時間(Duration)

 天候変化にかける時間です。60が1秒に相当します。

完了までウェイト(Wait)

 天候変化の終了までウェイトします。

暗くする度合(DimmerLevel)

 天候の強さに応じて画面を暗くする度合いです。初期値は6。強さが増える毎にX/255ずつ暗くなります。

画像(Image)

 粒(パーティクル)に使用する画像です。これを指定した場合は色調、横幅、縦幅が無視されます。

プラグインパラメータ(テンプレート:画像を指定しない場合)


 粒に画像を指定しなかった場合のみ、有効となる項目です。
 粒の表示に関する設定が可能です。

色調(Color)

 粒の色調です。例1:"white", 例2:"#FF0000", 例3:"[255, 64, 0]"

 例3の形式のみ数式可です。
 例えば、サンプルの『colorful』では[Math.randomInt(255), Math.randomInt(255), Math.randomInt(255)]とすることで、粒毎に色をランダムで変えています。下の『画像を個別作成』をオンにする必要があります。

画像を個別作成(IndividualBitmap)

 粒の画像を個別に作成します。
 オンにすると少し負荷が上がりますが、粒毎の色調変更などができるようになります。

粒の横幅(ParticleWidth)

 粒の横幅です。タイプが雪の場合は直径になります。

粒の縦幅(ParticleHeight)

 粒の縦幅です。タイプが雪の場合は無効です。

プラグインパラメータ(テンプレート:速度設定)


 粒の移動速度に対する設定です。移動方向にも影響します。

速度X(SpeedX)

 X方向の速度です。マイナスにすると左に移動します。

速度Y(SpeedY)

 Y方向の速度です。マイナスにすると上に移動します。

プラグインパラメータ(テンプレート:位置設定)


 粒が発生する位置の調整を行います。
 設定によっては粒の発生地点に隙間ができるので、その場合はこれらの値を調整してください。

発生地点の横範囲(StartWidth)

 粒が発生する横範囲です。数式可。
 初期値は『Graphics.width + 100』。要するに画面の横幅+100の意味です。

発生地点の縦範囲(StartHeight)

 粒が発生する縦範囲です。数式可。
 初期値は『Graphics.height + 200』。要するに画面の縦幅+200の意味です。

発生地点のX座標補正(AdjustStartX)

 粒が発生するX座標の補正値です。初期値は-100

発生地点のY座標補正(AdjustStartY)

 粒が発生するY座標の補正値です。初期値は-200

プラグインパラメータ(テンプレート:表示設定)


 粒の表示に関する設定です。

合成する色調(BlendColor)

 色調を変更します。例:[255, 255, 255, 255]赤,緑,青,強さの順。
 こちらは画像を設定した場合にも有効ですが、非常に負荷が高いので注意。

合成方法(BlendMode)

 粒画像の合成方法です。
 値はMVのアニメーションを同じです。

拡大率(Scale)

 粒の拡大率。1が基準です。数式可。
 例えば『Math.random() * 3』にすれば、粒毎に0〜3倍に大きさが変動します。

角度(Angle)

 粒の角度です。0〜360で指定してください。
 『速度X』『速度Y』を指定していない場合、進行方向にも影響します。

プラグインパラメータ(テンプレート:不透明度設定)


 粒の不透明度に関する設定です。

開始不透明度(StartOpacityBase)

 粒が生成される際の不透明度です。最大255。初期値は160です。

開始不透明度分散(StartOpacityRandom)

 粒が生成される際の不透明度の分散値です。初期値は60。開始不透明度にこの値がランダムで加算されます。

不透明度減少値(ReduceOpacity)

 フレーム毎に減少させる粒の不透明度です。

終了不透明度(EndOpacity)

 不透明度がこの値より小さくなった際、粒を消去&再作成します。

 >RPGツクールMZ&MV目次に戻る
posted by 砂川赳 at 11:51 | RPGツクールMZ&MV | このブログの読者になる | 更新情報をチェックする

キャラクターの向き固定時も向き変更を有効に【RPGツクールMZ&MVプラグイン】

2021年05月08日

 向き固定状態のキャラクターに対しても、向きの変更命令を有効にします。


 ツクールMV〜MZでは、向き固定状態のキャラクターに対して、移動ルートの設定から向き変更を指示しても無視される仕様です。
 しかしながら、この仕様はあまり合理的ではありません。
 そもそも、向きを変更する意図がないなら指示などしないからです。

 いちいち、向き固定を解除する方法もありますが、手間がかかる上にミスもしやすく、やはり合理的ではありません。

 というわけで、ツクール2000などと同じように、命令時のみ向き変更を受けつけるように仕様を変更します。

 該当の処理は以下の通りです。

  • 移動ルートの設定の向き変更
  • 自律移動がカスタムの際の向き変更
  • イベントの位置設定時の向き変更


目次


導入方法(Install)

更新履歴(History)

使用方法(Usage)


導入方法(install)


 以下のファイルをダウンロードし 、[プロジェクト]\js\plugins に放り込みます。ツクールのプラグイン管理から機能をONにしてください。
 ※このプラグインはMV、MZの両方で有効です。

 NRP_CharacterDirectionPriority.js ver1.00(2021/05/08)

更新履歴(History)


2021/05/08(ver1.00)

  • 公開!

使用方法(Usage)


 プラグインを適用するだけでOKです。
 パラメータなどはありません。

 >RPGツクールMZ&MV目次に戻る
posted by 砂川赳 at 11:06 | RPGツクールMZ&MV | このブログの読者になる | 更新情報をチェックする

編集した画像を自動的に拡大するプログラム【RPGツクールMZ&MV】

2021年05月06日

 現代のツクールでツクール2000のドット絵を使おう!から続きます。

 更新された画像を検出し、拡大とコピーを同時に行うプログラムです。


 ツクール2000(あるいはSFC)と同等の解像度のドット絵を編集すれば、自動的に拡大してツクールMZやMVのプロジェクトへと反映します。これにより手動での拡大&縮小を行う手間を省きます。
 (ツクールXP〜VXAceでも設定を変えれば使えます。)

目次


注意!(caution!)

履歴(history)

導入(install)

元画像用のフォルダを作成(original folder)

設定ファイルの編集(setting)

元画像の配置(original image)

実行(execute)

スケジュール登録(schedule)

同期を秒単位に(extension) 2021/05/06追記


注意!(caution!)


 ファイルの上書きを行うプログラムであるため、誤って上書きするなどの事故に注意してください。念のため、先にプロジェクトのバックアップを取ることを推奨します。
 くれぐれも自己責任でよろしくお願いします。


 Macなど非Windows環境ではたぶん動きません。

更新履歴(history)


2021/05/06


2020/11/01(ver1.00)

  • 公開!


導入(install)


 以下のzipファイルをダウンロードして解凍し、任意の場所に配置してください。
 https://newrpg.up.seesaa.net/mv/NRP_ImageScaleSync.zip

 ※動作には.NET Core 3.1が必要な模様です。
  インストールされていない場合は以下よりDLしてください。
  https://dotnet.microsoft.com/download/dotnet


 その後、以下の使用法を参考に設定と実行を行ってください。

元画像用のフォルダを作成


 元画像を配置するフォルダを作成します。以降、素材を編集する際はこのフォルダ内のファイルに対して行うようにします。

 解凍したフォルダに含まれている『original』フォルダをどこかにコピーするのが手っ取り早いです。ゲームプロジェクトの中でも外でも好きな場所に配置してください。

 中身は単なる空のフォルダ群ですが、『@CHARACTERS』『@TILESETS』というように、ツクールMZやMVで使用されているフォルダに対応した名前になっています。
 ※フォルダ名は自分で決めても構いません。ただし、事故防止のため分かりやすいものにしたほうが安全です。

設定ファイルの編集(setting)


 解凍したフォルダにある『setting.xml』が設定ファイルです。テキストエディタで開いて編集してください。
 中身は以下のようになっています。(見やすいように編集しています。)

<?xml version="1.0" encoding="utf-8"?>
<setting>
<!-- 前回更新日時(※この後に更新された画像を対象とします。) -->
<lastTime>2020/10/31 00:00:00</lastTime>

<!-- パス用の文字列を定義します。 -->
<!-- <FROM_DIR>の値は%FROM_DIR%, <TO_DIR>の値は%TO_DIR%というように参照できます。 -->

<define>
<FROM_DIR>C:\Project\img\original</FROM_DIR>
<TO_DIR>C:\Project\img</TO_DIR>
</define>

<!-- コピー後の画像倍率 -->
<scale>3</scale>

<!-- from -> toへコピー -->
<path>
<from>%FROM_DIR%\@BATTLEBACS1</from>
<to>%TO_DIR%\battlebacks1</to>
</path>

<path>
<from>%FROM_DIR%\@BATTLEBACS2</from>
<to>%TO_DIR%\battlebacks2</to>
</path>

 〜中略〜

<!-- MV Only (必要なら注釈を外してください) -->
<!--
<path>
<from>%FROM_DIR%\@ANIMATIONS</from>
<to>%TO_DIR%\animations</to>
<scale>2</scale>
</path>
-->


</setting>

 以下、解説していきます。

<lastTime>2020/10/31 00:00:00</lastTime>

 最後にプログラムを実行した時刻です。
 プログラムの実行が成功する度、自動的に値が書き換えられます。
 この時刻と画像ファイルの更新時刻を比較することで、新たに更新された画像だけを抽出しています。

 手動で古い時刻を設定すれば、強制的に画像を処理対象とすることもできます。

<FROM_DIR>C:\Project\img\original</FROM_DIR>

 画像のコピー元となる大元のフォルダのパスです。
 %FROM_DIR%と入力すれば、設定値を参照できます。

 先程配置したフォルダのパスを指定してください。

<TO_DIR>C:\Project\img</TO_DIR>

 画像のコピー先となる大元のフォルダのパスです。
 %TO_DIR%と入力すれば、設定値を参照できます。

 対象となるゲームプロジェクトのimgフォルダを指定してください。

<scale>3</scale>

 画像を拡大する倍率です。通常は元のまま3倍にしておけばOKです。
 コピーするフォルダによって、個別に倍率を指定(後述)することもできます。

<path></path>

 実際にコピーを行う各フォルダのパスを指定します。

<path>
<from>%FROM_DIR%\@BATTLEBACS1</from>
<to>%TO_DIR%\battlebacks1</to>
</path>

 同じようにして『battlebacks1』『battlebacks2』『characters』『enemies』『faces』『parallaxes』『pictures』『sv_actors』『sv_enemies』『system』『tilesets』『titles1』『titles2』の各フォルダのパスが最初から定義されています。

『%FROM_DIR%』『%TO_DIR%』の値は上で説明した通りです。あちらの設定さえ行えば、こちらの変更はほぼ不要です。
 ちなみに『%FROM_DIR%』『%TO_DIR%』を使わず普通に絶対パスを指定しても構いません。

 ただし『animations』だけは例外なので注意してください。MZだと初期状態では存在しないフォルダのため、注釈化しています。
 必要ならば<!---->を消して注釈を解除してください。
 ※なお、存在しないフォルダを指定するとエラーログを出力する仕様です。


<!--
<path>
<from>%FROM_DIR%\@ANIMATIONS</from>
<to>%TO_DIR%\animations</to>
<scale>2</scale>
</path>
-->


 また、ここでは<scale>2</scale>というように個別の倍率を指定しています。アニメーションのみ素材規格の比率が異なるためです。

 以上で設定ファイルの編集は終わりです。

元画像の配置


 元画像用のフォルダに、原寸大の画像ファイルを配置してください。

 背景色の指定がない256色画像の場合、パレットの左上の色を透明な背景色として使用します。

注意!

 背景色と同色(RGB値が完全一致)を他の箇所に使っている場合、意図しない部分が透明となる可能性があります。
 例えば、『背景が黒』『目の色も黒』という画像を処理した場合、変換後の画像が目の色まで透明になってしまいます。
 対処するには「RGB値を1つずらす」「背景色をあらかじめ指定する」といった方法があります。


 なお、実行対象となるのは<lastTime>で設定した時刻よりも、後に更新されたファイルだけです。必要ならばタイムスタンプを編集するか、<lastTime>の時刻を変更してください。

 参考:タイムスタンプを変更できるフリーソフト。
 https://dns-plus.net/ctime.html

 ※あまり多くのファイルをまとめて処理すると時間がかかるので、少しずつ対象を増やしていくことをオススメします。

実行(execute)


 ようやくプログラムを実行します。
 解凍したフォルダにある『ImageScaleSync.exe』を実行してください。

 ※注意!:実行する前に『setting.xml』を閉じてください。編集中のままだと実行に失敗する仕様です。

 実行状況は表示されませんが、コピー先のファイルが更新されていくので、そちらを確認してください。
 ※ファイルの大きさにもよりますが、1ファイル1秒程度の時間がかかります。

 また処理が完了した場合は、実行ファイルと同じフォルダにログが出力されます。
 成功の場合は『result.log』、エラーの場合は『error.log』が出力されますので確認してください。

 一度実行してしまえば、以降は更新された差分だけがコピーされるようになります。

 ツクール上からも確認して、素材が想定通りに反映されていることを確認してください。

スケジュール登録(schedule)


 さて、exeを実行することによって画像が拡大&反映されるようになりました。
 ……が、現状では画像を更新する度にいちいち手動でexeを実行する必要があります。

 そこで実行ファイルをスケジュール登録することで、定期的に更新を監視してコピーを行うようにします。
 Windowsのタスクスケジューラで指定してもよいし、同等の機能を持ったフリーソフトを使っても構いません。

 ここでは以下のフリーソフトを使って手順を説明します。

 Multi Function Alarm
 https://forest.watch.impress.co.jp/library/software/mltfncalarm/

 1.ダウンロード&解凍して、適当なフォルダに配置します。

 2.『MFA.exe』を実行します。

 3.サンプルのメッセージが色々出ますので適当にOKしていきます。

 4.最後の「スタートアップにMFA.exeのショートカット作成しますか?」のメッセージも「はい」にしてください。
 これにより、PC起動時にソフトが起動するようになります。

 5.色々設定がありますが、全選択&削除でOKです。



 6.さらに追加を押して、以下のように設定します。
 『入力・修正』から『ImageScaleSync.exe』のパスを設定してください。


 ご覧の通り、1分毎にexeを実行する設定にしてみました。つまり更新した素材の反映には最長1分かかります。このソフトではこれ以上短くはできません。
 もし必要なら『ImageScaleSync.exe』を直接叩けば即時反映されます。
 ※実用上そこまで困ることもないと思うのですが、秒単位で監視したいならタスクスケジューラや他のソフトを使えばよいかもしれません。

 6.OK→OKで閉じます。
 以後、このソフトは右下のタスクトレイに格納されます。タスクスケジューラに設定した場合と違って、存在を忘れにくいので安心ですね。
 もし、不要になった場合はスタートアップからショートカットを削除するなりしてください。
 ※ちなみに、スタートアップはエクスプローラーで『shell:startup』のアドレスを叩けば開けます。

 これにて設定完了です。
 あとは実際に画像素材を編集してみて、1分ほどでプロジェクトに反映されるかを確認してみてください。

 以上、お疲れさまでした!
 拡大・縮小の手間がいらない快適なドット絵ライフをお楽しみください。

同期を秒単位に(extension) 2021/05/06追記


 さらなる改良を行い、画像の反映を10秒毎に行うようにしてみました。
 負荷軽減のため、RPGツクールMZが起動中の場合のみ同期処理を実行するようにしています。

 以下のvbsファイルを保存し、『ImageScaleSync.exe』と同じフォルダに配置してください。
 exeではなく、vbsのほうをスケジュール登録すればOKです。

 ImageScaleSync.vbs

 中身は以下の通りです。
 ツクールMVの場合は、赤字部分を『RPGMV.exe』に変更してください。

'監視するプロセス名
'MVの場合はRPGMV.exeに変更すればOK。
Dim processName
processName = "RPGMZ.exe"

Dim exeName
exeName = "ImageScaleSync.exe"

Dim Service,QfeSet
Set Service = CreateObject("WbemScripting.SWbemLocator").ConnectServer
Set QfeSet = Service.ExecQuery("Select * From Win32_Process Where Caption='" & processName & "'")

'プロセスが存在するなら処理実行
If QfeSet.Count > 0 Then
Set objWShell = CreateObject("Wscript.Shell")

'処理実行
objWShell.run exeName, vbHide

'10000ミリ秒(10秒)待って再度処理実行
'以降、繰り返し
WScript.Sleep 10000
objWShell.run exeName, vbHide

WScript.Sleep 10000
objWShell.run exeName, vbHide

WScript.Sleep 10000
objWShell.run exeName, vbHide

WScript.Sleep 10000
objWShell.run exeName, vbHide

WScript.Sleep 10000
objWShell.run exeName, vbHide
End If

 ごく単純に「処理実行→10秒待つ→処理実行」を6回繰り返しているだけです。
 このvbs自体は1分毎に実行されるので、合わせて10秒毎にプログラムが実行されます。 

 例えば、5秒毎にしたい場合は「WScript.Sleep 10000」の値を『5000』に変更して処理を12回実行するようにすればOKです。

 >RPGツクールMZ&MV目次に戻る
posted by 砂川赳 at 10:26 | RPGツクールMZ&MV | このブログの読者になる | 更新情報をチェックする