メッセージウィンドウの文章を他操作挟んでも繋げさせたい

アバター
eiten
記事: 27
登録日時: 2017年1月09日(月) 22:30

メッセージウィンドウの文章を他操作挟んでも繋げさせたい

投稿記事by eiten » 2020年6月03日(水) 11:25

いつもお世話になっております
皆さんは実況パワフルプロ野球シリーズ、又はその派生作品のパワプロクンポケットシリーズを遊んだことはありますでしょうか。
あの作品はノベルゲームのように文章を読み、選択肢から主人公の行動を選択して、その行動の結果からアイテムの獲得やステータスの増減が発生したりする演出が入るゲームです。
私はこのゲームのステータス増減演出が好きで、再現してみたいと考えていますが、どうも自分の手に余る細工が必要な気配がしたのでこちらに質問を投げさせて頂くことにしました。

求めてる動作は以下のとおりです
・通常はツクール本来の動作と同じ仕様の文字送りがされるメッセージウィンドウで会話等が表示される
・メッセージの途中で変数や変化やステータスの増減の処理を入れることが出来る
・会話シーンの最後にステータス増減等が纏めて処理され、それに合わせて「体力が下がった!」「○○が20上がった!」といった表示がされる
 ↑ステータス増減の表示はMMOのチャットログのように表示可能な行数を超えた時に古い上の表示から上に押し上げられて消える
 ↑一行表示されるたびに数値は実際のデータに反映サれており、HPゲージ等はHP増減メッセージと同時に変化する

デフォルトのツクールの仕様だと
行数の上限を超えた場合、全て消して一行目から表示されてしまう
変数操作、HPの増減などを挟むとメッセージが一瞬閉じられてしまい直前の表示が残らない
といった動作になってしまい困っています

プラグインじゃないと実現が困難な場合ならば改めて適正な場所で依頼することも視野に入れています。
よろしくお願いいたします。

銃と魔法と世紀末
論理イヌ
記事: 186
登録日時: 2020年3月13日(金) 13:05

Re: メッセージウィンドウの文章を他操作挟んでも繋げさせたい

投稿記事by 論理イヌ » 2020年6月03日(水) 15:56

こんにちは。


>・通常はツクール本来の動作と同じ仕様の文字送りがされるメッセージウィンドウで会話等が表示される
>・メッセージの途中で変数や変化やステータスの増減の処理を入れることが出来る

検索したらこういったプラグインがでてきました。
「メッセージ表示継続プラグイン」
https://lunatlazur.com/rpgmv-plugins/co ... e-closing/

>・会話シーンの最後にステータス増減等が纏めて処理され、それに合わせて「体力が下がった!」「○○が20上がった!」といった表示がされる

表示の方は、「ツクールmv プラグイン ポップアップ」で検索するとたくさんでてくるので、
使いやすさとか見た目とかで好みのものを見つけてください。
変数への処理は同時に行うしかないと思います。

>↑一行表示されるたびに数値は実際のデータに反映サれており、HPゲージ等はHP増減メッセージと同時に変化する

画面上にどのようにHPを表示させているかわかりませんが、
パワプロのように会話中にもHPが表示されており、
もし変数操作と同時に変わらなくてお悩みなら、
トリアコンタンさんの
「動的文字列ピクチャ生成プラグイン」
https://triacontane.blogspot.com/2015/1 ... dtext.html
に、変数の変更と同時に文字列が変わる機能があるので、
こちらを検討してみてください。

うまくいくことを願っています。

【追記】
HPゲージを使ったことないので、ゲージが即時で変わるかはわかりません……。
もし変わらないなら、並列処理でがんばるしかない?
中途半端な回答でごめんなさい。
アバター
eiten
記事: 27
登録日時: 2017年1月09日(月) 22:30

Re: メッセージウィンドウの文章を他操作挟んでも繋げさせたい

投稿記事by eiten » 2020年6月04日(木) 08:08

論理イヌさん返信ありがとうございます
情報を元に調査してみましたが希望通りの動作は見込めませんでした
せっかく調べてもらったのに成果を出せず申し訳ないです

説明不足な所があったので、今の実装状況や希望する挙動について細かく書いてみます

・HPゲージ表示について
ピクチャの横スケールをHP割合と連動させて、HPの残り%がわかるようにしてある
HPが増減した時にそれを検知してピクチャを動かす並列コモンが動いています
また一部ステータスの可視化として変数を用いてHP表示と同様な表現のゲージ表示をしています
現時点では変数の操作と連動して動作できているので、メッセージ表示中にそれらの操作が実行できるようになれば良いなという感じです


・メッセージ継続化について
例えばHPの減少とスタミナの減少が発生するイベントが最後まで読み終えられた時

「HPが〇〇下がった!」

のメッセージが表示されSEとHP変動が実行されます
ここでプレイヤーが決定キーを押すと

「HPが〇〇下がった!
 スタミナが〇〇下がった!」

というふうに下にメッセージが追加され、SEと変数操作が発生します
とりあえず上記の挙動は最低限実現したいところです


できれば更に追加したい挙動として、上記の能力変動が4種類を超えた場合・・・

「HPが〇〇下がった!
 スタミナが〇〇下がった!
 やるきが下がった!
 風邪をひいてしまった!」

すでにメッセージウィンドウの行数が埋まっている時に
「足を骨折してしまった!」みたいな処理が実行されると

「スタミナが〇〇下がった!
 やるきが下がった!
 風邪をひいてしまった!
 足を骨折してしまった!」

という表示になってほしいと考えています。
銃と魔法と世紀末
論理イヌ
記事: 186
登録日時: 2020年3月13日(金) 13:05

Re: メッセージウィンドウの文章を他操作挟んでも繋げさせたい

投稿記事by 論理イヌ » 2020年6月04日(木) 17:56

eitenさん

私もパワプロは数少ないハマったゲームなので、ぜひ実装していただきたいです。

私の方で、先に挙げた「メッセージ表示継続プラグイン」と、
「画面上に文字列をポップアップ表示する」
https://forum.tkool.jp/index.php?thread ... 80%8D.745/
上記のプラグインを実装したところ、
「メッセージが継続したまま、変数が変わり、ポップアップが表示する」という挙動ができることを確認しました。

いま時間が取れないため、実際のイベント内容が貼れないので申し訳ないです。
今夜時間ができましたら掲載します。

ところで、どのように実装して、どのあたりができないでしょうか?
実際にやってみたことを書いていただけると、他の方もアドバイスしやすいと思います。


>できれば更に追加したい挙動として、上記の変動が4種類を超えた場合・・・
これはポップアップのプラグインだけでは難しいので、コモンイベントなどでゴリゴリと条件分岐を書くしかないかなと思います。
他の方がスマートな解決策を出していただけると嬉しいのですが……私も初心者なので、力技に頼ってしまいます。

こちらも今夜時間ができたら、何か作ってみてできたら掲載します。

すみません、取り急ぎここまで。
アバター
eiten
記事: 27
登録日時: 2017年1月09日(月) 22:30

Re: メッセージウィンドウの文章を他操作挟んでも繋げさせたい

投稿記事by eiten » 2020年6月04日(木) 21:10

論理ネコ様 返信有り難うございます

まず最初に、ポップアップ表示自体は求めてる動作と無関係であることを伝えておきたいと思います。
表示したい文字列はすべてメッセージウィンドウ上に表示されて、メッセージ送り操作で次の処理に進んで欲しいのです。

継続表示のプラグインでメッセージウィンドウは閉じられなかったとしても、次の処理に入る時に直前の文章が消えてしまい、常に1行の文章しか表示されない状態です。

◆HPの増減:パーティ全体, - 100
◆SEの演奏:Buzzer1 (90, 140, 0)
◆文章:なし, ウィンドウ, 下
:  :\C[10]体力が\C[1]100\C[10]下がった!\!
◆変数の操作:#0004 善悪度 -= 10
◆SEの演奏:Buzzer1 (90, 140, 0)
◆文章:なし, ウィンドウ, 下
:  :\C[10]心が少し悪に染まった!\!
◆変数の操作:#0006 機嫌値 += 1
◆SEの演奏:Heal3 (90, 140, 0)
◆文章:なし, ウィンドウ, 下
:  :\C[10]機嫌が良くなった!\!

イベントコマンドは上記のようになっています
銃と魔法と世紀末
論理イヌ
記事: 186
登録日時: 2020年3月13日(金) 13:05

Re: メッセージウィンドウの文章を他操作挟んでも繋げさせたい

投稿記事by 論理イヌ » 2020年6月04日(木) 21:15

まず、4行表示するポップアップメッセージ(インスタントメッセージ?)はできませんでした。
変数10以上、コモン4つ以上使ってできるかできないか、という感じで、
全然スマートではありませんでした。

毎回ポップアップの位置を調整すればできるとは思いますが、
何百回もおなじような記述をするのは現実的ではないと思います。

新しくプラグイン作成依頼をしていただき、どなたかが作っていただくのを待つしかないかもです。
私も同じ様な機能がほしいと思っていたので、細々とプラグインを作ろうと思います。
しかし私は素人なのでバグが怖い……。どなたかが作ってくださるのを願うばかりです……。


会話表示中に、画面上の体力ゲージと体力が変動するサンプルです。
下記2つのプラグインを使っています。
「メッセージ表示継続プラグイン」
「動的文字列ピクチャ生成プラグイン」
https://triacontane.blogspot.com/2015/1 ... dtext.html

【イベント1:自動実行】
◆変数の操作:#0001 ゲージ横幅 = 100
◆変数の操作:#0002 体力 = 250
◆ピクチャの表示:#1, geeji, 左上 (10,10), (100%,100%), 255, 通常
◆プラグインコマンド:D_TEXT \V[2] 32
◆プラグインコマンド:D_TEXT_SETTING REAL_TIME ON
◆ピクチャの表示:#2, なし, 左上 (250,10), (100%,100%), 255, 通常
◆イベントの一時消去

【イベント2:並列処理】
◆スクリプト:$gameScreen.movePicture(1,0,10,10,$gameVariables.value(1),100,255,0,30)
◆ウェイト:10フレーム

【イベント3:決定ボタン】
◆プラグインコマンド:メッセージの表示を継続 ON
◆文章:なし, ウィンドウ, 下
:  :ランニングするぞ!
◆変数の操作:#0001 ゲージ横幅 -= 20
◆変数の操作:#0002 体力 -= 50
◆SEの演奏:Down1 (90, 100, 0)
◆文章:なし, ウィンドウ, 下
:  :ランニング楽しかったな!
◆プラグインコマンド:メッセージの表示を継続 OFF


イベント1でゲージや体力の初期表示をしています。
イベント2で、リアルタイムでゲージの増減ができるよう並列処理をしています。
(eitenさんはすでに実装していると思います。)
イベント3で、体力を減らしています。


最初の質問にあった
>変数操作、HPの増減などを挟むとメッセージが一瞬閉じられてしまい直前の表示が残らない
こちらは解決されたと思います。

>行数の上限を超えた場合、全て消して一行目から表示されてしまう
こちらですが、たとえば上限を超えた場合、
一番上の行が上に押し出されて、新しい行が一番下に表示される、ということでしょうか?
こちらもプラグインなど探しましたが、私では見つけられず……。

私が中途半端に回答したせいで、中途半端に解決できず申し訳ないです。
他の方が解決法を示していただけるよう、祈っております……。
論理イヌ
記事: 186
登録日時: 2020年3月13日(金) 13:05

Re: メッセージウィンドウの文章を他操作挟んでも繋げさせたい

投稿記事by 論理イヌ » 2020年6月04日(木) 21:30

書き込んでいる間にお返事が……。
そして、やはり私が仕様を勘違いしていたようです。
申し訳ありませんでした。
先ほどの回答は無視してください。

メッセージウインドウ上で、別々にコマンド入力した文章を、継続して一つのウインドウに表示する、ということですね。

そういえばパワプロはそういった仕様でした。
10年以上前で、いろいろと勘違いしていました。

「ツクールMVのスクリプトで文章の表示を行う方法+」
https://note.com/asakayu/n/n5611ef004b23

こちらの記事で紹介されている、
>$gameMessage.add("表示する文章")
これを使うのはいかがでしょうか?

処理を挟んでも、文章が表示され続けるみたいです。
ちょっと扱いづらいですが、体力等の上げ下げの時だけと思えば……。
論理イヌ
記事: 186
登録日時: 2020年3月13日(金) 13:05

Re: メッセージウィンドウの文章を他操作挟んでも繋げさせたい

投稿記事by 論理イヌ » 2020年6月07日(日) 23:19

ごめんなさい、いろいろと混乱して勘違いしていました。
「文章表示中に変数操作」というのは、私が最初の回答で提示したプラグインで可能でした。

回答を削除します。

勘違いして答えたやつを簡単に書くと、
「MessageCommon.js」(https://raw.githubusercontent.com/triac ... eCommon.js)
上記プラグインでメッセージ表示中にコモンを呼んで、マップイベントで変数に配列を設定し、コモンの条件分岐で諸々を操作するという感じでした。
sally
記事: 119
登録日時: 2019年8月06日(火) 05:11

Re: メッセージウィンドウの文章を他操作挟んでも繋げさせたい

投稿記事by sally » 2020年6月17日(水) 13:23

理想とされている挙動とは少し変わってしまうかもしれませんが、
メッセージの表示でウインドウ無しにして代わりにウインドウをピクチャで代用することで、
見た目上、ウインドウが閉じることは無くなります。

更にゲージをピクチャで表現されていてかつ、ピクチャの移動で増減を表現していらっしゃるのであれば
メッセージ表示前の移動処理は表示時点でも並列処理されているはずですので(ここはうろ覚えです…)

----------
体力変数の処理
ピクチャの移動(完了までウェイトなし)
メッセージ表示
-----------
にて、メッセージ表示中のゲージ増減は再現できるかと思います。

また、連続メッセージについてですが、
「MMOのチャットログのように表示可能な行数を超えた時に古い上の表示から上に押し上げられて消える」
には対応できませんが、そちらを除けば擬似的に再現可能と思います。

【/<】の制御文字を使うと、途切れることを感じさせずに表示されますので
-------------------------
HPが減り、ゲージが増減する処理
メッセージ:
HPが¥v【0001】下がった
スタミナが下がり、ゲージを増減する処理
メッセージ:
/<HPが¥V【0001】が○○下がった/>
スタミナが¥v【0002】上がった


-------------------------
とすれば、近しい仕様になります。
メッセージは追加ではなく強引に蓄積・更新させるため、
多量 / 複雑な条件分岐には対応しきれない部分が残ります。

“MV:質問” へ戻る