自分で何とかやってみたけど…(質問掲示板)
投稿: 退会したユーザー
投稿:2011/12/12 18:34:12(最新:2012/02/18 13:50:18)
自分で2DアクションRPGのレベルアップスクリプトを作ってみたんですが、作動しません。
規定数の敵を倒してもレベルアップ処理がされません
と開始スクリプトに入れ、(ボカァはおふざけで入れました)
ツイート
規定数の敵を倒してもレベルアップ処理がされません
setVariable("レベルアップ経験値ボカァ", 0) if getVariable("レベルアップ経験値ボカァ")==5 speak("レベルアップ!") levelUp() end if getVariable("レベルアップ経験値ボカァ")==10 speak("レベルアップ!") levelUp() end if getVariable("レベルアップ経験値ボカァ")==15 speak("レベルアップ!") levelUp() end if getVariable("レベルアップ経験値ボカァ")==20 speak("レベルアップ!") levelUp() end if getVariable("レベルアップ経験値ボカァ")==25 speak("レベルアップ!") levelUp() end if getVariable("レベルアップ経験値ボカァ")==30 speak("レベルアップ!") levelUp() end
と開始スクリプトに入れ、(ボカァはおふざけで入れました)
コメントする
コメントするには、ログインする必要があります。
コメント一覧
退会したユーザー(投稿日:2011/12/13 17:51,
履歴)
あ、そうだったのですね、文章消しておきます
いやいや、そのwikiのレベルアップは、経験値制ではなく敵を倒した数と種類から計算するタイプです。
同じ奴ばっかり叩いてると、そのうち全く上がらなくなるという凄い謎の技術でつくられておりますw
経験値をカウントするなら、おそらくコレ
・スクリプト/配列を使わない経験値制Lvアップ
そして2D_RPGでパーティを組む場合は
・スクリプト/冒険に役立つスクリプト
ただし仕組みが全く同じなこのふたつ、つくる際の注意点として「バランス調整が非常に大変」な事が挙げられます。
次々と現れる各敵の経験値をいくつに設定して、レベルがいくつからいくつに上がるには、これまたいくつ必要なのか~なんて全部考えて敵を配置または出現確率を設定しないといけません。
出現確率の方はそりゃもう100回200回のテストプレイは当たり前な世界が待っています、間違いなく。
というのを踏まえて、今回の「経験値%5==0」てのは凄く判り易くて単純で良いかと思います。
まぁ、ゴブリン倒して経験値1だったのに、巨大ドラゴン倒しても経験値2しか…みたいな世界の可能性が高いですが、そこは先へ進んでみようと思わせるゲームの展開に期待ですねー
同じ奴ばっかり叩いてると、そのうち全く上がらなくなるという凄い謎の技術でつくられておりますw
経験値をカウントするなら、おそらくコレ
・スクリプト/配列を使わない経験値制Lvアップ
そして2D_RPGでパーティを組む場合は
・スクリプト/冒険に役立つスクリプト
ただし仕組みが全く同じなこのふたつ、つくる際の注意点として「バランス調整が非常に大変」な事が挙げられます。
次々と現れる各敵の経験値をいくつに設定して、レベルがいくつからいくつに上がるには、これまたいくつ必要なのか~なんて全部考えて敵を配置または出現確率を設定しないといけません。
出現確率の方はそりゃもう100回200回のテストプレイは当たり前な世界が待っています、間違いなく。
というのを踏まえて、今回の「経験値%5==0」てのは凄く判り易くて単純で良いかと思います。
まぁ、ゴブリン倒して経験値1だったのに、巨大ドラゴン倒しても経験値2しか…みたいな世界の可能性が高いですが、そこは先へ進んでみようと思わせるゲームの展開に期待ですねー
レベルアップの仕組みを
まとめたものが
こちらのWikiページになると思います。
「%」は余りを求める計算式で、
条件式を「 == 0」にすることにより
余りがゼロ、
つまり今回の場合は、
5の倍数となったときを条件成立と
判断する仕組みになっています。
まとめたものが
こちらのWikiページになると思います。
「%」は余りを求める計算式で、
条件式を「 == 0」にすることにより
余りがゼロ、
つまり今回の場合は、
5の倍数となったときを条件成立と
判断する仕組みになっています。
退会したユーザー(投稿日:2011/12/12 20:24,
履歴)
パーセントの方がいいかな?
退会したユーザー(投稿日:2011/12/12 20:01,
履歴)
出来ました!ikosamiさん、簸川葵様ありがとうございました^^
これWikiに掲載してもいいかな…?
これWikiに掲載してもいいかな…?
退会したユーザー(投稿日:2011/12/12 19:57,
履歴)
えーと、こういうことですかね?
def LvUP() if getVariable("レベルアップ経験値ボカァ")==5 speak("レベルアップ!") levelUp() elsif getVariable("レベルアップ経験値ボカァ")==10 speak("レベルアップ!") levelUp() elsif getVariable("レベルアップ経験値ボカァ")==15 speak("レベルアップ!") levelUp() elsif getVariable("レベルアップ経験値ボカァ")==20 speak("レベルアップ!") levelUp() elsif getVariable("レベルアップ経験値ボカァ")==25 speak("レベルアップ!") levelUp() elsif getVariable("レベルアップ経験値ボカァ")==30 speak("レベルアップ!") levelUp() end end
退会したユーザー(投稿日:2011/12/12 19:45,
履歴)
開始スクリプトにレベルアップを入れてはいけないのですね、以後、気を付けます
退会したユーザー(投稿日:2011/12/12 19:45,
履歴)
なるほど、ユーザー定義関数とはこういう時に使うんですね、参考になりました
そもそも、
開始スクリプト
敵のスクリプト
の流れで動きますから、
開始スクリプトに
Lvアップのスクリプトがあっても
戻ってきません。
開始スクリプトへ戻すためには
ユーザ関数としてスクリプトを準備しておき、
敵のスクリプトの最後で、そのユーザ関数を
呼び出してあげる必要があります。
開始スクリプト
敵のスクリプト
開始スクリプト
敵のスクリプト
の流れで動きますから、
開始スクリプトに
Lvアップのスクリプトがあっても
戻ってきません。
開始スクリプトへ戻すためには
ユーザ関数としてスクリプトを準備しておき、
敵のスクリプトの最後で、そのユーザ関数を
呼び出してあげる必要があります。
開始スクリプト
#使用する変数の準備 setVariable("経験値", 0) #ユーザ関数の準備 def LvUP() if (getVariable("経験値") % 5) == 0 #LvUP処理 speak("レベルアップ!") end end
敵のスクリプト
#倒した後 setVariable("経験値", getVariable("経験値") + 1) #ユーザ関数を呼び出す LvUP()
退会したユーザー(投稿日:2011/12/12 18:53,
履歴)
あれ、まだ作動しません。。。
setVariableの文を消してみたんですけどダメでした・・
setVariableの文を消してみたんですけどダメでした・・
退会したユーザー(投稿日:2011/12/12 18:48,
履歴)
そっか!elsifを使えばよかったのか、
退会したユーザー(投稿日:2011/12/12 18:47,
履歴)
あれ、setVariableって変数設定じゃなかったんかな?
まあいっか、ありがとうございますやってみます
まあいっか、ありがとうございますやってみます
あと、こういう場合は、
と省略して書けますよ。
もっと短くもできますが、ややこしくなるのでやめておきます。
if getVariable("レベルアップ経験値ボカァ")==5 speak("レベルアップ!") levelUp() elsif getVariable("レベルアップ経験値ボカァ")==10 speak("レベルアップ!") levelUp() elsif getVariable("レベルアップ経験値ボカァ")==15 speak("レベルアップ!") levelUp() elsif getVariable("レベルアップ経験値ボカァ")==20 speak("レベルアップ!") levelUp() elsif getVariable("レベルアップ経験値ボカァ")==25 speak("レベルアップ!") levelUp() elsif getVariable("レベルアップ経験値ボカァ")==30 speak("レベルアップ!") levelUp() end
と省略して書けますよ。
もっと短くもできますが、ややこしくなるのでやめておきます。
退会したユーザー(投稿日:2011/12/12 18:36,
履歴)
切れたw続き↓
敵には
と入れたんですが、処理がされませんでした。
エラーもなしでした。==じゃダメなんですか?もし違うのであれば、どうすればよいのですか?
敵には
speak("50millと1の経験値を手に入れた") setVariable("レベルアップ経験値ボカァ", getVariable("レベルアップ経験値ボカァ") + 1) addMoney(50)
と入れたんですが、処理がされませんでした。
エラーもなしでした。==じゃダメなんですか?もし違うのであれば、どうすればよいのですか?
やっとdefの使い方・使い道
の第1歩が理解できた気がするw