変数-変数(質問掲示板

投稿: Material 7186 1 mini ikosami 投稿:2010/01/14 00:30:14(最新:2010/01/15 18:05:15)
変数と変数で計算する事は可能ですか?
↓のように 書いたら、
一回しか攻撃していないのになぜか倒したと出てきました。

setVariable("THP", 10)
setVariable("PA", 5)
speak("敵が現れた!")
case speakWithSelect(2,"攻撃","逃げる",
"ボックスのHP:", getVariable("敵"))
when 0
setVariable("THP", getVariable("THP") - getVariable("PA"))
when 1
changeChapter("平野")
end

if getVariable("THP") < 0
changeChapter("平野戦闘")
end
speak("敵を倒した!\n0Gと\n0の経験地を手に入れた!")
changeChapter("平野")

コメントする

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

コメント一覧

Zararu128x128 mini dycoon(投稿日:2010/01/15 18:05, 履歴)
changeSceneを呼んだらその後のスクリプトは実行せずに
変更先のチャプターの先頭から
処理をするように変更しました。

よろしくお願いします。
Material 7186 1 mini ikosami(投稿日:2010/01/14 22:56, 履歴)
わかりました。
ありがとうございます。
Zararu128x128 mini dycoon(投稿日:2010/01/14 20:27, 履歴)
"戦闘中"はフラグとして扱っているようですが、
戦闘に入ったときに実行したい処理のところで
getVariable("戦闘中")としてしまっています。

setFlagとsetVariableは名前が同じ場合でも
別々の場所に保存されます。
そのため動作が思い通りに動いていないのではないかと思います。

setFlag("チャプター変更", true)についてですが
changeSceneはその場で処理を中断して
別のシーンに移るのに対して
changeChapterは、条件によってはそのあとの処理を
おこなってしまいます。
そのため、changeSceneを呼んだ後は
処理をおこなわないようにsetFlag("チャプター変更", true)
を設定しています。

ただ、この動作は問題だと思いますので、
changeChapterもその場で処理を中断して
チャプターを変更させようと考えています。
setFlag("チャプター変更", true)は
一時的なものになる予定です。

修正をおこなうなどしましたら、またここに書き込もうかと思います。

よろしくお願いします。
Material 7186 1 mini ikosami(投稿日:2010/01/14 18:57, 履歴)
たびたびすみません・・・

いろいろ試して、下のようにしたのですが、
チャプターが変更されると、フラグなどは元に戻ってしまいますか?
一度HPなどを読み込んだら、次のターンなどになった時に
またHPを最大の状態に戻さないようにしたいのですが・・・
ほかのチャプターで設定したほうがいいでしょうか?
あとsetFlag("チャプター変更", true)は
どのような意味があるのですか?


setFlag("チャプター変更", false)

if !getVariable("戦闘中")
setVariable("THP", 10)
setVariable("PA", 5)
speak("ボックスが現れた!")
showImagePosition(200, 200, 6118)
end

setFlag("戦闘中", true)
case speakWithSelect(2,"攻撃","逃げる",
"ボックスのHP:", getVariable("THP"))
when 0
setVariable("THP", getVariable("THP") - getVariable("PA"))
speak("ボックスに5のダメージを与えた!")
speak("ボックスのHP", getVariable("THP"))
when 1
setFlag("戦闘中", false)
changeChapter("平野")
setFlag("チャプター変更", true)
end

if getVariable("THP") > 0
if !getFlag("チャプター変更")
changeChapter("平野戦闘")
setFlag("チャプター変更", true)
end
end
if !getFlag("チャプター変更")
hideImagePosition(6118)
speak("敵を倒した!\n0Gと\n0の経験地を手に入れた!")
setFlag("戦闘中", false)
changeChapter("平野")
setFlag("チャプター変更", true)
end


Zararu128x128 mini dycoon(投稿日:2010/01/14 11:33, 履歴)
Rmakeのご利用ありがとうございます。

変数同士の計算は問題なくおこなえることは動作確認しました。

以下の条件式を見ると
if getVariable("THP") < 0
  changeChapter("平野戦闘")
end 

THPが0より小さくなったときに平野戦闘へチャプターの変更をするように見えます。
これは意図している条件と逆なのではないかと思います。

あと、現在のchangeChapterの動作では、
チャプターの終わりまで来るかある一定の処理がおこなわれたら
チャプターの変更をおこなうという形になっているため、
changeChapterを呼んだ後は
何もしないようにする必要があります。

たとえば
setFlag("チャプター変更", false)
setVariable("THP", 10)
setVariable("PA", 5)
speak("敵が現れた!")
case speakWithSelect(2,"攻撃","逃げる",
"ボックスのHP:", getVariable("敵"))
when 0
  setVariable("THP", getVariable("THP") - getVariable("PA"))
when 1
  if !getFlag("チャプター変更")
    changeChapter("平野")
    setFlag("チャプター変更", true)
  end
end

if getVariable("THP") < 0
  if !getFlag("チャプター変更")
    changeChapter("平野戦闘")
    setFlag("チャプター変更", true)
  end
end
if !getFlag("チャプター変更")
  speak("敵を倒した!\n0Gと\n0の経験地を手に入れた!")
  changeChapter("平野")
  setFlag("チャプター変更", true)
end


ただ、この動作は問題があるかと考えていますので
修正をおこなう方向で考えています。

よろしくお願いします。