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

最終投稿者:   mini ___ 更新:2013/04/18 18:26:55
配列を使わない、初心者でもできる(?)経験値制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】に使っています。
どんな感じになるか、見てみるのもいいかもしれませんね。

コメントする

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

コメント一覧

             mini ティラミス(投稿日:2013/03/27 11:52, 履歴)
PTように改造してみました^^
初心者が作ったので、あってるかどうか分かりませんが…


setVariable("LVアップまでの経験値", createArray())
setVariable("総合経験値", createArray())

getVariable("LVアップまでの経験値")[0] = 10
getVariable("総合経験値")[0] = 0

getVariable("LVアップまでの経験値")[1] = 18
getVariable("総合経験値")[1] = 0

getVariable("LVアップまでの経験値")[2] = 12
getVariable("総合経験値")[2] = 0

getVariable("LVアップまでの経験値")[3] = 15
getVariable("総合経験値")[3] = 0

def exp(a,b)
  speak(getVariable("ゲット経験値") , "経験値獲得した!")
  setVariable("総合経験値" , getVariable("総合経験値") + getVariable("ゲット経験値"))
  while getVariable("総合経験値") > getVariable("LVアップまでの経験値")
    speak("LVアップ!")
    levelUpPartyMember(a)
    speak("LV." , getLevelPartyMember(a) , "になった\n能力が上がった!")
      # ↓次LVアップするまでの経験値を10足す前に、使った経験値を引きます。
        setVariable("総合経験値" ,
        getVariable("LVアップまでの経験値") - getVariable("LVアップまでの経験値"))
    setVariable("LVアップまでの経験値" ,
    getVariable("LVアップまでの経験値") * getVariable("LVアップまでの経験値")[b])
  end
end



             mini ティラミス(投稿日:2013/03/27 11:55, 履歴)
間違えました^^;

setVariable("LVアップまでの経験値", createArray())
setVariable("総合経験値", createArray())

getVariable("LVアップまでの経験値")[0] = 10
getVariable("総合経験値")[0] = 0

getVariable("LVアップまでの経験値")[1] = 18
getVariable("総合経験値")[1] = 0

getVariable("LVアップまでの経験値")[2] = 12
getVariable("総合経験値")[2] = 0

getVariable("LVアップまでの経験値")[3] = 15
getVariable("総合経験値")[3] = 0

def exp(a,b)
  speak(getVariable("ゲット経験値") , "経験値獲得した!")
  setVariable("総合経験値" , getVariable("総合経験値") + getVariable("ゲット経験値"))
  while getVariable("総合経験値") > getVariable("LVアップまでの経験値")
    speak("LVアップ!")
    levelUpPartyMember(a)
    speak("LV." , getLevelPartyMember(a) , "になった\n能力が上がった!")
        setVariable("総合経験値" ,
        getVariable("LVアップまでの経験値") - getVariable("LVアップまでの経験値"))
    setVariable("LVアップまでの経験値" ,
    getVariable("LVアップまでの経験値") + getVariable("LVアップまでの経験値")[b])
  end


でした^^;
end


             mini ティラミス(投稿日:2013/03/27 11:58, 履歴)
また間違えた…;;
[code setVariable("LVアップまでの経験値", createArray()) setVariable("総合経験値", createArray()) getVariable("LVアップまでの経験値")[0] = 10 getVariable("総合経験値")[0] = 0 getVariable("LVアップまでの経験値")[1] = 18 getVariable("総合経験値")[1] = 0 getVariable("LVアップまでの経験値")[2] = 12 getVariable("総合経験値")[2] = 0 getVariable("LVアップまでの経験値")[3] = 15 getVariable("総合経験値")[3] = 0 def exp(a,b) speak(getVariable("ゲット経験値") , "経験値獲得した!") setVariable("総合経験値" , getVariable("総合経験値") + getVariable("ゲット経験値")) while getVariable("総合経験値") > getVariable("LVアップまでの経験値") speak("LVアップ!") levelUpPartyMember(a) speak("LV." , getLevelPartyMember(a) , "になった\n能力が上がった!") # ↓次LVアップするまでの経験値を10足す前に、使った経験値を引きます。 setVariable("総合経験値" , getVariable("LVアップまでの経験値") - getVariable("LVアップまでの経験値")) setVariable("LVアップまでの経験値" , getVariable("LVアップまでの経験値") * getVariable("LVアップまでの経験値")[b]) end end]

最後です…


Material 154390 2 mini  創 (投稿日:2013/04/06 16:12, 履歴)
setVariable("LVアップまでの経験値", createArray())
setVariable("総合経験値", createArray())

getVariable("LVアップまでの経験値")[0] = 10
getVariable("総合経験値")[0] = 0

getVariable("LVアップまでの経験値")[1] = 18
getVariable("総合経験値")[1] = 0

getVariable("LVアップまでの経験値")[2] = 12
getVariable("総合経験値")[2] = 0

getVariable("LVアップまでの経験値")[3] = 15
getVariable("総合経験値")[3] = 0

def exp(a,b)
  speak(getVariable("ゲット経験値") , "経験値獲得した!")
  setVariable("総合経験値" , getVariable("総合経験値") + getVariable("ゲット経験値"))
  while getVariable("総合経験値") > getVariable("LVアップまでの経験値")
    speak("LVアップ!")
    levelUpPartyMember(a)
    speak("LV." , getLevelPartyMember(a) , "になった\n能力が上がった!")
        setVariable("総合経験値" ,
        getVariable("LVアップまでの経験値") - getVariable("LVアップまでの経験値"))
    setVariable("LVアップまでの経験値" ,
    getVariable("LVアップまでの経験値") + getVariable("LVアップまでの経験値")[b])
  end
end
Material 154390 2 mini  創 (投稿日:2013/04/06 16:12, 履歴)
こうですかね?
             mini ティラミス(投稿日:2013/04/08 08:39, 履歴)
です^^
Material 180953 2 mini  レン(投稿日:2013/04/17 17:28, 履歴)
これって敵にかくスプリクトですか?
Material 180953 2 mini  レン(投稿日:2013/04/17 17:29, 履歴)
すみません。自己解決できました。
Nyan mini rurun9(投稿日:2013/04/18 18:26, 履歴)
配列を使わない、がウリの解説ページにおいて
配列を使ったが故にエラー出してるとか大問題でしょw
Material 154390 2 mini  創 (投稿日:2013/04/06 16:13, 履歴)
2DACTRPGだと
setVariable("ゲット経験値", 15)
exp()  
setFlag("1", true)

こうですかね
User icon mini 退会したユーザー(投稿日:2012/07/21 20:34, 履歴)
これだと仲間には経験値入らないのが欠点ですなー。
User icon mini 退会したユーザー(投稿日:2011/11/29 19:03, 履歴)
だり(死
User icon mini 退会したユーザー(投稿日:2011/07/03 21:45, 履歴)
どうせなら運営さんが基本関数として作ってくれれば早いんですけどね^^
お店も基本関数になったし、今の運営さんならできるはずです!
User icon mini 退会したユーザー(投稿日: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
   mini ___(投稿日:2011/04/09 15:14, 履歴)
開始スクリプトの{{{code~}}}内を編集しました。

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

とのことだったのですが、やはり多くの方に見てもらうということで
勝手ながら見やすくするためにスペースを要所に入れさせていただきました。
Nyan mini rurun9(投稿日:2011/02/23 11:47, 履歴)
役に立つスクリプトの方の、配列を使ったLvUPを動くように直しておきましたよ
(誰もツッコミ入れてくれないから気付かなかった)

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