ページ 11

ピクチャのボタン化プラグインをスクリプトから実行したい

Posted: 2020年5月06日(水) 22:18
by シンオン
いつもお世話になっております。
ピクチャのボタン化プラグインを利用しているのですが、
スクリプトを使ってプラグインの設定をするほうが楽だと気付きました。
上手くいけばほかのプラグインも同じ作業をすることが多いのであれば
スクリプトで設定していこうと思っているのですが、うまくいきません。

どのピクチャを選んだか、変数に入れて判断するため、
共通のコモンイベント(1)を利用します。
P_CALL_CE i 1 1
上記プラグインコマンドを入れたいと思っています。
※iは1から増加していきます。

for(var i = 1; i <= 22; i++){
var mes='P_CALL_CE ' + i + ' 1 1';
console.log(mes);
Game_Interpreter.prototype.pluginCommand(mes);
}

上記のように設定してみたのですが、機能しません。
mesをconsole.logで表示してみたところ
P_CALL_CE 1 1 1
P_CALL_CE 2 1 1
P_CALL_CE 3 1 1
など希望どおりの表示になってました。
しかし、プラグインのピクチャボタンの関連付けができていないようで
コモンイベント1に文章表示設定をしているのに、それも表示されません。

どのようにスクリプトを書けばいいのでしょうか?
22個なのであれば手作業で設定する方法もありますが、
設定したいプラグインコマンドが複数あり、手作業では厳しいので方法が知りたいです。

回答よろしくお願いします。

Re: ピクチャのボタン化プラグインをスクリプトから実行したい

Posted: 2020年5月06日(水) 23:03
by トリアコンタン
こんにちは!
プラグインのご利用ありがとうございます。

メソッドpluginCommandの呼び出しは以下の通りです。
コアスクリプトではpluginCommandの呼び出し元でコマンド文字列を解析し、コマンドと引数とに分けています。
よってpluginCommandを呼ぶときは別々に分けて呼び出します。

以下が修正例です。

コード: 全て選択

for(var i = 1; i <= 22; i++){
    var command='P_CALL_CE';
    this.pluginCommand(command, [i.toString(), '1', '1']);
}
なお、プラグインコマンドP_CALL_CEではパラメータに制御文字\v[n]が使えるので、内容次第ではイベントコマンドのループ処理を駆使して呼び出すことも可能です。

【解決済み】ピクチャのボタン化プラグインをスクリプトから実行したい

Posted: 2020年5月07日(木) 14:10
by シンオン
こんにちは!回答ありがとうございました!
無事、ピクチャにまとめてコモンイベントを設定することができました。
とても助かりました。ありがとうございます!

また、いろいろと調べていたら以下内容でスクリプトからプラグインコマンドを
実行すればほかのプラグインも実行できました。
以前以下と同じ内容でできなかったのは、何か私が間違えていたのかもしれません。
Game_Interpreter.prototype.pluginCommand('TEST',['引数1','引数2'…]);

以上、ありがとうございました!

Re: ピクチャのボタン化プラグインをスクリプトから実行したい

Posted: 2020年5月07日(木) 15:44
by トリアコンタン
こんにちは!
1点だけ補足させてください。
下記のコードの場合、動作するプラグインコマンドもありますが、エラーになるコマンドもあります。

コード: 全て選択

Game_Interpreter.prototype.pluginCommand('TEST',['引数1','引数2'…]);
理由は技術的な話になってしまいますが、少し複雑なJavaScriptの仕様のためです。
本来、呼び出し先(各プラグインで再定義されたpluginCommand)で『this』と記述すると実行主体(この場合はイベントのインタプリタ)のオブジェクトを参照できるのですが、上記の書き方だとプラグイン側で正しく参照できなくなりエラーになってしまいます。

下記のように記述することでエラーを回避できます。

コード: 全て選択

this.pluginCommand('TEST',['引数1','引数2'…]);

【解決済み】 ピクチャのボタン化プラグインをスクリプトから実行したい

Posted: 2020年5月07日(木) 16:52
by シンオン
こんにちは!
トリアコンタン様、補足ありがとうございます!

thisを使わずに書いてしまうと別物としてみなされてしまうとか、そういうことなのでしょうか?
頭が足らず、完璧に理解したわけではありませんが
thisを使えば安心だということは分かりました。
急に出てくるthis、プラグインで良く使われているthis、
どのthisも同じなのか?とか難しくて中々理解できないんですよね…。
補足いただいたように、ほかのプラグインをスクリプトで呼び出すときも「this」に変更します!


重ね重ね、ありがとうございました^^