【解決済】AというプラグインからBのプラグインのメソッドの呼び出し方を知りたい

返信する
OikariBuncho
記事: 10
登録日時: 2022年2月12日(土) 15:40

【解決済】AというプラグインからBのプラグインのメソッドの呼び出し方を知りたい

投稿記事 by OikariBuncho »

初めまして、初めて投稿させていただきます。

AというプラグインからBというプラグインのメソッドを呼び出すとき、なぜこれで動いたのかが自分でわからずご質問させていただきました。知りたいことは、AというプラグインからBというプラグインのメソッドの正しい呼び方です。

使用させていただいているのは、TemplateEvent.jsと、ExternMessage.jsです。
TemplateEvent.jsには、文章の表示において、\sv[1]と入力すると、セルフ変数1を表示できる機能があります。
ExternMessage.jsには、以下のコードがあり、制御文字を解読している都合上、競合しうまく機能しなくなりました。

```
//----------------------------------------------------------------------------
// replace message id.
//----------------------------------------------------------------------------
// ツクール変数の添え字もメッセージIDに対応
// \P[n], \N[n]もあるが対応する必要性が余り感じられないので様子見
message = parseCmd(message, "\\V", args => {
args = tryReplace(args);
return $gameVariables.value(parseInt(args)).toString();
});
message = parseCmd(message, "\\C", args => {
return tryReplace(args);
});
// 単語を置き換える。再起コマンド実行可能。
var textFound = false;
message = parseCmd(message, "\\M", args => {
textFound = true;
return tryReplace(args);
});
```

そこで、以下のコードを該当部分に挿入すると、一番上のreturnは機能し、以下2つのreturnはきのうしませんでした。imported...Templateも動きます。
```
message = parseCmd(message, "\\sv", args => {
args = tryReplace(args);
return Imported..TemplateEvent.getSelfVariable(args); //なぜか動く
//return TemplateEvent.getSelfVariable(args); //TemplateEvent is not defined
//return Imported.TemplateEvent.getSelfVariable(args); //Cannnot read property 'getSelfVariable' of undefined
});
```

文法的に誤っている気がする(Imported..Template, Imported...Templateのところ)のですが、なぜかたまたま動きまして、なぜ動くのかをお分かりになられる方はいらっしゃいますでしょうか。
また、正しい呼び方がお分かりになられる方はいらっしゃいますでしょうか。
最後に編集したユーザー OikariBuncho [ 2022年2月13日(日) 19:39 ], 累計 1 回
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: AというプラグインからBのプラグインのメソッドを呼び出すとき、なぜこれで動いたのかを知りたい

投稿記事 by WTR »

解決まで導ける見通しは全くないまま言ってしまいますが、たぶん動いてませんよ。
文法エラーでプラグイン自体が読み込まれなくなっただけかと思います。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
OikariBuncho
記事: 10
登録日時: 2022年2月12日(土) 15:40

Re: AというプラグインからBのプラグインのメソッドの呼び出し方を知りたい

投稿記事 by OikariBuncho »

あ、、、 本当ですね。。。
プラグインが動かなくなってます。
ご指摘ありがとうございます。

うーむ、、、 どうやって呼び出したらいいのか。。。
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: AというプラグインからBのプラグインのメソッドの呼び出し方を知りたい

投稿記事 by WTR »

わからないくせに余計なことを言わないほうがいいかもしれませんが
セルフ変数というからにはどのマップのどのイベントのモノかわからないと
操作も値の呼び出しもできないのでは、と想像できます。
\sv[n] という文字列はその情報を含んでいないので
ゲーム変数を置換してるところの処理をコピペしてどうにかなるようなものではないかと…
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
Plasma Dark
記事: 731
登録日時: 2020年2月08日(土) 02:29
連絡する:

Re: AというプラグインからBのプラグインのメソッドの呼び出し方を知りたい

投稿記事 by Plasma Dark »

まず、問題となっているプラグインがある場合はそれぞれの入手元URLをご提示ください。

TemplateEvent.js 2.1.5
https://github.com/triacontane/RPGMaker ... teEvent.js

ExternMessage 1.3.2
https://github.com/into-vision/External ... Message.js

また、ツクマテの掲示板にはコードを貼り付けるためのタグが用意されています。(書き込みフォーム上部のCodeボタンで使用できます)
markdown形式は読んでくれないのでご注意ください。

やりたいことは、 ExternMessage.js のメッセージID指定としてセルフ変数を使用したいということで間違いないでしょうか。

コード: 全て選択

\M[\SV[X]]
残念ながら、メッセージ変換ロジックの書かれたメソッドから実行中のインタープリターやイベントIDを特定できないように見えるので、簡単には実現できなさそうです。
イベントIDを渡して、セルフ変数用の変換ロジックを足すのが一番楽な実現方法だと思います。

メッセージID変換ロジックだけでもメソッドに切り出して、 Game_Interpreter の責務に含めてしまって良い気もしますが、この辺りは作者の思想次第ですね。
OikariBuncho
記事: 10
登録日時: 2022年2月12日(土) 15:40

Re: AというプラグインからBのプラグインのメソッドの呼び出し方を知りたい

投稿記事 by OikariBuncho »

詳細な回答ありがとうございます!!!

>メッセージID変換ロジックだけでもメソッドに切り出して
やはりそうですよね。。。 
元のコード見てても、外部から呼べそうな感じではないなー、と思いながらもダメ元で質問してみました。

お忙しい中ご回答ありがとうございました!
返信する

“MV:質問”に戻る