アイテムの表示方法(質問掲示板

投稿: Michael mini ミカエル 投稿:2015/11/17 07:23:17(最新:2015/11/18 01:59:18)
初心者の質問ですいません。

持っているアイテム(カード)を選択肢に表示させて
実行させる方法につきまして。

とりあえず、簡単にスクリプトを組んでみたのですが、
もっとスマートにまとめられないかなと思い質問してみました。

アイテム(カード)の配列を取得してみたのですが、
全部IDで表示されてしまい、さらにカード以外のアイテムまでも表示されて
しまいます。カードのみを表示し、かつゲーム内の名前で表示させるには
どのようにしたら良いかアドバイスいただけるとありがたいです。

できれば持っていないアイテム(カード)は
???ではなくて表示自体されないようにしたいです。

例)【持ち物】           【選択肢】
  ミカエルカード
  ガブリエルカード       ミカエルカード
  ゴッドハーブ      ⇒  ガブリエルカード
  ゴッドウッド
  HP回復ポーション


# スクリプトに関する質問の場合はこの下にスクリプトを記載してください
# ↓↓↓スクリプトはここから↓↓↓
michaelcard = getItemParamWithId(20009)
gabrielcard = getItemParamWithId(20010)

card = createArray()
card = getItemIdArray()

if 0 <= getItemIndexWithId(20009)
   card[0] = getValueFromItemParam(michaelcard, getItemViewNameIndex())
else
   card[0] = "???"
end

if 0 <= getItemIndexWithId(20010)
   card[1] = getValueFromItemParam(gabrielcard, getItemViewNameIndex())
else
   card[1] = "???"
end

speakWithSelectArray(card, "カードを選んでください。")
# ↑↑↑スクリプトはここまで↑↑↑


コメントする

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

コメント一覧

Material 204926 1 mini 井戸乃博士(投稿日:2015/11/17 23:35, 履歴)
気付いた点をまとめると、
・4行目はたぶん不要です。これのせいで配列がアイテムIDの配列になってしまっています。
・アイテムの所持を判断するときは、getItemIndexWithId()を使うといいと思います。所持していない場合は「-1」になります。
・カードのみを表示したいということなので、pushArrayを使うのがおすすめです。ためしにスクリプトを書いてみます。

michaelcard = getItemIndexWithId(20009)
gabrielcard = getItemIndexWithId(20010)

card = createArray()

#カードを持っている場合に配列に項目を追加します。
if michaelcard == -1
else
 pushArray(card, getValueFromItemParam(michaelcard, getItemViewNameIndex())
end

if gabrielcard == -1
else
 pushArray(card, getValueFromItemParam(gabrielcard, getItemViewNameIndex())
end

#カードを持っていないときにも、メニューを閉じる項目を追加しておきます。
pushArray(card, "リストを閉じる")

#以下、カードリストを開いたときの処理
close = 0
while close == 0
 k = speakWithSelectArray(card, "カードを選んでください。")
#ここから個別にカードを選んだ場合のスクリプトです。ここは、ご自身で設定していただければと思います。
 if card[k] == getValueFromItemParam(michaelcard, getItemViewNameIndex()
  
 elsif card[k] == getValueFromItemParam(gabrielcard, getItemViewNameIndex()

 elsif card[k] == "リストを閉じる"
   close = 1
 end

end  


実際に試していないので間違っているところがあるかもしれません(^^;
こちらを参考にしていますので、ぜひ参照なさってください。
http://rmake.jp/boards/2/topics/398
Michael mini ミカエル(投稿日:2015/11/18 01:08, 履歴)
idohaka様

お返事ありがとうございます。
さっそく試してみました。

で、いくつかエラーを吐いてしまいまして、
まず、)がなかったので追加してみました。
ここまではよかったのですが、

line:25
line:27
getValueFromItemParamの第一引数は
配列でなければなりません

と表示されてしまいました。
カードを所持してみてもnullとか表示されて
実行できませんでした。
いろいろ調べながらやってるのですが
なかなか理解できなくて申し訳ありません。
よろしくアドバイスをお願い致します。
Michael mini ミカエル(投稿日:2015/11/18 01:40, 履歴)
あ、あ、あ、問題はここでした!!!!
getItemParamWithIdに変更したらできました。
やったぁ、idohaka様ありがとうございました。
スクリプト貼り付けておきますね。

michaelcard = getItemIndexWithId(20009)
gabrielcard = getItemIndexWithId(20010)

mcard = getItemParamWithId(20009)
gcard = getItemParamWithId(20010)

card = createArray()

#カードを持っている場合に配列に項目を追加します。
if michaelcard == -1
else
 pushArray(card, getValueFromItemParam(mcard, getItemViewNameIndex()))
end

if gabrielcard == -1
else
 pushArray(card, getValueFromItemParam(gcard, getItemViewNameIndex()))
end

#カードを持っていないときにも、メニューを閉じる項目を追加しておきます。
pushArray(card, "リストを閉じる")

#以下、カードリストを開いたときの処理
close = 0
while close == 0
 k = speakWithSelectArray(card, "カードを選んでください。")
#ここから個別にカードを選んだ場合のスクリプトです。ここは、ご自身で設定していただければと思います。
 if card[k] == getValueFromItemParam(mcard, getItemViewNameIndex())

 elsif card[k] == getValueFromItemParam(gcard, getItemViewNameIndex())

 elsif card[k] == "リストを閉じる"
   close = 1
 end

end
Material 204926 1 mini 井戸乃博士(投稿日:2015/11/18 01:59, 履歴)
あ、なるほど・・・
やっぱり頭で考えるだけではだめですね・・・(^^;
おめでとうございます。