【解決済み】スクリプトからイベントコマンドを呼び出す方法

でろりん

ユーザー
スクリプトからイベントコマンドを呼び出す方法を求めています
どうしたらいいでしょうか?
多分超基礎的な部分だと思うのですが、それゆえか、検索しても全く出てこないので教えてください
例として、イベントコード284の遠景のパラメータ0~4までを変えるとすれば、どのような書き方をしたらよいでしょうか?
 

sally_elly

ユーザー
■ツクールMZスクリプトリファレンスwiki

こちらにイベントコマンドのスクリプトが載っていますよ。
その他、JSのリファレンスならとんびさんの

■RPGツクールMZ 非公式JavaScriptリファレンス

を参考にされると良いかと思います。

※2021/8/21 23:00 追記
返信ですと余分となりそうなため、追記という形で失礼します。
中途半端な知識でご質問の本質を勘違いしていました。
余計なお手間をとらせ、申し訳ありません。
 
最後に編集:

でろりん

ユーザー
sally_ellyさん

レスを頂きありがとうございます。
大変申し訳ありませんが、求めているのはタイトルの通りです。
遠景に関しては例であり、遠景を表示する方法を求めているわけではないのです。

また、リファレンスには載っておりませんでした。
恐らく本件は、ツクールの新参者が必ず気にする部分であるはずですが、本当に全くどこにも情報がない為、今後の為にも、明確な記述サンプルがあれば良いと考え、質問をさせていただいております。
大変お手数ですが、お分かりになる方がいらっしゃいましたら、是非ともお願いしたく存じます。

また、もしくは、存在しないのでしょうか?
存在しない為、イベントコマンドを表現しようとしたら、イベントコマンドを実行するのではなく、
中で行われていることを取り出して行うしかないのでしょうか?
てっきりイベントコマンドとして関数化されたものをそのまま呼び出す方法が当然あるものだと思っていたのですが、違うのでしょうか?
 

chronicle

ユーザー
まずツクールはプログラミングの知識や記述なしで、ゲームが制作出来るツールですので、
スクリプトでイベントコマンドを呼び出し動作させられるようには作られてはいません。
イベントコマンド「スクリプト」は、「上級」のカテゴリに入っていて、サポートの対象外です。

「スクリプト」も1つのイベントコマンドであり、イベントコマンドの中からイベントコマンドを呼び出す事も想定されていません。
ここで構造的に無理が生じてきます。

イベントコマンドの処理も、割と大規模で複雑になっています。

イベントコマンドの内容をスクリプトで代用する事は可能ですが、構造的に問題が発生してよく質問されています。
(MVとMZでは若干変わっていますが、根本的な構造は変わりません)


ツクールの目的に合わず、構造的に無理が生じること、イベントの処理は単純な処理ではないので
(中で行われていることを取り出して)代用した場合にも問題が生じる
という感じです。
 
(例)「BGMの演奏」
JavaScript:
const params = [{
  name:"Field1",
  volume: 90,
  pitch: 100,
  pan: 0
}];
$gameMap._interpreter.command241(params);
どこに _interpreter のインスタンスが入っているのかと、params の内容はコマンド毎に異なるのでそれぞれ調べる必要ありです。
 

まっつUP

ユーザー
ツクールMZなら、公式プラグインのトリアコンタン様のEventCommandByCode.jsが使えるので、
そのプラグインコマンドで、
イベントコマンド「スクリプト」でイベントコマンドと同等の処理を記述するより楽に実装できると思います。
条件分岐やウェイトなどやり方によってはイベントコマンドを普通に設定したのと同じ動作にならない場合がありますし、
移動ルートはイベントコマンドでやるより大変になる場合があるなど、場合によるので注意が必要だと思います。
 

panda

ユーザー
イベントコマンドの「スクリプト」で呼び出すってことなら例えば、
JavaScript:
this.command284(['遠景画像名', 横方向ループのtrue/false, 縦方向ループのtrue/false, 横スクロール速度, 縦スクロール速度]);
みたいな感じでいけますね。

ただ、わざわざそんなことをするくらいなら素直にイベントコマンドで指定した方がいいし、
例えば遠景画像名を動的に指定するためにスクリプトでやりたいにしても、
commandの何番かということと、paramsの中に何をどの順番で指定すればいいのかを調べるくらいなら、
中で行われていることを取り出して直接、
JavaScript:
$gameMap.changeParallax('遠景画像名', 横方向ループのtrue/false, 縦方向ループのtrue/false, 横スクロール速度, 縦スクロール速度);
みたいに書いた方が分かりやすいので、わざわざイベントコマンド相当のものを呼び出す必要もない、といったところでしょうか。
 

でろりん

ユーザー
皆様、沢山のご助言をいただき、ありがとうございます
イベントコマンドは、基本的にはスクリプトから呼び出して使うものではないか、
中で行われていることを取り出して直接記載するもの、との認識なのですね
よく分かりました
ベテランの方々の認識を知ることが出来ると、その分安心して取り組んでいけますので、大変助かります
また、色々な記載の仕方を教えていただき、そちらも非常に参考になります

pandaさん
JavaScript:
this.command284(['遠景画像名', 横方向ループのtrue/false, 縦方向ループのtrue/false, 横スクロール速度, 縦スクロール速度]);

command○○○系の呼び出しはこういった記載になるのですね……!
まさしく求めていた記述です
胸のつかえが完全に取れました 本当にありがとうございます!

また分からないことがありましたら、皆様に質問をさせて頂くかもしれません
その際には是非お力添えいただけますと幸いです
何卒よろしくお願い致します<(_ _)>
 

DarkPlasma

ユーザー
JavaScript:
this.command284(['遠景画像名', 横方向ループのtrue/false, 縦方向ループのtrue/false, 横スクロール速度, 縦スクロール速度]);

pandaさんが提示されたこのコードはMZにおける呼び出し方です。MVではイベントコマンドに対するパラメータは Game_Interpreter インスタンスの _params に代入してから呼び出すコードになっています。
詳細は Game_Interpreter.prototype.executeCommand をお読みいただくと良いと思います。
 

でろりん

ユーザー
気付かず、お返事が遅れてしまい申し訳ありません

sally_ellyさん
とんでもないです
おかげで、存在しない可能性にも気づけましたので、大変助かりました
ありがとうございました!

DarkPlasmaさん
MZとMVで呼び出し方が違うとの情報を頂きありがとうございます
参考にさせていただきます!
 
トップ