経験値(質問掲示板)
投稿: naoki
投稿:2010/07/23 22:02:23(最新:2010/09/07 14:14:07)
いろいろ考えたんですが、経験値をゲットして、一定の経験値を
超えるとレベルアップ!と言うのがわかりません!
ツイート
超えるとレベルアップ!と言うのがわかりません!
コメントする
コメントするには、ログインする必要があります。
コメント一覧
変数を用意して管理するという点では
お金も経験値も一緒ですね。
表示方法については
既に2通りの方法が確立されているようです。
・カスタムメニューとして項目を増やす方法
・常時、画面上にテキスト配置してしまう方法
これらについては
wiki スクリプト/カスタムメニュー
wiki スクリプト/コツ/お店の作り方
wiki スクリプト/コツ/敵を倒すとお金が手に入る
を見ると詳しく書かれています。
特に掲示板での議論の跡が参考になるかと。
常時表示する方は、自由な位置にテキストを配置する、も理解してないといけませんね。
次にレベルアップですが
関数はココにあるのを組み合わせてつくります。
wiki 仕様/ゲーム内レベルアップ
例として
wiki スクリプト/ゲーム内レベルアップ
が用意されています。
こちらは倒した敵の種類と数から計算しているもので、複雑ながらバランスが崩壊しないように考えられた、凄いヤツです。
複雑過ぎて解読に激しく時間がかかるのはご愛嬌。
でもせっかく変数で経験値expをカウントしているのなら、
expが一定値を超えたらレベルが上がる、で充分ですよね?
つまり使う関数は levelUp() と levelUpPartyMember(キャラID) だけ。
ならばそれを実現する処理を、開始スクリプトにユーザー定義関数でつ
くっちゃいましょー。
これで戦闘勝利後に、exp を増やした後に
expcheck()
と書くだけで済みます。
プレイヤーキャラの分しか書いてないけど、こんな感じで。
次に必要な値を2倍にする必要性もないけど、そこは敵に割り振るexpやゲーム全体の調整次第。
敵が配置型なのかランダムエンカウントなのか、ゲームによっても違いますし…
レベルアップ毎にexpを0に戻しているので、累積的な経験値の表示がしたいなら、別の変数に入れておく必要もありますね。
パーティメンバーがある程度固定なら、expを配列にしておくと、繰り返しでくくるだけで、複数人のレベルアップにも対応できると思います。
お金も経験値も一緒ですね。
表示方法については
既に2通りの方法が確立されているようです。
・カスタムメニューとして項目を増やす方法
・常時、画面上にテキスト配置してしまう方法
これらについては
wiki スクリプト/カスタムメニュー
wiki スクリプト/コツ/お店の作り方
wiki スクリプト/コツ/敵を倒すとお金が手に入る
を見ると詳しく書かれています。
特に掲示板での議論の跡が参考になるかと。
常時表示する方は、自由な位置にテキストを配置する、も理解してないといけませんね。
次にレベルアップですが
関数はココにあるのを組み合わせてつくります。
wiki 仕様/ゲーム内レベルアップ
例として
wiki スクリプト/ゲーム内レベルアップ
が用意されています。
こちらは倒した敵の種類と数から計算しているもので、複雑ながらバランスが崩壊しないように考えられた、凄いヤツです。
複雑過ぎて解読に激しく時間がかかるのはご愛嬌。
でもせっかく変数で経験値expをカウントしているのなら、
expが一定値を超えたらレベルが上がる、で充分ですよね?
つまり使う関数は levelUp() と levelUpPartyMember(キャラID) だけ。
ならばそれを実現する処理を、開始スクリプトにユーザー定義関数でつ
くっちゃいましょー。
#開始スクリプトに追加する setVariable("exp",0) #プレイヤーの経験値 setVariable("nextexp",10) #次のレベルアップまでに必要な経験値 def expcheck() if getVariable("nextexp") <= getVariable("exp") levelUp() setVariable("nextexp", 2*getVariable("nextexp") ) setVariable("exp",0) end end
これで戦闘勝利後に、exp を増やした後に
expcheck()
と書くだけで済みます。
プレイヤーキャラの分しか書いてないけど、こんな感じで。
次に必要な値を2倍にする必要性もないけど、そこは敵に割り振るexpやゲーム全体の調整次第。
敵が配置型なのかランダムエンカウントなのか、ゲームによっても違いますし…
レベルアップ毎にexpを0に戻しているので、累積的な経験値の表示がしたいなら、別の変数に入れておく必要もありますね。
パーティメンバーがある程度固定なら、expを配列にしておくと、繰り返しでくくるだけで、複数人のレベルアップにも対応できると思います。
仮に、ゲーム開始から終わりまでパーティが固定3人のままならexpだけあれば良いでしょ?
だって戦闘で経験値を得る際に、勝負は常に一緒なんだから。
でもメンバーが途中参加だったり、「HPが0で戦闘終了した人だけ経験値が入らない」ようにするには、パーティメンバー各自のexpも変数を用意するわけ。
exp[0]がプレイヤーキャラ
exp[1]がパーティメンバー1
exp[2]がパーティメンバー2
とか自分だけわかるように決めておけばいいの。
プレイヤーキャラとメンバーでは扱いが異なる(レベルアップさせる関数が違う)ので、expcheck()のメンバー用を別に作るとかの工夫は必要だけど、構造自体は一緒ですやん。
んで戦闘勝利後の処理に、HP=0の人にはexp追加とexpcheck()をしなければ完成と。
最早、実現したい内容が「コピペしたらよくワカランけどできた」などという世界ではないので、自分で考えてプログラムを組み立てるしかないんですよぉ