ぼんさいゲーム

RPGツクールMVでゲームを作ったりするブログ

戦闘おわりに戦績を表示する

戦闘おわりに、その戦闘での戦績を表示させたいと思いまして。

戦闘画面が切り替わってからイベントを呼ぶプラグインはあったけど、戦闘画面のままイベントを呼べるものがなかったのでアレクさんに作ってもらいました。
(戦闘おわりのタイミングは色んな処理があって、思ったより大変だったそう。感謝)

メッセージを4行以上にするプラグインも作って(改変)もらいました。
f:id:ao385:20170412221611p:plain
(メモ)敵HP超える与ダメージは、与ダメージの値がそのまま取得される。

スクリプトでウィンドウ変更・メッセージ位置変更・メッセージ表示をしています。
こちらのサイト様を参考にさせていただきました。

・メッセージウィンドウ変更(1=透過黒)
$gameMessage.setBackground(1);

・メッセージ位置変更(1=中)
$gameMessage.setPositionType(1);

・メッセージテキスト表示
$gameMessage.add("戦闘に勝利!")
$gameMessage.add("合計"+$gameVariables.value(変数)+"のダメージを与えた!")

エフェクトはみんなでツクるプラグインコマンド集の、「指定位置にアニメーション表示」を使っています。
通常バトルエフェクトは敵IDで位置指定するので、敵がいないと表示できないんですね。
このプラグインを使うと、座標指定でエフェクトを表示できます。

戦績プラグイン

数値はトリアコンタンさんの「戦績プラグイン」で取得しています。
これは累計の数値をとるものなので、戦闘ごとの数値をとるためには毎回べつの変数に格納してリセット(0代入)する処理が必要ですね。
アクターごとの与えたダメージを変数に代入 - ツクマテ

このプラグインプラグインコマンドはありません。
イベントコマンド(変数の操作)で、値をとり出して使います。

・使い方
戦闘中の様々な情報を記録していつでも取得可能にします。
戦績として記録に残せるほか、特殊なスキルのダメージ計算式に
組み込んだりすることもできます。

アクターごとに以下の要素を記録できます。

・スキルごとの使用回数(戦闘中のみカウント。他項目も同様)
・全スキルの使用回数合計
・アイテムごとの使用回数
・全アイテムの使用回数合計
・敵キャラごとの撃破回数
・全敵キャラの撃破回数合計
・与えたダメージの合計
・与えたダメージの最大
・受けたダメージの合計
・受けたダメージの最大
・回復したダメージの合計
・消費したMP合計
・消費したTP合計
・戦闘不能回数

値はイベントコマンド「変数の操作」から「スクリプト」で
対応するスクリプトを呼び出して取得してください。

・データベースのアクターIDから取得する場合
$gameActors.actor(1).getSkillUseCounter(2); # アクター[1]のスキル[2]使用回数
$gameActors.actor(1).getAllSkillUseCounter(); # アクター[1]の全スキル使用回数
$gameActors.actor(1).getItemUseCounter(3); # アクター[1]のアイテム[3]使用回数
$gameActors.actor(1).getAllItemUseCounter(); # アクター[1]の全アイテム使用回数
$gameActors.actor(1).getKillEnemyCounter(4); # アクター[1]の敵キャラ[4]撃破数
$gameActors.actor(1).getAllKillEnemyCounter();# アクター[1]の全敵キャラ撃破数
$gameActors.actor(1).attackDamageMax; # アクター[1]の最大与ダメージ
$gameActors.actor(1).attackDamageSum; # アクター[1]の合計与ダメージ
$gameActors.actor(1).acceptDamageMax; # アクター[1]の最大被ダメージ
$gameActors.actor(1).acceptDamageSum; # アクター[1]の合計被ダメージ
$gameActors.actor(1).recoverDamageSum; # アクター[1]の合計回復ダメージ
$gameActors.actor(1).payCostMpSum; # アクター[1]の消費MP合計
$gameActors.actor(1).payCostTpSum; # アクター[1]の消費TP合計
$gameActors.actor(1).deadCounter; # アクター[1]の戦闘不能回数

・パーティの並び順(先頭は0)から取得する場合
$gameActors.actor(n)を$gameParty.members()[n]に置き換えて実行する。
(例)
$gameParty.members()[0].attackDamageMax # 先頭メンバーの最大与ダメージ

・計算式で使用する場合
$gameActors.actor(n)をa(実行者)もしくはb(対象者)に置き換えて実行する。
(例)
a.getSkillUseCounter(5) # 実行者のスキル[5]使用回数
b.getKillEnemyCounter(6) # 対象者の敵キャラ[6]撃破数

・すべてのアクターの合計値を取得する場合
$gameActors.actor(n)を$gameActorsに置き換えて実行する。
(例)
$gameActors.getKillEnemyCounter(4); # 全アクターの敵キャラ[4]撃破数合計

・パーティごとに管理される戦績を取得する場合
$gameParty.gainGoldSum; # 入手ゴールド合計
$gameParty.loseGoldSum; # 消費ゴールド合計
$gameParty.getGainItemSum(1); # アイテム[1]の入手合計
$gameParty.getGainWeaponSum(1); # 武器[1]の入手合計(初期装備以外)
$gameParty.getGainArmorSum(1); # 防具[1]の入手合計(初期装備以外)