ページ 11

【解決済】プラグインコマンドの作り方

Posted: 2018年12月30日(日) 17:52
by 栗下義孝
いつもお世話になっています。
長い間ツクールを触っていたおかげで自作プラグインを作れるまで成長しました。
思い切って素材として配布しようと思ったのですが、プラグインコマンドの作り方がわからずご質問させて頂きました。

Scene_MapにSprite図形を表示する簡単なプラグインなのですが、プラグインコマンドで「x,y,width,height,radius(またはangle)」を指定できるようにしたいです。
以下のコードで引数を取得するところまではできたのですが、この引数をScene_Mapに定義しているSprite内まで呼び出す?ことができず…

コード: 全て選択

var Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
Game_Interpreter_pluginCommand.call(this, command, args);
   if (command === 'OP') {
      switch (args[0]) {
      case 'Frame':
         var creatX = parseInt(args[1]);
         var creatY = parseInt(args[2]);
         var creatW = parseInt(args[3]);
         var creatH = parseInt(args[4]);
         if (args[5]) {
            var creatR = parseInt(args[5]);
         } else { var creatR = 0; }
         break;
      }
   }
};


また同じくプラグインコマンドで例えば「show」で表示、「hidden」で消去したいのですが、どこを更新すればこのような処理ができるかもわかりません…
もしかしたらプラグインコマンドの設定は初心者に毛の生えた程度の自分には早かったかもしれません。
その場合、別の方法(スクリプト?)でのやり方をご教示いただけますと幸いです。
よろしくお願いします。

Re: プラグインコマンドの作り方

Posted: 2018年12月30日(日) 18:05
by 奏ねこま
>この引数をScene_Mapに定義しているSprite内まで呼び出す?ことができず…

Scene_Mapに存在する(追加済みの)Spriteをプラグインコマンドで操作したいのでしょうか?
それとも新しいSpriteをScene_Mapに追加したいのでしょうか?

Re: プラグインコマンドの作り方

Posted: 2018年12月30日(日) 19:09
by 栗下義孝
奏ねこま さま>

すでにScene_Mapに定義済みのものです(Scene_Map.prototype.createFrame)
ただ、あとからScene_Mapに追加する方法も気になるのであわせて教えていただけませんでしょうか?

Re: プラグインコマンドの作り方

Posted: 2018年12月30日(日) 19:20
by 奏ねこま
追加済みのSpriteとなると、そのSpriteがどういう変数名でどのように実装されているかがわからないと説明できないですね…
とりあえず、Scene_Map自体をプラグインコマンドの処理内で取得するなら

SceneManager._scene

で取れます。
Scene_Mapの中でthis._abcdSpriteとかいう名前でSpriteを保持させたなら、

SceneManager._scene._abcdSprite

で参照できます。

>あとからScene_Mapに追加する方法
現状、Spriteについてどこまで理解されているのかわからないので説明はまた別の機会に…

Re: プラグインコマンドの作り方

Posted: 2018年12月30日(日) 19:53
by 栗下義孝
奏ねこま さま>

少ない情報の中でお答え頂きありがとうございました。
SceneManagerを通して情報の読み取りができるとは思いませんでした。
教えていただいたもので修正しましたら、無事プラグインコマンドが機能しました!
今回の件はこれで解決いたしましたので「あとからScene_Mapに追加する方法」についてはまたの機会に…

ありがとうございました :mrgreen: