スクリプト/コツ/売ったり買ったりできるお店処理
最終投稿者: dycoon
更新:2011/07/29 12:24:51
アイテムの削除の機能などが付け加わりましたので、
お店でアイテムを売ることもできるようになりました。
サンプルゲームは以下のとおりです。
ゲーム[ID:5105]
使用した関数一覧
以下の関数を組み合わせてお店の機能を実現しました。
toString : 文字列と数値の足し算ができないため
数値をこの関数で文字列に変換します。
http://rmake.jp/document/function_reference#toString%E9%96%A2%E6%95%B0
speakWithSelectArray : 選択肢を配列で受け取って表示します。
http://rmake.jp/document/function_reference#speakWithSelectArray%E9%96%A2%E6%95%B0
getItemParamWithId : アイテムのIDから対応するアイテムのパラメーターを取得します。
http://rmake.jp/document/function_reference#getItemParamWithId%E9%96%A2%E6%95%B0
getValueFromItemParam : アイテムパラメーターの配列からパラメーターの値を取得します。
http://rmake.jp/document/function_reference#getValueFromItemParam%E9%96%A2%E6%95%B0
getValueFromCharacterParam : キャラクターステータス配列からステータスを取得します。
http://rmake.jp/document/function_reference#getValueFromCharacterParam%E9%96%A2%E6%95%B0
getPartyMemberEquipmentIdArray : パーティメンバーが装備しているアイテムのIDの配列を取得します。
http://rmake.jp/document/function_reference#getPartyMemberEquipmentIdArray%E9%96%A2%E6%95%B0
getPartyMemberEquipmentParamWithIndex : パーティメンバーの装備のパラメーター配列をインデックス(どこに装備しているか)から取得します。
http://rmake.jp/document/function_reference#getPartyMemberEquipmentParamWithIndex%E9%96%A2%E6%95%B0
removePartyMemberEquipmentWithIndex : パーティメンバーの指定インデックスの装備アイテムを消去します。
http://rmake.jp/document/function_reference#removePartyMemberEquipmentWithIndex%E9%96%A2%E6%95%B0
removeItemWithIndex : 所持しているアイテムを消去します。
http://rmake.jp/document/function_reference#removeItemWithIndex%E9%96%A2%E6%95%B0
アイテム売買のコード
ここでは、アイテム売買の処理を以下のように記述しました。
結構長いのでコピー&ペーストして
使用するのがよいかと思います。
何を売るか、通貨をどうするかなどは
設定をおこなう必要がありますので、
設定の方法を以下に記します。
基本的に書き換える必要があるのは
"#データなど"のあとから、"#お店処理"の前までです。
通貨
通貨に利用している基本変数の名前を
以下のようにして"店で使える通貨の変数名"に渡します。
また、注意として開始スクリプトで、"お金"の初期化をする必要があります。
店で売っているアイテム
以下のようにして
idと価格の組の配列の配列を用意します。
a[i][0]には売るアイテムのid、a[i][1]には売るアイテムの価格を設定します。
最後に基本変数"店にあるアイテム"にaを設定します。
店が買い取れるアイテム
店で売るときと基本的に同じですが、
マップ外のアイテムのidも持ち込まれる可能性があるため
その分も書く必要があります。
最後に基本変数"売れるアイテム"にaを設定します。
ゲーム全体で売れるアイテムが同じなら開始スクリプトに
この処理を書いてもよいかと思います。
倒すとお金を落とす敵
マップエディタで配置した敵キャラを倒すと、
お金などを落とす処理を、おまけとしてここに書いておきます。
アクションRPG用お店処理
アクションRPGの場合パーティメンバーがいないなどの理由で
使える関数などが変わります。
たとえば以下のようにします。
ツイート
お店でアイテムを売ることもできるようになりました。
サンプルゲームは以下のとおりです。
ゲーム[ID:5105]
使用した関数一覧
以下の関数を組み合わせてお店の機能を実現しました。
toString : 文字列と数値の足し算ができないため
数値をこの関数で文字列に変換します。
http://rmake.jp/document/function_reference#toString%E9%96%A2%E6%95%B0
speakWithSelectArray : 選択肢を配列で受け取って表示します。
http://rmake.jp/document/function_reference#speakWithSelectArray%E9%96%A2%E6%95%B0
getItemParamWithId : アイテムのIDから対応するアイテムのパラメーターを取得します。
http://rmake.jp/document/function_reference#getItemParamWithId%E9%96%A2%E6%95%B0
getValueFromItemParam : アイテムパラメーターの配列からパラメーターの値を取得します。
http://rmake.jp/document/function_reference#getValueFromItemParam%E9%96%A2%E6%95%B0
getValueFromCharacterParam : キャラクターステータス配列からステータスを取得します。
http://rmake.jp/document/function_reference#getValueFromCharacterParam%E9%96%A2%E6%95%B0
getPartyMemberEquipmentIdArray : パーティメンバーが装備しているアイテムのIDの配列を取得します。
http://rmake.jp/document/function_reference#getPartyMemberEquipmentIdArray%E9%96%A2%E6%95%B0
getPartyMemberEquipmentParamWithIndex : パーティメンバーの装備のパラメーター配列をインデックス(どこに装備しているか)から取得します。
http://rmake.jp/document/function_reference#getPartyMemberEquipmentParamWithIndex%E9%96%A2%E6%95%B0
removePartyMemberEquipmentWithIndex : パーティメンバーの指定インデックスの装備アイテムを消去します。
http://rmake.jp/document/function_reference#removePartyMemberEquipmentWithIndex%E9%96%A2%E6%95%B0
removeItemWithIndex : 所持しているアイテムを消去します。
http://rmake.jp/document/function_reference#removeItemWithIndex%E9%96%A2%E6%95%B0
アイテム売買のコード
ここでは、アイテム売買の処理を以下のように記述しました。
#データなど setVariable("店で使える通貨の変数名", "お金") a = createArray() a[0] = createArray() a[0][0] = 1 #id a[0][1] = 100 #価格 a[1] = createArray() a[1][0] = 3 a[1][1] = 200 a[2] = createArray() a[2][0] = 15 a[2][1] = 100 setVariable("店にあるアイテム", a) a = createArray() a[0] = createArray() a[0][0] = 1 a[0][1] = 50 a[1] = createArray() a[1][0] = 3 a[1][1] = 100 a[2] = createArray() a[2][0] = 15 a[2][1] = 50 a[3] = createArray() a[3][0] = 34 a[3][1] = 100 a[4] = createArray() a[4][0] = 35 a[4][1] = 50 setVariable("売れるアイテム", a) #お店処理 selectX = getSelectWindowX() selectY = getSelectWindowY() selectWidth = getSelectWindowWidth() selectHeight = getSelectWindowHeight() textId = createText(512 - 160, 16, 160, 64) setSelectWindowRect(256, 100, 240, 200) loop = true speak("いらっしゃいませ。") gold = getVariable(getVariable("店で使える通貨の変数名")) items = getVariable("店にあるアイテム") sellItems = getVariable("売れるアイテム") itemList = createArray() i = 0 while i < getArrayLength(items) param = getItemParamWithId(items[i][0]) itemList[i] = getValueFromItemParam(param, getItemViewNameIndex()) + " " + toString(items[i][1]) i = i + 1 end pushArray(itemList, "買わない") while loop setText(textId, getVariable("店で使える通貨の変数名") + " " + toString(gold)) case speakWithSelect(3,"買う","売る","店を出る", "いかがいたしますか?") when 0 buyIndex = -1 buyIndex = speakWithSelectArray(itemList, "どちらをお買い上げになりますか?") if buyIndex >= getArrayLength(itemList) - 1 buyIndex = -1 end if buyIndex >= 0 param = getItemParamWithId(items[buyIndex][0]) if items[buyIndex][1] > gold speak("お金が足りません。") elsif getValueFromItemParam(param, getItemTypeIdIndex()) == 0 if !giveItem(items[buyIndex][0]) speak("持ち物がいっぱいです") else speak("お買い上げありがとうございます。") gold = gold - items[buyIndex][1] end else i = 0 ct = 0 memberList = createArray() memberId = createArray() while i < 4 m = getPartyMember(i) if isPartyMember(m) a = getPartyMemberParam(m) memberList[ct] = getValueFromCharacterParam(a, getCharacterViewNameIndex()) memberId[ct] =m ct = ct + 1 end i = i + 1 end memberList[ct] = "やめる" idx = speakWithSelectArray(memberList, "どなたが装備されますか?") if idx == ct else if !giveEquipmentPartyMember(memberId[idx], items[buyIndex][0]) speak("装備できませんでした。") else speak("お買い上げありがとうございます。") gold = gold - items[buyIndex][1] end end end end when 1 case speakWithSelect(3,"装備を売る","持ち物を売る","やめる", "どれを売っていただけるのでしょうか?") when 0 i = 0 ct = 0 memberList = createArray() memberId = createArray() while i < 4 m = getPartyMember(i) if isPartyMember(m) a = getPartyMemberParam(m) memberList[ct] = getValueFromCharacterParam(a, getCharacterViewNameIndex()) memberId[ct] =m ct = ct + 1 end i = i + 1 end memberList[ct] = "やめる" idx = speakWithSelectArray(memberList, "誰の装備を売っていただけるのでしょうか?") if idx == ct else i = 0 ct = 0 a = getPartyMemberEquipmentIdArray(memberId[idx]) el = createArray() ei = createArray() while i < getArrayLength(a) if a[i] >= 0 me = getPartyMemberEquipmentParamWithIndex(memberId[idx], i) el[ct] = getValueFromItemParam(me, getItemViewNameIndex()) ei[ct] = i ct = ct + 1 end i = i + 1 end el[ct] = "やめる" idx2 = speakWithSelectArray(el, "どの装備を売っていただけるのでしょうか?") if idx2 == ct else price = 0 i = 0 priceLoopEnd = false while i < getArrayLength(sellItems) && !priceLoopEnd if sellItems[i][0] == a[ei[idx2]] price = sellItems[i][1] priceLoopEnd = true end i = i + 1 end if priceLoopEnd case speakWithSelect(2,"はい","いいえ", toString(price) + "になりますが売っていただけますか?") when 0 speak("売っていただきありがとうございます。") gold = gold + price removePartyMemberEquipmentWithIndex(memberId[idx], ei[idx2]) when 1 speak("まだ手放されないのですね。了解しました。") end else speak("まだ手放されないのですね。了解しました。") end end end when 1 a = getItemIdArray() il = createArray() ii = createArray() i = 0 ct = 0 while i < getArrayLength(a) if a[i] >= 0 mi = getItemParamWithIndex(i) il[ct] = getValueFromItemParam(mi, getItemViewNameIndex()) ii[ct] = i ct = ct + 1 end i = i + 1 end il[ct] = "やめる" idx = speakWithSelectArray(il, "どちらのアイテムを売っていただけますか?") if idx == ct else price = 0 i = 0 priceLoopEnd = false while i < getArrayLength(sellItems) && !priceLoopEnd if sellItems[i][0] == a[ii[idx]] price = sellItems[i][1] priceLoopEnd = true end i = i + 1 end if priceLoopEnd case speakWithSelect(2,"はい","いいえ", toString(price) + "になりますが売っていただけますか?") when 0 speak("売っていただきありがとうございます。") gold = gold + price removeItemWithIndex(ii[idx]) when 1 speak("まだ手放されないのですね。了解しました。") end else speak("まだ手放されないのですね。了解しました。") end end when 2 end when 2 speak("またのご来店をお待ちしています。") loop = false end end setVariable(getVariable("店で使える通貨の変数名"), gold) setSelectWindowRect(selectX, selectY, selectWidth, selectHeight) deleteText(textId)
結構長いのでコピー&ペーストして
使用するのがよいかと思います。
何を売るか、通貨をどうするかなどは
設定をおこなう必要がありますので、
設定の方法を以下に記します。
基本的に書き換える必要があるのは
"#データなど"のあとから、"#お店処理"の前までです。
通貨
通貨に利用している基本変数の名前を
以下のようにして"店で使える通貨の変数名"に渡します。
setVariable("店で使える通貨の変数名", "お金")
また、注意として開始スクリプトで、"お金"の初期化をする必要があります。
setVariable("お金", 0)
店で売っているアイテム
以下のようにして
idと価格の組の配列の配列を用意します。
a = createArray() a[0] = createArray() a[0][0] = 1 #id a[0][1] = 100 #価格 a[1] = createArray() a[1][0] = 3 a[1][1] = 200 a[2] = createArray() a[2][0] = 15 a[2][1] = 100 setVariable("店にあるアイテム", a)
a[i][0]には売るアイテムのid、a[i][1]には売るアイテムの価格を設定します。
最後に基本変数"店にあるアイテム"にaを設定します。
店が買い取れるアイテム
店で売るときと基本的に同じですが、
マップ外のアイテムのidも持ち込まれる可能性があるため
その分も書く必要があります。
a = createArray() a[0] = createArray() a[0][0] = 1 a[0][1] = 50 a[1] = createArray() a[1][0] = 3 a[1][1] = 100 a[2] = createArray() a[2][0] = 15 a[2][1] = 50 a[3] = createArray() a[3][0] = 34 a[3][1] = 100 a[4] = createArray() a[4][0] = 35 a[4][1] = 50 setVariable("売れるアイテム", a)
最後に基本変数"売れるアイテム"にaを設定します。
ゲーム全体で売れるアイテムが同じなら開始スクリプトに
この処理を書いてもよいかと思います。
倒すとお金を落とす敵
マップエディタで配置した敵キャラを倒すと、
お金などを落とす処理を、おまけとしてここに書いておきます。
if getTurnBattleResult() == getTurnBattleWin() #勝ったとき setVariable("お金", getVariable("お金") + 100) speak("お金を", 100, "手に入れた。\n", "現在の所持金額 ", getVariable("お金")) if rand(10) == 0 speak("おや?敵がアイテムを落としていった。") if rand(2) == 0 if giveItem(34) speak("炭素繊維プロテクタを手に入れた") else speak("炭素繊維プロテクタだが、もう持てない。あきらめよう") end else if giveItem(35) speak("ヘルメットを手に入れた") else speak("ヘルメットだが、もう持てない。あきらめよう") end end end elsif getTurnBattleResult() == getTurnBattleLose() #負けたとき elsif getTurnBattleResult() == getTurnBattleRunAway() #逃げたとき end
アクションRPG用お店処理
アクションRPGの場合パーティメンバーがいないなどの理由で
使える関数などが変わります。
たとえば以下のようにします。
#データなど setVariable("店で使える通貨の変数名", "お金") a = createArray() a[0] = createArray() a[0][0] = 1 #id a[0][1] = 100 #価格 a[1] = createArray() a[1][0] = 3 a[1][1] = 200 a[2] = createArray() a[2][0] = 15 a[2][1] = 100 setVariable("店にあるアイテム", a) a = createArray() a[0] = createArray() a[0][0] = 1 a[0][1] = 50 a[1] = createArray() a[1][0] = 3 a[1][1] = 100 a[2] = createArray() a[2][0] = 15 a[2][1] = 50 a[3] = createArray() a[3][0] = 34 a[3][1] = 100 a[4] = createArray() a[4][0] = 35 a[4][1] = 50 setVariable("売れるアイテム", a) #お店処理 selectX = getSelectWindowX() selectY = getSelectWindowY() selectWidth = getSelectWindowWidth() selectHeight = getSelectWindowHeight() textId = createText(512 - 160, 16, 160, 64) setSelectWindowRect(256, 100, 240, 200) loop = true speak("いらっしゃいませ。") gold = getVariable(getVariable("店で使える通貨の変数名")) items = getVariable("店にあるアイテム") sellItems = getVariable("売れるアイテム") itemList = createArray() i = 0 while i < getArrayLength(items) param = getItemParamWithId(items[i][0]) itemList[i] = getValueFromItemParam(param, getItemViewNameIndex()) + " " + toString(items[i][1]) i = i + 1 end pushArray(itemList, "買わない") while loop setText(textId, getVariable("店で使える通貨の変数名") + " " + toString(gold)) case speakWithSelect(3,"買う","売る","店を出る", "いかがいたしますか?") when 0 buyIndex = -1 buyIndex = speakWithSelectArray(itemList, "どちらをお買い上げになりますか?") if buyIndex >= getArrayLength(itemList) - 1 buyIndex = -1 end if buyIndex >= 0 param = getItemParamWithId(items[buyIndex][0]) if items[buyIndex][1] > gold speak("お金が足りません。") elsif getValueFromItemParam(param, getItemTypeIdIndex()) == 0 if !giveItem(items[buyIndex][0]) speak("持ち物がいっぱいです") else speak("お買い上げありがとうございます。") gold = gold - items[buyIndex][1] end else if !giveEquipment(items[buyIndex][0]) speak("装備できませんでした。") else speak("お買い上げありがとうございます。") gold = gold - items[buyIndex][1] end end end when 1 case speakWithSelect(3,"装備を売る","持ち物を売る","やめる", "どれを売っていただけるのでしょうか?") when 0 i = 0 ct = 0 a = getEquipmentIdArray() el = createArray() ei = createArray() while i < getArrayLength(a) if a[i] >= 0 me = getEquipmentParamWithIndex(i) el[ct] = getValueFromItemParam(me, getItemViewNameIndex()) ei[ct] = i ct = ct + 1 end i = i + 1 end el[ct] = "やめる" idx2 = speakWithSelectArray(el, "どの装備を売っていただけるのでしょうか?") if idx2 == ct else price = 0 i = 0 priceLoopEnd = false while i < getArrayLength(sellItems) && !priceLoopEnd if sellItems[i][0] == a[ei[idx2]] price = sellItems[i][1] priceLoopEnd = true end i = i + 1 end if priceLoopEnd case speakWithSelect(2,"はい","いいえ", toString(price) + "になりますが売っていただけますか?") when 0 speak("売っていただきありがとうございます。") gold = gold + price removeEquipmentWithIndex(ei[idx2]) when 1 speak("まだ手放されないのですね。了解しました。") end else speak("まだ手放されないのですね。了解しました。") end end when 1 a = getItemIdArray() il = createArray() ii = createArray() i = 0 ct = 0 while i < getArrayLength(a) if a[i] >= 0 mi = getItemParamWithIndex(i) il[ct] = getValueFromItemParam(mi, getItemViewNameIndex()) ii[ct] = i ct = ct + 1 end i = i + 1 end il[ct] = "やめる" idx = speakWithSelectArray(il, "どちらのアイテムを売っていただけますか?") if idx == ct else price = 0 i = 0 priceLoopEnd = false while i < getArrayLength(sellItems) && !priceLoopEnd if sellItems[i][0] == a[ii[idx]] price = sellItems[i][1] priceLoopEnd = true end i = i + 1 end if priceLoopEnd case speakWithSelect(2,"はい","いいえ", toString(price) + "になりますが売っていただけますか?") when 0 speak("売っていただきありがとうございます。") gold = gold + price removeItemWithIndex(ii[idx]) when 1 speak("まだ手放されないのですね。了解しました。") end else speak("まだ手放されないのですね。了解しました。") end end when 2 end when 2 speak("またのご来店をお待ちしています。") loop = false end end setVariable(getVariable("店で使える通貨の変数名"), gold) setSelectWindowRect(selectX, selectY, selectWidth, selectHeight) deleteText(textId)
コメントする
コメントするには、ログインする必要があります。
コメント一覧
退会したユーザー(投稿日:2011/07/28 00:32,
履歴)
自力でやろうとしたが
ifとwhileの数が多すぎて挫折しました(TT)
ifとwhileの数が多すぎて挫折しました(TT)
退会したユーザー(投稿日:2011/07/28 00:30,
履歴)
装備品と通常アイテムの区別はどこでやっているんですか?
hightoller(投稿日:2011/06/19 19:26,
履歴)
ここまで長いと、システムに組み込んでしまったほうが良いのでは?
と、思ったのですが。。
他にも宿屋等、金銭や装備のやり取りは、RPGにまず必要となる機能ですし、
「こんなシステムで動作してます、改造して使いたい人はコピペどうぞ」
位の、システム寄りな物であったほうが、
実装やエラー検証の手間が減り、ストーリーや演出に手が回せると思うのですが、
いかがでしょうか。
と、思ったのですが。。
他にも宿屋等、金銭や装備のやり取りは、RPGにまず必要となる機能ですし、
「こんなシステムで動作してます、改造して使いたい人はコピペどうぞ」
位の、システム寄りな物であったほうが、
実装やエラー検証の手間が減り、ストーリーや演出に手が回せると思うのですが、
いかがでしょうか。
退会したユーザー(投稿日:2011/06/19 17:41,
履歴)
あとお金の変数は変えたほうがいいんですか?
退会したユーザー(投稿日:2011/06/19 17:40,
履歴)
1回やってみます
退会したユーザー(投稿日:2011/06/19 10:33,
履歴)
何もいじらずにやってみましたが、まったく同じエラーが出ました。
退会したユーザー(投稿日:2011/06/19 10:31,
履歴)
param = getItemParamWithId(items[i][0])
もしかしたらここかもしれません
調べてくれますか?
あとお金の単位っていじらないほうがいいんですか?
もしかしたらここかもしれません
調べてくれますか?
あとお金の単位っていじらないほうがいいんですか?
退会したユーザー(投稿日:2011/06/19 10:28,
履歴)
つぎは60行目に出ました
何もいじったりしていません
itemList[i] = getValueFromItemParam(param, getItemViewNameIndex()) + " " + toString(items[i][1])
i = i + 1
↑ここのようです
どこがどう違うんでしょうか、初心者のためよくわかりません
何もいじったりしていません
itemList[i] = getValueFromItemParam(param, getItemViewNameIndex()) + " " + toString(items[i][1])
i = i + 1
↑ここのようです
どこがどう違うんでしょうか、初心者のためよくわかりません
退会したユーザー(投稿日:2011/06/19 10:15,
履歴)
そんなこと言われても分からないです・・・。
配列ってどんなのか分からないですし・・・。
配列ってどんなのか分からないですし・・・。
うーん…w
エラーメッセージは、「サーバーに接続できなくて云々」というもの等を除けば、
全てテストプレー、あるいは実際に公開されたゲームをプレイしている際にしか表示されません。
つまり、テストプレー中にエラーメッセージが出るというのは、分かりきっていることなんですよ。
dycoonさんの「何をしている時に」というのは、「どの命令を実行している時か」ということです。
その時役に立つのが、エラーメッセージ中の「line : 123」という部分です。
この部分の手前には、更にマップ名、あるいはチャプター名が表示されます。
そのマップ(もしくはチャプター)のスクリプトの123行目にエラーがある、ということです。
ただまあ、これは一種の指標のようなものですので、実際にはそれ以前の部分のミスが、
その行まで上手いことエラーにならなかった、ということもあり(え)ますが。
getValueFromItemParamの第一引数は配列でなければいけません。
エラーメッセージそのままのエラーですね。
第一引数に渡している変数は本当に配列になっていますか?ご確認ください。
エラーメッセージは、「サーバーに接続できなくて云々」というもの等を除けば、
全てテストプレー、あるいは実際に公開されたゲームをプレイしている際にしか表示されません。
つまり、テストプレー中にエラーメッセージが出るというのは、分かりきっていることなんですよ。
dycoonさんの「何をしている時に」というのは、「どの命令を実行している時か」ということです。
その時役に立つのが、エラーメッセージ中の「line : 123」という部分です。
この部分の手前には、更にマップ名、あるいはチャプター名が表示されます。
そのマップ(もしくはチャプター)のスクリプトの123行目にエラーがある、ということです。
ただまあ、これは一種の指標のようなものですので、実際にはそれ以前の部分のミスが、
その行まで上手いことエラーにならなかった、ということもあり(え)ますが。
getValueFromItemParamの第一引数は配列でなければいけません。
エラーメッセージそのままのエラーですね。
第一引数に渡している変数は本当に配列になっていますか?ご確認ください。
一応質問についてですが
http://rmake.jp/boards/2
に書いてあることは、
問題解決がよりスムーズにおこなえるようにするためのものでもあります。
そこら辺を意識して質問されると問題が解決しやすいかもしれません。
確認したいことがいくつかあります。
"#データなど"から"#お店処理"の間にはどのようなコードを書きましたか?
コピー&ペーストしてはっていただけると何かわかるかもしれません。
何をしているときにそのメッセージが表示されるかですが、
話しかけたときにおこるということでしょうか?
それとも売買の会話を続けていくとおこるということでしょうか?
より詳しい条件をお伝えいただけると何かわかるかもしれません。
あと、エラーメッセージで出ている"line : 123 "
とは、123行目でエラーが発生しているという意味です。
しかし、munieruさんのコードではおそらく行数が変わるような変更がおこなわれているため
元の処理でのどの部分に対応するかがわかりません。
どの部分の処理に対応するところで、
エラーメッセージが出ているかお伝えください。
よろしくお願いします。
http://rmake.jp/boards/2
に書いてあることは、
問題解決がよりスムーズにおこなえるようにするためのものでもあります。
そこら辺を意識して質問されると問題が解決しやすいかもしれません。
確認したいことがいくつかあります。
"#データなど"から"#お店処理"の間にはどのようなコードを書きましたか?
コピー&ペーストしてはっていただけると何かわかるかもしれません。
何をしているときにそのメッセージが表示されるかですが、
話しかけたときにおこるということでしょうか?
それとも売買の会話を続けていくとおこるということでしょうか?
より詳しい条件をお伝えいただけると何かわかるかもしれません。
あと、エラーメッセージで出ている"line : 123 "
とは、123行目でエラーが発生しているという意味です。
しかし、munieruさんのコードではおそらく行数が変わるような変更がおこなわれているため
元の処理でのどの部分に対応するかがわかりません。
どの部分の処理に対応するところで、
エラーメッセージが出ているかお伝えください。
よろしくお願いします。
退会したユーザー(投稿日:2011/04/05 19:05,
履歴)
アイテムはマップにすべて登録しました
あとテストプレーしたときに出ます
よろしくお願いします
あとテストプレーしたときに出ます
よろしくお願いします
退会したユーザー(投稿日:2011/03/10 21:53,
履歴)
いじるところ以外いじっていないのに
getValueFromItemParamの第1引数は配列でなければなりません。 line : 123
ってでました
getValueFromItemParamの第1引数は配列でなければなりません。 line : 123
ってでました
setVariable("店で使える通貨の変数名", "お金")
この部分は通貨用の変数名を指定していますので
開始スクリプトで
setVariable("お金", 100)
などとしておいて使うのが良いかと思います。
通貨の変数を変えたい場合
例えば"Gold"にしたい場合は、
開始スクリプトで
setVariable("Gold", 100)
お店スクリプトの先頭で
setVariable("店で使える通貨の変数名", "Gold")
敵を倒したときは
#勝ったとき setVariable("Gold", getVariable("Gold") + 100) speak("Goldを", 100, "手に入れた。\n", "現在の所持金額 ", getVariable("Gold"))
などとすればよいかと思います。
開始スクリプトで変数の初期化をする必要があるというのを
書くのを忘れていました。
すみません。
よろしくお願いします。
退会したユーザー(投稿日:2011/02/20 19:04,
履歴)
setVariable("店で使える通貨の変数名", "お金")
というところがいくつもあるんですが
setVariable("店で使える通貨の変数名", "お金")
↑
この部分は始めの部分以外変えなくて良いんですか?
というところがいくつもあるんですが
setVariable("店で使える通貨の変数名", "お金")
↑
この部分は始めの部分以外変えなくて良いんですか?
退会したユーザー(投稿日:2011/02/13 17:35,
履歴)
あともうひとつ、deletetext(textid)の
textidのところは何かと変えますか?
textidのところは何かと変えますか?
退会したユーザー(投稿日:2011/02/13 17:33,
履歴)
スクリプトはEVENT敵キャラか
ENEMY敵キャラどちらに入力すればよいですか?
ENEMY敵キャラどちらに入力すればよいですか?
この行で分岐してたんですね!
- 今日分かったこと
getValueFromItemParam関数は、アイテムパラメーターの配列からパラメーターの値を取得する。道具なら0が返される。武器なら1が返される。