【解決】アクターAが敵を倒した数、のカウント方法

あああああ

【解決】アクターAが敵を倒した数、のカウント方法

投稿記事by あああああ » 2016年7月05日(火) 08:48

スクリプトBattleManager._subject.index();を使って最後に行動したアクターIDを取得し、
敵を倒すたびに+1ずつ加算していく方法で、アクターごとの撃破数をカウントしていたのですが、
こちらの反撃などで倒した際は上手くカウントされず困っています。

何かこれより良い方法はありますか?
最後に編集したユーザー あああああ on 2016年7月07日(木) 14:02 [ 編集 1 回目 ]

名無し蛙
記事: 302
登録日時: 2015年11月23日(月) 02:46

Re: アクターAが敵を倒した数、のカウント方法

投稿記事by 名無し蛙 » 2016年7月07日(木) 04:43

おつかれさまです。

ざっと見る限りGame_Action.prototype.applyの直後に撃破チェックすれば良さそうな気がしますね。
subject、target両方アクセス出来るし反撃・魔法反射もカバーしています。
流石にイベントコマンドによるダメージや状態異常によるスリップダメージ等による死はカウントしてませんけど。

コード: 全て選択

(function(){
var _Game_Action_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
    _Game_Action_apply.call(this, target); // 行動適用直後に
    if (this.subject().isActor() && // 行動者がアクターであり
        this.subject().actorId() === 1 && // 行動者のアクターIDが1で
        target.isEnemy() && // 対象者がエネミーであり
        target.isDead()) // 対象者が死亡している場合
    {
        // 汎用変数2番をカウントアップする
        $gameVariables.setValue(2, $gameVariables.value(2) + 1);
    }
};
}());


適当な名前でプラグイン登録した後にアクターIDと該当変数の部分を弄ってください。
追記:
魔法反射はカバーしていませんね。内部的に反撃とほぼ同じだと思ったら違いました。
まぁ、そちらの方が発動イメージに近いと思いますけど。
あああああ

Re: アクターAが敵を倒した数、のカウント方法

投稿記事by あああああ » 2016年7月07日(木) 14:02

さっそくプラグインを作成して動作を試してみたところ、無事解決する事ができました!

私が現在作っているゲームは魔法反射の概念は無いので安心して使えます!

“MV:質問” へ戻る