【経験値制Lv.アップ】テストゲーム公開【質問受付】

投稿者:Icon mini cdv30200 投稿日:2015/02/10 19:52

公開しました。
2DRPG 経験値制レベルアップのテスト

3人パーティーのレベルアップができます。元はこちら
完璧ではなく「自分はこうやって作った」としか言えませんが、開始スクリプトも置いておくので、コピペしてキャラIDなどを自分用に変えて使って下さい。
戦闘勝利後に必ず
levelUpCheck()
を入れるのをお忘れなく。
効果音「TAM_decide2」を使用しています。

キャラによってレベルアップに必要な経験値が違います。
こちらと同じなので参考にして下さい。
所持金表示についてはこちらを参考にしました。

不要なところは削除して下さい。

ちゃんと答えられるか分かりませんが、質問はこちらで受け付けます。

#--------------------------------

#カスタムメニュー 重要アイテム
setMenuItemVisible(getMenuSave(), false)
setMenuItemVisible(getMenuLoad(), false)

setCustomParamMenuEnable(true)
setCustomParamMenuName("重要アイテム")

def onShowCustomParameter()
  drawCustomParam()

#メンバーの経験値
setCustomParamName(0, "ラトゥール")
setCustomParamValue(0, "LV. "+getLevel())

setCustomParamName(1, " 経験値計")
setCustomParamValue(1, getVariable("totalexp"))

if getFlag("レイナ加入")
setCustomParamName(2, "レイナ")
setCustomParamValue(2, "LV. "+getLevelPartyMember(16372))
else
end

if getFlag("レイナ加入")
setCustomParamName(3, " 経験値計")
setCustomParamValue(3, getVariable("totalexp3"))
else
end

if getFlag("おじさん加入")
setCustomParamName(4, "おじさん")
setCustomParamValue(4, "LV. "+getLevelPartyMember(16373))
else
end

if getFlag("おじさん加入")
setCustomParamName(5, " 経験値計")
setCustomParamValue(5, getVariable("totalexp5"))
else
end

#重要アイテム
setCustomParamName(7, "重要アイテム")
setCustomParamValue(7, "")

if getFlag("チョコレート入手")
setCustomParamName(8, " チョコレート")
setCustomParamValue(8, getVariable("チョコレートの数"))
else
end

#カスタムメニュー 終わり
end
#--------------------------------------------------

#ここから経験値制レベルアップと、獲得ゴールドの設定
# sv=setVariable , gv=getVariable

def sv(a,b)
  setVariable(a, b)
end

def gv(a)
  return getVariable(a)
end

def addv(a,b)
  sv(a, gv(a) + b)
end

def pow(a, b)
  v = 1;  i = 0; g = 0
  while(i < b)
    v = v * a
    i = i + 1
  end
  while(g < b)
    g = g + 1
  end
  return v
end
#ラトゥールの初期値
sv("exp",0); sv("totalexp",0);  sv("totalexp2",0); sv("next", 10);
#レイナの初期値
sv("exp2",0); sv("totalexp3",0);  sv("totalexp4",0); sv("next2", 20) ;
#おじさんの初期値
sv("exp3",0); sv("totalexp5",0);  sv("totalexp6",0); sv("next3", 50) ;
#獲得ゴールドの初期値
sv("gold", 0); sv("totalgold", 0)

#個々の敵キャラのゴールドをidから求めます。
def go(id)
case id
    #----ゴールド----
    #スライム
    when 27685
      return 4
    #グリーンスライム
    when 27684
      return 6
    #イエロースライム
    when 27683
      return 14
    #関係ないものは0で片付ける
    else
      return 0
  end
end
#獲得ゴールドの計算
def gtg(a)
  gold = 0
  #ラトゥールが戦闘不能になった時
  if getPlayerHP() == 0
      #さらにレイナが戦闘不能になった時
      if getPartyMemberHP(16372) == 0#カッコ内はレイナのキャラID
      killCounts2 = getKillCountPartyMember(16373)#おじさんのキャラID
      else
      killCounts2 = getKillCountPartyMember(16372)#レイナのキャラID
      end
    g = 0
    while g < getArrayLength(killCounts2)
    #倒した敵の種類と数から獲得ゴールドを計算
    gold = gold + go(killCounts2[g][0]) * killCounts2[g][1]
    g = g + 1
    end
  #ラトゥールが戦闘不能になっていない時
  else
    killCounts2 = getKillCount()
    g = 0
    while g < getArrayLength(killCounts2)
    #倒した敵の種類と数から獲得ゴールドを計算
    gold = gold + go(killCounts2[g][0]) * killCounts2[g][1]
    g = g + 1
    end
  end
  G = gold
  gold = gold - gv("totalgold")
  sv("totalgold", G)
  return gold
end

#個々の敵キャラの経験値をidから求めます。
def gee(id)
 case id
    #----経験値----
    #スライム
    when 27685
      return 3
    #グリーンスライム
    when 27684
      return 6
    #イエロースライム
    when 27683
      return 14
    #関係ないものは0で片付ける
    else
      return 0
  end
end

#経験値の計算
def gte(a)
  exp = 0

if getPlayerHP() == 0
#ラトゥールが戦闘不能になった時
      #さらにレイナが戦闘不能になった時
      if getPartyMemberHP(16372) == 0
      killCounts = getKillCountPartyMember(16373)
      else
      killCounts = getKillCountPartyMember(16372)
      end
  i = 0
    while i < getArrayLength(killCounts)
    #倒した敵の種類と数から経験値を計算
    exp = exp + gee(killCounts[i][0]) *  killCounts[i][1]
    i = i + 1
    end
else 
#ラトゥールが戦闘不能になっていない時
  killCounts = getKillCount()
  i = 0
    while i < getArrayLength(killCounts)
    #倒した敵の種類と数から経験値を計算
    exp = exp + gee(killCounts[i][0]) * killCounts[i][1]
    i = i + 1
    end
end

     if getFlag("レイナ加入")
    exp2 = exp
     else
     end
     if getFlag("おじさん加入")
     exp3 = exp
     else
     end

  A = exp
  exp = exp - gv("totalexp2")
  sv("totalexp2", A)
  return exp
  B = exp2
  exp2 = exp2 - gv("totalexp4")
  sv("totalexp4", B)
  return exp2
  C = exp3
  exp3 = exp3 - gv("totalexp5")
  sv("totalexp6", C)
  return exp3end

end

def levelUpCheck()
#BGMのためのスクリプト
fadeOutMusicFadeIn(50, 119846, 50)

  getE = gte()
  getG = gtg()
#戦闘終了後、生き残ったメンバーだけ経験値を加算、ゴールドは必ず加算
addv("gold", getG)  
  if getPlayerHP() >= 1
  addv("exp", getE);  addv("totalexp", getE)
  s = ""
  else
  s = ""
  end

  if getFlag("レイナ加入") && getPartyMemberHP(16372) >= 1
  addv("exp2", getE);addv("totalexp3", getE)
  s = ""
  else
  s = ""
  end

  if getFlag("おじさん加入") && getPartyMemberHP(16373) >= 1
  addv("exp3", getE);addv("totalexp5", getE)
  s = ""
  else
  s = ""
  end

  speak(s + getE + " 経験値を獲得!\n" + getG + " Gを手に入れた!")
  addMoney(getG);setFlag("テキスト",true)

#3分の1の確率で「チョコレート」を入手
  r = rand(3)
  if r == 0
  #「チョコレート」入手
  speak("敵は何かを持っていた。")
  speak("チョコレートを手に入れた!")
  playSound(89930)
  setVariable("チョコレートの数", getVariable("チョコレートの数")+1)
  setFlag("チョコレート入手", true)
  else
  #「チョコレート」入手しない
  end

  while  gv("exp") >= gv("next")
    levelUp()
    addv("exp", gv("next") * -1);  addv("next",  getLevel() *10) 
      playSound(89930)
      speak("ラトゥールがレベルアップ!\nLV." + getLevel() + "になった!")
if getLevel(16271)==3
giveEquipment(11004) 
speak("ラトゥールは回復魔法を覚えた!")
else
end
  end

  if getFlag("レイナ加入")
  while  gv("exp2") >= gv("next2")
  levelUpPartyMember(16372)
    addv("exp2", gv("next2") * -1);  addv("next2", getLevelPartyMember(16372) *12)
    playSound(89930)
    speak("レイナがレベルアップ!\nLV." + getLevelPartyMember(16372) + "になった!")
  end
  else
  end

  if getFlag("おじさん加入")
  while  gv("exp3") >= gv("next3")
  levelUpPartyMember(16373)
    addv("exp3", gv("next3") * -1);  addv("next3", getLevelPartyMember(16373) *15)
    playSound(89930)
    speak("おじさんがレベルアップ!\nLV." + getLevelPartyMember(16373) + "になった!")
if getLevelPartyMember(16373)==3
giveEquipmentPartyMember(16373, 14435)
speak("おじさんは氷魔法を覚えた!")
else
end
  end
  else
  end

end
#-----------------------------------------------------------------
# お金の単位としてGと表記するようにする
# 例:0Gというように表示される
setDenomination("G")

# 初期の所持金を0Gに設定する
addMoney(0)

#常時所持金を表示するスクリプトについて ここから
def tukuru()
#テキスト表示場所作成
setTextFontColor(255,255,255)
setVariable("t",createText(420,40,100,40))
setTextFontColor(255,255,255)
#テキストイベントフラグ
setFlag("テキスト作成",false); setFlag("テキスト",true)
end #tukuru()終

def kaku()
setText(getVariable("t"),getMoney()+getDenomination())
setFlag("テキスト",false)
end #kaku()終

#-------------------------------------------------------------------
#宿屋の処理
def inn()
fadeOut(0, 0, 0)
addPlayerHP(getPlayerMaxHP())
addPlayerMP(getPlayerMaxMP())
if getFlag("レイナ加入")
addPartyMemberHP(16372, getPartyMemberMaxHP(16372))
addPartyMemberMP(16372, getPartyMemberMaxMP(16372))
else
end
if getFlag("おじさん加入")
addPartyMemberHP(16373, getPartyMemberMaxHP(16373))
addPartyMemberMP(16373, getPartyMemberMaxMP(16373))
else
end
fadeIn()

end
#---------------------------------------------------------------
#商品の買取価格はまとめてここに設定する(販売価格は店ごとに設定)

#-----道具-----
#薬草 販売価格8G
#setSalePrice(ID, 買い取り価格)です。
setSalePrice(17208, 4);setFlag("テキスト作成",false); setFlag("テキスト",true)
#-----武器-----
#木の杖 非売品
setSalePrice(17733, 200);setFlag("テキスト作成",false); setFlag("テキスト",true)
#ラトゥールの剣 非売品
setSalePrice(12527, 100);setFlag("テキスト作成",false); setFlag("テキスト",true)
#木の棒 非売品
setSalePrice(17179, 10);setFlag("テキスト作成",false); setFlag("テキスト",true)
#-----防具(服・鎧)-----
#布の服 非売品
setSalePrice(785, 4);setFlag("テキスト作成",false); setFlag("テキスト",true)
#革の鎧 販売価格200G
setSalePrice(11327, 100);setFlag("テキスト作成",false); setFlag("テキスト",true)
#砂漠のマント 非売品
setSalePrice(17175, 60);setFlag("テキスト作成",false); setFlag("テキスト",true)
#かわいいマント 非売品
setSalePrice(17889, 600);setFlag("テキスト作成",false); setFlag("テキスト",true)
#-----防具(盾・足)-----
#革の盾 販売価格80G
setSalePrice(12611, 40);setFlag("テキスト作成",false); setFlag("テキスト",true)
#革の靴 販売価格60G
setSalePrice(17174, 30);setFlag("テキスト作成",false); setFlag("テキスト",true)

コメントする

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

コメント一覧

コメントはありません。