Rmake Wikiは、Rmakeに関する情報共有をするためのWikiです。


スクリプト/コツ/敵を倒すとお金が手に入る

最終投稿者:akasata 更新:2010年01月21日 21:34:50

このページでは、2DRPGで、敵を倒すとお金が手に入る仕組みを
どうやって作るのか解説します。

アクションRPGでは実現できないのでご注意ください。

また、このページを理解するには、スクリプト/変数を理解している
必要があります。

敵を倒すとお金が手に入るゲーム



概要


戦闘でお金を与えるには、以下のような流れで処理を行います。

  • 開始スクリプトでお金の変数を定義する
  • NPCで戦闘を起こす
  • 勝利したらお金に対応する変数の値を上昇させる
  • NPCの敵モンスターを消去する
  • マップを移動したら倒した敵を復活させる

開始スクリプトでお金の変数を定義する


まずは開始スクリプトで開始時の所持金を設定しましょう。

# 開始時の所持金は50Gold
setVariable("Gold", 50) 


NPCで戦闘を起こす


2DRPGで戦闘を起こすには、マップ上に敵モンスターを配置します。
しかし、この方法ではお金を渡すことはできません。

ノンプレイヤーキャラクタ(イベント)から戦闘を起こす必要があります。
イベントから戦闘を開始するには、startTurnBattle関数を使います。

勝利したらお金に対応する変数の値を上昇させる


戦闘に勝利したら、お金を渡します。お金は「gold」という変数に
格納することにしましょう。

# 100Gold渡す
setVariable("Gold", getVariable("Gold") + 100) 


NPCの敵モンスターを消去する


フラグを使って敵モンスターを消去しましょう。

setFlag("敵Aを倒した", true)


NPCの敵モンスターの開始条件に以下を入れてください。

!getFlag("敵Aを倒した")


フラグは敵モンスター毎に変える必要があることに注意してください。

マップを移動したら倒した敵を復活させる


マップを移動したら、倒した敵モンスターを復活させる場合は、以下の
ように書いてください。

setFlag("敵Aを倒した", false)


まとめ


現在のRmakeでは、敵モンスターを倒すとお金が手に入る仕組みは、
手間はかかりますが、実現可能です。応用すればもっと面白いことが
できると思います。(敵モンスターを一定数倒したらイベント発生とか。)

ぜひ、工夫してみてください!

このWikiの掲示板(すべて読む

コメント一覧

投稿者:rmk100111(投稿日:2010/01/21 21:34)

開始スクリプトでユーザー関数の定義が出来るみたいなので、それにまとめれば手間掛からないんじゃないかな?

投稿者:199492(投稿日:2009/12/22 20:02)

ありがとうございます。

投稿者:shirosaboten(投稿日:2009/12/22 19:48)

画面テキストで表示する場合は基本的に変数が変わるたびに表示しなおす必要があるのだと思います。
となるとテキスト表示が必要なのはこういうときのようですね
・敵を倒し、お金が手に入ったとき
・お店でお金を消費したとき
・画面を切り替えたとき

setText(textID,"所持金", getVariable("Gold"),"Gold")
をコピペしていけばいいのでそんなに大変ではないですが、敵が多い場合は見落としがないように気をつけてください^^

投稿者:199492(投稿日:2009/12/22 17:55)

またですみません。
敵を倒すとお金が手に入るようにしたんですが、敵を倒しても表示されているお金が50goldのままです。どうすれば増えていきますか?

投稿者:199492(投稿日:2009/12/22 17:24)

ありがとうございます。

投稿者:shirosaboten(投稿日:2009/12/21 21:32)

あと画面が切り替わると表示が消えるとのことですが、「自動的に実行」をつかってもう一度同じテキストを表示させるんじゃないでしょうか?

1.自動実行のイベントの開始条件を「!getFlag("金表示イベント")」にし、実行内容でテキストを表示させる。("金表示イベント")をtrueにする。
2.画面切り替えを行うイベントでワープ関数の設定とともに、("金表示イベント")をfalseにする。

これを各マップで行えば、とりあえずはいいのかな?と思います。セーブロードに対応してるかはわかりませんが^^;

投稿者:shirosaboten(投稿日:2009/12/21 21:21)

199492さん>コメントを見たところ、setとgetで("")内の文字が違います。
setVariable("Gold")
getVariable("gold")
となっています。呼び出す変数が違うからnullになっちゃうんじゃないでしょうか?

投稿者:199492(投稿日:2009/12/21 19:53)

開始スクリプトに、
# 開始時の所持金は50Gold
setVariable("Gold", 50)
textID = createText(64, 64, 220, 220)
setText(textID,"所持金", getVariable("gold"),"Gold")
と入れたら
所持金nullGold
と表示され、マップが変わると消えてしまいます。
どうすればちゃんとしたお金の量が表示されて、ずっと残るのですか?

投稿者:sakatagin(投稿日:2009/12/14 19:26)

ありがとうございます。

投稿者:dycoon(投稿日:2009/12/14 14:22)

すみません、思い違いをしていました。
shirosabotenさんの情報で正しいです。

よろしくお願いします。

User_icon
ゲスト