【解決済み】「変数代入」と「コモンイベント」を実行するプラグイン

そみや
記事: 60
登録日時: 2021年1月25日(月) 01:34

【解決済み】「変数代入」と「コモンイベント」を実行するプラグイン

投稿記事by そみや » 2022年2月01日(火) 16:14

「変数代入」と「コモンイベント」を実行するプラグインのどこを直せばいいでしょうか。
自分なりにプラグイン作成してみましたが、実行しても無反応で困っています。
【追記】自作してみたプラグインですが、変数代入もコモンイベント実行もせず、エラーにもなりません。

コード: 全て選択

//=============================================================================
// 変数代入とコモンイベント実行のプラグイン
// test.js
//=============================================================================

/*:ja
 * @plugindesc 変数代入とコモンイベントを実行するプラグイン
 * @help
 * =======================================
 * 
 * プラグインコマンド:
 *   テスト 要素[0] 要素[1] 要素[2]
 * 
 * =======================================
 */

(function() {
   
    var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.call(this, command, args);
        if (command === 'テスト') {
         $gameVariables.setValue( 22,[args[0],args[1],argsb[2]]);
         this.setupChild($dataCommonEvents[33].list, 0);
      }
        }
    };
});


現在、下記のスクリプトを使っています。

コード: 全て選択

① var a = 11 ;
② var b = "A";
③ var c = "あ";
④ $gameVariables.setValue(22 ,[a,b,c]);
⑤ this.setupChild($dataCommonEvents[33].list, 0);

変数22に[ 11, A , あ ]を代入し、コモンイベント33を実行するものです。
このスクリプトを多用する為、プラグインを使って一行にまとめたいです。
①~③値は変化値で、④変数22と⑤コモン33は共通値(固定値)となり、

コード: 全て選択

プラグインコマンド:テスト 11 A あ

という風に、プラグイン内で「変数代入」と「コモンイベント」の実行を行いたいです。

また④⑤は、固定値なのですが仮に変更する場合に
全てのスクリプトを一個一個手直しするのは困難な為、
プラグインひとつで一括で変更できる様にしたいとも思っています。

以上、よろしくお願い致します。
最後に編集したユーザー そみや on 2022年2月01日(火) 21:03 [ 編集 4 回目 ]

アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 「変数代入」と「コモンイベント」を実行するプラグイン

投稿記事by WTR » 2022年2月01日(火) 18:13

質問が一つもないなら書くところが違うと思いますが
あくまで質問として進めるなら
自分なりに作ってみたというプラグインを曝け出して
なんで無反応なのか確認していくのがよくないですか。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
そみや
記事: 60
登録日時: 2021年1月25日(月) 01:34

Re: 「変数代入」と「コモンイベント」を実行するプラグイン

投稿記事by そみや » 2022年2月01日(火) 18:42

WTR様

ありがとうございます。
申し訳ありません。質問として改めて記載させて頂きます。

自分なりに作ってみたプラグインを下記に記載します。
実行しても、変数代入もコモンイベント実行もされず、エラーも発生しない為どうすればいいかわかりません。
ご教授お願い致します。

//=============================================================================
// 変数代入とコモンイベント実行のプラグイン
// test.js
//=============================================================================

/*:ja
* @plugindesc 変数代入とコモンイベントを実行するプラグイン
* @help
* =======================================
* 
* プラグインコマンド:
* テスト 要素[0] 要素[1] 要素[2]
* 
* =======================================
*/

(function() {

var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
_Game_Interpreter_pluginCommand.call(this, command, args);
if (command === 'テスト') {
$gameVariables.setValue( 22,[args[0],args[1],argsb[2]]);
this.setupChild($dataCommonEvents[33].list, 0);
}
}
};
});
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 「変数代入」と「コモンイベント」を実行するプラグイン

投稿記事by WTR » 2022年2月01日(火) 19:04

エラーでませんかね? SyntaxError が。

① {} の対応関係が間違っている } が1個多いです
② argsb という未定義変数が使われている b が余計
③ 最後の行 () が足りない

①②はちょいミスですね。
いいエディタを使うと減らせるミスだと思います。

③は私もおまじないだと思って何も考えずに書いているようなもので
正しくその必要性を説明できない気がするのでとりあえず置いておきます…

コード: 全て選択

(function() {
   var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
   Game_Interpreter.prototype.pluginCommand = function(command, args) {
      _Game_Interpreter_pluginCommand.call(this, command, args);
      if (command === 'テスト') {
         $gameVariables.setValue( 22,[args[0],args[1],args[2]]);
         this.setupChild($dataCommonEvents[33].list, 0);
      }
   };
})();


あと args[0] は数値型を期待しているような気がするので Number(args[0]) としておいたほうがいいかもしれません。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
そみや
記事: 60
登録日時: 2021年1月25日(月) 01:34

Re: 「変数代入」と「コモンイベント」を実行するプラグイン

投稿記事by そみや » 2022年2月01日(火) 19:38

WTR様

ご教授頂きありがとうございます。
プラグイン動作しました。

初歩的なミスが多く申し訳ありませんでした。
原因はわかりませんが、SyntaxErrorを含めエラーにも発生していませんでした。
プログラムはメモ帳を使っているので、ちゃんとしたエディタ探してみます。
また③の()は今後付けます。

あと一点質問があります。
他のプラグインと競合してエラーになると聞くのですが、
今回のプラグインで言うと何処が該当するのでしょうか?

if (command === 'テスト')

「テスト」の単語を、他のプラグインで使用していると競合するとは思うのですが、
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;

「 var _Game_Interpreter_pluginCommand」も該当するのでしょうか?
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 「変数代入」と「コモンイベント」を実行するプラグイン

投稿記事by WTR » 2022年2月01日(火) 19:47

Syntax error は F8 で開くデバッグコンソールをみると出ているんじゃないでしょうか。
赤字で Uncaught SyntaxError: Unexpected token ; と

プラグイン自体が文法エラーで読み込まれていないので
追記した処理が呼ばれることもなく
未定義変数を参照してるよエラーも顕在化しない状態だったのではないかと思います。

そみや さんが書きました:「 var _Game_Interpreter_pluginCommand」も該当するのでしょうか?

こっちは問題ないです。
(function() {
...
})();
の中で宣言した変数はそのプラグインの中でしか使えません。
他のプラグインが同じ名前を使っていても、お互いのプラグインの中に閉じ込められた話なので競合しません。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
そみや
記事: 60
登録日時: 2021年1月25日(月) 01:34

Re: 「変数代入」と「コモンイベント」を実行するプラグイン

投稿記事by そみや » 2022年2月01日(火) 20:15

WTR様

なるほど
function() {
...
})();
の間は定義した変数は被らないんですね。勉強になりました。
またプラグインを作る際は、コンソールにエラーがないか注意します。

今回プラグインを作って思ったのですが、
プラグインコマンドを実行する度に、全てのプラグインから「対象のコマンド名」を総当たりする。
つまり、今回の様なシンプルなプラグインだとしても
他のプラグインの数やコマンド名が多くなるにつれて、実行に時間が掛かる。
...という考えであっているでしょうか?

実際それ程影響はないとは思いますが、傾向として知りたいです。
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 「変数代入」と「コモンイベント」を実行するプラグイン

投稿記事by WTR » 2022年2月01日(火) 20:26

そみや さんが書きました:実際それ程影響はないとは思いますが

これが全てではないですかね。
100や200のプラグインを入れたところで体感できるものにはならないと思います。
プラグインコマンドを10万個定義して10万回 コマンド名を評価させたらわかりませんが…
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
そみや
記事: 60
登録日時: 2021年1月25日(月) 01:34

Re: 「変数代入」と「コモンイベント」を実行するプラグイン

投稿記事by そみや » 2022年2月01日(火) 21:02

WTR様

そうですね、影響がなければ問題ですね。
丁寧な説明ありがとうございました。
とても勉強になりました。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 【解決済み】「変数代入」と「コモンイベント」を実行するプラグイン

投稿記事by Plasma Dark » 2022年2月01日(火) 23:54

③は私もおまじないだと思って何も考えずに書いているようなもので
正しくその必要性を説明できない気がするのでとりあえず置いておきます…


おまじないではなく、当然意味のあるコードですので、本筋は解決済みのようですが説明を置いておきます。

コード: 全て選択

(function(){
  ...
})();

このコードが何をしているかというと、関数式を実行しています。IIFEと呼ばれるパターンですね。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions

“MV:質問” へ戻る