特定の変数が増加したとき、その旨をメッセージで表示したい

アリッサ
記事: 14
登録日時: 2018年6月27日(水) 17:52

特定の変数が増加したとき、その旨をメッセージで表示したい

投稿記事by アリッサ » 2018年8月09日(木) 02:00

現在、変数で固有のステータスを10個ほど作っています。

仮に、これをHP、MP、疲労度、攻撃力、防御力、技術力、魔攻力、魔防力、俊敏力、運とします。

これが、ゲーム内でイベントを発生させると、そのイベントごとに設定されたものがあがります。

例:剣の訓練を行うと「攻撃力と技術力があがる」

この際、今まではテキストで「/[v4]があがった! /[v6]があがった!」と表示していました。
当初はこのやり方で問題ない……と思ったのですが、
イベントの数が増えるごとに、同時に6つも7つも上昇するものが現れ始めました。
「このままではヒューマンエラーで変数は変動しているのにテキストの方で記述忘れが出始めるのでは……」
と危惧しまして、
たとえば「攻撃力と防御力と技術力が上昇した場合、n1があがった!というテキストを3個描画したい」
……と考えました。
6つあがったら「n1があがった!」が6つになると思います。

これって技術的に可能でしょうか……?

MPP_ChoiceEXというすばらしい選択肢拡張プラグインの中に、「条件(スイッチや変数)を見たさなければこの選択肢を非表示にする」というものがあったので、
似たようなものや方法がテキストの場合でもあるかな……?
と思い質問致しました。

もしテキスト中で似たような挙動ができるものがある場合、
v0が上がった!
v1が上がった!
v2が上がった!
v3が上がった!
v4が上がった!
v5が上がった!
v6が上がった!
v7が上がった!
v8が上がった!
v9が上がった!
と記述しておいて、
変動が発生しなかった変数指定の含まれた行は非表示になる……ということができればいけるのでは、と考えています。
その場合はそれぞれの変数に対応する数字の一時保存用変数を用意しておいて、「一時保存用変数に数値がはいる→対応した vnが上がった の行が表示される→一時保存用をv0~09に加算してから0を代入する」とするとか……。

初歩的な質問が多く申し訳ないのですが、
目に見えてゲームができていくのが楽しくて、
その中でも自分で解決できなかったものを選んでいるつもりです……(もっと解決能力が欲しい!)

以上です。
よろしくお願い致します!

アバター
フトコロ
記事: 1029
登録日時: 2017年2月06日(月) 21:32

Re: 特定の変数が増加したとき、その旨をメッセージで表示したい

投稿記事by フトコロ » 2018年8月09日(木) 02:29

こんな感じで、イベントを組むといいのではないかと思います。

コード: 全て選択

  ◆変数の操作:#0001 文章 = "タイトル文\n"
  ◆条件分岐:パラメータ1が上がったがON
    ◆変数の操作:#0001 文章 += "パラメータ1が上がった!\n"
    ◆
  :分岐終了
  ◆条件分岐:パラメータ2が上がったがON
    ◆変数の操作:#0001 文章 += "パラメータ2が上がった!\n"
    ◆
  :分岐終了
  ◆文章:なし, ウィンドウ, 下
  :  :\v[1]


変数の操作コマンドでスクリプトを選択し、"(ダブルクォーテーション)で囲った文字列を入れると
変数に文字列を入力できるので、それを利用して条件分岐で任意の文章を変数に加えていきます。

操作で「加算」を選択すると、文章が後ろに連結されます。
\n を書くと、そこで改行されます。
---------------------------------------------------------------------------------------------------
プラグイン置き場(GitHub)
https://github.com/futokoro/RPGMaker/blob/master/README.md

検討中の内容は上記リンク先の「対応するかもしれないプラグインのメモ」を参照してください。
アリッサ
記事: 14
登録日時: 2018年6月27日(水) 17:52

Re: 特定の変数が増加したとき、その旨をメッセージで表示したい

投稿記事by アリッサ » 2018年8月11日(土) 01:28

>フトコロさま
ありがとうございます!
変数に文字列を格納することができたのですね……。

フトコロ さんが書きました:

コード: 全て選択

  ◆変数の操作:#0001 文章 = "タイトル文\n"
  ◆条件分岐:パラメータ1が上がったがON
    ◆変数の操作:#0001 文章 += "パラメータ1が上がった!\n"
    ◆
  :分岐終了
  ◆条件分岐:パラメータ2が上がったがON
    ◆変数の操作:#0001 文章 += "パラメータ2が上がった!\n"
    ◆
  :分岐終了
  ◆文章:なし, ウィンドウ, 下
  :  :\v[1]



こちら理解がおよんでおらず申し訳ありません、
やっている操作の内容は、
変数1に「筋力が」など序文に相当する文章を代入後、
変数1に「1あがった」とする文章を加算することで、
「筋力が1あがった」という文章を作り出している……ということでよろしいでしょうか?
文章を代入した変数に加算すると文章同士がくっつくとは完全に初耳でした……。
これでパラメータが1、2、3……と上がった場合の条件分岐をつくっていけば、確かにうまくいきそうです。
ただ、一度に「1~1000まで上昇するパラメータ」があるので、結局すべて一律の方法で簡易化するのは難しそうですね……。
スクリプトで代入した文字列にも\v[1]などのコマンドが機能したらよかったのですが……。

現状だと、こちらの方法を応用させていただいて、こんなものを考えてみました。

#0001 攻撃力_序文
#0002 攻撃力_数値一時格納
#0003 攻撃力
と、三つの関数をステータスごとに用意します。
次に、以下のように書きます。

次に、パラメーターが上昇するイベントでこう指定します。

コード: 全て選択

 
    ◆変数の操作:#0002 攻撃力_数値一時格納 = 3
    ◆


攻撃力が3上がるイベントでこう書きます。各イベントの冒頭で「このイベントで上昇させたいステータスを宣言する」ことで、のちのレベルデザイン調整が楽になるかな? という試みです。

次に、イベントの最後で下記のコモンイベントを呼び出します。

コード: 全て選択

 
  ◆条件分岐:攻撃力_数値一時格納 ≧ 1
    ◆変数の操作:#0001 攻撃力_序文 = "攻撃力が"
    ◆変数の操作:#0001 攻撃力_序文 += 攻撃力_数値一時格納
    ◆変数の操作:#0001 攻撃力_序文 += "が上がった!\n"
    ◆変数の操作:#0003 攻撃力 += #0002 攻撃力_数値一時格納
    ◆変数の操作:#0002 攻撃力_数値一時格納 = 0
  :分岐終了
  ◆文章:なし, ウィンドウ, 下
  :  :\v[1]


これで、
「攻撃力が(ステータス種別宣言)」+「実際に上昇した数値」+「が上がった!」
という文章を生成できるかな……と思っています。
そして毎度一時格納に0を代入でリセット。
ひとつのパラメータにつき変数を3つも使ってしまうのが悩みどころなのと、
「結局、上昇したパラメータに対応した文章が自動で出る(=増えてないものは非表示)って仕様が満たせてない!」
と悩み中です。

正確には条件分岐の中に「文章:~」を含めればいいのですが、そうするとウィンドウが×上昇したステータス
数分でてきてしまうので、ユーザビリティの低下が気になります……。
パワプロやパワポケみたいに、ステータスの変動時は決定ボタンを押すごとに「1行づつ出る→既に行を使い切っていたら古いログから順に消えていく」みたいな処理ができればいけるかな?
と思うのですが、そういう動作を一時的にさせられる方法ってあるんでしょうか?

うーん、後一歩な気がするのですが……むずかしい。
アバター
フトコロ
記事: 1029
登録日時: 2017年2月06日(月) 21:32

Re: 特定の変数が増加したとき、その旨をメッセージで表示したい

投稿記事by フトコロ » 2018年8月11日(土) 11:51

アリッサ さんが書きました:#0001 攻撃力_序文
#0002 攻撃力_数値一時格納
#0003 攻撃力
と、三つの関数をステータスごとに用意します。

パラメータごとに、#0001 攻撃力_序文 のように変数を使わなくてもよいと思います。
↓こんな感じで。

コード: 全て選択

  ◆変数の操作:#0001 文章 = "タイトル文\n"
  ◆条件分岐:パラメータ1上昇量 > 0
    ◆変数の操作:#0001 文章 += "パラメータ1が"
    ◆変数の操作:#0001 文章 += パラメータ1上昇量
    ◆変数の操作:#0001 文章 += "上がった!\n"
    ◆
  :分岐終了
  ◆条件分岐:パラメータ2上昇量 > 0
    ◆変数の操作:#0001 文章 += "パラメータ2が"
    ◆変数の操作:#0001 文章 += パラメータ2上昇量
    ◆変数の操作:#0001 文章 += "上がった!\n"
    ◆
  :分岐終了
  ◆文章:なし, ウィンドウ, 下
  :  :\v[1]
 

アリッサ さんが書きました:「結局、上昇したパラメータに対応した文章が自動で出る(=増えてないものは非表示)って仕様が満たせてない!」

これは条件分岐でパラメータが上昇しているときだけ、文章を作ればいいのではと思いますが
そうではないのですか?
---------------------------------------------------------------------------------------------------
プラグイン置き場(GitHub)
https://github.com/futokoro/RPGMaker/blob/master/README.md

検討中の内容は上記リンク先の「対応するかもしれないプラグインのメモ」を参照してください。
アリッサ
記事: 14
登録日時: 2018年6月27日(水) 17:52

Re: 特定の変数が増加したとき、その旨をメッセージで表示したい

投稿記事by アリッサ » 2018年8月11日(土) 15:30

なるほど、能力値ごとに対応する文章格納用の変数を作らずとも、改行するように末尾に\nをいれておけば改行してくれるわけだから、
複数能力値のメッセージをひとつの変数に格納することで表示上の対応はできるわけですね!

たしかにこれならメッセージが各能力値分、別々に表示されることもないですし、
この書き方なら上昇してない能力値の表示はださないですみそうです。

文字色を変えたいときは、\v[1]を囲めばできそうですし……。

そうなると問題は4つ以上の能力値が変動したとき、みきれさせず表示するにはどうしたらいいかなあということでしょうか……。
\nが4つ使われていたら文章の表示を追加、とかそういうアプローチができないか、などと考えたのですがどうしたらそのアプローチがとれるのか悩み中です。
どうしたら4行の状態を判定をして文章の表示を追加できるでしょうか……。
アバター
フトコロ
記事: 1029
登録日時: 2017年2月06日(月) 21:32

Re: 特定の変数が増加したとき、その旨をメッセージで表示したい

投稿記事by フトコロ » 2018年8月11日(土) 16:27

アリッサ さんが書きました:そうなると問題は4つ以上の能力値が変動したとき、みきれさせず表示するにはどうしたらいいかなあということでしょうか……。
\nが4つ使われていたら文章の表示を追加、とかそういうアプローチができないか、などと考えたのですがどうしたらそのアプローチがとれるのか悩み中です。
どうしたら4行の状態を判定をして文章の表示を追加できるでしょうか……。

2ページ目に表示させるのではなく、1ページ内に収めたい、ということですか?
※これまで提示した方法の場合、5行以上の文章になるとその分は自動的に次のページに表示。

その場合は、条件分岐の処理の中に行数用変数を1加算させるコマンドを追加して
行数を数えればいいと思いますよ。

コード: 全て選択

  ◆変数の操作:#0001 文章 = "タイトル文\n"
  ◆変数の操作:#0004 行数 = 1
  ◆条件分岐:パラメータ1上昇量 > 0
    ◆変数の操作:#0001 文章 += "パラメータ1が"
    ◆変数の操作:#0001 文章 += パラメータ1上昇量
    ◆変数の操作:#0001 文章 += "上がった!\n"
    ◆変数の操作:#0004 行数 += 1
    ◆
  :分岐終了
  ◆条件分岐:パラメータ2上昇量 > 0
    ◆変数の操作:#0001 文章 += "パラメータ2が"
    ◆変数の操作:#0001 文章 += パラメータ2上昇量
    ◆変数の操作:#0001 文章 += "上がった!\n"
    ◆変数の操作:#0004 行数 += 1
    ◆
  :分岐終了
  ◆条件分岐:行数 > 4
    ◆注釈:4行を超える場合は、処理を変える
    ◆
  :それ以外のとき
    ◆文章:なし, ウィンドウ, 下
    :  :\v[1]
    ◆
  :分岐終了
 
---------------------------------------------------------------------------------------------------
プラグイン置き場(GitHub)
https://github.com/futokoro/RPGMaker/blob/master/README.md

検討中の内容は上記リンク先の「対応するかもしれないプラグインのメモ」を参照してください。
アリッサ
記事: 14
登録日時: 2018年6月27日(水) 17:52

Re: 特定の変数が増加したとき、その旨をメッセージで表示したい

投稿記事by アリッサ » 2018年8月11日(土) 18:23

お早いご返信ありがとうございます!

なるほど……いままで勝手に4行以上になったら、5行目以降は表示されないものだと思い込んでいました。
(テキスト表示の挙動的に……)

重ね重ねお答えいただきありがとうございました、
この方法でやってみます!
お世話になりました!!

“MV:質問” へ戻る