特定のアイテムを所持して作動するフラグについて(質問掲示板

投稿: Material 187524 2 mini urakami 投稿:2014/02/16 11:50:16(最新:2014/02/18 12:48:18)
2DRPGを作っているんですが話の中で特定のアイテムをゲットすると話が進んでくという内容のフラグを何箇所かに設置したんですがテストプレーをしていた時は普通に作動してくれたんですがまたちょっと挿絵などを追加してからテストプレーをしてみると作動していたフラグが作動していませんでした。
持ち物を確認するとフラグに必要なアイテムもちゃんと持っていました。
とくにスクリプトなどいじったりはしていなかったんですが…

そのうちのひとつです。↓

# スクリプトに関する質問の場合はこの下にスクリプトを記載してください
# ↓↓↓スクリプトはここから↓↓↓

#有効条件
setFlag("おかえり",true)
!getFlag( "昼飯" )

#イベント実行内容
m=getItemIndexWithId(16966)

if m==-1

else
 setFlag("おかえり",false) 

setEventTarget("playerCharacterEvent", 25, 7)
playBGM(82476)

speak("ツバサ「た、ただいまー……」")

setEventTarget("event6",25 , 4 ,25 , 5)
runEventMove()

speak("ツバメ「おかえり、お姉ちゃん」")
speak("ツバメ「もうお昼過ぎちゃったけど、お姉ちゃん何してたのかなー?」")
speak("ツバサ(背後から黒いオーラが…)")
speak("ツバサ「えっ、えっと、稽古はお昼前に終わったんだけどその後に、クズノハとあってさ、ちょっと稽古を……」")
speak("ツバサ「へぇー、稽古ねぇー、自分から約束したのにねぇー」")
speak("ツバサ(お、怒ってる!!ツバメが物凄く怒ってるよ!)\n")
speak("ツバサ「本当に本当に、ごめんね!ツバメ!今度から気を付けるから!」")

shakeScreen(1000)
getTextFontSize(20)

speak("ツバメ「お姉ちゃん、今度、今度って、これで何度目? 毎回毎回、私が温かいご飯をと思って、いつも苦労してるのに!」")

shakeScreen(1000)
getTextFontSize(30)

speak("ツバメ「そんなに稽古が好きなら、好きなだけしてきたらいいわ! ご飯だって自分で作ればいいでしょう!?」")

getTextFontSize(18)

speak("ツバサ「あの、本当に、本当にごめんなさい! ツバメ、そんな怒らないで!」")
speak("ツバメ「お姉ちゃん、もういいわ…私が根性叩き治してあげるわっ!!」")

playSound(83963)
setFadeInterval(2000)
fadeOut(0, 0, 0)
#ツバサを痛めつける
fadeIn()

speak("ツバメ「私は、お姉ちゃんみたいに明るくないし、運動は苦手だし、お姉ちゃんみたいに自分の道を決めれないから………」")
speak("ツバサ「ツバメ……」")
speak("ツバメ「お姉ちゃん……不安だし、心配だし、怪我をしたらって、怖くって………」")
speak("ツバサ「ごめんね、ツバメ……今度こそ約束するよ、あたしはもっともっと強くなる!! ツバメを心配させないくらい強くなる!」")
speak("ツバメ「うん、うんっ……! 約束だよっ! お姉ちゃん!」")

fadeOutMusicStop(2000)
playBGM(74175)

speak("ツバサ「よし、お昼食べよっ!」")
speak("ツバメ「うん、お姉ちゃん!」")

setEventTarget("event6",22 , 4 ,22 , 5)
setEventTarget("playerCharacterEvent", 22, 9 ,22, 8 )
runEventMove()
setPartyMemberHealingAll()
setFadeInterval(2000)
fadeOut(0, 0, 0)
fadeIn()

speak("ツバサ&ツバメ「「ご馳走様でした」」")
speak("ツバサ「あー、癒されるー! やっぱりツバメの料理は最高だわ~」\n")
speak("ツバメ(お姉ちゃんがオッサン化してるよ………)\n")

shakeScreen(1000)
getTextFontSize(20)

speak("ツバサ「あぁぁぁ――――っ!!!」")

getTextFontSize(18)

speak("ツバメ「わっ!?? どうしたの!? お姉ちゃん!」")
speak("ツバサ「ごめんごめんっ!! あのね? クズノハくんに“これ”返すの忘れちゃった………」\n")
speak("ツバメ「何、それ……?」\n")
speak("ツバサ「これ、クズノハくんに返してくる!」\n")


end
setFlag( "昼飯", true )

# ↑↑↑スクリプトはここまで↑↑↑



話のやりとりは一回きりにしたいので!getFlag( "昼飯" )を入れているんですがそれをはずすとその場で無限ループなりますしどこが間違っているのかわかりません…
回答よろしくお願いします。

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Nyan mini rurun9(投稿日:2014/02/17 19:07, 履歴)
有効条件の欄に書くのは、条件式です
例えば
if a<0
 b=a+5
end
という場合の a<0 の部分がそうです
なので setFlag() を有効条件欄に書くのはオススメしません
getFlag() なら大丈夫ですが、これは
if getFlag("まじたい")==true
 speak("ではないかと思う")
end
と書く場合に
if getFlag("まじたい")
 speak("ではないかと思う")
end
と省略して書けるからなのです。


getTextFontSize(30) はコレだけだと意味がありません
文字の大きさを変えるなら setTextFontSize() です
get~は中に入ってる値を確認する場合に使うので、取ってきても何かと比べたりしないと、何もしていない事になります
Material 187524 2 mini urakami(投稿日:2014/02/18 12:48, 履歴)
getFlagはそういう使い方があるんですね;
エラーさえ出なければ大丈夫かなとか思って使ってました…
フォントの件も後ほどいじってみようと思います。
回答ありがとうございました!!
       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2014/02/16 18:03, 履歴)
一部勝手な妄想で考えますが気にしないでください

とりあえず、このイベントがあるマップをaとしてその他をeって言いますね。

たぶん、マップがいくつかあって、aとeが出入り自由なのかな?。
で、進める際にaに入ってeに、さらに話を進めてaに入る
(簡単に言うとイベントが発生するのが、aに2回以上入る場合)
のなら。


最初入った時に、最後の行で、「setFlag( "昼飯", true )」でtrueになっちゃって、もう作動しない状態になってるので
それをif~end内に入れれば治るんじゃ

って思ったけど挿絵入れただけのようですね、状況が矛盾してるね。

ごめんなさい、わかんないです。
Material 187524 2 mini urakami(投稿日:2014/02/17 09:49, 履歴)
池ちゃんさんの言うとおりひとつのマップにみっつくらい作ってます;
ちょっといじってみたんですが直りませんでした…
他の方法でできないかまた探してみます。
回答ありがとうございました!
Material 187524 2 mini urakami(投稿日:2014/02/17 10:59, 履歴)
getFlag( "昼飯" )とsetFlag( "昼飯", true )を削って、フラグremoveItemWithIndex(m)をスクリプト内に追加したらちゃんと作動して無限ループも免れました;
これで作業進められそうです!!