[解決済] 装備のID(質問掲示板

投稿: Michael mini ミカエル 投稿:2015/02/04 20:35:04(最新:2015/02/05 00:12:05)
質問があります。
2DアクションRPGについてです。

装備する武器や防具のIDを取得して呼び出したいのですが
装備がたくさんあり、それぞれ装備してるものが違うので、
その点でつまづいております。

例えば、A,B,C,D,の武器があるとします。
①AかBかCを装備
②AかBかCを消去
③Dを装備
④Dを消去
⑤AかBかCを元に戻して装備。

・・・ということをしたいのです。
ひとつの装備ならばIDはこちらでわかるので
それを装備させてあげればいいのですが、
プレイヤーが何を装備してるのかわからないので
その元の武器を装備させるにはどのように記憶したらよいでしょうか。

よろしければどなたかアドバイスをお願いします。

getEquipmentIdArray



OS:windows7
ブラウザ:IE10
Flash:

コメントする

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

コメント一覧

Michael mini ミカエル(投稿日:2015/02/05 00:12, 履歴)
池ちゃん様、簸川葵様。

おお!できました。
ご丁寧にご説明ありがとうございました。
これで完成に一歩近づきました。

本当にありがとうございました。
       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2015/02/04 22:02, 履歴)
葵さんの言うとおり通常変数に保管して管理するのが楽かも。

とりあえずプレーヤーが装備しているアイテムのIDの配列を取得(して表示)するスクリプト貼っておきますね。
a = createArray()

a = getEquipmentIdArray()
#返り値
#0 武器
#1 盾
#2 鎧
#3 頭
#4 足
#5~8 装飾品
#9~15 魔法 


s = "武器=" + a[0] + " 盾=" + a[1] + " 鎧=" + a[2] + " 頭=" + a[3] + " 足=" + a[4] + "\n"

l = 5
while l <= 8
s = s + " 装飾品[" + (l - 4) + "番目]=" + a[l]
l = l + 1
end

s = s + "\n"

l = 9
while l <= 15
s = s + " 魔法[" + (l - 8) + "番目]=" + a[l]
l = l + 1
end


speakFullScreen(true, s)
Michael mini ミカエル(投稿日:2015/02/04 22:52, 履歴)
実はクリティカル攻撃ができる武器を装備させたくて
持たせるまでは良かったのですが、元の武器を装備させようとすると
エラーがでてしまいます。何度もすみません。

line: 16 not defined variable : a
1st argument is not array. line : 16
not register item.登録されていないアイテムです(null)

i = 0
i = rand(7)

if i == 0
  a = createArray()
  a = getEquipmentIdArray()
  removeEquipmentWithIndex(0)
  giveEquipment(19134)
  setBaseTime()
  setFlag("クリティカル", true)
end

if getFlag("クリティカル")
  if getTime() >= 1000
    removeEquipmentWithIndex(0)
    giveEquipment(a[0]) #こういうのはダメでしょうか?
    setFlag("クリティカル", false)
  end
end
       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2015/02/04 23:58, 履歴)
ローカル変数だとイベントが終わった後にデータが消えてしまいますので、変数aの部分を通常変数(setVariable・getVariableとか)にすれば大丈夫のはずです
#開始スクリプト等にあらかじめ設定しておく。
setVariable("a", 0)

#イベント
i = 0
i = rand(7)

if i == 0
  setVariable("a", getEquipmentIdArray())

  removeEquipmentWithIndex(0)
  giveEquipment(17256)
  setBaseTime()
  setFlag("クリティカル", true)
end

if getFlag("クリティカル")
  if getTime() >= 1000
    removeEquipmentWithIndex(0)
    giveEquipment(getVariable("a")[0]) #こういうのはダメでしょうか? okです。
    setFlag("クリティカル", false)
  end
end
Cdv30200 aoi icon mini aoihikawa(投稿日:2015/02/04 20:59, 履歴)
別途、オリジナルの通常変数にも、
装備しているアイテムのIDを保管しておき、
その変数によって現在の装備状態を
管理してみるとか、でしょうか
Michael mini ミカエル(投稿日:2015/02/04 21:06, 履歴)
ふむふむ、なるほど。
試してみます。
ありがとうございます。