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


スクリプト/配列を使わない経験値制Lvアップ

最終投稿者:tdakeikaku 更新:2011年11月29日 19:03:17

配列を使わない、初心者でもできる(?)経験値制LVアップスクリプトの書き方をやっていきます。
※wiki投稿は今回が初めてなので、説明が変になったりするかもしれません。指摘はびしばしお願いします

先に経験値を使う方法を考えてくれた方々には悪いのですが、
正直、配列はよくわからない・・・

僕は配列を使わずにいろいろやってきたので、その1つ、経験値制LVアップを教えます。
それでは、説明しましょう。
※2DRPGで使用することを目的しています。2Dアクションで使用するとエラーが発生し兼ねませんので注意。

開始スクリプトには

setVariable("LVアップまでの経験値", 10)
setVariable("総合経験値", 1)
def exp()
  speak("ゲット!\n経験値 " , getVariable("ゲット経験値") , "")
  setVariable("総合経験値" , getVariable("総合経験値") + getVariable("ゲット経験値"))
    # ↓今持っている経験値が、次LVアップする数値を超えている場合
  if getVariable("総合経験値") > getVariable("LVアップまでの経験値")
    speak("LVアップ!")
    levelUp()
    speak("LV." , getLevel() , "になった\nいろいろ能力が上がった(笑)")
      # ↓次LVアップするまでの経験値を10足します。
    setVariable("LVアップまでの経験値" , getVariable("LVアップまでの経験値") + 10) 
    setVariable("総合経験値" , 1)
  end
end


ごちゃごちゃした変数の説明をしますね。

変数「LVアップまでの経験値」この数値を超えるとLVアップします。
変数「ゲット経験値」敵から手に入れた経験値。
変数「総合経験値」今まで溜めた経験値。

変数名長すぎますね。自分でわかるなら短くしてもらってもかまいませんです

敵に書くスクリプト

startTurnBattle(7637, 7637, 7637)
if getTurnBattleResult() == 
    getTurnBattleWin()
  #勝ったとき
setVariable("ゲット経験値", 15)
exp()  
setFlag("1", true)

elsif getTurnBattleResult() ==
    getTurnBattleLose()
  #負けたとき


elsif getTurnBattleResult() ==
    getTurnBattleRunAway()
  #逃げたとき
  

end

変数「ゲット経験値」に適量の経験値を設定してください
めんどくさいですが、敵に変数「ゲット経験値」一つ一つ設定する必要があります。
そこらへんは配列を必要としない方法なので、我慢してください(殴

スタートターンバトルのところは、設定したい敵のidに変えてください。
変えないと動作しません。

有効条件にはこう書いてください
!getFlag("1")

敵を復活させるには、「スクリプト/コツ/敵を倒すとお金が手に入る」を参考にしてみてください

敵復活を必要としない場合は、ENEMYに
setVariable("ゲット経験値", 15)
exp()

と書くだけで十分です。あ、もちろん経験値は変えてください


説明はこれでオワリです。お疲れ様です。

たぶんいまのままじゃ、文章的にわかりにくいと思うので、
わかりやすく書き直してほしいです。すみません。

ちなみに、この方法はさんぽクエスト - 【2DRPG】に使っています。
どんな感じになるか、見てみるのもいいかもしれませんね。

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

コメント一覧

投稿者:とらふぐ(投稿日:2011/11/29 19:03)

だり(死

投稿者:takumi2310(投稿日:2011/07/03 21:45)

どうせなら運営さんが基本関数として作ってくれれば早いんですけどね^^
お店も基本関数になったし、今の運営さんならできるはずです!

投稿者:takumi2310(投稿日:2011/07/03 21:43)

  if getVariable("総合経験値") > getVariable("LVアップまでの経験値")
    speak("LVアップ!")
    levelUp()
    speak("LV." , getLevel() , "になった\nいろいろ能力が上がった(笑)")
      # ↓次LVアップするまでの経験値を10足します。
    setVariable("LVアップまでの経験値" , getVariable("LVアップまでの経験値") + 10) 
    setVariable("総合経験値" , 1)
  end

とありますが、一度に2LV以上上がるように、こうするのもいいと思います。
  # ifをwhileにして、次LVアップする数値を超えている間ずっとにします。
  while getVariable("総合経験値") > getVariable("LVアップまでの経験値")
    speak("LVアップ!")
    levelUp()
    speak("LV." , getLevel() , "になった\nいろいろ能力が上がった(笑)")
      # ↓次LVアップするまでの経験値を10足す前に、使った経験値を引きます。
        setVariable("総合経験値" ,
        getVariable("LVアップまでの経験値") - getVariable("LVアップまでの経験値"))
    setVariable("LVアップまでの経験値" , getVariable("LVアップまでの経験値") + 10) 
  end

投稿者:tdakeikaku(投稿日:2011/04/09 15:14)

開始スクリプトの{{{code~}}}内を編集しました。

 >> ↑空白入れるとみやすくなるんですがね・・・自分は普段入れないので、すみません

とのことだったのですが、やはり多くの方に見てもらうということで
勝手ながら見やすくするためにスペースを要所に入れさせていただきました。

投稿者:rurun9(投稿日:2011/02/23 11:47)

役に立つスクリプトの方の、配列を使ったLvUPを動くように直しておきましたよ
(誰もツッコミ入れてくれないから気付かなかった)

配列の書き方と、
levelUp() → partyMemberLevelUp( n )
にしたときの違いがわかれば、手順は同じですよん

User_icon
ゲスト