コメントするには、ログインする必要があります。
if getFlag("救助") speak("気をつけてね。") else speak("助けてくれてありがとう。") speak("どうかこれを受け取って!") giveItem(18214) playSound(146233) setFlag("救助", true) end
setFlag("探索1", false)
if getFlag("探索1") #フラグ「探索1」がtrueの(つまり一度調べた)場合は下のスクリプト実行 speak("もうここには何もなさそうだ") else #フラグ「探索1」がfalseの場合は下のスクリプト実行 speak("お、なんだろうこれ") giveItem(114514) #ここにはアイテムIDを speak("「こっぺぱん」を手に入れた") setFlag("探索1", true) #ここでtrueにすることで「このイベントは一度調べた状態」となる end
僕のゲーム(ヴァルハラクエスト)のイベントの一部です。
参考になるでしょうかぁ。
要は救助て名前のフラグですね。
if getFlag("救助") は if getFlag("救助")==true と同じ意味です。(だったかなぁ)
僕もずいぶん2DアクションRPG作ってないので覚えてないけど
(どこかで setFlag("救助",false) て初期設定したかなぁ。どうかなぁ。)
まぁ、とにかくgetFlag("救助")は最初はfalseになってて
else から下の内容を実行する仕組みになってます。
でsetFlag("救助", true) でtrueにするとelseから上の内容を実行することになります。
我ながらわかりにくい説明。あ、もちろん"救助"の部分は好きな文字でいいですよ。
開始スクリプトに
と書いておき、「探索1」というフラグを設定しておきます(多分しないとエラー吐く)
そしてアイテムを渡すイベントに
と入力すれば大丈夫なはずです(´・ω・`)
まず開始スクリプトでフラグ「探索1」がfalseに設定されてるので、
一度目はelseの方のスクリプトが実行されます
ここでアイテム「こっぺぱん」を入手(アイテムIDは架空のものです)
その後フラグ「探索1」がtrueに設定されます
二度目以降調べた場合はtrueのため、上の方のスクリプトが実行され、
もうここには何もなさそう的な発言のみでイベントが終わります、当然アイテムも渡されません
大体こんな流れです、スクリプトはend毎に段落をつけると非常に見やすくなるので
段落をつけることをオススメします、いやマジで(血涙)
便乗失礼しました_(:3 」∠)_
開始スクリプト等であらかじめ定義しなくても、
falseあるいは""あるいは0扱いのようです。
イベントエディタ内、ノベルエディタチャプター内で、
ローカル変数を使う場合には、あらかじめfalse等を定義しないと、
未定義変数として扱われ、エラー文を吐くと同時に、
falseともtrueとも判断されません。
例えば未定義の変数mosでif文を書いてた場合、
そのif mos文内の処理はif 文を無視して実行されることがあります。
また、もっと複雑な場所でmosを使ってた場合は進行不可になることもあります。