カスタムメニュー(質問掲示板

投稿: 002 1  mini ugonight 投稿:2011/08/02 13:53:02(最新:2011/08/08 12:10:08)
カスタムメニューを開くと手に入れているアイテム(変数が1)だけを選択肢に表示させたいのですが
setCustomParamMenuEnable(true)

setCustomParamMenuName("keyアイテム")

setVariable("アイテム1", 1)
setVariable("アイテム2", 0)

def onShowCustomParameter()
case speakWithSelect(3,
    if getVariable("アイテム1")==1
       "アイテム1"
    end,
    if getVariable("アイテム2")==1
       "アイテム2"
    end,
    "どのアイテムを使いますか?\n")
  when 0
    
  when 1

end


end

とするとえらってしまいます

アイテム1はてに入れていてアイテム2果てに入れていないのですが…

コメントする

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

コメント一覧

002 1  mini ugonight(投稿日:2011/08/08 12:10, 履歴)
だいじょうぶですた
002 1  mini ugonight(投稿日:2011/08/08 12:01, 履歴)
おぉ、絶句…なるほどぉーって感じですね

単純に
setVariable("アイテム", s[a])

じゃダメですかね?

ひやかしかっも入れておきますwww
Nyan mini rurun9(投稿日:2011/08/08 11:25, 履歴)
そりゃ選択肢配列はアイテムの所持状況によって変わりますから、
a=「何番目がクリックされたか」
だけだと、プレイヤーが何を使いたいのかワカリマセンね。

でも s[a] にはアイテム名の文字列(もしくは「やめる」)が入ってますよね?
だから
if s[a]=="アイテム1"
  setVariable("アイテム1",2) #使用済みにする
  #使ったらどうするかの処理

elsif s[a]=="アイテム2"
  setVariable("アイテム2",2) #使用済みにする
  #使ったらどうするかの処理

elsif s[a]=="やめる" #コレは不要かも?
  speak("ひやかしかっ")
end
とすれば良いのです。
もしアイテムの種類が1と2だけでなく今後増えるようなら、
変数「アイテム」も配列にしちゃった方が管理が楽になると思います。
002 1  mini ugonight(投稿日:2011/08/08 10:16, 履歴)
ちょっといいですか?
rurun9さんの言ってたコードの後に
 setVariable("アイテム", a)

なんてやろうとしたんですがこれってアイテムの取得した数によって変わりますよね?
たとえばアイテム2だけとったときとアイテム1も取ったときとではアイテム2を選択したときのaの値が変わってしまいます。

どうしたらいいでしょうか
002 1  mini ugonight(投稿日:2011/08/03 08:14, 履歴)
ちなみに数字は
0=未取得
1=取得
2=使用済み
となりますので…
002 1  mini ugonight(投稿日:2011/08/03 08:06, 履歴)
えぇぇぇぇなんだその関数はぁぁぁ
と思ったらちゃんと関数リファレンスにのってたwww

普通にうまくできましたありがとうございます。

Nyan mini rurun9(投稿日:2011/08/02 18:29, 履歴)
地道に…?

選択肢の配列を用意するのだから、
s=createArray()

if getVariable("アイテム1")==1
  pushArray(s,"アイテム1")
end
if getVariable("アイテム2")==1
  pushArray(s,"アイテム2")
end
pushArray(s,"やめる")

a=speakWithSelectArray(s,"どのアイテムを使う?")
という事ですよ。
変数「アイテム1&2」というのが一体何を数えているのか知らないけど、持ってるか持ってないかの二択ならフラグの方が良いし、2個以上入手できる物なら書きかえましょー。
002 1  mini ugonight(投稿日:2011/08/02 18:08, 履歴)
ありがとうございます参考になりました。

やっぱり地道にいふってくしかないですかね…
speakWithSelectArray()
は使えそうです
Nyan mini rurun9(投稿日:2011/08/02 17:49, 履歴)
speakWithSelect()
に【if文】を入れてるので文法エラーになりますよっと。

選択肢の数がアイテムを所持しているかどうかで変わる、という事なので
speakWithSelectArray()
の方を使うと良いかもしれません。

参考
スクリプト/つくってみよう1
スクリプト/カスタムメニュー

実はオイラもカスタムメニューは全くいじった事が無いので、何ができるのかよくワカっていません。
002 1  mini ugonight(投稿日:2011/08/02 17:19, 履歴)
ありがとうございます

if getVariable("アイテム1")==1
のとこでえらってしまいます。

アイテム2の変数が1だったらそれも追加して表示するようにしたいのですが…
選択肢が3つとは限らないので変数が1のアイテムを数えて選択肢を出すみたいにするといいんですかね?
000 1  mini naoki(投稿日:2011/08/02 16:53, 履歴)
どうも。原因は分かりませんが、とりあえず、
setCustomParamMenuEnable(true) 
setCustomParamMenuName("keyアイテム") 
setVariable("アイテム1", 1) 
setVariable("アイテム2", 0) 
def onShowCustomParameter() 
case speakWithSelect(3, 
    if getVariable("アイテム1")==1 
       "アイテム1" 
    elsif getVariable("アイテム2")==1 
       "アイテム2" 
    end, 
    "どのアイテムを使いますか?\n") 
  when 0 
     
  when 1 
 
end  
end

と打ってみてください。
私がよく使うスクリプトですので。