ページ 11

[解決済み]全回復させたときの回復量を取得したい

Posted: 2024年8月07日(水) 19:38
by rurero
いつもお世話になっております。

現在敵HPを全回復させ、回復量を変数に代入し、その後回復量を何倍かさせたダメージを与える技を作ろうと考えています。

敵が一体であれば敵アクターのHPを変数に代入することで作れそうなのですが、複数体になると選択が難しく、何より敵に使わせたいスキルでもあるため敵が選んだアクターのHPを取得する方法が分かりません。
全回復させたときの回復量を取得するスクリプトやプラグイン等ありましたらご教示願いたいです。

よろしくお願いします。

Re: 全回復させたときの回復量を取得したい

Posted: 2024年8月20日(火) 16:50
by ecf5DTTzl6h6lJj02
こんにちは。
質問からちょっと時間が経ってしまっていて申し訳ないです。
rurero さんが書きました:いつもお世話になっております。

現在敵HPを全回復させ、回復量を変数に代入し、その後回復量を何倍かさせたダメージを与える技を作ろうと考えています。

敵が一体であれば敵アクターのHPを変数に代入することで作れそうなのですが、複数体になると選択が難しく、何より敵に使わせたいスキルでもあるため敵が選んだアクターのHPを取得する方法が分かりません。
全回復させたときの回復量を取得するスクリプトやプラグイン等ありましたらご教示願いたいです。

よろしくお願いします。
質問に、ちょっと曖昧な部分があって、正確な回答がつけられないので、
いくつか質問をさせてください。
  1. このスキルの 『範囲』はどれを想定していますでしょうか?
    敵HPを全回復させ、と書かれていることから、味方全体なのかと思ったのですが、
    敵が選んだアクター などと書かれていて、
    アクターというのは、プレイヤーが操作するキャラクターのことなので、ちょっと混乱しています。
  2. その後 回復量を何倍かさせたダメージを与える
    と書かれていますが、
    ダメージを与える対象は誰でしょうか?
    味方全体を回復する代わりに、自身がそのダメージ +α を肩代わりするスキルかと思ったのですが、
    文言をよく読むと違う可能性があるので、
    はっきりさせたいです。
要するに、
HP を回復させる対象は誰?
その後に、ダメージを受けるのって誰?
ということです。

以上、ご回答お願いします。

Re: 全回復させたときの回復量を取得したい

Posted: 2024年8月25日(日) 20:05
by rurero
返信遅れて申し訳ありません。

1.スキルの範囲についてですが敵キャラ1体に対してです。
2. ダメージ対象は回復させた敵です。

敵のHPを回復させ、その敵に対して回復量の1.2倍のダメージを与えるといった技です。

つまり敵に与えた総ダメージ量の20パーセントほどのダメージを与える技なのですが
その過程で演出として一旦全回復させたいのです。

わかりにくい文章で申し訳ありません。指摘された点を考え直すと綺麗に言語化できた気がします。
以上、よろしくお願いします。

Re: 全回復させたときの回復量を取得したい

Posted: 2024年8月25日(日) 23:09
by ecf5DTTzl6h6lJj02
こんにちは。
rurero さんが書きました:返信遅れて申し訳ありません。

1.スキルの範囲についてですが敵キャラ1体に対してです。
2. ダメージ対象は回復させた敵です。

敵のHPを回復させ、その敵に対して回復量の1.2倍のダメージを与えるといった技です。

つまり敵に与えた総ダメージ量の20パーセントほどのダメージを与える技なのですが
その過程で演出として一旦全回復させたいのです。

わかりにくい文章で申し訳ありません。指摘された点を考え直すと綺麗に言語化できた気がします。
以上、よろしくお願いします。
発動前コモンというプラグインを使用、
スキルを回復用と、ダメージ用に分割し、
  1. 回復用のスキルの発動の直前に、コモンイベントで、回復量を特定の変数に格納。
  2. 回復用スキルで、回復、ダメージ用のスキルを使わせるために、コモンイベントを呼んで、行動を強制。
    (ダメージ前に演出が必要ならここでやってしまう。)
  3. ダメージスキルで、ダメージを与える
という流れでやる方法を提示します。
(ちょっと長いですが、ご容赦ください)

※以下の作成例では、
  • 発動前コモンイベントのプラグインパラメータ、
    『発動者インデックス変数ID』を 11、
    『対象インデックス変数ID』を 12 に設定。
  • 回復量を 変数ID 0013 に格納する。
  • 回復用のスキルのIDが 12
  • ダメージ用のスキルのIDが 13
という設定になっています。
  1. 発動前コモン プラグインをダウンロードして導入してください。
    https://plugin.fungamemake.com/archives/2033 (ツクマテの紹介ページに飛びます)
  2. 発動前コモンで呼び出すコモンイベントを作成します。
    以下のように作成してください。

    コード: 全て選択

    ◆注釈:回復量を変数ID 0013 に格納。
    :  :
    :  :面倒なので、スクリプトでやってます。
    ◆注釈:
    ◆注釈:最初に、
    :  :target という一時的な変数を作成し、
    :  :スキル対象の情報を格納している。
    ◆注釈:対象者のインデックス(配列の何番目か)が
    :  :変数ID 0012 に入っている。
    :  :対象がエネミーだと +1000 されているので注意。
    ◆注釈:$gameTroop.members()
    :  :で、敵グループの配列が取得できる。
    :  :この後ろに付ける [] のなかに、
    :  :何番目のデータを取得するのかの番号を入れることで、
    :  :特定のアクターの情報を取得できるので、
    :  :$gameVariables.value(12) - 1000 を [] の中に記述。
    ◆注釈:次に、変数ID 0013 に、
    :  :回復量を格納する。
    ◆注釈:$gameVariables.setValue(変数ID, 代入する値)
    :  :というスクリプトで、
    :  :指定した変数ID に 代入する値 で指定した値を代入(格納)できる。
    ◆注釈:target に スキルの対象となった敵の情報が入っているはず。
    :  :target.mhp で最大HP、 target.hp で現在HPが取得できるので、
    :  :taget.mhp - taget.hp という式で、
    :  :回復量を求めることができるはず。
    :  :これを代入する値として、setValue に設定する。
    ◆スクリプト:// 対象エネミーを取得
    :     :const target = $gameTroop.members()[$gameVariables.value(12) - 1000];
    :     :
    :     :// 対象エネミーの 最大HP - 現在HP を 変数ID 0013 に格納
    :     :$gameVariables.setValue(13, target.mhp - target.hp);
    
  3. 回復用スキルを作成し、
    先程作ったコモンイベントを発動前コモンイベントとして実行するためのタグを設定してください。
    スキルのメモ欄に
    <発動前コモン: コモンイベントの番号>
    もしくは
    <beforeCommon: コモンイベントの番号>
    と入力することで、発動前コモンを設定できます。
    全回復する際は、使用効果で、HP回復 100 % を設定するのが最も簡単な設定ですが、
    この場合、常に、対象の最大HP分回復するメッセージが表示されることになるので、
    それが嫌で、実際の回復分で表示したい場合、
    回復量を変数ID 0013 に格納しているので、
    ダメージ計算式で、

    コード: 全て選択

    v[13]
    とし、
    分散度を 0 %、 会心なしに設定することで、
    実際の回復分だけの表示になると思います。
  4. ダメージスキルを使う用のコモンイベントを作成します。
    以下のように作成してください。

    コード: 全て選択

    ◆注釈:ダメージ用のスキルを、
    :  :行動強制を利用して、発動する。
    :  :イベントコマンドからだと、変数の値が利用できないので、
    :  :スクリプトで。
    ◆注釈:
    ◆注釈:最初に
    :  :user という 一時的な変数を作成して、
    :  :スキル使用者の情報を格納している。
    ◆注釈:$gameParty.members()
    :  :で、戦闘に参加しているアクターの配列が取得できる。
    :  :変数ID 0011 に スキル使用者が何番目なのか入っているので、
    :  :対象を取得した時と同様に、
    :  :$gameParty.members()[$gameVariables.value(12)]
    :  :で、使用者の情報を取得する。
    ◆注釈:上から二番目で
    :  :targetIndex という 一時的な変数を作成して、
    :  :エネミーの位置を格納している。
    ◆注釈:対象となるエネミーの位置(インデックス)の取得は、
    :  :回復量をチェックするためのコモンイベントの説明通り、
    :  :変数ID 001 に入っているので、これを取得。
    :  :エネミーのインデックスは +1000 されていることに注意。
    ◆注釈:三番目で、
    :  :SkillId という一時的な変数を作成して、
    :  :強制行動で使用させるスキルのIDを格納している。
    ◆注釈:最後が、強制行動のコマンド。
    ◆注釈:敵またはアクターの情報が入った変数(オブジェクト)に対して、
    :  :.forceAction(使用するスキルのID, 対象のインデックス)
    :  :というメソッドを実行することで、
    :  :そのアクターに行動を強制する。
    ◆注釈:今回は、
    :  :user に使用者(今回はアクター)の情報、
    :  :skillId に使用させるスキルのID、
    :  :targetIndex に対象のインデックスが入っているので、
    :  :user.forceAction(skillId, targetIndex);
    :  :で、使用者にダメージ用のスキルを使わせる。
    ◆スクリプト:// スキル使用者の取得
    :     :const user = $gameParty.members()[$gameVariables.value(11)];
    :     :
    :     :// エネミーの位置を取得 
    :     :const targetIndex = $gameVariables.value(12) - 1000;
    :     :
    :     :// 使わせるスキルのIDを設定
    :     :const skillId = 13;
    :     :
    :     :// 行動の強制
    :     :user.forceAction(skillId, targetIndex);
    
  5. 2. で作成した回復用スキルに、先程作成したコモンイベントを呼ぶ使用効果を設定してください。
  6. ダメージ用のスキルを作成する。
    ダメージ用のスキルの計算式は、

    コード: 全て選択

    v[13] * 1.2 
    に設定し、
    分散度 0 % 、 会心なし、に設定する。
以上で、ご希望のスキルを作成させられるのではないかなと思います。

注釈は、使っているスクリプトの説明用なので、
内容を把握、動作が確認出来たら、消してしまってください。

以上、ご確認ください。

Re: 全回復させたときの回復量を取得したい

Posted: 2024年8月26日(月) 17:40
by rurero
非常に詳しくお答え頂き、ありがとうございます。

おかげ様で理想の挙動を起こすことが出来ました!
本当に助かりました!!