ページ 11

変数でラベルジャンプ

Posted: 2018年12月21日(金) 08:34
by とりにく
◆ラベル:2
◆ラベル:1
など設定しておいて、どこにジャンプするかを変数で決めたいのですが、どうすればいいですか?

見かけたスクリプトを参考にしてみましたが、「TypeError Cannot rea propetry '0' of undefined」とエラーが出てしまいました
(ラベル名1で作ってます)

コード: 全て選択

for (var i = 0; i < this._list.length; i++) {
 if(this._list.parameters[0] == "//1"){
  this.jumpTo(i)
 }
}
こんな感じでジャンプするラベル名変に数を使えないかと思ったのですが、そもそも↑でエラーでした

コード: 全て選択

for (var i = 0; i < this._list.length; i++) {
 if(this._list.parameters[0] == "//" + $gameVariables.value(変数ID)){
  this.jumpTo(i)
 }
}
よろしくお願いします

Re: 変数でラベルジャンプ

Posted: 2018年12月21日(金) 09:29
by 剣崎 宗二
Game_Interpreter._listは配列なので、

コード: 全て選択

this._list[i].parameters[0]
とするのが正しいかと考えます。
(Game_Interpreter.prototype.command119もご参照ください。var command = this._list; となっております)

また、ラベル名に//が入るのかも少し疑わしいですが、そこはいろいろ実験していただければと。

Re: 変数でラベルジャンプ

Posted: 2018年12月21日(金) 21:42
by とりにく

コード: 全て選択

for (var i = 0; i < this._list.length; i++) {
 if(this._list[i].parameters[0] == $gameVariables.value(変数ID)){
  this.jumpTo(i)
 }
}
アドバイス参考に、これでいけました、ありがとうございます!

>>ラベル名に//が入るのか
http://rpgmaker-script-wiki.xyz/label_mv.php
このページを参考にしたのですが、自分がラベルの設定をツクールのコマンドでやっていたのが違ってたみたいです
ちゃんと説明の通りコメントアウトでラベルを設定したら、//入りで出来ました
重ね重ねありがとうございます

Re: 変数でラベルジャンプ

Posted: 2018年12月21日(金) 22:01
by とりにく
ちなみに聞きたいんですが、もしラベル名の設定に変数を使いたい場合はどうすればいいですか?

別に使う予定はないんですが、説明ページの「ゲーム処理に関係しないコードならなんでも良い」というのが例えばどういうものなのかがよく分からなく、出されてる一例もコメントアウトで変数は使えないと思うので、疑問だったので。

Re: 変数でラベルジャンプ

Posted: 2018年12月22日(土) 00:35
by 剣崎 宗二
「ラベル名の設定に変数を使いたい場合」と言う説明がいまいち良くわからないのですが、
「ラベル自体の名前を可変にする」がお望みの機能だと仮定すると、

「this._list.parameters[0]の部分が例えば/vで始まる場合、変数より値を取得し、それを比較対象(this._params[0]等)と比較する」
と言う形になると思います。

(ただラベルを可変にするのは予期せぬ事態を引き起こしやすい為あまりお勧めいたしませんが)

ここら辺につきましては、デフォルトの
Game_Interpreter.prototype.command119
及び
Game_Interpreter.prototype.jumpTo
の内容を解析し、具体的に「ラベル」「ジャンプ」とはそれぞれ何か、或いは実行時何が起こっているのか、を理解してから触ると分かりやすいかもしれません。