【解決済み】プラグインの導入判定

アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

【解決済み】プラグインの導入判定

投稿記事by にゃたま » 2017年9月17日(日) 22:41

こんばんは。

トリアコンタン様のScene_SoundTest等のプラグインがON状態(有効になっているかどうか)
を取得する方法が知りたいです。

var Imported = Imported || {};
Imported.YEP_MoveRouteCore = true;

ynfly様などはこのように「Inported.プラグイン名」で判定したりできますが
トリアコンタン様のプラグインにはそういった記述がないのでON状態の判定がどうするかわかりません。
ご存じの方いましたらご教授願えますでしょうか?
最後に編集したユーザー にゃたま on 2017年9月19日(火) 08:50 [ 編集 1 回目 ]

アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: プラグインの導入判定

投稿記事by しぐれん » 2017年9月17日(日) 22:44

PluginManager.parameters()で該当するプラグインの名前を引っ張り出してチェックする方法があります。
読み込まれていなければundefinedが返ってきます。
現在、プラグイン依頼はお休み中です。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: プラグインの導入判定

投稿記事by にゃたま » 2017年9月18日(月) 00:38

しぐれん様

しぐれん さんが書きました:PluginManager.parameters()で該当するプラグインの名前を引っ張り出してチェックする方法があります。
読み込まれていなければundefinedが返ってきます。



お返事ありがとうございます。

具体的にですがどのようなスクリプトにすればよろしいでしょうか?
自作プラグイン上からconsole.logでPluginManager.parameters()を見ようとすると
画像のようなエラーになります。
添付ファイル
スクリーンショット 2017-09-18 0.35.40.png
アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: プラグインの導入判定

投稿記事by しぐれん » 2017年9月18日(月) 01:18

PluginManager.parameters('プラグインから.jsを抜いた名前')でプラグイン自体のパラメータを取得します。
本来はプラグインパラメータを自分で使うための処理ですが、これで行けるかと。

具体的には以下のような処理です。

コード: 全て選択

var p = PluginManager.parameters('プラグインから.jsを抜いた名前');
if(p){
//読み込まれている時の処理
}

現在、プラグイン依頼はお休み中です。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: プラグインの導入判定

投稿記事by にゃたま » 2017年9月18日(月) 21:22

しぐれん様

返事が遅くなり申し訳ございません。

しぐれん さんが書きました:PluginManager.parameters('プラグインから.jsを抜いた名前')でプラグイン自体のパラメータを取得します。
本来はプラグインパラメータを自分で使うための処理ですが、これで行けるかと。


SceneSoundTest.jsがオフの状態で
以下のように自作プラグインに入れて実行してみましたら画像のようなエラーが表示されるようです。
エラー箇所はvar _Scene_SoundTest_create = Scene_SoundTest.prototype.create;の部分のようです。
SceneSoundTest.jsがオフにもかかわらずif(p){の部分を通り抜けてしまうようです。
これはサウンドテストのウィンドウを透明化したく入れたコードになります。
サウンドテストのプラグインがオフのとき画像のエラーが表示されてしまうのでこのエラーを消したいと思って
このような質問をさせていただきました。お手数おかけしてすみません。

コード: 全て選択

    var p = PluginManager.parameters('SceneSoundTest');
    if(p){
        var _Scene_SoundTest_create =  Scene_SoundTest.prototype.create;
        Scene_SoundTest.prototype.create  = function() {
             _Scene_SoundTest_create.call(this);
                this._helpWindow.opacity = 0;
                this._bgmListWindow.opacity = 0;
                this._bgmSettingWindow.opacity = 0;
        };
    }
添付ファイル
スクリーンショット 2017-09-18 21.15.12.png
アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: プラグインの導入判定

投稿記事by しぐれん » 2017年9月18日(月) 21:29

追加調査しました。
$pluginsという変数にすべてのプラグインが配列で入ってました。
$plugins[i].nameに名前が、$plugins[i].statusにON/OFFが入っているようです。
現在、プラグイン依頼はお休み中です。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: プラグインの導入判定

投稿記事by にゃたま » 2017年9月18日(月) 21:35

しぐれん様

お返事ありがとうございます。

しぐれん さんが書きました:追加調査しました。
$pluginsという変数にすべてのプラグインが配列で入ってました。
$plugins[i].nameに名前が、$plugins[i].statusにON/OFFが入っているようです。


具体的にですがどのようなコードにすればよろしいでしょうか?
iとかどこからとってよいのかわかりません。
アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: プラグインの導入判定

投稿記事by しぐれん » 2017年9月18日(月) 21:55

$plugins[i]のiですが、これは配列の添え字という意味です。
省略せずに書くと以下のような内容です。

コード: 全て選択

for(var i=0;i<$plugins.length;++i){
   if($plugins[i].name ==='探したいプラグインの名前'){
   if($plugins[i].states){
   //プラグインがONの時の処理
   }
   }
}

現在、プラグイン依頼はお休み中です。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: プラグインの導入判定

投稿記事by にゃたま » 2017年9月18日(月) 22:08

しぐれん様

早速のご回答ありがとうございます。

しぐれん さんが書きました:

コード: 全て選択

for(var i=0;i<$plugins.length;++i){
   if($plugins[i].name ==='探したいプラグインの名前'){
   if($plugins[i].states){
   //プラグインがONの時の処理
   }
   }
}



forの下行に
console.log("name:"+$plugins[i].name+" states:"+$plugins[i].states);
を入れて確認したところONになっているものまでundefinedになっていました。
一度ご確認いただいでよろしいでしょうか?

追記
ひょっとしたら以下のようにfunction()の直下だからいけないのでしょうか?

コード: 全て選択

(function() {
for(var i=0;i<$plugins.length;++i){
   console.log("name:"+$plugins[i].name+"   states:"+$plugins[i].states);
   if($plugins[i].name ==='SceneSoundTest'){
     if($plugins[i].states){
     //プラグインがONの時の処理
     var _Scene_SoundTest_create =  Scene_SoundTest.prototype.create;
            Scene_SoundTest.prototype.create  = function() {
                 _Scene_SoundTest_create.call(this);
                    this._helpWindow.opacity = 0;
                    this._bgmListWindow.opacity = 0;
                    this._bgmSettingWindow.opacity = 0;
            };
     }   
   }
}
アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: プラグインの導入判定

投稿記事by しぐれん » 2017年9月18日(月) 22:52

私の手元だとundefinedにならないのでわからないです。
ひとまず、名前だけ・statusだけ表示で試せませんか?
現在、プラグイン依頼はお休み中です。

“MV:質問” へ戻る