[解決済] アイテムを一つ(質問掲示板

投稿: Material 319750 5 mini ninkura 投稿:2017/04/13 18:58:13(最新:2017/04/19 17:17:19)
2DアクションRPGでアイテムを一ヶ所から一つしか入手できないようにしたいんですがどのようにしたら良いですか?初心者向け講座など見てみたのですが、わかりませんでした。宜しければ教えてください

コメントする

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

コメント一覧

Rmakeic1 mini muga(投稿日:2017/04/15 01:39, 履歴)
こんばんは~!
if getFlag("救助")
speak("気をつけてね。")

else

 speak("助けてくれてありがとう。")
 speak("どうかこれを受け取って!")
 giveItem(18214)
 playSound(146233)
 setFlag("救助", true) 

end

僕のゲーム(ヴァルハラクエスト)のイベントの一部です。
参考になるでしょうかぁ。
要は救助て名前のフラグですね。
if getFlag("救助") は if getFlag("救助")==true と同じ意味です。(だったかなぁ)
僕もずいぶん2DアクションRPG作ってないので覚えてないけど
(どこかで setFlag("救助",false) て初期設定したかなぁ。どうかなぁ。)
まぁ、とにかくgetFlag("救助")は最初はfalseになってて
else から下の内容を実行する仕組みになってます。
でsetFlag("救助", true) でtrueにするとelseから上の内容を実行することになります。
我ながらわかりにくい説明。あ、もちろん"救助"の部分は好きな文字でいいですよ。
           mini naoki4019(投稿日:2017/04/15 17:58, 履歴)
特に意味もなく便乗ッ!!=三c⌒っ゚Д゚)っズザー
開始スクリプトに
setFlag("探索1", false) 

と書いておき、「探索1」というフラグを設定しておきます(多分しないとエラー吐く)
そしてアイテムを渡すイベントに
if getFlag("探索1") #フラグ「探索1」がtrueの(つまり一度調べた)場合は下のスクリプト実行
   speak("もうここには何もなさそうだ")
else #フラグ「探索1」がfalseの場合は下のスクリプト実行
   speak("お、なんだろうこれ")
   giveItem(114514) #ここにはアイテムIDを
   speak("「こっぺぱん」を手に入れた")
   setFlag("探索1", true) #ここでtrueにすることで「このイベントは一度調べた状態」となる
end

と入力すれば大丈夫なはずです(´・ω・`)

まず開始スクリプトでフラグ「探索1」がfalseに設定されてるので、
一度目はelseの方のスクリプトが実行されます
ここでアイテム「こっぺぱん」を入手(アイテムIDは架空のものです)
その後フラグ「探索1」がtrueに設定されます
二度目以降調べた場合はtrueのため、上の方のスクリプトが実行され、
もうここには何もなさそう的な発言のみでイベントが終わります、当然アイテムも渡されません

大体こんな流れです、スクリプトはend毎に段落をつけると非常に見やすくなるので
段落をつけることをオススメします、いやマジで(血涙)

便乗失礼しました_(:3 」∠)_
            mini mosmoss(投稿日:2017/04/16 04:44, 履歴)
setFlag()類、setVariable()類については、
開始スクリプト等であらかじめ定義しなくても、
falseあるいは""あるいは0扱いのようです。

イベントエディタ内、ノベルエディタチャプター内で、
ローカル変数を使う場合には、あらかじめfalse等を定義しないと、
未定義変数として扱われ、エラー文を吐くと同時に、
falseともtrueとも判断されません。
例えば未定義の変数mosでif文を書いてた場合、
そのif mos文内の処理はif 文を無視して実行されることがあります。
また、もっと複雑な場所でmosを使ってた場合は進行不可になることもあります。
Material 319750 5 mini ninkura(投稿日:2017/04/19 17:17, 履歴)
とても分かりやすかったです。おかげで無事解決いたしました。ありがとうございました。