カスタムメニューで図鑑を表示させたいのですが…(質問掲示板)
投稿:
アイネ・レグルス
投稿:2012/11/18 13:52:18(最新:2012/11/18 19:32:18)
アイネ・レグルス
投稿:2012/11/18 13:52:18(最新:2012/11/18 19:32:18)
カスタムメニューで図鑑を創ろうと思いまして、コチラの掲示板を参考にしましてこのような記述してみましたが…
= "???" #ゲットしていない物を???という項目にする
i = i + 1
end
setVariable("説明文",createArray()) #説明文を考える
getVariable("説明文")[0] = "アイテム1"
getVariable("説明文")[1] = "アイテム2"
getVariable("説明文")[2] = "アイテム3"
getVariable("説明文")[3] = "アイテム4"
getVariable("説明文")[4] = "アイテム5"
#図鑑を参照したとき(本棚にイベントをはっつけるなど)
i = 0
while i < 1
case speakWithSelect(6, getVariable("項目")[0], getVariable("項目")[1],
getVariable("項目")[2], getVariable("項目")[3],
getVariable("項目")[4], "やめる",#都合により無駄に改行してます
"参照したい項目を選んでね")
when 0
n = 0
when 1
n = 1
when 2
n = 2
when 3
n = 3
when 4
n = 4
when 5
speak("図鑑を閉じた")
i = 1
end
if i == 0
if getVariable("項目")[n] == "???"
speak("まだ参照できません")
else
speak(getVariable("説明文")[n])
end
end
end
speak("カスタムパラメーター長 ",
getCustomParamLength())
speak("getCustomParamMenuEnable = ",
getCustomParamMenuEnable(),
"\ngetCustomParamMenuName = ",
getCustomParamMenuName())
end]
カスタムメニューを使うのも今回が初めてなので全く不慣れなのですが修正箇所教えて頂けると幸いです
ツイート
etCustomParamMenuEnable(true)
setCustomParamMenuName("a")
setVariable("testParamValue", 1)
setVariable("testaParamValue", 28)
def onShowCustomParameter()
setCustomParamName(0, "test")
setCustomParamValue(0, getVariable("testParamValue"))
setCustomParamName(1, "testa")
setCustomParamValue(1, getVariable("testaParamValue"))
setCustomParamName(2, "delete")
setCustomParamValue(2, 30)
deleteCustomParam(2)
drawCustomParam()
imageHandle = showImagePosition(300, 32, 74)
#開始スクリプトなどで設定
setVariable("項目",createArray()) # 5項目ある図鑑をすべて???にする
i = 0
while i < 5
getVariable("項目")[ii = i + 1
end
setVariable("説明文",createArray()) #説明文を考える
getVariable("説明文")[0] = "アイテム1"
getVariable("説明文")[1] = "アイテム2"
getVariable("説明文")[2] = "アイテム3"
getVariable("説明文")[3] = "アイテム4"
getVariable("説明文")[4] = "アイテム5"
#図鑑を参照したとき(本棚にイベントをはっつけるなど)
i = 0
while i < 1
case speakWithSelect(6, getVariable("項目")[0], getVariable("項目")[1],
getVariable("項目")[2], getVariable("項目")[3],
getVariable("項目")[4], "やめる",#都合により無駄に改行してます
"参照したい項目を選んでね")
when 0
n = 0
when 1
n = 1
when 2
n = 2
when 3
n = 3
when 4
n = 4
when 5
speak("図鑑を閉じた")
i = 1
end
if i == 0
if getVariable("項目")[n] == "???"
speak("まだ参照できません")
else
speak(getVariable("説明文")[n])
end
end
end
speak("カスタムパラメーター長 ",
getCustomParamLength())
speak("getCustomParamMenuEnable = ",
getCustomParamMenuEnable(),
"\ngetCustomParamMenuName = ",
getCustomParamMenuName())
end]
出たエラー 開始スクリプト : line : 1 undefined identifier etCustomParamMenuEnable
カスタムメニューを使うのも今回が初めてなので全く不慣れなのですが修正箇所教えて頂けると幸いです
コメントする
コメントするには、ログインする必要があります。
コメント一覧
とりあえずここまでやりましたがあのエラー文が消える事はなく
def onShowCustomParameter()
setCustomParamMenuEnable(true)
setCustomParamMenuName("オーナメント一覧")
setVariable("testParamValue", 1)
setVariable("testaParamValue", 28)
drawCustomParam()
imageHandle = showImagePosition(300, 32, 74)
#開始スクリプトなどで設定
setVariable("項目",createArray())
i = 0; max = 5 #後々増やす可能性も考えて変数に項目数を入れとく
while i < max
getVariable("項目")[i]= "???" #すべての項目を???にする
i = i + 1
end
setVariable("説明文",createArray()) #説明文入力
getVariable("説明文")[0] = "アイテム1"
getVariable("説明文")[1] = "アイテム2"
getVariable("説明文")[2] = "アイテム3"
getVariable("説明文")[3] = "アイテム4"
getVariable("説明文")[4] = "アイテム5"
#図鑑を参照したとき(本棚にイベントをはっつけるなど)
serect = 0
while serect < max #図鑑ループ開始
serect = speakWithSelect(6, getVariable("項目")[0], getVariable("項目")[1],
getVariable("項目")[2], getVariable("項目")[3],
getVariable("項目")[4], "やめる",
"参照したい項目を選んでね")
if serect == max then speak("図鑑を閉じた")
else #「やめる」を選んでなければ項目参照
if getVariable("項目")[n] == "???"
speak("まだ参照できません")
else
speak(getVariable("説明文")[n])
end
end
end #図鑑ループend
end
#開始スクリプトなどで設定
setVariable("項目",createArray())
i = 0; max = 5 #後々増やす可能性も考えて変数に項目数を入れとく
while i < max
getVariable("項目")[i]= "???" #すべての項目を???にする
i = i + 1
end
メニューを開くと毎回この部分もやることになるので
参照できるようにしてもまた???になってしまいます
setCustomParamMenuEnable(true)
setCustomParamMenuName("a")
setVariable("testParamValue", 1)
setVariable("testaParamValue", 28)
def onShowCustomParameter()
setCustomParamName(0, "test")
setCustomParamValue(0, getVariable("testParamValue"))
setCustomParamName(1, "testa")
setCustomParamValue(1, getVariable("testaParamValue"))
setCustomParamName(2, "delete")
setCustomParamValue(2, 30)
deleteCustomParam(2)
drawCustomParam()
imageHandle = showImagePosition(300, 32, 74)
#開始スクリプトなどで設定
setVariable("項目",createArray()) # 5項目ある図鑑をすべて???にする
i = 0
while i < 5
getVariable("項目")[i]= "???" #ゲットしていない物を???という項目にする
i = i + 1
end
setVariable("説明文",createArray()) #説明文を考える
getVariable("説明文")[0] = "アイテム1"
getVariable("説明文")[1] = "アイテム2"
getVariable("説明文")[2] = "アイテム3"
getVariable("説明文")[3] = "アイテム4"
getVariable("説明文")[4] = "アイテム5"
#図鑑を参照したとき(本棚にイベントをはっつけるなど)
i = 0
while i < 1
case speakWithSelect(6, getVariable("項目")[0], getVariable("項目")[1],
getVariable("項目")[2], getVariable("項目")[3],
getVariable("項目")[4], "やめる",#都合により無駄に改行してます
"参照したい項目を選んでね")
when 0
n = 0
when 1
n = 1
when 2
n = 2
when 3
n = 3
when 4
n = 4
when 5
speak("図鑑を閉じた")
i = 1
end
if i == 0
if getVariable("項目")[n] == "???"
speak("まだ参照できません")
else
speak(getVariable("説明文")[n])
end
end
end
speak("カスタムパラメーター長 ",
getCustomParamLength())
speak("getCustomParamMenuEnable = ",
getCustomParamMenuEnable(),
"\ngetCustomParamMenuName = ",
getCustomParamMenuName())
end
ありがとうございますm(__)m
カスタムメニューの方は正常に動作しました。
しかし、アイテムを追加する事が上手くいきません
コレではダメなのでしょうか…
カスタムメニューの方は正常に動作しました。
しかし、アイテムを追加する事が上手くいきません
speak("アイテムを見つけた")
setMusicVolume(0.0)
playSound(156327)
showImage(156250)
getVariable("項目")[0] = "薬"
speak("薬を手に入れた")
hideImage()
setMusicVolume(0.8)
コレではダメなのでしょうか…
大丈夫のはずなのですが・・・
うーん、色々と試したのですがまだ直せていません・・・
うーん、色々と試したのですがまだ直せていません・・・
今分かっていることは
これの位置がおかしいこと
#開始スクリプトなどで設定
setVariable("項目",createArray()) # 5項目ある図鑑をすべて???にする
i = 0
while i < 5
getVariable("項目")[i]= "???" #ゲットしていない物を???という項目にする
i = i + 1
end
setVariable("説明文",createArray()) #説明文を考える
getVariable("説明文")[0] = "アイテム1"
getVariable("説明文")[1] = "アイテム2"
getVariable("説明文")[2] = "アイテム3"
getVariable("説明文")[3] = "アイテム4"
getVariable("説明文")[4] = "アイテム5"
これの位置がおかしいこと
#本当はここより上に書かないといけない def onShowCustomParameter()
参考までに【おさかなくんXのおさかな図鑑の開始スクリプト】を掲載しておきますね。
setMenuItemVisible(getMenuHideWindow(), false)
setMenuItemVisible(getMenuLoad(), false)
setMenuItemVisible(getMenuSave(), false)
setMenuItemVisible(getMenuStatus(), false)
setMenuItemVisible(getMenuBackLog(), false)
setMenuItemVisible(getMenuEquipment(), false)
setMenuItemVisible(getMenuItem(), false)
setVariable("項目",createArray())
i = 0
while i < 26
getVariable("項目")[i] = "-----------"
i = i + 1
end
setVariable("説明文",createArray()) #説明文を考える
getVariable("説明文")[0] = "『おいしいナスはいかが?\nナスは食べ物です。』"
getVariable("説明文")[1] = "『藤沢に何用だ!?』"
getVariable("説明文")[2] = "『ぼくじゃないよーだ。』"
getVariable("説明文")[3] = "『オヨゲチャッタ』"
getVariable("説明文")[4] = "『あなたと泳ぎたい!』"
getVariable("説明文")[5] = "『3秒で死ねるサカナです。』"
getVariable("説明文")[6] = "『泳げないんだ!』"
getVariable("説明文")[7] = "『ハズレだ。』"
getVariable("説明文")[8] = "『おきのどくですが、本物のサカナは、泳いでしまいました。』"
getVariable("説明文")[9] = "『泳ぐぞ。\nすぐ泳ぐぞ。\n絶対泳ぐぞ。\nほら泳ぐぞ。』"
getVariable("説明文")[10] = "『魚にでも話してろ...。』"
getVariable("説明文")[11] = "『ここの脱出に必要な何かがある\n俺にはわかんねーんだ!\nごめんな!!』"
getVariable("説明文")[12] = "『泳いだら負けかなと思ってる。』"
getVariable("説明文")[13] = "『なぁ。。俺、サカナになれたかな。。』"
getVariable("説明文")[14] = "『浮きますとも!』"
getVariable("説明文")[15] = "『オレではない。』"
getVariable("説明文")[16] = "『泳ぐために、理由はいるかい?』"
getVariable("説明文")[17] = "『仕方ない、世界を泳ぐとしよう。』"
getVariable("説明文")[18] = "『サカナを逆にしただけなんDA!』"
getVariable("説明文")[19] = "『いっつみーサカオ。\nオレではないぜ!』"
getVariable("説明文")[20] = "『泳ぎ続けよう!永遠に!』"
getVariable("説明文")[21] = "『そんなに急いでどこに行ってるの?』"
getVariable("説明文")[22] = "『だが泳ぐ・・』"
getVariable("説明文")[23] = "『名前を英語にしただけで、特に意味はない』"
getVariable("説明文")[24] = "『おおーしんじられぬー』"
getVariable("説明文")[25] = "『泳げねえ魚はただの魚だ。』"
setCustomParamMenuEnable(true)
setCustomParamMenuName("おさかな図鑑")
def onShowCustomParameter()
i = 0
while i < 1
case speakWithSelect(27, getVariable("項目")[0], getVariable("項目")[1], getVariable("項目")[2], getVariable("項目")[3], getVariable("項目")[4], getVariable("項目")[5], getVariable("項目")[6], getVariable("項目")[7], getVariable("項目")[8], getVariable("項目")[9], getVariable("項目")[10], getVariable("項目")[11], getVariable("項目")[12], getVariable("項目")[13], getVariable("項目")[14], getVariable("項目")[15], getVariable("項目")[16], getVariable("項目")[17], getVariable("項目")[18], getVariable("項目")[19], getVariable("項目")[20], getVariable("項目")[21], getVariable("項目")[22], getVariable("項目")[23], getVariable("項目")[24], getVariable("項目")[25], "やめる","『おさかなくんモード』で話しかけた\nおさかなくん達です。")
when 0
n = 0
when 1
n = 1
when 2
n = 2
when 3
n = 3
when 4
n = 4
when 5
n = 5
when 6
n = 6
when 7
n = 7
when 8
n = 8
when 9
n = 9
when 10
n = 10
when 11
n = 11
when 12
n = 12
when 13
n = 13
when 14
n = 14
when 15
n = 15
when 16
n = 16
when 17
n = 17
when 18
n = 18
when 19
n = 19
when 20
n = 20
when 21
n = 21
when 22
n = 22
when 23
n = 23
when 24
n = 24
when 25
n = 25
when 26
speak("閲覧をやめました。")
i = 1
end
if i == 0
if getVariable("項目")[n] == "-----------"
speak("おさかなくんに話すと種類が増えます。")
else
speak(getVariable("説明文")[n])
end
end
end
end
んで増やしたいオブジェクトに対してこれを記述
(例)
(例)
getVariable("項目")[2] = "サッカーリン"
わざわざcase文で
speakWithSelect関数の戻り値と
同じ値を入れる必要はないかな
n = speakWithSelect(~
で良いですし、
もっと言うと
選択肢に配列を使うなら
speakWithSelectArray関数にすれば
記述量が減ります
speakWithSelect関数の戻り値と
同じ値を入れる必要はないかな
n = speakWithSelect(~
で良いですし、
もっと言うと
選択肢に配列を使うなら
speakWithSelectArray関数にすれば
記述量が減ります
なるほど..初期の頃だったのでスイマセン><
今更かもですがどうしても気になるので整理。
スクリプト/コツ/文法エラーを出しにくいスクリプトの書き方
見やすく書くことは結構重要なことですよ。
ついでにちょっと修正
池ちゃん(さん)の方法のほうが早いけど
二次元配列が苦手ならとりあえずこれでも。
setCustomParamMenuEnable(true)
setCustomParamMenuName("a")
setVariable("testParamValue", 1)
setVariable("testaParamValue", 28)
def onShowCustomParameter()
setCustomParamName(0, "test")
setCustomParamValue(0, getVariable("testParamValue"))
setCustomParamName(1, "testa")
setCustomParamValue(1, getVariable("testaParamValue"))
setCustomParamName(2, "delete")
setCustomParamValue(2, 30)
deleteCustomParam(2)
drawCustomParam()
imageHandle = showImagePosition(300, 32, 74)
#開始スクリプトなどで設定
setVariable("項目",createArray()) # 5項目ある図鑑をすべて???にする
i = 0
while i < 5
getVariable("項目")[i]= "???" #ゲットしていない物を???という項目にする
i = i + 1
end
setVariable("説明文",createArray()) #説明文を考える
getVariable("説明文")[0] = "アイテム1"
getVariable("説明文")[1] = "アイテム2"
getVariable("説明文")[2] = "アイテム3"
getVariable("説明文")[3] = "アイテム4"
getVariable("説明文")[4] = "アイテム5"
#図鑑を参照したとき(本棚にイベントをはっつけるなど)
i = 0
while i < 1 #図鑑ループ開始
#都合により無駄に改行してます(←見易くする意味があるなら無駄じゃない)
case speakWithSelect(6, getVariable("項目")[0], getVariable("項目")[1],
getVariable("項目")[2], getVariable("項目")[3],
getVariable("項目")[4], "やめる",
"参照したい項目を選んでね")
when 0 n = 0
when 1 n = 1
when 2 n = 2
when 3 n = 3
when 4 n = 4
when 5 speak("図鑑を閉じた"); i = 1
end #項目caseのend
if i == 0
if getVariable("項目")[n] == "???"
speak("まだ参照できません")
else
speak(getVariable("説明文")[n])
end
end
end #図鑑ループend
#デパック用?
speak("カスタムパラメーター長 ",
getCustomParamLength())
speak("getCustomParamMenuEnable = ",
getCustomParamMenuEnable(),
"\ngetCustomParamMenuName = ",
getCustomParamMenuName())
end #onShowCustomParameter関数end
スクリプト/コツ/文法エラーを出しにくいスクリプトの書き方
見やすく書くことは結構重要なことですよ。
ついでにちょっと修正
setCustomParamMenuEnable(true)
setCustomParamMenuName("a")
setVariable("testParamValue", 1)
setVariable("testaParamValue", 28)
def onShowCustomParameter()
setCustomParamName(0, "test")
setCustomParamValue(0, getVariable("testParamValue"))
setCustomParamName(1, "testa")
setCustomParamValue(1, getVariable("testaParamValue"))
setCustomParamName(2, "delete")
setCustomParamValue(2, 30)
deleteCustomParam(2)
drawCustomParam()
imageHandle = showImagePosition(300, 32, 74)
#開始スクリプトなどで設定
setVariable("項目",createArray())
i = 0; max = 5 #後々増やす可能性も考えて変数に項目数を入れとく
while i < max
getVariable("項目")[i]= "???" #すべての項目を???にする
i = i + 1
end
setVariable("説明文",createArray()) #説明文入力
getVariable("説明文")[0] = "アイテム1"
getVariable("説明文")[1] = "アイテム2"
getVariable("説明文")[2] = "アイテム3"
getVariable("説明文")[3] = "アイテム4"
getVariable("説明文")[4] = "アイテム5"
#図鑑を参照したとき(本棚にイベントをはっつけるなど)
serect = 0
while serect < max #図鑑ループ開始
serect = speakWithSelect(6, getVariable("項目")[0], getVariable("項目")[1],
getVariable("項目")[2], getVariable("項目")[3],
getVariable("項目")[4], "やめる",
"参照したい項目を選んでね")
if serect == max then speak("図鑑を閉じた")
else #「やめる」を選んでなければ項目参照
if getVariable("項目")[n] == "???"
speak("まだ参照できません")
else
speak(getVariable("説明文")[n])
end
end
end #図鑑ループend
#デパック用?
speak("カスタムパラメーター長 ",
getCustomParamLength())
speak("getCustomParamMenuEnable = ",
getCustomParamMenuEnable(),
"\ngetCustomParamMenuName = ",
getCustomParamMenuName())
end #onShowCustomParameter関数end
池ちゃん(さん)の方法のほうが早いけど
二次元配列が苦手ならとりあえずこれでも。
エラーの読み方は
覚えておくと今後役に立つかも
Error一覧
line : 1
→ 1行目でエラーが発生しました
undefined identifier
→ 関数名が間違っている。
またはユーザー定義していない関数名を書いたとき。(Error一覧より)
etCustomParamMenuEnable
→ 間違いの内容
つまり、
1行目に書かれている
「etCustomParamMenuEnable」という名前の
関数がなくてエラーになりました
ということ
正しくは
「setCustomParamMenuEnable」
コピーか何かを行ったとき
最初の文字が欠けています
覚えておくと今後役に立つかも
Error一覧
line : 1
→ 1行目でエラーが発生しました
undefined identifier
→ 関数名が間違っている。
またはユーザー定義していない関数名を書いたとき。(Error一覧より)
etCustomParamMenuEnable
→ 間違いの内容
つまり、
1行目に書かれている
「etCustomParamMenuEnable」という名前の
関数がなくてエラーになりました
ということ
正しくは
「setCustomParamMenuEnable」
コピーか何かを行ったとき
最初の文字が欠けています
出たエラー 開始スクリプト : line : 1 undefined identifier etCustomParamMenuEnable
うむ・・・
最初に[s]を付け忘れている・・・ってことはありますかね?
etCustomParamMenuEnable → setCustomParamMenuEnable
setVariable("max",3) #全部でいくつなのか
setVariable("a",createArray())
i=0
while i<getVariable("max")
getVariable("a")[i]=createArray() #二次元配列で管理します
getVariable("a")[i][0]=false
i=i+1
end
#a[n][m]について
# n...番号。0~2の全部で三個
# m...0=図鑑に載っているtrue 載っていないfalse, 1=名前, 2=説明文, とします
getVariable("a")[0][1]="ポーション"
getVariable("a")[0][2]="HPを30回復する"
getVariable("a")[1][1]="ハイポーション"
getVariable("a")[1][2]="HPを50回復する"
getVariable("a")[2][1]="エリクサー"
getVariable("a")[2][2]="HPを最大まで回復する"
def onShowCustomParameter()
b=createArray()
i=0
while i<getVariable("max")
if getVariable("a")[i][0]
pushArray(b,getVariable("a")[i][1]) #図鑑に載っている品だけの選択肢配列 b をつくる
end
i=i+1
end
pushArray(b,"図鑑を閉じる") #終わらせる選択肢も追加
k=true
while k
c=speakWithSelectArray(b,"参照したい項目を選んでね")
i=0
while i<getVariable("max")
if b[c]==getVariable("a")[i][1] #選んだのと同じものを図鑑一覧から探して詳細を表示
speak("No.",i," : ",getVariable("a")[i][1],"\n ",getVariable("a")[i][2])
elsif b[c]=="図鑑を閉じる"
k=false
end
i=i+1
end
end #kループ終
end
こういう方法もある・・・とだけ言っておきます(殴
ちょっと待ってくださいね
setCustomParamMenuEnable(true) setCustomParamMenuName("a") setVariable("testParamValue", 1) setVariable("testaParamValue", 28) def onShowCustomParameter() setCustomParamName(2, "delete") setCustomParamValue(2, 30) deleteCustomParam(2) drawCustomParam() #開始スクリプトなどで設定 setVariable("項目",createArray()) # 5項目ある図鑑をすべて???にする i = 0 while i < 7 getVariable("項目")[i]= "???" #ゲットしていない物を???という項目にする i = i + 1 end setVariable("説明文",createArray()) #説明文を考える getVariable("説明文")[0] = "アイテム1" getVariable("説明文")[1] = "アイテム2" getVariable("説明文")[2] = "アイテム3" getVariable("説明文")[3] = "アイテム4" getVariable("説明文")[4] = "アイテム5" getVariable("説明文")[5] = "アイテム6" getVariable("説明文")[6] = "アイテム7" #図鑑を参照したとき(本棚にイベントをはっつけるなど) i = 0 while i < 1 case speakWithSelect(8, getVariable("項目")[0], getVariable("項目")[1], getVariable("項目")[2], getVariable("項目")[3], getVariable("項目")[4],getVariable("項目")[5],getVariable("項目")[6], "やめる",#都合により無駄に改行してます "参照したい項目を選んでね") when 0 n = 0 when 1 n = 1 when 2 n = 2 when 3 n = 3 when 4 n = 4 when 5 n = 4 when 6 n = 6 when 7 i = 1 end if i == 0 if getVariable("項目")[n] == "???" speak("まだ参照できません") else speak(getVariable("説明文")[n]) end end end endところが、該当アイテム入手スクリプトを以下のように書いているのですが未だに正常に動作しません
speak("アイテムAを手に入れた!") getVariable("a")[0] = "アイテムA"スクリプトは合っているはずなのですが…どこか別のところが違うのかもしれませんが…
「通常変数"項目"」を使っているのに
入手したところが
「通常変数"a"」を使用しています
どのようにして動作しているのか
仕組みを理解していないため
初歩的なミスが発生しているわけです
前にもこんな事やったような…
もっと内容等理解してからやるべきでしたね…すみません。
とりあえず簸川さんが今さっき書いて下さった方を使用させて頂きます。こちらの記述法はもう少しスクリプト理解してから再度挑戦してみようかと思います。
ご協力頂いた皆様本当にありがとうございましたm(__)m