投稿記事

2024年 04月の記事 (7)

MIZU 2024/04/21 12:08

RPGツクールMZ(クエストプラグインを活用させていただいて

本記事はJSをほとんど弄ったことがない素人の編集のため間違っている場合があります。
あらかじめ御了承ください。
また、本記事を参考に改変した場合のエラー及び損害については自己責任でお願いします。
バックアップは必ず必要です


・本題

RPGツクールMZのクエストプラグインといえば『うなぎおおとろ様』のクエストプラグインではないでしょうか?

リンク

とても使いやすいプラグインのため数多くの方が使用していると思います。
そこで、自分が扱いやすいように改変した内容を紹介します。


①クエスト文の自動改行を停止する

これはクエスト内容がある一定の文字数で自動改行するようプラグインに組み込まれています。
自分の場合は結構クエスト内容が長文になる場合があり、文字数制限もある事から自動に改行されると不利益の方が多くなりました。
そこで以下の行をfalseにしました。

2204行付近の

    isTextTurn(array, begin, end, width) {
        const text = array.slice(begin, end).join("");
        if (this._window.textWidth(text) >= width)
            return true;
        return false;
    }

を次のように改変します。

    isTextTurn(array, begin, end, width) {
        const text = array.slice(begin, end).join("");
        if (this._window.textWidth(text) >= width)
            return false;
        return false;
    }

これで自動改行が無くなりました。
ただし、文字がはみ出る可能性が出ますので自分でクエスト文は確認する必要があります。


②アイテム報酬タイプの『any』に個数を載せる

通常時では『anyタイプ』を選択した時に個数表示はされません。
ここで問題となったのが自分が採用している合成プラグインです。
合成レシピを詳しい名称で書くとアイテム欄の文字が圧迫されます。
なのでアイテム欄は合成レシピⅠとし、報酬はanyで〇〇の合成レシピと詳細を載せるようにしました。

するとanyでは個数が表示されず、他の単独レシピ(例えばパラライズガードのレシピ(設定は隠しアイテム))の場合はitemで指定するので個数は表示されます。
少し細かいですが自分はかなり気になりましたし、anyで表示する文字も大体は報酬なので個数表示で問題ないと判断しました。

2126行を

        else if (type === "any") {
            return new RewardData("any", { text: rewardObject.text, iconIndex:   rewardObject.iconIndex, count: itemCount });
        }
        

と改変

2141行を

        else if (rewardParam.Type === "any") {
            return new RewardData("any", { text: rewardParam.Text, iconIndex: rewardParam.IconIndex, count: rewardParam.ItemCount });
        }
        

と改変

2246行を

        else if (this._reward.type === "any") {
            const strItemCount = `×${this._reward.params.count}`;
            this._window.drawText(strItemCount, x, y, width, "right");
            this._textDrawer.drawIconText(this._reward.params.text, this._reward.params.iconIndex, x, y, width);
        }

としました。

以下画像です
改変前

改変後


①と②いずれの修正も素人が行ったものですので動作の保証はございません。
が、もし同じ悩みを抱えててJSを弄れないという方の参考に少しでもなればと思います。
コメントは不可とさせていただきます。

うなぎおおとろ様のクエストプラグインはとても使いやすく素晴らしいプラグインです。
自分はこのプラグインを活用させていただいてます。
この場を借りて御礼申し上げます。

MIZU 2024/04/14 20:44

RPGツクールMZ(自分が使用しているスクリプト

ここでは自分が使っているスクリプトを紹介していきます。
間違っている場合はX(Twitter)まで連絡してください(勿論無視でもOKです

・イベントの方を向く

$gamePlayer.turnTowardCharacter(this.character(0))


・TPを半減し、小数点を回避

$gameParty.members().forEach(function(actor) {

actor.gainTp(-Math.floor(actor.tp / 2));

});


・戦闘パーティーにいるかどうか

[1].some(function(actorId) {var actor = $gameActors.actor(actorId); return $gameParty.battleMembers().contains(actor)});

1はアクター番号を入れる


・マップ名表示

SceneManager._scene._mapNameWindow.open();

*マップ名を変更して表示

$dataMap.displayName = '名前'
SceneManager._scene._mapNameWindow.open();


・場所移動後リロード(場所移動前に入れる
*同一マップで複数部屋組の場合は必要かも

$gamePlayer.requestMapReload();

MIZU 2024/04/07 13:15

RPGツクールMZの不死身におけるHP(色)の不具合問題

今回はRPGツクールMZの不具合と言っても過言ではない不死身のHPを0にして不死身ステートを切るとHPの色が黄色で戦闘不能になる問題について解説します。

まず、自分はこの現象について公式に問い合わせをしました。
すると回答は

【不具合ではなく仕様です】

っとの事。

こういうとアレですけど、
数多くのゲームをやってきて戦闘不能で色が統一されないゲームやった事ないので仕様と言われると本気で言ってるのかなと思ってしまいます。(個人の感想です

普段不死身ステートをつける事が少ないので微々たる問題はほっときましょうという感じが否めないのですが、自分の作品では不死身が多く活用されてるので大問題。

そこで対策をすることにしました。

-対策-
ここでも神プラグイン制作者のトリアコンタン氏のプラグインを活用させていただきます。

ParamTextColorChanger.js

こちらはパラメーターの色を指定できるプラグインです。
そして内容を

とすることでHP1%以下の時にHPの色が赤色になります。
戦闘不能で赤色ではないですが、自分はこれで納得しました。
HP0で黄色色よりは違和感はないですし、瀕死のさらに瀕死であれば赤色でも問題ありません。

皆さんも不死身ステートをついてHP0にして不死身ステート解除をする事で同じ現象を再現できるはず!
気になる方は対策してみて下さい。

MIZU 2024/04/05 15:35

RPGツクールMZ(TPBアクティブ)と反撃拡張の考察

RPGツクールMZでゲーム制作をする際、
必ずお世話になるといっても過言ではないトリアコンタン氏のプラグイン。
自分も凄くお世話になってます。
この場を借りて御礼申し上げます。

その中でもトリアコンタン氏の反撃拡張はとても素晴らしい神プラグインです。
ですが、TPBアクティブとの相性は一部悪いところがあるようです。(自分だけかも…
まずは動画をみていただきたい。

これは反撃拡張でいう敵に攻撃したら麻痺でステートのみ返すという動作。
これを行ったのち主人公サイドのアクティブゲージが動作しない挙動がある事が確認できます。(新規プロジェクトでも再現済

これが起こる条件はおそらく

【麻痺などの行動不能ステートが時間経過で解除された場合になる】

だと思われます。
魔法やアイテムで回復した時はならなかったのでやや限定的かなと(もしかしたらなるのかもしれない…

そもそも反撃でステートを入れなければ問題ないのと、
必ず生じるわけではないので製作者へ相談した結果改善は難しいという判断となりました。
PC環境によるものなのかもしれませんが、現状買って1年ぐらいのゲーミングPCなのでスペック云々ではなさそうな気がします。

この症状が起きた場合ゲームがストップしてしまいます。
復活する方法が【強○行動で行動させる】か【戦闘不能にして回復する】ぐらいしかなかったから発生した時点で詰み状態となります。

そこで対策を講じました。

-対策-

まずはこの現象がいつ起こるかわからないので、
動画にもある【リセットボタン】を作りました。

リセットボタンの内容は


スクリプトの内容は

[1].some(function(actorId) {var actor = $gameActors.actor(actorId); return $gameParty.battleMembers().contains(actor)});

[1]にはアクターIDを入れて、
バトルメンバーにいるかどうかを条件分岐してます。

パーティーメンバー全員が行動強○(何もしない)をすることでアクティブゲージをリセットして動かなくなる不具合に対応しています。


色んなプラグインを総動員して仕掛けを作る。
って事で用意したのは

StateChangeIfRemove.js(ステート解除時の変化プラグイン
【トリアコンタン氏制作】
NRP_BattleParallelCommon.js(戦闘時コモンイベントを並列処理できる)
【砂川氏制作】

ですね。
ステート解除時をautoで設定して時間経過できれたら一時的に作ったダミーステートを付与します。
戦闘時コモンイベントの内容を


としてダミーステートを解除して強○行動させるという処理です。

簡単に言えば

睡眠になる→睡眠がターンで切れる→ダミーステートが付与される
→コモンイベント(並列)でダミーステートを切って強○行動
(自分はここで耐性ステートを付与してます)

ターンで切れた場合のみ処理されるので、
状態異常回復アイテムを使用した時は強○行動されません。
あくまで行動制限があるステートのみの対応です。



これで完全に回避できるかはまだテストしてないので微妙です。
進捗があれば更新したいと思います。

MIZU 2024/04/04 15:00

RPGツクールMZのSVアクターを敵に使用する方法の考察

今回はツクールMZでSVアクターを敵に使用するプラグインを使ってみた考察をしたいと思います。

まず自分が使ってみたSVアクターを敵で使用するプラグインは2つです。

①ドラゴンケイブ(蒼竜様作)のSVアクタープラグイン
ドラゴンケイブ様

②Animated Enemies - v1.15.51
海外のツクールフォーラム

ツクールMZの戦闘ではアクションをつけたい方が多いのではないでしょうか?
自分はNewRPGProject(砂川様のHP)
のDynamicMotionシリーズを使用させていただいてます。

そこで問題となるのが、各種プラグインに適応しているのが
②番目のSVアクターのプラグインになるという事です。

しかし②には問題がありまして、
敵に毒をかけた場合、すぐにSVアクターに毒のエフェクトが表示されず
敵アクターが行動した時に毒エフェクトが現れるタイムラグがあります。

①にはそうした問題はないのですが、砂川氏のプラグイン関連を使用する場合に
SVアクターに適応されない物もあり甲乙つけがたい状態です。

そこで、②のタイムラグを無くす方法はないか考えました。


-解決策-
敵が行動した後にモーションをリフレッシュする方法があれば、
敵のモーションを改善できると考えました。
そこで以下の画像のように処理を入れました


スクリプトで
for (const enemy of $gameTroop.members()) {

    enemy._motionRefresh = true;

}
を入れてスキルのコモンイベントに入れる

これで何か問題が出るかもしれませんが、
現在のところ大きな問題は出てません。

ただし、フィールドでステート改善スキルにコモンイベントが入ると
メニュー画面からフィールド画面へ切り替わってしまいます。

そのため、ステート回復スキルは敵専用のコモンイベントを入れたスキルを別途作る必要があります。
こちらはそんなに労力なくできますので試してみてもいいかもしれません。

以上SVアクター起用で困った点でした。
解決策は不具合が出る場合もありますので責任はご自身でお願いします。

« 1 2

月別アーカイブ

記事のタグから探す

限定特典から探す

記事を検索