いくら修正しても・・・(質問掲示板

投稿: User icon mini 退会したユーザー 投稿:2011/11/20 14:47:20(最新:2011/11/22 15:48:22)
グレースファインダーの本棚のスクリプトです
case speakWithSelect(4,"図鑑","ストーリー","目的","説明",  
    "なにを読みますか?") 
  when 0 
    case speakWithSelect(2,"モンスター図鑑","レアモンスター図鑑",  
    "どれを見ますか?") 
  when 0 
    b=createArray()  
i=0  
while i<getVariable("max")  
 if getVariable("モンスター図鑑")[i][0]  
   pushArray(b,getVariable("モンスター図鑑")[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("モンスター図鑑")[i][1] #選んだのと同じものを図鑑一覧から探して詳細を表示  
    speak("No.",i," : ",getVariable("モンスター図鑑")[i][1],"\n ",getVariable("モンスター図鑑")[i][2])  
  elsif b[c]=="図鑑を閉じる"  
    k=false  
  end  
 i=i+1  
 end  
end #kループ終 
 
  when 1 
     
end 
 
  when 1 
    speak("~ストーリー~\n前置き\nこのストーリーはこのモンスターたちと出会う前からの話です。\n") 
    speak("ある日、あなたは1匹のモンスターを拾いました。\nそのモンスターはひどく弱っていて今にも死にそうでした。\nなのであなたはご飯をあげてそのモンスターを助けました。\nそこであなたはある情報を耳にします。それは、コロシアムでモンスターの大会が行われるということでした。\nなのであなたはこの1匹のモンスターを野生のモンスターを戦わせて\n強くすることにしました。") 
  when 2 
    speak("~目的~\n前置き\nストーリーを読んでいれば分かっているかも") 
    speak("このモンスターを野性のモンスターを戦わせて\n強くし、コロシアムで優勝することが目的です。\nコロシアムで優勝すれば賞品としてモンスターエッグが贈られます\nもちろん賞金も贈られます。") 
  when 3 
case speakWithSelect(2,"メニューの説明","パーティの説明",  
    "どれを読みますか?") 
  when 0 
    speak("~メニューの説明~\n前置き\nXキーかCキーを押すことででてくるメニューの説明をします") 
    speak("このメニューはステータス、モンスター手帳、アイテム、パーティ整列、\nバックログ、セーブ、ロード、メニューを閉じるの7つで出来ています\nステータスでは、今モンスターが何レベかを見ることができます\nモンスター手帳ではお金、モンスターに出会った数、モンスターを捕まえた数、\nレアモンスターに出会った数、レアモンスターを捕まえた数が書いてあります\nアイテムでは、今もっているアイテムを見ることができ、\n使えるものはZキーを押して使うで使うことができます\nパーティ整列では、パーティメンバーの順番を入れ替えることが出来ます\nバックログでは過去の文章を読み直すことが出来ます。\nセーブは今の状態でセーブをします。\nロードは過去にセーブした場所にセーブしたときのデータで\nロードすることが出来ます\nメニューを閉じるでメニューを閉じます") 
  when 1 
    speak("~パーティの説明~\n前置き\nこのゲームの中で最も重要なパーティについて説明します") 
    speak("下の黒いバーは今のパーティを示しています。\n書いてある画像と数字はその画像のパーティメンバーの体力と魔力です。\nパーティメンバーはメニューのパーティ整列から\n順番を変えることが出来ます。\nパーティーメンバーを外したり加えたり、逃がしたりするときは、モンスターに話しかけてください") 
end 

と入れると

1st argument is not array. line : 40
1st argument is not array. line : 41

と出ました。
何度も何度も入力しなおしても同じエラーが出続けます
どういうことでしょうか?

コメントする

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

コメント一覧

User icon mini 退会したユーザー(投稿日:2011/11/22 15:48, 履歴)
にゃるほど。
defってユーザー定義関数だったんですね
知らぬままに使ってましたwww

ありがとうございました
Nyan mini rurun9(投稿日:2011/11/20 21:36, 履歴)
>ユーザー定義関数てなんですか?
>聞いたことがない

def~end で定義する俺式な新しい関数の事ですよ
使ってるじゃないですかw

エラーメッセージにマップ名&イベント名(またはノベル型ならチャプター名)が書かれていないのは、開始スクリプトまたはユーザー定義関数の中でエラッタからです。
で、40行目を見る限り、maxを8個にした図鑑配列は0~7までしかないのに[8]て書いてるのが原因ですね。
      mini きゅうり(投稿日:2011/11/20 21:23, 履歴)
ユーザー定義関数はここの一番下から2番目に説明があります。
User icon mini 退会したユーザー(投稿日:2011/11/20 17:24, 履歴)

>んー。
>argument is not array てのは配列じゃないんですケド、て言われて
>るから開始スクリプトを確認した方が良いのカモ。

giveEquipment(8838)
setMoneyName("マイル")
setDenomination("mill")

setVariable("max",8) #全部でいくつなのか 
setVariable("モンスター図鑑",createArray()) 
i=0 
while i<getVariable("max") 
 getVariable("モンスター図鑑")[i]=createArray() #二次元配列で管理します 
 getVariable("モンスター図鑑")[i][0]=false 
i=i+1 
end 
#a[n][m]について 
# n...番号。0~2の全部で三個 
# m...0=trueまたはfalse 持っているかどうか, 1=名前, 2=説明文, とします 
 
getVariable("モンスター図鑑")[0][1]="プニョプニョ" 
getVariable("モンスター図鑑")[0][2]="最もポピュラーな種。なつきやすく、飼育には最適。" 
 
getVariable("モンスター図鑑")[1][1]="チュリアクス" 
getVariable("モンスター図鑑")[1][2]="トカゲのような種。夜行性で、昼間は眠っている。" 
 
getVariable("モンスター図鑑")[2][1]="スネークス" 
getVariable("モンスター図鑑")[2][2]="蛇のような種。普段は牙を見せないが、戦いになると牙を見せて威嚇する。"

getVariable("モンスター図鑑")[3][1]="マシュロウ" 
getVariable("モンスター図鑑")[3][2]="マシュマロのような種。戦いは好まず、2~3匹で集団行動をしている。"

getVariable("モンスター図鑑")[4][1]="ノーステア" 
getVariable("モンスター図鑑")[4][2]="幽霊のような種。キノコの帽子をかぶったことで、姿を消しても、どこにいるか分かってしまうようになった。"
getVariable("モンスター図鑑")[5][1]="フクロモリ" 
getVariable("モンスター図鑑")[5][2]="コウモリのような種。腹に袋を持ち、吸い取った血をためている" 

getVariable("モンスター図鑑")[6][1]="サクラモリ" 
getVariable("モンスター図鑑")[6][2]="コウモリのような種。獲物の目をくらませながら飛び、すきを突いて吸血する。"

getVariable("モンスター図鑑")[7][1]="ホイップ" 
getVariable("モンスター図鑑")[7][2]="ホイップクリームのような種。甘いものを食べて、体内にエネルギーをつくる。"

getVariable("モンスター図鑑")[8][1]="クリムゾン" 
getVariable("モンスター図鑑")[8][2]="フラクティンの亜種。常にカマを持ち、カマを振り回して攻撃する。"

setVariable("max2",1) #全部でいくつなのか 
setVariable("レアモンスター図鑑",createArray()) 
i=0 
while i<getVariable("max2") 
 getVariable("レアモンスター図鑑")[i]=createArray() #二次元配列で管理します 
 getVariable("レアモンスター図鑑")[i][0]=false 
i=i+1 
end 
#a[n][m]について 
# n...番号。0~2の全部で三個 
# m...0=trueまたはfalse 持っているかどうか, 1=名前, 2=説明文, とします 
 
getVariable("レアモンスター図鑑")[0][1]="マシュロウ" 
getVariable("レアモンスター図鑑")[0][2]="マシュマロのような種。単独行動をし、縄張り争いが激しい。" 
#カイシスクリプト
setVariable("b", rand(6))
  if getVariable("b") == 0
setFlag("レア登場", true)

end
addMoney(100)
setVariable("レアモンスター遭遇", 0)
setVariable("レアモンスター捕獲", 0)
setVariable("モンスター遭遇", 0)
setVariable("モンスター捕獲", 0)

setCustomParamMenuEnable(true) 
setCustomParamMenuName("モンスター手帳") 
 
def onShowCustomParameter() 
 
  setCustomParamName(0, "所持マイル") 
  setCustomParamValue(0, getMoney()+"mill") 
  setCustomParamName(1, "レアモンスター遭遇数") 
  setCustomParamValue(1, getVariable("レアモンスター遭遇")+" 匹") 
  setCustomParamName(2, "レアモンスター捕獲数") 
  setCustomParamValue(2, getVariable("レアモンスター捕獲")+"匹")  
  setCustomParamName(3, "モンスター遭遇数") 
  setCustomParamValue(3, getVariable("モンスター遭遇")+"匹")  
  setCustomParamName(4, "モンスター捕獲数") 
  setCustomParamValue(4, getVariable("モンスター捕獲")+"匹") 
 
  drawCustomParam() 
end
setMenuItemVisible(getMenuEquipment(), false)
#指数関数(aのb乗を返します。) 
def powFunc(a, b) 
  v = 1.0 
  i = 0 
  while(i < b) 
    v = v * a 
    i = i + 1 
  end 
  return v 
end 
 
#個々の敵キャラの経験値をidから求めます。 
def getEnemyExperience(id) 
 case id 
    when 12598 
      return 10
    when 12687 
      return 20  
    when 12575 
      return 30 
    when 12715
      return 25 
    when 12576
     return 60
    when 12838
     return 55
   when 12839
     return 70
    #敵キャラを増やしたら、ここに敵のIDから経験値を求める処理を加えていきます。 
  end 
end 
 
#経験値の計算 
def getTotalExperience(killCounts) 
  exp = 0 
  i = 0 
  while i < getArrayLength(killCounts) 
 
    #倒した敵の種類と数から経験値を計算 
    exp = exp + getEnemyExperience(killCounts[i][0]) * killCounts[i][1] 
 
    i = i + 1 
  end 
  return exp 
end 
 
# レベルアップのチェック 
def levelUpCheck() 
  i = 0 
  while i < 4 
    member = getPartyMember(i) 
    if member == "playerCharacter" || member >= 0 
      #メンバーがいる場合倒した敵の数と種類から経験値を計算。 
      killCounts = getKillCountPartyMember(member) 
      exp = getTotalExperience(killCounts) 
      #レベルアップの判定 
      while exp - powFunc(2, getLevelPartyMember(member) - 1) * 10 >  
               powFunc(2, getLevelPartyMember(member)) * 10 
        levelUpPartyMember(member) 
        speak("レベルアップ!level = ", getLevelPartyMember(member), 
                  "経験値 = ", exp) 
      end 
    end 
    i = i + 1 
  end 
end

これです。

>それから
when 3 #説明を読む

>の中にあるcase文のendが無いでーす

あれ、エラー出ないから見落としてた

>図鑑の開き方はユーザー定義関数にしちゃえば、スッキリすると思うけどどーかなー?

・・・ユーザー定義関数てなんですか?
聞いたことがないので教えてください。。。

Nyan mini rurun9(投稿日:2011/11/20 16:57, 履歴)
んー。
argument is not array てのは配列じゃないんですケド、て言われてるから開始スクリプトを確認した方が良いのカモ。
それから
when 3 #説明を読む
の中にあるcase文のendが無いでーす

図鑑の開き方はユーザー定義関数にしちゃえば、スッキリすると思うけどどーかなー?