投稿記事

無料プランの記事 (8)

MIZU 2024/05/27 12:15

RPGツクールMZ-キー入力ギミックまとめ-

RPGツクールMZのキー入力ギミックを制作しました。
参考サイトはアイストマトバズーカ様の

アイストマトバズーカ様のHP

『キー入力キング』を参考にランダム要素と時限式タイマー付きで制作してみたので記事とさせていただきます。

開始ページですが、

っとなっておりなんじゃこりゃ!?
という感じですので分解して。

1⃣
最初のイベントで大事なのは
①メニュー禁止
②主人公が動かないように主人公周囲にイベントを置く
③主人公の向き固定

以下②の操作になります。

イベントX(変数)=プレイヤーのXマップ
イベントY(変数)=プレイヤーのYマップ

その後イベントをプレイヤーの周囲に誘導する処理です。
そうしないとコマンド入力時にプレイヤーが動きます。

動かすイベント内容は
1ページ目はプライオリティ―は下で念のためすり抜けON
2ページ目は画像なしでプライオリティーは同じ すり抜けOFF ←大事!
条件スイッチは画像ですと「ボタンゲームキャラ移動」を設定しております。

これがONになった時、4つのイベントが2ページ目の起動になり、
そこから主人公の周囲へイベントを移動するという処理が入っています。


2⃣
乱数の設定

これはキー入力ゲームをランダムで内容を変えるために入れた処理です。
4種類用意したならば1~4の乱数を変数に入れればよいです。

そこから条件分岐で変数の値に応じてキー入力ゲームを割り振ればOK

ここからはコモンイベントの内容です。

コモンイベントボタン表示①←→↑↓(名前は任意)
これはコモンイベントでピクチャを表示する内容が入っております。

ボタン押し種類変数というのは、後々間違った時に画像をリセットする時に使います。
①の物は変数に1を代入して、②の違う配置の時は別のコモンイベントで2を代入してます。

その後10フレームの間を入れてから起動イベントはセルフスイッチAを入れて何もイベントがおこらないページを作成(セルフスイッチか何かでページを切り替えないと永遠と決定ボタンで3秒が復活します。

その後タイマー始動(3秒にしてます)

ゲームを起動するスイッチ(ボタン①をON)にしてゲーム開始です。

ここまでが開始イベントの内容でした。


3⃣ここから本編

並列処理でスイッチは(ボタン①)←ゲーム起動のスイッチ
このコモンイベントがキーを押したときにピクチャーを変化させるイベントです。
ボタンインデックスという変数が正解時に+1ずつされるので、
+1された時点でピクチャーを左端から変えてます。

これはゲーム終了後の処理になります。
主にピクチャーを消して、並列処理のボタン①のスイッチをOFFにしてます。
ボタン②はキー入力のゲームの種類を増やしたので追加しただけです。


ここではキー入力が行われた際の挙動をイベントにしてます。
ポイントはタイマーが0になった時の処理を入れていると所(制限時間がなければ入れなくて良い
また、各処理の最後にイベント処理の中断を入れる事。
これがないと大変な事になります。
正解した時にインデックス変数が+1されてピクチャーが変わり次に行く
そうでない場合は別のコモンイベントでインデックスを0にしてピクチャーを戻す処理を入れてます。

これが間違ったキー入力を起こした時に起動するコモンイベントです。
インデックスの値を0にして、最初に起動したピクチャーを表示してます。
ここにあるボタン押し種類変数というのは入力するゲーム(キー)の種類で分岐しています。

これをキーの数だけ作ります。

最後に主人公の向固定OFFや主人公が移動できないようにしていたイベントのスイッチをOFFにして終了です。

最後にイベントの処理を載せておきます。


以上です。

また進展がありましたら更新します。

謝辞)アイストマトバズーカ様のキー入力キングはとても参考になります!
勉強になりました!ありがとうございました!!

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で設定して時間経過できれたら一時的に作ったダミーステートを付与します。
戦闘時コモンイベントの内容を


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

簡単に言えば

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

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



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

« 1 2

限定特典から探す

記事のタグから探す

月別アーカイブ

記事を検索