これって簡略化できない?(長文)(質問掲示板

投稿:    mini rdjk5242 投稿:2012/02/10 20:23:10(最新:2012/02/11 10:56:11)
ランダムの練習で作った開始スクリプトです。
また、giveEquipment(10289)
は魔法です。
 giveEquipment(10289)
speak("主人公の初期Lvは4です。")
speak("目の前の敵を倒して10Lvになったらクリアです。\n\nLvアップの桁がランダムになっています。")

def a()
 a=0
 b=0
 speak("戦闘終了後、ランダムで経験値を獲得します。\n\nちなみに負けてもOKです。")
 startTurnBattle(8677)
 a=a+rand(6)

if a==0
 speak("Lvは上がらなかった・・・")
end

if a==1
 levelUp()
 speak("Lvが1上がった!")
end

if a==2
while b<2
 levelUp()

 b=b+1
end
 speak("Lvが2上がった!")
end

if a==3
while b<3
 levelUp()

 b=b+3
end
 speak("Lvが3上がった!")
end

if a==4
while b<4
 levelUp()

 b=b+4
end
 speak("Lvが4上がった!")
end

if a==5
while b<5
 levelUp()
 b=b+5
end
 speak("Lvが5上がった!")
end
 addPlayerHP(999)
 addPlayerMP(999)

 speak("現在のLv",getLevel())

 a=0
 b=0

if getLevel()>=10
speak("これで終わります。")
goEnding()
end
end

タイトルに書いたように,もっと簡単に書く方法はないですか?

よろしくお願いします。

コメントする

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

コメント一覧

Material 71926 1 mini なとおとき(投稿日:2012/02/11 10:56, 履歴)
パーティーメンバーレベルアップの関数を使えばいいとおもいま~す
Human icon mini クソザコ(投稿日:2012/02/11 09:23, 履歴)
>パーティーメンバーの一人一人で個別にレベルアップ

うーん・・やっぱりそれは別に作るしかないかもです・・


それと、2つ下の事についてですけど、
いちいち自動開始で確認しなくても、
def文でまとめて、敵のスクリプトに入れれば大丈夫ですよ!(たぶん・・)

#開始スクリプト 
 setVariable("経験値",0) 
 c=10
def lvup()
if c<=getVariable("経験値") 
 levelUp() 
speak("Lvが上がった!") 
 setVariable("経験値",getVariable("経験値"))=0 
 c+2 
end 
if getlevel==10 
#技を取得 
end 
if getlevel==20 
#技を取得 
end 
if getlevel==20 
#技を取得 
end 
・ 
・ 
・
end


#敵のイベント 
 a=0;b=0 
 startTurnBattle(8677)  
 a = a + rand(3)+1  
 
while b < a  
 setVariable("経験値",getVariable("経験値")+1) 
 b = b + 1  
end  
 a=0;b=0 
lvup()

こうすればもっといいと思いますw
   mini rdjk5242(投稿日:2012/02/11 05:39, 履歴)
これの問題点は、敵の種類ごとに経験値をもらうことができない
ということです。
あとパーティーメンバーの一人一人で個別にレベルアップする事は出来ますか?
   mini rdjk5242(投稿日:2012/02/11 05:26, 履歴)
長文回答ありがとうございます。

う~ん・・・
簡潔なikosamiさんの案を使ってみることにします。

これ本当は経験値制レベルアップにしようと思っているのですが、

setVariable("経験値",0)で、経験値制にして、

例えば、5から6になるときは10P必要で、
6から7になるときは12P必要のように、
すこしずつ増えるようにするにはどうしたらいいですか?

自分の考え↓
#開始スクリプト
 setVariable("経験値",0)
 c=10

#敵のイベント
 a=0;b=0
 startTurnBattle(8677) 
 a = a + rand(3)+1 

while b < a 
 setVariable("経験値",getVariable("経験値")+1)
 b = b + 1 
end 
 a=0;b=0

setFlag("Lv",ture)

#自動開始イベント,発生条件はgetFlag("経験値")
 setFlag("Lv",false)
if c<=getVariable("経験値")
 levelUp()
speak("Lvが上がった!")
 setVariable("経験値",getVariable("経験値"))=0
 c+2
end
if getlevel==10
#技を取得
end
if getlevel==20
#技を取得
end
if getlevel==20
#技を取得
end
・
・
・

もっとこうするといいよというのがあったら教えて下さい。
Material 71926 1 mini なとおとき(投稿日:2012/02/10 22:05, 履歴)
あ、そうか
最後はどっちも0なんだっけ...w
ならどっちでもほとんど同じか;;;w
Material 7186 1 mini ikosami(投稿日:2012/02/10 21:49, 履歴)
なんだか、無駄にややこしいことをしている気がするのですが・・・

ここでgetVariable("変数")を使う意味はまったくないですよ(^^;)
Material 71926 1 mini なとおとき(投稿日:2012/02/10 21:40, 履歴)
こんどこそこれ。
システムはこれでいいはず!
命をかけて!
giveEquipment(10289)
speak("主人公の初期Lvは4です。")
speak("目の前の敵を倒して10Lvになったらクリアです。\n\nLvアップの桁がランダムになっています。")
setVariable("a", 0)
setVariable("b", 0)
speak("戦闘終了後、ランダムで経験値を獲得します。\n\nちなみに負けてもOKです。")
 startTurnBattle(8677)
a = rand(6)
if a==0
 speak("Lvは上がらなかった・・・")
elsif a==1
setVariable("a", getVariable("a")+1)
while getVariable("b") > 1
 levelUp()
setVariable("a", getVariable("a")-1)

end
speak("Lvが1上がった!")
elsif a==2
setVariable("a", getVariable("a")+2)
while getVariable("b") < getVariable("a")
 levelUp()
setVariable("a", getVariable("a")-1)
end
speak("Lvが2上がった!")
elsif a==3
setVariable("a", getVariable("a")+3)
while getVariable("b") < getVariable("a")
 levelUp()
setVariable("a", getVariable("a")-1)
end
speak("Lvが3上がった!")
elsif a==4
setVariable("a", getVariable("a")+4)
while getVariable("b") < getVariable("a")
 levelUp()
setVariable("a", getVariable("a")-1)
end
speak("Lvが4上がった!")
elsif a==5
setVariable("a", getVariable("a")+5)
while getVariable("b") < getVariable("a")
 levelUp()
setVariable("a", getVariable("a")-1)
end
speak("Lvが5上がった!")
end
 addPlayerHP(999)
 addPlayerMP(999)

 speak("現在のLv",getLevel())
setVariable("a", 0)
setVariable("b", 0)
if getLevel()>=10
speak("これで終わります。")
goEnding()
end
Material 71926 1 mini なとおとき(投稿日:2012/02/10 21:34, 履歴)
あ、ちがってた
れべるUPシステムのところだけがよくわからんw
Material 71926 1 mini なとおとき(投稿日:2012/02/10 21:26, 履歴)
あと
whileの後はみんな
getVariable("b") < 1
(全部1でいいということ)
でいいと思います。
でないとどれもレベルが1しか上がりません。
Material 71926 1 mini なとおとき(投稿日:2012/02/10 21:22, 履歴)
あ、こっちだった長文すみません^^;
間違ってれば参考程度に
giveEquipment(10289)
speak("主人公の初期Lvは4です。")
speak("目の前の敵を倒して10Lvになったらクリアです。\n\nLvアップの桁がランダムになっています。")
setVariable("a", 0)
setVariable("b", 0)
speak("戦闘終了後、ランダムで経験値を獲得します。\n\nちなみに負けてもOKです。")
 startTurnBattle(8677)
a = rand(6)
if a==0
 speak("Lvは上がらなかった・・・")
elsif a==1
while getVariable("b") < 1
 levelUp()
setVariable("b", getVariable("b")+1)

 speak("Lvが1上がった!")
end
elsif a==2
while getVariable("b") < 2
 levelUp()
setVariable("b", getVariable("b")+2)
 speak("Lvが2上がった!")
end
elsif a==3
while getVariable("b") < 3
 levelUp()
setVariable("b", getVariable("b")+3)
 speak("Lvが3上がった!")
end
elsif a==4
while getVariable("b") < 4
 levelUp()
setVariable("b", getVariable("b")+4)
 speak("Lvが4上がった!")
end
elsif a==5
while getVariable("b") < 5
 levelUp()
setVariable("b", getVariable("b")+5)
 speak("Lvが5上がった!")
end
end
 addPlayerHP(999)
 addPlayerMP(999)

 speak("現在のLv",getLevel())
setVariable("a", 0)
setVariable("b", 0)
if getLevel()>=10
speak("これで終わります。")
goEnding()
end
Material 71926 1 mini なとおとき(投稿日:2012/02/10 21:11, 履歴)
おw先回答者がw
Material 71926 1 mini なとおとき(投稿日:2012/02/10 21:11, 履歴)
giveEquipment(10289)
speak("主人公の初期Lvは4です。")
speak("目の前の敵を倒して10Lvになったらクリアです。\n\nLvアップの桁がランダムになっています。")
setVariable("a", 0)
setVariable("b", 0)
speak("戦闘終了後、ランダムで経験値を獲得します。\n\nちなみに負けてもOKです。")
 startTurnBattle(8677)
a = rand(6)
if a==0
 speak("Lvは上がらなかった・・・")
elsif a==1
while getVariable("b") < 1
 levelUp()
getVariable("b")=getVariable("b")+1
 speak("Lvが1上がった!")
end
elsif a==2
while getVariable("b") < 2
 levelUp()
getVariable("b")=getVariable("b")+2
 speak("Lvが2上がった!")
end
elsif a==3
while getVariable("b") < 3
 levelUp()
getVariable("b")=getVariable("b")+3
 speak("Lvが3上がった!")
end
elsif a==4
while getVariable("b") < 4
 levelUp()
getVariable("b")=getVariable("b")+4
 speak("Lvが4上がった!")
end
elsif a==5
while getVariable("b") < 5
 levelUp()
getVariable("b")=getVariable("b")+5
 speak("Lvが5上がった!")
end
end
 addPlayerHP(999)
 addPlayerMP(999)

 speak("現在のLv",getLevel())
getVariable("a") = 0
getVariable("b") = 0
if getLevel()>=10
speak("これで終わります。")
goEnding()
end

これでエラーでなければ...
Material 7186 1 mini ikosami(投稿日:2012/02/10 21:10, 履歴)
 giveEquipment(10289)
speak("主人公の初期Lvは4です。")
speak("目の前の敵を倒して10Lvになったらクリアです。\n\nLvアップの桁がランダムになっています。")

def a()
 a = 0; b = 0
 speak("戦闘終了後、ランダムで経験値を獲得します。\n\nちなみに負けてもOKです。")
 startTurnBattle(8677)
 a = a + rand(6)

 if a==0
  speak("Lvは上がらなかった・・・")
 else
  while b < a
   levelUp()
   b = b + 1
  end
  speak("Lvが",b,"上がった!")
 end
 addPlayerHP(999)
 addPlayerMP(999)
 speak("現在のLv",getLevel())
 if getLevel() >= 10
  speak("これで終わります。")
  goEnding()
 end
end


こうだと思いますが、これって、a()を何度か繰り返すんですよね?
Material 71926 1 mini なとおとき(投稿日:2012/02/10 20:56, 履歴)
↓僕の理解があっていれば^^;
Material 71926 1 mini なとおとき(投稿日:2012/02/10 20:56, 履歴)
getVariable("変数")の変数を使った方がいいかと