変数でまたわからなくなってしまった(質問掲示板)
投稿: ugonight
投稿:2011/09/04 17:57:04(最新:2011/09/05 00:06:05)
何回か調べると反応が変わるようにしたいのですが…
とすると
1回目で
line: 27 not defined variable : zou
2回目以降で
line: 2 not defined variable : zou
となってしまいます…
あと、めんどくさいからここで言っちゃうんですがフィードインしながら音を再生すると音がめっちゃうるさくしかも雑音が入るというバグが発生しています。かっこいいとこなのでどうにかしてほしいです…
ツイート
if getFlag("像") case zou when 1 speak("どうやらここは校長室だったようだ…") zou==2 when 2 speak("カツラが明らかに不自然だ…") zou==3 when 3 case speakWithSelect(2,"はい","いいえ", "カツラをとってみますか?") when 0 speak("カツラを手に入れた!!") setVariable("カツラ", 1) setEventDirection("event3",getUpDirection()) zou==4 when 1 end when 4 speak("よく見たら頭に何やらメッセージが!!") speak("「パスワードは誰もわからんじゃろなにしろわしの好きなものを知ってないとな~」") speak("この像、よく見ると焼き鳥をくわえている…\nどっからそんな自信が来るのか…") end else setFlag("像", true) zou==1 end
とすると
1回目で
line: 27 not defined variable : zou
2回目以降で
line: 2 not defined variable : zou
となってしまいます…
あと、めんどくさいからここで言っちゃうんですがフィードインしながら音を再生すると音がめっちゃうるさくしかも雑音が入るというバグが発生しています。かっこいいとこなのでどうにかしてほしいです…
コメントする
コメントするには、ログインする必要があります。
コメント一覧
if getFlag("像")
if getVariable("zou") == 0
speak("どうやらここは校長室だったようだ…")
setVariable("zou", getVariable("zou") + 1)
elsif getVariable("zou") == 1
speak("カツラが明らかに不自然だ…")
setVariable("zou", getVariable("zou") + 1)
elsif getVariable("zou") == 2
case speakWithSelect(2,"はい","いいえ",
"カツラをとってみますか?")
when 0
speak("カツラを手に入れた!!")
setVariable("カツラ", 1)
setEventDirection("event3",getUpDirection())
setVariable("zou", getVariable("zou") + 1)
when 1
end
elsif getVariable("zou") == 3
speak("よく見たら頭に何やらメッセージが!!")
speak("「パスワードは誰もわからんじゃろなにしろわしの好きなものを知ってないとな~」")
speak("この像、よく見ると焼き鳥をくわえている…\nどっからそんな自信が来るのか…")
end
else
setFlag("像", true)
end
僕がこれをやるとこうなりますね
一応えらーはでません
if getVariable("zou") == 0
speak("どうやらここは校長室だったようだ…")
setVariable("zou", getVariable("zou") + 1)
elsif getVariable("zou") == 1
speak("カツラが明らかに不自然だ…")
setVariable("zou", getVariable("zou") + 1)
elsif getVariable("zou") == 2
case speakWithSelect(2,"はい","いいえ",
"カツラをとってみますか?")
when 0
speak("カツラを手に入れた!!")
setVariable("カツラ", 1)
setEventDirection("event3",getUpDirection())
setVariable("zou", getVariable("zou") + 1)
when 1
end
elsif getVariable("zou") == 3
speak("よく見たら頭に何やらメッセージが!!")
speak("「パスワードは誰もわからんじゃろなにしろわしの好きなものを知ってないとな~」")
speak("この像、よく見ると焼き鳥をくわえている…\nどっからそんな自信が来るのか…")
end
else
setFlag("像", true)
end
僕がこれをやるとこうなりますね
一応えらーはでません
ifやcaseのネストは自ずと見づらくなるので、
もう一段階 字下げすると見やすいかも。
さて、内容についてですが、
「基本変数」と「ローカル変数」の違いをもう一度ご確認ください。
一回目。if文で、下の方に飛んで
が実行されます。で、イベント終了。
この時にエラーが出ているわけですが、
代入「=」と比較「==」を間違えています。
zouという値は存在していないのに中身を比較しようとしているので、
エラーを吐いているみたいですね。
正確には「zou = 1」です。
次に、2回目に話しかけたとき、if文で2行目に行きます。
そこでcase文で変数zouを見るわけですが、ここでエラーが出ます。
zouという値は先ほど設定したはずなのに、何故?
それは、変数zouがローカル変数だからです。
ローカル変数はsetVariableでの基本変数と違い、
「イベントが終了した時点で消滅」します。
つまり、この時zouという変数は存在していないんですね。
という訳で、zouなんて無いよとエラーを吐くわけです。
イベントを超えて値を保持させるためには、
setVariableを用いて基本変数として設定してやる必要があります。
参考/Wiki/変数
長文乱文失礼しました。
何かあればまたどうぞー。
もう一段階 字下げすると見やすいかも。
if getFlag("像") case zou when 1 speak("どうやらここは") zou==2 when 2 speak("カツラが明らかに") zou==3 when 3 case speakWithSelect(2,"はい","いいえ", "カツラをとってみますか?") when 0 speak("カツラを手に入れた!!") setVariable("カツラ", 1) setEventDirection("event3",getUpDirection()) zou==4 when 1 end when 4 speak("よく見たら頭に") speak("「パスワードは誰も」") speak("この像、よく見ると") end else setFlag("像", true) zou==1 end
さて、内容についてですが、
「基本変数」と「ローカル変数」の違いをもう一度ご確認ください。
一回目。if文で、下の方に飛んで
setFlag("像", true) zou==1
この時にエラーが出ているわけですが、
代入「=」と比較「==」を間違えています。
zouという値は存在していないのに中身を比較しようとしているので、
エラーを吐いているみたいですね。
正確には「zou = 1」です。
次に、2回目に話しかけたとき、if文で2行目に行きます。
そこでcase文で変数zouを見るわけですが、ここでエラーが出ます。
zouという値は先ほど設定したはずなのに、何故?
それは、変数zouがローカル変数だからです。
ローカル変数はsetVariableでの基本変数と違い、
「イベントが終了した時点で消滅」します。
つまり、この時zouという変数は存在していないんですね。
という訳で、zouなんて無いよとエラーを吐くわけです。
イベントを超えて値を保持させるためには、
setVariableを用いて基本変数として設定してやる必要があります。
参考/Wiki/変数
長文乱文失礼しました。
何かあればまたどうぞー。
カツラを穴にかぶせた時ふいちゃいましたww
あとBGMが全く治りませんね…再生方法を変えるか…