物を売るスクリプト(質問掲示板

投稿: 000 1  mini naoki 投稿:2011/06/18 10:04:18(最新:2011/06/23 15:21:23)
「太郎の黒き冒険」とかで物を売る機能があるのですが、
物を売るだけの人を作りたいのです。

いろいろなwikiを見たんですが、素人なので分かりません。
どなたか、スクリプトで教えてくれますか?

コメントする

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

コメント一覧

000 1  mini naoki(投稿日:2011/06/23 15:21, 履歴)
ありがとうございます!
無事(?)解決できました!
Nyan mini rurun9(投稿日:2011/06/19 17:03, 履歴)
b[c]の前に + が抜けているから文法エラーですよ。
000 1  mini naoki(投稿日:2011/06/19 14:35, 履歴)
早速ちょっと改造して、
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+"円で買い取ります。" )

がエラーになりました。何故でしょうか。
Nyan mini rurun9(投稿日:2011/06/18 16:09, 履歴)
関数リファレンスのアイテム関連のあたりに並んでいる関数を駆使しましょー。
配列変数について知らない場合は、頑張って理解するかキッパリ諦めましょー。ただしnaoki様が今更、素人のフリをしても説得力がありませんw

持ち物には「装備しているもの」と「持っているだけのもの」があります。
これを、それぞれを配列で取得できます。
getEquipmentIdArray()
getItemIdArray()

まずは店で売る場合に、持ち物配列を選択肢として表示してみましょー。
a=getItemIdArray()
speak(a)
このままだとアイテムID番号のままです。
なので、何番が何なのか文字に変換する処理を作りましょー。
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と何が違うのか疑問に思った。
既に完成してる店の形が公開されてるんだから、気合いで理解するしかないと思います…