こんにちは。いつもお世話になっております。
Yanfly Engine Plugin様において提供されているプラグイン
YEP_EquipBattleSkills(http://yanfly.moe/2016/04/08/yep-90-equip-battle-skills-rpg-maker-mv/)
に関する質問です。
YEP_EquipBattleSkillsのスキル装備欄は、空欄があると、
スキルを装備中の箇所があっても空欄が優先的に選択される仕様になっているようです。
現在制作中のゲームでは、このプラグインを用いて
戦闘に使用するスキルを4つまで選択するシステムを導入しておりますが、
ゲーム開始直後から序盤にかけて、装備しているスキルの数が装備可能なスキル数の限界より少ない時などに
空欄が自動選択され、スムーズなスキル選択が行えない点が
ユーザビリティの観点からすると不便になるのではないかと思い、
通常(プラグイン未導入時)のスキル欄のように常に左上から選択できるようにしたく、
当該プラグインを改変できないか試しておりましたが、
プラグイン内のどの箇所を改変すべきか(空欄を優先的に選択する処理を行っている箇所)が未だ把握できておりません。
望む挙動をさせるにはどのように改変を行えばよいのでしょうか。
【解決済】YEP_EquipBattleSkillsの仕様について
Re: YEP_EquipBattleSkillsの仕様について
コード: 全て選択
Scene_Skill.prototype.onSkillEqCancel = function() {
this._skillEquipWindow.deactivate();
this._skillEquipWindow.deselect();
this._skillEquipWindow.hide();
this._compareWindow.hide();
this._itemWindow.show();
this._itemWindow.activate();
if (this._itemWindow.index() > this.actor().maxBattleSkills() - 1) {
//ここの行を調整
this._itemWindow.select(this.actor().maxBattleSkills() - 1);
}
};
こんなですね。
select()はWindowの要素を選択する関数ですので、ここをselect(0)にすればよいと思います。
現在、プラグイン依頼はお休み中です。
返信
>しぐれん さん
迅速なご返信をいただき、ありがとうございます。
YEP_EquipBattleSkills のみを導入したプロジェクト、オプションの「コマンド記憶」OFF、
アクターはデフォルトデータのハロルド(スキル2個初期習得)で
改変後の動作テストを行ったところ以下のように動作しました。
・if文を消さずに、if文の中身をthis._itemWindow.select(0);とした場合
メニュー/戦闘時のスキル選択、共に左上のヒールではなく左下の空欄が選択される。
スパークとヒールの位置を付け直したり、どちらかを外したりしてから再度スキル装備画面に移ったり、
一度メニュー画面を抜け、再度選択しても同様。
戦闘画面では最初に空欄が選択され、一度コマンドを決定した後キャンセルしてやり直すと
キャンセル前のコマンドの位置が選択されている。
・if文を消してthis._itemWindow.select(0);のみとした場合
最初に選択した時だけ空欄が自動選択され、一度スキルをセットしたり外したりするとどの位置からでも左上に戻る。
一度メニュー画面を抜けてからもう一度スキル装備を行おうとすると再度空欄が自動選択される。
戦闘開始直後のスキル選択では空欄が自動選択される。キャンセル後の挙動は上記と同様。
こちらが想定する挙動に関しても語弊があったと思われますので再度整理しますと、
「メニュー画面や戦闘時において、一番最初にスキル装備やスキルコマンドを選択した時は
装備中スキルの空欄の有無に関わらず一番左上のスキルが選択される」
「スキルの付け替えをした直後や、戦闘中にスキルを決定した後行動をやり直す時は、
そのスキルのあった位置が選択されている
(これは改変していない仕様でもそのように動作しているものです)」
というように動作させたかったのですが、現状では想定した通りの動作はしませんでした。
こちらで行った改変方法に何らかの問題がある可能性もございますので、
引き続き対処法を模索したく思います。
迅速なご返信をいただき、ありがとうございます。
YEP_EquipBattleSkills のみを導入したプロジェクト、オプションの「コマンド記憶」OFF、
アクターはデフォルトデータのハロルド(スキル2個初期習得)で
改変後の動作テストを行ったところ以下のように動作しました。
・if文を消さずに、if文の中身をthis._itemWindow.select(0);とした場合
メニュー/戦闘時のスキル選択、共に左上のヒールではなく左下の空欄が選択される。
スパークとヒールの位置を付け直したり、どちらかを外したりしてから再度スキル装備画面に移ったり、
一度メニュー画面を抜け、再度選択しても同様。
戦闘画面では最初に空欄が選択され、一度コマンドを決定した後キャンセルしてやり直すと
キャンセル前のコマンドの位置が選択されている。
・if文を消してthis._itemWindow.select(0);のみとした場合
最初に選択した時だけ空欄が自動選択され、一度スキルをセットしたり外したりするとどの位置からでも左上に戻る。
一度メニュー画面を抜けてからもう一度スキル装備を行おうとすると再度空欄が自動選択される。
戦闘開始直後のスキル選択では空欄が自動選択される。キャンセル後の挙動は上記と同様。
こちらが想定する挙動に関しても語弊があったと思われますので再度整理しますと、
「メニュー画面や戦闘時において、一番最初にスキル装備やスキルコマンドを選択した時は
装備中スキルの空欄の有無に関わらず一番左上のスキルが選択される」
「スキルの付け替えをした直後や、戦闘中にスキルを決定した後行動をやり直す時は、
そのスキルのあった位置が選択されている
(これは改変していない仕様でもそのように動作しているものです)」
というように動作させたかったのですが、現状では想定した通りの動作はしませんでした。
こちらで行った改変方法に何らかの問題がある可能性もございますので、
引き続き対処法を模索したく思います。
Re: YEP_EquipBattleSkillsの仕様について
コード: 全て選択
Window_SkillList.prototype.selectLast = function() {
var skill;
if ($gameParty.inBattle()) {
skill = this._actor.lastBattleSkill();
} else {
skill = this._actor.lastMenuSkill();
}
var index = this._data.indexOf(skill);
this.select(index >= 0 && skill != null ? index : 0);
};
こちらを別プラグインとして追加してみては如何でしょうか。
(EquipCore自体に追記してもいいのですが…)
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
返信
>剣崎 宗二 さん
ご返信いただき、ありがとうございます。
ご提示いただいたコードを、別プラグインとして動作テスト用の新規プロジェクト、
および制作中ゲームのプロジェクトに導入いたしましたところ、
どちらの場合も当方の想定通りの動作をいたしましたことをご報告させていただきます。
この度は、丁寧なご回答をいただき、誠にありがとうございました。
こちらのトピックにつきましては、解決済とさせていただきたく思います。
ご返信いただき、ありがとうございます。
ご提示いただいたコードを、別プラグインとして動作テスト用の新規プロジェクト、
および制作中ゲームのプロジェクトに導入いたしましたところ、
どちらの場合も当方の想定通りの動作をいたしましたことをご報告させていただきます。
この度は、丁寧なご回答をいただき、誠にありがとうございました。
こちらのトピックにつきましては、解決済とさせていただきたく思います。