MV/MZパラメータジェネレーター



ツクールMV/MZのLv100以降のパラメータを生成します。

変更点
2024:08:18
・関数修正
・スクリプトを連続実施しても生成パラメータが正しくなるよう修正

2024:09:15
・無駄処理排除
・能力算出方式の追加

#==============================================================================
# ■ ツクールMV/MZパラメータジェネレーター By 貪藻矢射妥←
# 
# ツクールMV/MZの限界突破で使用するパラメータ生成スクリプトです
# ツクールMV/MZは持っているけどツクールXPは持っていないという場合は・・・
# 
# ちなみに、スクリプトで
# mv_param_genetate()
# を行うとパラメータの生成が可能です。
# 
# 
#==============================================================================
# 更新っぽいもの
# 
# 2024:08:18
# ・関数修正
# ・スクリプトを連続実施しても生成パラメータが正しくなるよう修正
# 
# 2024:09:15
# ・無駄処理排除
# ・能力算出方式の追加

module MV_Param_Generate
  BASE_PARAM = [
    [1,450,500,550,600,650,700,750,800,850,900,950,1000,1050,1100,1150,1200,1250,
     1300,1350,1400,1450,1500,1550,1600,1650,1700,1750,1800,1850,1900,1950,2000,
     2050,2100,2150,2200,2250,2300,2350,2400,2450,2500,2550,2600,2650,2700,2750,
     2800,2850,2900,2950,3000,3050,3100,3150,3200,3250,3300,3350,3400,3450,3500,
     3550,3600,3650,3700,3750,3800,3850,3900,3950,4000,4050,4100,4150,4200,4250,
     4300,4350,4400,4450,4500,4550,4600,4650,4700,4750,4800,4850,4900,4950,5000,
     5050,5100,5150,5200,5250,5300,5350],
    [0,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,
     270,280,290,300,310,320,330,340,350,360,370,380,390,400,410,420,430,440,450,
     460,470,480,490,500,510,520,530,540,550,560,570,580,590,600,610,620,630,640,
     650,660,670,680,690,700,710,720,730,740,750,760,770,780,790,800,810,820,830,
     840,850,860,870,880,890,900,910,920,930,940,950,960,970,980,990,1000,1010,
     1020,1030,1040,1050,1060,1070],
    [1,16,18,19,20,21,23,24,25,26,28,29,30,31,33,34,35,36,38,39,40,41,43,44,45,
     46,48,49,50,51,53,54,55,56,58,59,60,61,63,64,65,66,68,69,70,71,73,74,75,76,
     77,79,80,81,82,84,85,86,87,89,90,91,92,94,95,96,97,99,100,101,102,104,105,
     106,107,109,110,111,112,114,115,116,117,119,120,121,122,124,125,126,127,
     129,130,131,132,134,135,136,137,138],
    [0,16,18,19,20,21,23,24,25,26,28,29,30,31,33,34,35,36,38,39,40,41,43,44,45,
     46,48,49,50,51,53,54,55,56,58,59,60,61,63,64,65,66,68,69,70,71,73,74,75,76,
     77,79,80,81,82,84,85,86,87,89,90,91,92,94,95,96,97,99,100,101,102,104,105,
     106,107,109,110,111,112,114,115,116,117,119,120,121,122,124,125,126,127,
     129,130,131,132,134,135,136,137,138],
    [0,16,18,19,20,21,23,24,25,26,28,29,30,31,33,34,35,36,38,39,40,41,43,44,45,
     46,48,49,50,51,53,54,55,56,58,59,60,61,63,64,65,66,68,69,70,71,73,74,75,76,
     77,79,80,81,82,84,85,86,87,89,90,91,92,94,95,96,97,99,100,101,102,104,105,
     106,107,109,110,111,112,114,115,116,117,119,120,121,122,124,125,126,127,
     129,130,131,132,134,135,136,137,138],
    [0,16,18,19,20,21,23,24,25,26,28,29,30,31,33,34,35,36,38,39,40,41,43,44,45,
     46,48,49,50,51,53,54,55,56,58,59,60,61,63,64,65,66,68,69,70,71,73,74,75,76,
     77,79,80,81,82,84,85,86,87,89,90,91,92,94,95,96,97,99,100,101,102,104,105,
     106,107,109,110,111,112,114,115,116,117,119,120,121,122,124,125,126,127,
     129,130,131,132,134,135,136,137,138],
    [0,32,35,37,40,42,45,47,50,52,55,57,60,62,65,67,70,72,75,77,80,82,85,87,90,
     92,95,97,100,102,105,107,110,112,115,117,120,122,125,127,130,132,135,137,
     140,142,145,147,150,152,155,157,160,162,165,167,170,172,175,177,180,182,
     185,187,190,192,195,197,200,202,205,207,210,212,215,217,220,222,225,227,
     230,232,235,237,240,242,245,247,250,252,255,257,260,262,265,267,270,272,
     275,277],
    [0,32,35,37,40,42,45,47,50,52,55,57,60,62,65,67,70,72,75,77,80,82,85,87,90,
     92,95,97,100,102,105,107,110,112,115,117,120,122,125,127,130,132,135,137,
     140,142,145,147,150,152,155,157,160,162,165,167,170,172,175,177,180,182,
     185,187,190,192,195,197,200,202,205,207,210,212,215,217,220,222,225,227,
     230,232,235,237,240,242,245,247,250,252,255,257,260,262,265,267,270,272,
     275,277]
  ]
  
  # 最大レベル
  MAX_LEVEL = 999
  
  # 書き込み先ファイル名
  FILE_NAME = "output.txt"
  
  # ◆能力値算出方式
  #   0..データベース通り。
  #      lv:現レベル  p[x]:レベル x の能力値
  #      として、
  #      (p[99] - p[98]) * (lv - 99)
  #      をレベル 99 の能力値に加算。
  LB_CALC_TYPE_DATABASE    = 0
  #   1..データベースを用いた二次関数。
  #        a:レベル1の値  b:レベル2の値  c:レベル3の値  x:現レベル
  #      として、
  #        ax^2 + bx + c
  #      を用いて能力値を算出。
  LB_CALC_TYPE_DB_2ND_FUNC = 1
  #   2..データベースを用いた一次関数。
  #        b:レベル2の値  c:レベル3の値  x:現レベル
  #      として、
  #        bx + c
  #      を用いて能力値を算出。
  #      (レベル2,3の値を使うのは、二次関数方式との使い分けを楽にするため)
  LB_CALC_TYPE_DB_1ST_FUNC = 2
  #   3..乱数方式。
  #        レベル1の値をベースに
  #        レベルアップする度に乱数で数値を加算し続ける方式
  LB_CALC_TYPE_RANDOM      = 3
  #   4..乱高下方式。
  #        レベルが上がる毎に能力が乱高下する方式。
  #        バカゲーとかの使用にどうぞ
  LB_CALC_TYPE_BAKA        = 4
  
  #--------------------------------------------------------------------------
  # ● パラメータ生成
  #--------------------------------------------------------------------------
  def make_param
    hp_list   = BASE_PARAM[0].dup
    mp_list   = BASE_PARAM[1].dup
    atk_list  = BASE_PARAM[2].dup
    pdef_list = BASE_PARAM[3].dup
    mat_list  = BASE_PARAM[4].dup
    mdef_list = BASE_PARAM[5].dup
    agi_list  = BASE_PARAM[6].dup
    luk_list  = BASE_PARAM[7].dup
    
    hp_list2   = hp_list.dup
    mp_list2   = mp_list.dup
    atk_list2  = atk_list.dup
    pdef_list2 = pdef_list.dup
    mat_list2  = mat_list.dup
    mdef_list2 = mdef_list.dup
    agi_list2  = agi_list.dup
    luk_list2  = luk_list.dup
    
    hp_list2   = calc_on_database(hp_list,   LB_CALC_TYPE_DATABASE)
    mp_list2   = calc_on_database(mp_list,   LB_CALC_TYPE_DATABASE)
    atk_list2  = calc_on_database(atk_list,  LB_CALC_TYPE_DATABASE)
    pdef_list2 = calc_on_database(pdef_list, LB_CALC_TYPE_DATABASE)
    mat_list2  = calc_on_database(mat_list,  LB_CALC_TYPE_DATABASE)
    mdef_list2 = calc_on_database(mdef_list, LB_CALC_TYPE_DATABASE)
    agi_list2  = calc_on_database(agi_list,  LB_CALC_TYPE_DATABASE)
    luk_list2  = calc_on_database(luk_list,  LB_CALC_TYPE_DATABASE)
    
    file = File.open(FILE_NAME, "w")
    
    file.write("[[")
    file.write(hp_list2.join(','))
    file.write("],[")
    file.write(mp_list2.join(','))
    file.write("],[")
    file.write(atk_list2.join(','))
    file.write("],[")
    file.write(pdef_list2.join(','))
    file.write("],[")
    file.write(mat_list2.join(','))
    file.write("],[")
    file.write(mdef_list2.join(','))
    file.write("],[")
    file.write(agi_list2.join(','))
    file.write("],[")
    file.write(luk_list2.join(','))
    file.write("]]")
    
    file.close
  end
  #--------------------------------------------------------------------------
  # ● パラメータ生成
  # list : パラメータのリスト
  # type : パラメータ生成タイプ
  #--------------------------------------------------------------------------
  def calc_on_database(list, type)
    case type
    when LB_CALC_TYPE_DATABASE
      for lv in 100..MAX_LEVEL
        tmp = (list[99] - list[98]) * (lv - 99) + list[99]
      
        list.push(tmp)
      end
      return list
    when LB_CALC_TYPE_DB_2ND_FUNC
        for lv in 100..MAX_LEVEL
        tmp = (list[1] * lv)^2 + list[2] * lv + list[3]
      
        list.push(tmp)
      end
      return list
    when LB_CALC_TYPE_DB_1ST_FUNC
      for lv in 100..MAX_LEVEL
        tmp = list[2] * lv + list[3]
      
        list.push(tmp)
      end
      return list
    when LB_CALC_TYPE_RANDOM
      tmp_list = [list[0], list[1]]
      for lv in 2..MAX_LEVEL
        case flg
        when LB_CALC_FLG_HP
          tmp = tmp_list[lv - 1] + rand(LB_CALC_BASE_HP)
        when LB_CALC_FLG_MP
          tmp = tmp_list[lv - 1] + rand(LB_CALC_BASE_MP)
        when LB_CALC_FLG_STS
          tmp = tmp_list[lv - 1] + rand(LB_CALC_BASE_STS)
        else
          p "異常なパラメータ種別フラグ"
          tmp = 0
        end
        
        tmp_list.push(tmp)
      end
      return tmp_list
    when LB_CALC_TYPE_BAKA
      tmp_list = [list[0], list[1]]
      for lv in 2..MAX_LEVEL
        case flg
        when LB_CALC_FLG_HP
          tmp = tmp_list[lv - 1] + rand(LB_CALC_BASE_HP * 2) - LB_CALC_BASE_HP
          tmp = [tmp, list[0]].max
        when LB_CALC_FLG_MP
          tmp = tmp_list[lv - 1] + rand(LB_CALC_BASE_MP * 2) - LB_CALC_BASE_MP
          tmp = [tmp, list[0]].max
        when LB_CALC_FLG_STS
          tmp = tmp_list[lv - 1] + rand(LB_CALC_BASE_STS * 2) - LB_CALC_BASE_STS
          tmp = [tmp, list[0]].max
        else
          p "異常なパラメータ種別フラグ"
          tmp = 0
        end
        
        tmp_list.push(tmp)
      end
      return tmp_list
    else
      p "異常なタイプ"
      return []
    end
  end
end


class Interpreter
  include MV_Param_Generate
  #--------------------------------------------------------------------------
  # ● パラメータ生成
  #--------------------------------------------------------------------------
  def mv_param_genetate
    make_param
    end
end
使用方法。 ツクールMVの data/Classes.js の "params":[[hogehoge]] の [[hogehoge]]の部分をまるっと薄緑色の部分にコピーします。 あとはイベントスクリプトで mv_param_genetate() を実行します。 output.txtが作成されるので、中身を ツクールMVの data/Classes.js の "params":[[hogehoge]] の [[hogehoge]]の部分 に一式全部上書きします。 その他カスタマイズポイント
MAX_LEVEL レベル上限
FILE_NAME 書き込み先ファイル名。 ここで指定したファイル名にパラメータが生成されます。
・算出方式
LB_CALC_TYPE_DATABASE データベース通り。 lv:現レベル p[x]:レベル x の能力値 として、 (p[99] - p[98]) * (lv - 99) をレベル 99 の能力値に加算。
LB_CALC_TYPE_DB_2ND_FUNC データベースを用いた二次関数。 a:レベル1の値 b:レベル2の値 c:レベル3の値 x:現レベル として、 ax2 + bx + c を用いて能力値を算出。
LB_CALC_TYPE_DB_1ST_FUNC データベースを用いた一次関数。 b:レベル2の値 c:レベル3の値 x:現レベル として、 bx + c を用いて能力値を算出。
LB_CALC_TYPE_RANDOM 乱数方式。 レベル1の値をベースに レベルアップする度に乱数で数値を加算し続ける方式
LB_CALC_TYPE_BAKA 乱高下方式。 レベルが上がる毎に能力が乱高下する方式。 バカゲーとかの使用にどうぞ

戻る