物を売るスクリプト(質問掲示板)
投稿:
naoki
投稿:2011/06/18 10:04:18(最新:2011/06/23 15:21:23)
ツイート
コメントする
コメントするには、ログインする必要があります。
コメント一覧
早速ちょっと改造して、
とスクリプトを打ち込むと、30行目の、
がエラーになりました。何故でしょうか。
case speakWithSelect(2,"うん","ちがう",
"{虹色君}\nあ、どうも。\n何かくれるの?")
when 0
a=getItemIdArray()
b=createArray()
n=0
while n<getArrayLength(a)
z=getValueFromItemParam(getItemParamWithId(a[n]),
getItemViewNameIndex()
)
pushArray(b,z)
n=n+1
end
pushArray(b,"やめる")
c=speakWithSelectArray(b,"{虹色君}\nどれをくれるの?")
if c==getArrayLength(b)-1
speak("{虹色君}\nうん。分かった。")
else
case a[c]
when 6053 d=10
when 6054 d=10
when 6055 d=10
when 6056 d=10
when 6057 d=100
end
case speakWithSelect(2,"売る","やめる",
"{虹色君}\n"b[c]+"なら"+d+"円で買い取ります。" )
when 0
removeItemWithIndex(c)
speak("{虹色君}\nありがとう。")
when 1
speak("{虹色君}\nうん。分かった。")
end
end
when 1
speak("{虹色君}\nうん。分かった。")
end
とスクリプトを打ち込むと、30行目の、
"{虹色君}\n"b[c]+"なら"+d+"円で買い取ります。" )
がエラーになりました。何故でしょうか。
関数リファレンスのアイテム関連のあたりに並んでいる関数を駆使しましょー。
配列変数について知らない場合は、頑張って理解するかキッパリ諦めましょー。ただしnaoki様が今更、素人のフリをしても説得力がありませんw
持ち物には「装備しているもの」と「持っているだけのもの」があります。
これを、それぞれを配列で取得できます。
getEquipmentIdArray()
getItemIdArray()
まずは店で売る場合に、持ち物配列を選択肢として表示してみましょー。
このままだとアイテムID番号のままです。
なので、何番が何なのか文字に変換する処理を作りましょー。
という感じになるかと思います。
お金の表示とかも加えるとより親切でしょう。
当然ながらコレは「持っているだけのもの」の場合で、「装備しているもの」は同じような処理を別に作る事になります。
また、ゲーム中で存在するアイテムのうち、店が買い取るもの全てを各マップのリソースに登録していないといけません。
アイテムの値段はアイテムパラメータにはない情報なので、図鑑のように開始スクリプトで基本変数配列に格納しておく方が良いかも。
とここまで書いてみて、wikiと何が違うのか疑問に思った。
既に完成してる店の形が公開されてるんだから、気合いで理解するしかないと思います…
配列変数について知らない場合は、頑張って理解するかキッパリ諦めましょー。ただしnaoki様が今更、素人のフリをしても説得力がありませんw
持ち物には「装備しているもの」と「持っているだけのもの」があります。
これを、それぞれを配列で取得できます。
getEquipmentIdArray()
getItemIdArray()
まずは店で売る場合に、持ち物配列を選択肢として表示してみましょー。
a=getItemIdArray() speak(a)
なので、何番が何なのか文字に変換する処理を作りましょー。
a=getItemIdArray()
b=createArray()
n=0
while n<getArrayLength(a)
#アイテムID配列からアイテムの名前にしたものを配列bに並べる
#アイテム名は、アイテムのパラメータから拾う事ができます
z=getValueFromItemParam(getItemParamWithId(a[n]),
getItemViewNameIndex()
)
pushArray(b,z)
n=n+1
end
pushArray(b,"やめる") #選択肢最後にやめるを追加
#変数cに何番目の選択肢を選んだかを入れる
c=speakWithSelectArray(b,"何を売ってくれるんだーい")
if c==getArrayLength(b)-1
#配列は0番目があるから最後の選択肢は(長さ-1)番目
speak("ひやかしかっ")
else
case a[c] #選んだアイテムID番号から値段を決める
when 1234 d=500
when 5678 d=100
when 9999 d=60
end
case speakWithSelect(2,
"売る","やめる",b[c]+"なら"+d+"円で買い取るよん"
)
when 0
#お金にd加える処理をこのへんに
removeItemWithIndex(c) #売ったアイテムを消す
speak("まいど。")
when 1
speak("ひやかしかっ")
end
end
という感じになるかと思います。
お金の表示とかも加えるとより親切でしょう。
当然ながらコレは「持っているだけのもの」の場合で、「装備しているもの」は同じような処理を別に作る事になります。
また、ゲーム中で存在するアイテムのうち、店が買い取るもの全てを各マップのリソースに登録していないといけません。
アイテムの値段はアイテムパラメータにはない情報なので、図鑑のように開始スクリプトで基本変数配列に格納しておく方が良いかも。
とここまで書いてみて、wikiと何が違うのか疑問に思った。
既に完成してる店の形が公開されてるんだから、気合いで理解するしかないと思います…
無事(?)解決できました!