どうして?(質問掲示板

投稿: User icon mini 退会したユーザー 投稿:2011/06/23 20:08:23(最新:2011/06/25 22:48:25)
店のスクリプトを書いて、文法エラーは出なくなったんですが
所持金がnullです・・・。
お金を落とす敵に書いた変数と店に書いた変数は一緒です。

どうして出るのでしょうか?

あと2DアクションRPGでお金を落とす敵は使えますか?

コメントする

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

コメント一覧

Zararu128x128 mini dycoon(投稿日:2011/06/25 22:48, 履歴)
スクリプト/コツ/売ったり買ったりできるお店処理
のスクリプトについてですね。

"店で使える通貨の変数名"はその値を書き換えれば、
その変数名で処理をしてくれるというものなので
以下の部分
#データなど
setVariable("店で使える通貨の変数名", "ムニー")

以外は書き換えないで使うようにします。

よろしくお願いします。
User icon mini 退会したユーザー(投稿日:2011/06/24 07:04, 履歴)
#データなど
setVariable("ムニー", "ムニー")

a = createArray()
a[0] = createArray()
a[0][0] = 3985      #id
a[0][1] = 100  #価格
a[1] = createArray()
a[1][0] = 3986
a[1][1] = 100
a[2] = createArray()
a[2][0] = 3777
a[2][1] = 100
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)


こうです
売れるアイテムは共通なので開始スクリプトに書いています
Material 7186 1 mini ikosami(投稿日:2011/06/23 21:17, 履歴)
一度設定したのにnullになる可能性は
どこかで、妙な計算(or設定)をしている時なのですが
店のスクリプトはどのように書いていますか?

見れば大体はわかるのですが・・・
User icon mini 退会したユーザー(投稿日:2011/06/23 20:25, 履歴)
カスタムメニューを使うと回避できましたが
次はNaNが出てきました。
あとお金の単位が所持金のところに出てきました。
物を売るとその一番右側に売ったお金が出てきます。
それで2回ものをかうとNaNが出てきました。

一番上の品物だけ買えませんでした

教えてくれませんか?