ページ 1 / 1
戦闘アニメーションの表示切替プラグイン
Posted: 2016年7月10日(日) 16:27
by ハーリー
Re: 戦闘アニメーションの表示切替プラグイン
Posted: 2016年7月12日(火) 00:38
by U-D
ハーリー様、素敵なプラグインをありがとうございます。
一つ要望があるのですがよろしいでしょうか?
プラグインを導入してから初めてゲームを起動した際、
オプションの戦闘アニメーションの項目が OFF になっております。
オプションに手をつけずにゲームを開始するプレイヤーの方々もいらっしゃると思うので、
こちらの項目をデフォルトで ON にしておく事ができるパラメータを
追加していただけないでしょうか?
Re: 戦闘アニメーションの表示切替プラグイン
Posted: 2016年7月12日(火) 08:27
by ハーリー
>U-D様
ご報告ありがとうございます!
初期状態からONにしていたつもりでしたが、セーブデータをロードして使用していたため、
ただの勘違い…デバック不足でした。申し訳ありません。
最初からONにする方法がわからなかったので、
「戦闘アニメーション」をOFFにするのではなく
「戦闘アニメ非表示」をONにすると非表示にする方式に変更しました。
Re: 戦闘アニメーションの表示切替プラグイン
Posted: 2016年7月12日(火) 19:36
by yamachan
こんばんは!
オプションメニューを扱うとき、初期状態のチェックって忘れがちですよね。
たまに config.rpgsave を削除してテストする癖をつけるのが良いかもしれません。
ConfigManager.applyData ですが、config.rpgsave が無いと空のオブジェクトが渡されます。
また途中で本プラグインを組み込んだ場合でも、保存された値は無い(===undefined)ですね。
なので例えば、以下のように変更してはどうでしょうか。
コード: 全て選択
var _ConfigManager_applyData = ConfigManager.applyData;
ConfigManager.applyData = function(config) {
_ConfigManager_applyData.apply(this, arguments);
this.animationCut = config.animationCut === undefined ? true : this.readFlag(config, 'animationCut');
};
ついでなのですが、startAnimation は元のロジックを生かしたほうが、他のプラグインとの競合が減るとおもいます。
コード: 全て選択
var _Game_Battler_startAnimation = Game_Battler.prototype.startAnimation;
Game_Battler.prototype.startAnimation = function(animationId, mirror, delay) {
if(ConfigManager.animationCut){
_Game_Battler_startAnimation.call(this, arguments)
}
};
ではでは。
Re: 戦闘アニメーションの表示切替プラグイン
Posted: 2016年7月12日(火) 21:20
by ハーリー
>yamachan様
詳しい解説ありがとうございます!
なるべくcall関数を利用して、元ロジックを利用する方が競合が少ないのですね。
早速お借りしたコード(下の方)を入れてみたのですが、
cannot read property 'position' of undefined
が表示され、上手く機能しませんでした…。
また上の方のコードについてですが、初期状態で他のオプション項目
「常時ダッシュ」「コマンド記憶」の項目がOFFになっていることから、
このプラグインもそれに倣い初期状態はOFFにする方が納まりがいいのではないか、
と思ったので現状のままにすることにします。
それにしても、プラグインのコードを添削していただき、とても勉強になりました!

Re: 戦闘アニメーションの表示切替プラグイン
Posted: 2016年7月12日(火) 23:58
by yamachan
こんばんは!
すみません、確認せず元のコードを中途半端に書き換えてしてしまいました。
apply じゃないので引数を配列で渡してはダメですね…
コード: 全て選択
if(ConfigManager.animationCut){
_Game_Battler_startAnimation.call(this, animationId, mirror, delay);
}
もしくは
コード: 全て選択
if(ConfigManager.animationCut){
_Game_Battler_startAnimation.appy(this, arguments);
}
で動作するとおもいます。
元の関数をなるべく呼ぶようにすると、同じ関数を書き換える他のプラグインと組み合わせても、うまく動作する可能性が高まります。
今回はOFFだと元の関数を呼ばないので、完全ではないですが…
自分で書く場合には「OFFの場合、animationIdにnull指定してでも一応は呼んでおいたほうが無難だろうか、いやそこまですることはないか?でも…」など悩むとおもいます

Re: 戦闘アニメーションの表示切替プラグイン
Posted: 2016年7月13日(水) 00:54
by U-D
ハーリー様、素早く対応していただき助かります!
ありがとうございました!