アイテムの有無(質問掲示板

投稿: User icon mini sure 投稿:2010/11/20 19:34:20(最新:2010/11/28 15:46:28)
ifを使った文、とてもわかりやすい掲示板の記事のおかげで
なんとかできるようになってきました。

それで、ifを使ったもので、
アイテムAがある場合はこうなって、持っていない時はこうする・・・・としたい時には、
どれを使えばいいのかわからず・・・・

もうひとつは、
ifの重ねづけと言いますか、
ifで、もし~だったら、 の後、更にもうひとつ、
もし~だったら・・・と、if(else)の中にもうひとつ入れたい場合は、
どうすればいいでしょうか?


教えて下さい。お願いします。



コメントする

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

コメント一覧

User icon mini sure(投稿日:2010/11/28 15:46, 履歴)
>@rim 4さん
そうだったんですね!できなくて、色々試していました。
ありがとうございます!


>rurun9さん
教えていただけるだけでも、とてもありがたいです。
これからもお世話になります┏○
Nyan mini rurun9(投稿日:2010/11/25 19:55, 履歴)
しまったー
コピペで済ませると、そんな感じの間違いばっかりですorz
Rim 4 ic 128 mini @rim_4(投稿日:2010/11/25 02:17, 履歴)
あっ
この場合「鍵」って装備品ではなさそうなので

getEquipmentIdArray()
ではなく

getItemIdArray()
の方がいいのでは?
User icon mini sure(投稿日:2010/11/23 19:22, 履歴)
ふおぉおお!
丁寧にありがとうございます!
明日、頭が起きている時に、眺めて頭に詰め込もうと思います!
本当にありがとうございました!
Nyan mini rurun9(投稿日:2010/11/23 15:45, 履歴)
「石」をもっていればワープできる、だけなら
その場所のイベントスクリプト欄に
#まずは所持アイテムID配列を取得
a=getEquipmentIdArray()
n=0; b=false #所持アイテムの中に「石」があるか、を順に調べる
while n<getArrayLength(a)
 if a[n]==『登録したアイテム「石」のID番号』
  b=true
  removeItemWithIndex(n) #使った石が無くなる。残すときは、この行を削除
 end
n=n+1
end

if b
  speak("突然、「石」が輝き出した")
  warp(マップID, X座標, Y座標)
else
  speak("通れません")
end

と書けば大丈夫ですね。


とりあえずこの辺を読んでみて、リンクを辿ったりwikiを眺めると色々わかってきますよぉ
・wiki スクリプト/つくってみよう0
User icon mini sure(投稿日:2010/11/21 20:27, 履歴)
本当に今までプレイする側専門で、プログラミング何それおいしいの状態なので、まだまだ難しいです^^;変数・・・一番難しい・・・!

イメージとしては、
鍵とドアに近いです。

透明イベントで、重なった時に、
石を所持している場合はワープで、所持していない場合は、「通れません」と表示される、というのを作りたかったのですが・・・


変数について、もっとじっくり向き合おうと思います^^;

Nyan mini rurun9(投稿日:2010/11/21 20:08, 履歴)
b(b,5) → rand(b,5)
の間違いでした
Nyan mini rurun9(投稿日:2010/11/21 20:06, 履歴)
まず、if文の入れ子ですが、中に全部入れちゃうだけです。
どれが同じ階層深度なのかが判るように、タブやインデント(といっても半角スペース)で工夫しましょー
rand(a,5); b(b,5)
if a==1
  if b<3
    speak("aが1で、bが0か1か2の場合")
  else
    speak("aが1で、bが3か4の場合")
  end
elsif a==2
  speak("aが2の場合")
else
  speak("aが0か3か4の場合")
end

よくわからないなら、どんな分岐を実際につくりたいかを教えて下さい


次に、持っているアイテムを確認する方法。
既出ですが、配列変数が扱えないと意味はわからないかもしれません
#所持アイテムID配列を取得
what = getEquipmentIdArray()
i = 0 #所持アイテムの中にカギがあるか、を順に調べる
while i < getArrayLength( what )
  if what[ i ] == (登録した鍵アイテムのID番号)
    setFlag("カギで開ける扉1",true)
  end
i = i + 1
end

準備として、カギとなるアイテムを作成して登録しておき、どこかのイベントで取得できるようにしておきます。
また、イベント「扉」キャラの有効条件を
!getFlag("カギで開ける扉1")
と設定しておけばOK

使用後にカギが壊れるなら
removeItemWithIndex( 何番目の所持アイテムか )
でカギアイテムを所持品から削除しちゃいましょー。
何番目か、ってのは i を別の変数に入れちゃえばできますよね。