スキルタイプの表示・非表示を設定したい

なっぱ
記事: 43
登録日時: 2015年11月19日(木) 20:19

スキルタイプの表示・非表示を設定したい

投稿記事by なっぱ » 2016年2月20日(土) 20:53

デフォルトでは、追加されたスキルタイプはメニュー・戦闘中に関わらずいつでも全て表示される仕様かと思います。
これを、「スイッチで表示・非表示を設定」できるようにしたいのですが、できないでしょうか?

ちなみに、以前vxaceの頃は、星潟さんのサイトのスクリプト
「スキルコマンド表示条件」
http://artificialprovidence.web.fc2.com ... DELETE.txt
で対応していました。
よろしくお願いします。

アバター
terunon
記事: 76
登録日時: 2016年2月12日(金) 12:14
お住まい: 熊本県
連絡を取る:

Re: スキルタイプの表示・非表示を設定したい

投稿記事by terunon » 2016年2月22日(月) 11:21

なっぱさん

プラグイン素材というかスクリプトの改変案なのですが、うちのエイリアスエイクで似たようなことをしているので、、、
こちらでいかがでしょうか?
下線部が元々のものに追記した部分なのですが、「スキルタイプIDが該当スキルタイプでない、または特定スイッチがONである」ときにのみコマンドを出すよう条件分岐を入れてみました。
スイッチをONにすると該当スキルタイプが出てきます。

Window_ActorCommand.prototype.addSkillCommands = function() {
var skillTypes = this._actor.addedSkillTypes();
skillTypes.sort(function(a, b) {
return a - b;
});
skillTypes.forEach(function(stypeId) {
var name = $dataSystem.skillTypes[stypeId];
if (stypeId != 該当スキルタイプID || $gameSwitches.value(消す用スイッチの番号)) this.addCommand(name, 'skill', true, stypeId);
}, this);
};
terunon
絵描いたり、ボカロPしたり、ツクったりしてます。

ツクールMV製ローグライクアクションアドベンチャーRPG/ニコニコ自作ゲームフェス2016敢闘賞作品
『AliasAche:エイリアスエイク』 もりもり公開中です。
紹介ページ→ http://tri-nitroterunon37.wix.com/terunon#!aliasache/fyncb
すぐにブラウザプレイするならこちら→ http://html5.plicy.net/GamePlay/19919
なっぱ
記事: 43
登録日時: 2015年11月19日(木) 20:19

Re: スキルタイプの表示・非表示を設定したい

投稿記事by なっぱ » 2016年2月23日(火) 19:53

お返事遅くなりまして申し訳ありません。

アドバイスありがとうございます。
すみませんがもう少し教えて下さい。
今回のこちらが考えている使用用途として、
①特定のアイテム・装備を所持している時だけ表示されるスキルタイプの設定
②メニューには表示されるが、戦闘中は表示されないスキルタイプの設定
があります。

①については、アドバイス頂いたスクリプトを元に再現できそうなのですが、
②に就いても再現できるようアドバイス頂けないでしょうか?

よろしくお願いします。
アバター
terunon
記事: 76
登録日時: 2016年2月12日(金) 12:14
お住まい: 熊本県
連絡を取る:

Re: スキルタイプの表示・非表示を設定したい

投稿記事by terunon » 2016年2月24日(水) 00:35

なっぱさん

えと、前述のスクリプトの Window_ActorCommand は戦闘中のコマンド選択ウィンドウを指すウィンドウですので
再現できるのは②の方になります。
(どのウィンドウがどんな名称かは、デジカさん http://tkool.degica.com/free-downloads/free-plugins
が配布している WindowIdentifier プラグインを使って調べてみてください)

①の方は、メニュー画面にあるスキルタイプ選択ウィンドウWindow_SkillTypeの管轄になるので、
Window_SkillType.prototype.makeCommandList = function() {
if (this._actor) {
var skillTypes = this._actor.addedSkillTypes();
skillTypes.sort(function(a, b) {
return a - b;
});
skillTypes.forEach(function(stypeId) {
var name = $dataSystem.skillTypes[stypeId];
this.addCommand(name, 'skill', true, stypeId);    ←ココ
}, this);
}
};

……を、if (stypeId != 除外スキルタイプID || $gameSwitches.value(number)) this.addCommand(name, 'skill', true, stypeId); 
のように、お好きな条件で条件分岐すればできると思います。

特定のアイテムを条件にしたいなら、$gameParty.hasItem(アイテムオブジェクト,装備品を含めるか)を条件分岐に入れるのもいいと思います。
こちらはrpg_objects.jsの4941行めをご参照ください。
例: $gameParty.hasItem($dataweapons[1], true) //武器ID1を装備品含め誰かが所持してればtrue
terunon
絵描いたり、ボカロPしたり、ツクったりしてます。

ツクールMV製ローグライクアクションアドベンチャーRPG/ニコニコ自作ゲームフェス2016敢闘賞作品
『AliasAche:エイリアスエイク』 もりもり公開中です。
紹介ページ→ http://tri-nitroterunon37.wix.com/terunon#!aliasache/fyncb
すぐにブラウザプレイするならこちら→ http://html5.plicy.net/GamePlay/19919
なっぱ
記事: 43
登録日時: 2015年11月19日(木) 20:19

Re: スキルタイプの表示・非表示を設定したい

投稿記事by なっぱ » 2016年2月24日(水) 19:47

ご助言ありがとうございました。

最後のアイテム条件の部分についてはまだ試していませんが、スイッチによるスキルタイプの表示・非表示の設定が一応できるようになりました。
(一応というのは、「YEP_CoreEngine」のプラグインを導入していると上手く動作しないようなので)
現状CoreEngineを使わない方向でどうにかする方法を考えていますが、もし競合対策できそうでしたら教えていただけると助かります。

とりあえず、これまでのご助言ありがとうございました。
アバター
terunon
記事: 76
登録日時: 2016年2月12日(金) 12:14
お住まい: 熊本県
連絡を取る:

Re: スキルタイプの表示・非表示を設定したい

投稿記事by terunon » 2016年2月26日(金) 12:22

なっぱさん

この競合は、今回変更を加えた箇所をYEP_CoreEngineさんが上書きしてしまってて
結果反映されないことによるものですね、、、。
こういう場合は、YEP_CoreEngineさん自体をいじるか、YEP_CoreEngineの後にプラグインとして追加すれば動作するはずです。(たくさんプラグインを使う場合、覚えておくといいと思います!)

テキストファイルで前回お伝えした処理を書いて(以下のようになります)
(function() {
Window_ActorCommand.prototype.addSkillCommands = function() {
var skillTypes = this._actor.addedSkillTypes();
skillTypes.sort(function(a, b) {
return a - b;
});
skillTypes.forEach(function(stypeId) {
var name = $dataSystem.skillTypes[stypeId];
if (stypeId != 該当スキルタイプID || $gameSwitches.value(消す用スイッチの番号)) this.addCommand(name, 'skill', true, stypeId);
}, this);
};
})();
これを適当な名前で保存したあと拡張子を .jsに変更し、プラグインフォルダに入れてツクールさん側に適用するか、

もしくはYEP_CoreEngineさん側のWindow_SkillType.prototype.makeCommandListにある同様の処理を
Window_SkillType.prototype.makeCommandList = function() {
if (this._actor) {
var skillTypes = this._actor.addedSkillTypes();
skillTypes.sort(function(a, b){return a-b});
skillTypes.forEach(function(stypeId) {
var name = $dataSystem.skillTypes[stypeId];
if (stypeId != 該当スキルタイプID || $gameSwitches.value(消す用スイッチの番号)) this.addCommand(name, 'skill', true, stypeId);
}, this);
}
};

のように変更すれば、変更が反映されると思います。

なっぱさんは、過去の書き込みを見るとなかなか凝ったシステムのゲームを計画されてるようでしたので、
スクリプトの扱いを多少慣れられた方が制作が捗るかな? と思い、
あえてスクリプトをいろいろご自身で触っていただく形で説明させていただいてます。
もしストレスに感じられてたら申し訳ありません…! 制作応援してます。
terunon
絵描いたり、ボカロPしたり、ツクったりしてます。

ツクールMV製ローグライクアクションアドベンチャーRPG/ニコニコ自作ゲームフェス2016敢闘賞作品
『AliasAche:エイリアスエイク』 もりもり公開中です。
紹介ページ→ http://tri-nitroterunon37.wix.com/terunon#!aliasache/fyncb
すぐにブラウザプレイするならこちら→ http://html5.plicy.net/GamePlay/19919
なっぱ
記事: 43
登録日時: 2015年11月19日(木) 20:19

Re: スキルタイプの表示・非表示を設定したい

投稿記事by なっぱ » 2016年2月26日(金) 17:57

teruronさん

重ね重ねのご助言、また色々ご配慮していただきましてありがとうございます!
スクリプトやプラグインを自分で一から作るのは無理でも、
プログラムの多少の理解や改変ができる方が作成が捗るのはもちろんのことで、
お心遣い大変ありがたいです。

今回のこのトピックについては、これで解決とさせていただきます。
ありがとうございました。

“MV:プラグイン素材のリクエスト” へ戻る