お店の作り方(質問掲示板

投稿:      2 mini keroro210 投稿:2014/04/09 13:27:09(最新:2014/04/10 16:49:10)
普通に、お店の処理をして作ると、「いかがいたしますか?」の、
一言になってしまいます。なので、自分で作ってみたのですが、
case speakWithSelect(3,"木の棒 12ミニ","盾    8ミニ","皮の鎧 18ミニ",
"よぅ、ボウズ!\n何を買うんだ?\n(店レベル1)")
when 0
# itemId: 12916
# itemName: 木の棒
# price: 12
def buyItem(itemId, itemName, price)
if getVariable("ミニ") < price
speak("ミニが足りないな。")
else
if giveItem(itemId)
setVariable("ミニ",
getVariable("ミニ") - price)
speak(itemName + "を買った")
else
speak("アイテムを持ちきれないな。")
end
end
end


when 1
# itemId: 12917
# itemName: 盾
# price: 8
def buyItem(itemId, itemName, price)
if getVariable("ミニ") < price
speak("ミニが足りないな。")
else
if giveItem(itemId)
setVariable("ミニ",
getVariable("ミニ") - price)
speak(itemName + "を買った")
else
speak("アイテムを持ちきれないな。")
end
end
end



when 2
# itemId: 12923
# itemName: 皮の鎧
# price: 18
def buyItem(itemId, itemName, price)
if getVariable("ミニ") < price
speak("ミニが足りないな。")
else
if giveItem(itemId)
setVariable("ミニ",
getVariable("ミニ") - price)
speak(itemName + "を買った")
else
speak("アイテムを持ちきれないな。")
end
end
end




end
とやったら、はじめのお店の人の言葉だけ出てきて、売ってくれません。
バグなどは出てないんです。
質問掲示板などで調べたんですが、イマイチよくできません。
だれか、簡単な方法を知っていますか?
教えてください。

コメントする

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

コメント一覧

Material 204926 1 mini 井戸乃博士(投稿日:2014/04/09 21:14, 履歴)
おそらくユーザー関数を定義しただけで終わっているからではないかと。
例えばwhen0の場合、最後のendの後に次の関数を入れて、関数を実行してみてはどうでしょうか?

buyItem(12916, "木の棒", 12)


うまく行かない場合は、ユーザー関数を定義しないで(defを外して)普通にスクリプトを組んでみるのも手です。
Nyan mini rurun9(投稿日:2014/04/10 16:49, 履歴)
「ユーザー定義関数」がそもそも何なのかを知らない事には話が進まない気がします
「関数」とはヘルプ>関数リファレンス、に並んでるヤツで『スクリプトに○○と書くと△△します、与える引数はコレで、返り値はアレ』
ユーザー定義関数とは、関数を組み合わせたりした一連の動作をまとめてひとつの関数っぽくしてしまう大技、です
定義するdefineだからdefなんだけど、endで閉じるまでが定義です
そして定義はスクリプト中ではなく事前に、つまり開始スクリプト辺りに一度書いておけば充分です

とりあえず wikiスクリプト/コツ/お店の作り方 の通りに作ったら動くと思います
このページ内に出てくる buyItem() というのは、関数リファレンスには存在しないインチキなので、ユーザー定義しているワケなのです

アイテムを販売するだけのお店ならコレで済むかもしれませんが、持ち物を売却する場合は、所持アイテムや装備品を弄る為の知識として配列変数とアイテムの管理方法や仕組みまで理解しないといけません

その結果が→wikiスクリプト/コツ/売ったり買ったりできるお店処理 という感じになるのです