コメント

このコメントは、宇宙文字解読2へのコメントです。

コメントの内容

Material 204926 1 mini 井戸乃博士(投稿日:2014/01/19 03:01/19/14)
詳しく調べてみるといろいろと複雑な処理が必要なことに気が付きました(^^;
二次元配列を使う方法を考えてみたので、参考にどうぞ。

以下を開始スクリプトに書きます。
#二次元配列を作って変数にします(getVariable("member")[n][m])
#n: 仲間の数
#m(0): "true"か"false"かの判定
#m(1): 仲間の名称
#m(2): 仲間のID
setVariable("member", createArray())
n = 0
while n < 4
  getVariable("member")[n] = createArray()
  n = n + 1
end

i = 0
while i < 4
#m(0)をすべて"false"に設定
getVariable("member")[i][0] = "false"
i = i + 1

getVariable("member")[0][1] ="王子"
getVariable("member")[0][2] ="8196"
getVariable("member")[1][1] ="弓士"
getVariable("member")[1][2] ="8204"
getVariable("member")[2][1] ="勇者"
getVariable("member")[2][2] ="593"
getVariable("member")[3][1] ="騎士"
getVariable("member")[3][2] ="703"


仲間になるイベント時
if getFlag("パンを食べた")
addPartyMember(8196)
speak("喜んで仲間になろう")
speak("王子が仲間に加わりました。")

#最初に書かれていたgetFlagの代わりにこちらを使います。
getVariable("member")[0][0] = "true"

else
speak("仲間になれとは十年早い!。")
speak("王子を仲間を加えられませんでした。")

end


仲間選択時
a = createArray()
i =0

#仲間になったキャラのリストを選択肢に
while i < 4
 if getVariable("member")[i] = "true"
 pushArray(a, getVariable("member")[i])
 end
i = i + 1
end

#「やめる」の項目を追加
pushArray(a, "やめる")

#ループ処理(closeが0以外になると終了) 
close = 0 
while close == 0
 k = speakWithSelectArray(a, "誰を変更しますか?")
 i = 0
 while i < 4
  if a[k] == getVariable("member")[i][1]

#パーティーにいない場合に仲間に加える。   
   if getPartyMember(getVariable("member")[i][2])= -1
    addPartyMember(getVariable("member")[i][2])
    speak(getVariable("member")[i][1]"がパーテイに加わりました。")

#パーティーにいる場合はパーティーから外す。
   elsif getPartyMember(getVariable("member")[i][2])=!-1
    removePartyMember(getVariable("member")[i][2])
    speakgetVariable("member")[i][1]"をパーティからはずしました。")

#パーティーがいっぱいの場合
   else 
    speak("メンバーはいっぱいです。誰かを外して下さい") 
   end

  elsif a[k] == "やめる"
      close = 1 
    end
  i = i +1
  end
end


一部、自信のないところもありますので、不具合が出たらまたおっしゃってください。
このように二次元配列を使ってリスト化したデータを参照するスクリプトは、
RPGで図鑑を作る際によく使われます。
こちらのページもあわせて参照されるといいと思います。

http://rmake.jp/boards/2/topics/398

コメントの内容(一番最初の投稿)

Material 204926 1 mini 井戸乃博士(投稿日:2014/01/19 03:01/19/14)
詳しく調べてみるといろいろと複雑な処理が必要なことに気が付きました(^^;
二次元配列を使う方法を考えてみたので、参考にどうぞ。

以下を開始スクリプトに書きます。
#二次元配列を作って変数にします(getVariable("member")[n][m])
#n: 仲間の数
#m(0): "true"か"false"かの判定
#m(1): 仲間の名称
#m(2): 仲間のID
setVariable("member", createArray())
n = 0
while n < 4
  getVariable("member")[n] = createArray()
  n = n + 1
end

i = 0
while i < 4
#m(0)をすべて"false"に設定
getVariable("member")[i][0] = "false"
i = i + 1

getVariable("member")[0][1] ="王子"
getVariable("member")[0][2] ="8196"
getVariable("member")[1][1] ="弓士"
getVariable("member")[1][2] ="8204"
getVariable("member")[2][1] ="勇者"
getVariable("member")[2][2] ="593"
getVariable("member")[3][1] ="騎士"
getVariable("member")[3][2] ="703"


仲間になるイベント時
if getFlag("パンを食べた")
addPartyMember(8196)
speak("喜んで仲間になろう")
speak("王子が仲間に加わりました。")

#最初に書かれていたgetFlagの代わりにこちらを使います。
getVariable("member")[0][0] = "true"

else
speak("仲間になれとは十年早い!。")
speak("王子を仲間を加えられませんでした。")

end


仲間選択時
a = createArray()
i =0

#仲間になったキャラのリストを選択肢に
while i < 4
 if getVariable("member")[i] = "true"
 pushArray(a, getVariable("member")[i])
 end
i = i + 1
end

#「やめる」の項目を追加
pushArray(a, "やめる")

#ループ処理(closeが0以外になると終了) 
close = 0 
while close == 0
 k = speakWithSelectArray(a, "誰を変更しますか?")
 i = 0
 while i < 4
  if a[k] == getVariable("member")[i][1]

#パーティーにいない場合に仲間に加える。   
   if getPartyMember(getVariable("member")[i][2])= -1
    addPartyMember(getVariable("member")[i][2])
    speak(getVariable("member")[i][1]"がパーテイに加わりました。")

#パーティーにいる場合はパーティーから外す。
   elsif getPartyMember(getVariable("member")[i][2])=!-1
    removePartyMember(getVariable("member")[i][2])
    speakgetVariable("member")[i][1]"をパーティからはずしました。")

#パーティーがいっぱいの場合
   else 
    speak("メンバーはいっぱいです。誰かを外して下さい") 
   end

  elsif a[k] == "やめる"
      close = 1 
    end
  i = i +1
  end
end


一部、自信のないところもありますので、不具合が出たらまたおっしゃってください。
このように二次元配列を使ってリスト化したデータを参照するスクリプトは、
RPGで図鑑を作る際によく使われます。
こちらのページもあわせて参照されるといいと思います。

http://rmake.jp/boards/2/topics/398