Project1

标题: 關於角色到達一定等級經驗值幅度更動設定問題 [打印本页]

作者: e900003    时间: 2014-2-26 19:25
标题: 關於角色到達一定等級經驗值幅度更動設定問題
本帖最后由 e900003 于 2014-2-26 19:35 编辑

因為我在看經驗值增加的幅度  再來測試遊戲看所需經驗值的時候
前期的經驗值增加的很多  到後期的時候所需經驗值的增加浮動就覺得有點少
所以我在想有沒有在角色到達一定的等級時候
經驗值增加的幅度就會有很大的變動

雖然說我有去搜尋有找到幾個 只是我不太會改腳本

有什麼方法可以把原本的腳本改成這種的功能...

另外我附上要改的腳本:
RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 限界突破 - KGC_LimitBreak ◆
  3. #_/    ◇ Last update : 2008/01/10 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  各種設定値の上限を変更します。
  6. #_/============================================================================
  7. #_/  なるべく [Scene_Debug] のすぐ下に導入してください。
  8. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  9.  
  10. #==============================================================================
  11. # ★ カスタマイズ項目 ★
  12. #==============================================================================
  13.  
  14. module KGC
  15. module LimitBreak
  16.   # ◆能力値算出方式
  17.   #   0..データベース通り。
  18.   #      (100以降は計算式として ACTOR_LV100_CALC を使用)
  19.   #
  20.   #   1..データベースを用いた2次関数。
  21.   #        a:レベル1の値  b:レベル2の値  c:レベル3の値  x:現レベル
  22.   #      として、
  23.   #        ax^2 + bx + c
  24.   #      を用いて能力値を算出。
  25.   #
  26.   #   2..データベースを用いた1次関数。
  27.   #        b:レベル2の値  c:レベル3の値  x:現レベル
  28.   #      として、
  29.   #        bx + c
  30.   #      を用いて能力値を算出。
  31.   #      (レベル2,3の値を使うのは、2次関数方式との使い分けを楽にするため)
  32.   CALC_PARAMETER_METHOD = 0
  33.  
  34.   # ◆レベル 100 以降の能力値計算式
  35.   #  (CALC_PARAMETER_METHOD が 0 のときに使用)
  36.   #  【lv..現レベル  p[x]..レベル x の能力値】
  37.   #  この計算結果をレベル 99 の能力値に加算。
  38.   ACTOR_LV100_CALC = "(p[99] - p[98]) * (lv - 99)"
  39.  
  40.   # ◆アクターのレベル上限
  41.   #  アクターID順に配列に格納(最初は nil)
  42.   ACTOR_LV_LIMIT = [nil]
  43.   # ◆上限未指定アクターのレベル上限
  44.   #  上限未指定(nil)のアクターはこの値を使用。
  45.   ACTOR_LV_LIMIT_DEFAULT = 250
  46.   $actover = ACTOR_LV_LIMIT_DEFAULT + 1
  47.   # ◆アクターの経験値上限
  48.   ACTOR_EXP_LIMIT = 99999999999
  49.   # ◆アクターのHP上限
  50.   ACTOR_HP_LIMIT  = 500000
  51.   # ◆アクターのSP上限
  52.   ACTOR_SP_LIMIT  = 500000
  53.   # ◆アクターの「腕力, 器用さ, 素早さ, 魔力」上限
  54.   ACTOR_ETC_LIMIT = 100000
  55.  
  56.   # ◆敵のHP上限
  57.   ENEMY_HP_LIMIT  = 1000000000000
  58.   # ◆敵のSP上限
  59.   ENEMY_SP_LIMIT  = 99999
  60.   # ◆敵の「腕力, 器用さ, 素早さ, 魔力」上限
  61.   ENEMY_ETC_LIMIT = 9999
  62.  
  63.   # ◆アクター能力値修正値(百分率)
  64.   #  アクターの能力値がデータベースの設定値の○%になる。
  65.   #  (上限値が高い場合に使用。データベースの値を使う場合は 100)
  66.   ACTOR_MAXHP_REVISE = 100  # MAXHP
  67.   ACTOR_MAXSP_REVISE = 100  # MAXSP
  68.   ACTOR_STR_REVISE   = 100  # 腕力
  69.   ACTOR_DEX_REVISE   = 100  # 器用さ
  70.   ACTOR_AGI_REVISE   = 100  # 素早さ
  71.   ACTOR_INT_REVISE   = 100  # 魔力
  72.  
  73.   # ◆敵能力値修正値(百分率)
  74.   #  敵の能力値がデータベースの設定値の○%になる。
  75.   ENEMY_MAXHP_REVISE = 100  # MAXHP
  76.   ENEMY_MAXSP_REVISE = 100  # MAXSP
  77.   ENEMY_STR_REVISE   = 100  # 腕力
  78.   ENEMY_DEX_REVISE   = 100  # 器用さ
  79.   ENEMY_AGI_REVISE   = 100  # 素早さ
  80.   ENEMY_INT_REVISE   = 100  # 魔力
  81.   ENEMY_ATK_REVISE   = 100  # 攻撃力
  82.   ENEMY_PDEF_REVISE  = 100  # 物理防御
  83.   ENEMY_MDEF_REVISE  = 100  # 魔法防御
  84.  
  85.   # ◆所持金上限
  86.   GOLD_LIMIT = 9999999999
  87.  
  88.   # ◆アイテム所持数上限
  89.   ITEM_LIMIT = []  # ← これは消さないこと!
  90.   # この下に、アイテム所持数の上限を
  91.   #   ITEM_LIMIT[アイテムID] = 所持数上限
  92.   # という書式で設定。
  93.   #  <例> アイテム 1 は 99 個所持可能
  94.   #  ITEM_LIMIT[1] = 99
  95.  
  96.   # ◆武器所持数上限
  97.   #  指定方法はアイテムと同じ。
  98.   WEAPON_LIMIT = []  # ← これは消さないこと!
  99.   # ◆防具所持数上限
  100.   #  指定方法はアイテムと同じ。
  101.   ARMOR_LIMIT = []  # ← これは消さないこと!
  102.   #--------------------------------------------------------------------------
  103.   #物品持有數上限設定:
  104.   ITEM_LIMIT[132] = 200
  105.   ITEM_LIMIT[143] = 1
  106.   ITEM_LIMIT[151] = 200
  107.   ITEM_LIMIT[154] = 1
  108.   ITEM_LIMIT[156] = 200
  109.   ITEM_LIMIT[157] = 1
  110.   ITEM_LIMIT[162] = 1
  111.   #武器持有數上限設定:
  112.  
  113.   #防具持有數上限設定:
  114.  
  115.   #--------------------------------------------------------------------------
  116.  
  117.   # ◆アイテム所持数上限 (デフォルト)
  118.   #  上限を指定しなかったアイテム、武器、防具はこの値を上限として使用。
  119.   ITEM_LIMIT_DEFAULT = 99
  120.  
  121.   module_function
  122.   #--------------------------------------------------------------------------
  123.   # ○ 敵能力値直接指定
  124.   #     ここで、敵の最大HPなどを直接指定することができます。
  125.   #     データベースに入りきらない数値を指定する場合に使用してください。
  126.   #--------------------------------------------------------------------------
  127.   def set_enemy_status
  128.     #  <例> ID:10 の敵のHPを 2000000 にする場合
  129.     # $data_enemies[10].maxhp = 2000000
  130.     #  <例> ID:16 の敵の攻撃力を 5000 にする場合
  131.     # $data_enemies[16].atk = 5000
  132.     $data_enemies[85].maxhp = 5000000
  133.   end
  134. end
  135. end
  136.  
  137. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  138.  
  139. $imported = {} if $imported == nil
  140. $imported["LimitBreak"] = true
  141.  
  142. if $game_special_elements == nil
  143.   $game_special_elements = {}
  144.   $data_system = load_data("Data/System.rxdata")
  145. end
  146.  
  147. module KGC::LimitBreak
  148.   module_function
  149.   #--------------------------------------------------------------------------
  150.   # ● 敵の能力補正を適用
  151.   #--------------------------------------------------------------------------
  152.   def revise_enemy_parameters
  153.     (1...$data_enemies.size).each { |i|
  154.       enemy = $data_enemies[i]
  155.       enemy.maxhp = enemy.maxhp * ENEMY_MAXHP_REVISE / 100
  156.       enemy.maxsp = enemy.maxsp * ENEMY_MAXSP_REVISE / 100
  157.       enemy.str = enemy.str * ENEMY_STR_REVISE / 100
  158.       enemy.dex = enemy.dex * ENEMY_DEX_REVISE / 100
  159.       enemy.agi = enemy.agi * ENEMY_AGI_REVISE / 100
  160.       enemy.int = enemy.int * ENEMY_INT_REVISE / 100
  161.       enemy.atk = enemy.atk * ENEMY_ATK_REVISE / 100
  162.       enemy.pdef = enemy.pdef * ENEMY_PDEF_REVISE / 100
  163.       enemy.mdef = enemy.mdef * ENEMY_MDEF_REVISE / 100
  164.     }
  165.   end
  166. end
  167.  
  168. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  169.  
  170. #==============================================================================
  171. # ■ RPG::Item
  172. #==============================================================================
  173.  
  174. class RPG::Item
  175.   #--------------------------------------------------------------------------
  176.   # ● 所持数上限
  177.   #--------------------------------------------------------------------------
  178.   def number_limit
  179.     if KGC::LimitBreak::ITEM_LIMIT[self.id] != nil
  180.       return KGC::LimitBreak::ITEM_LIMIT[self.id]
  181.     else
  182.       return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  183.     end
  184.   end
  185. end
  186.  
  187. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  188.  
  189. #==============================================================================
  190. # ■ RPG::Weapon
  191. #==============================================================================
  192.  
  193. class RPG::Weapon
  194.   #--------------------------------------------------------------------------
  195.   # ● 所持数上限
  196.   #--------------------------------------------------------------------------
  197.   def number_limit
  198.     if KGC::LimitBreak::WEAPON_LIMIT[self.id] != nil
  199.       return KGC::LimitBreak::WEAPON_LIMIT[self.id]
  200.     else
  201.       return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  202.     end
  203.   end
  204. end
  205.  
  206. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  207.  
  208. #==============================================================================
  209. # ■ RPG::Armor
  210. #==============================================================================
  211.  
  212. class RPG::Armor
  213.   #--------------------------------------------------------------------------
  214.   # ● 所持数上限
  215.   #--------------------------------------------------------------------------
  216.   def number_limit
  217.     if KGC::LimitBreak::ARMOR_LIMIT[self.id] != nil
  218.       return KGC::LimitBreak::ARMOR_LIMIT[self.id]
  219.     else
  220.       return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  221.     end
  222.   end
  223. end
  224.  
  225. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  226.  
  227. #==============================================================================
  228. # ■ Game_Battler (分割定義 1)
  229. #==============================================================================
  230.  
  231. class Game_Battler
  232.   #--------------------------------------------------------------------------
  233.   # ● MaxHP の取得
  234.   #--------------------------------------------------------------------------
  235.   def maxhp
  236.     n = [base_maxhp + @maxhp_plus, 1].max
  237.     @states.each { |i| n *= $data_states[i].maxhp_rate / 100.0 }
  238.     n = [[Integer(n), 1].max, maxhp_limit].min
  239.     return n
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● MaxSP の取得
  243.   #--------------------------------------------------------------------------
  244.   def maxsp
  245.     n = [base_maxsp + @maxsp_plus, 0].max
  246.     @states.each { |i| n *= $data_states[i].maxsp_rate / 100.0 }
  247.     n = [[Integer(n), 0].max, maxsp_limit].min
  248.     return n
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● 腕力の取得
  252.   #--------------------------------------------------------------------------
  253.   def str
  254.     n = [base_str + @str_plus, 1].max
  255.     @states.each { |i| n *= $data_states[i].str_rate / 100.0 }
  256.     n = [[Integer(n), 1].max, parameter_limit].min
  257.     return n
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # ● 器用さの取得
  261.   #--------------------------------------------------------------------------
  262.   def dex
  263.     n = [base_dex + @dex_plus, 1].max
  264.     @states.each { |i| n *= $data_states[i].dex_rate / 100.0 }
  265.     n = [[Integer(n), 1].max, parameter_limit].min
  266.     return n
  267.   end
  268.   #--------------------------------------------------------------------------
  269.   # ● 素早さの取得
  270.   #--------------------------------------------------------------------------
  271.   def agi
  272.     n = [base_agi + @agi_plus, 1].max
  273.     @states.each { |i| n *= $data_states[i].agi_rate / 100.0 }
  274.     n = [[Integer(n), 1].max, parameter_limit].min
  275.     return n
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ● 魔力の取得
  279.   #--------------------------------------------------------------------------
  280.   def int
  281.     n = [base_int + @int_plus, 1].max
  282.     @states.each { |i| n *= $data_states[i].int_rate / 100.0 }
  283.     n = [[Integer(n), 1].max, parameter_limit].min
  284.     return n
  285.   end
  286.   #--------------------------------------------------------------------------
  287.   # ● MaxHP の設定
  288.   #     maxhp : 新しい MaxHP
  289.   #--------------------------------------------------------------------------
  290.   def maxhp=(maxhp)
  291.     @maxhp_plus += maxhp - self.maxhp
  292.     @maxhp_plus = [[@maxhp_plus, -maxhp_limit].max, maxhp_limit].min
  293.     @hp = [@hp, self.maxhp].min
  294.   end
  295.   #--------------------------------------------------------------------------
  296.   # ● MaxSP の設定
  297.   #     maxsp : 新しい MaxSP
  298.   #--------------------------------------------------------------------------
  299.   def maxsp=(maxsp)
  300.     @maxsp_plus += maxsp - self.maxsp
  301.     @maxsp_plus = [[@maxsp_plus, -maxsp_limit].max, maxsp_limit].min
  302.     @sp = [@sp, self.maxsp].min
  303.   end
  304.   #--------------------------------------------------------------------------
  305.   # ● 腕力の設定
  306.   #     str : 新しい腕力
  307.   #--------------------------------------------------------------------------
  308.   def str=(str)
  309.     @str_plus += str - self.str
  310.     @str_plus = [[@str_plus, -parameter_limit].max, parameter_limit].min
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ● 器用さの設定
  314.   #     dex : 新しい器用さ
  315.   #--------------------------------------------------------------------------
  316.   def dex=(dex)
  317.     @dex_plus += dex - self.dex
  318.     @dex_plus = [[@dex_plus, -parameter_limit].max, parameter_limit].min
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 素早さの設定
  322.   #     agi : 新しい素早さ
  323.   #--------------------------------------------------------------------------
  324.   def agi=(agi)
  325.     @agi_plus += agi - self.agi
  326.     @agi_plus = [[@agi_plus, -parameter_limit].max, parameter_limit].min
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● 魔力の設定
  330.   #     int : 新しい魔力
  331.   #--------------------------------------------------------------------------
  332.   def int=(int)
  333.     @int_plus += int - self.int
  334.     @int_plus = [[@int_plus, -parameter_limit].max, parameter_limit].min
  335.   end
  336. end
  337.  
  338. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  339.  
  340. #==============================================================================
  341. # ■ Game_Actor
  342. #==============================================================================
  343.  
  344. class Game_Actor < Game_Battler
  345.   #--------------------------------------------------------------------------
  346.   # ● EXP 計算
  347.   #--------------------------------------------------------------------------
  348.   def make_exp_list
  349.     actor = $data_actors[@actor_id]
  350.     @exp_list[1] = 0
  351.     pow_i = 2.4 + actor.exp_inflation / 100.0
  352.     (2..(self.final_level + 1)).each { |i|
  353.       if i > self.final_level
  354.         @exp_list[i] = 0
  355.       else
  356.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  357.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  358.       end
  359.     }
  360.   end
  361.   #--------------------------------------------------------------------------
  362.   # ● EXP の変更
  363.   #     exp : 新しい EXP
  364.   #--------------------------------------------------------------------------
  365.   def exp=(exp)
  366.     if $imported["ExpGoldIncrease"]
  367.       rate = calc_exp_increase_rate(KGC::EXPGLD_INC_PERMIT_DOUBLE)
  368.       exp = [url=home.php?mod=space&uid=13302]@exp[/url] + (exp - @exp) * rate / 100
  369.     end
  370.     [url=home.php?mod=space&uid=13302]@exp[/url] = [[exp, KGC::LimitBreak::ACTOR_EXP_LIMIT].min, 0].max
  371.     # レベルアップ
  372.     while [url=home.php?mod=space&uid=13302]@exp[/url] >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  373.       [url=home.php?mod=space&uid=22147]@level[/url] += 1
  374.       # スキル習得
  375.       $data_classes[@class_id].learnings.each { |j|
  376.         if j.level == @level
  377.           learn_skill(j.skill_id)
  378.         end
  379.       }
  380.     end
  381.     # レベルダウン
  382.     while @exp < @exp_list[@level]
  383.       [url=home.php?mod=space&uid=22147]@level[/url] -= 1
  384.     end
  385.     # 現在の HP と SP が最大値を超えていたら修正
  386.     @hp = [@hp, self.maxhp].min
  387.     @sp = [@sp, self.maxsp].min
  388.   end
  389.   #--------------------------------------------------------------------------
  390.   # ○ パラメータの取得
  391.   #--------------------------------------------------------------------------
  392.   if KGC::LimitBreak::CALC_PARAMETER_METHOD == 0
  393.     def parameter(type)
  394.       if [url=home.php?mod=space&uid=22147]@level[/url] >= 100
  395.         calc_text = KGC::LimitBreak::ACTOR_LV100_CALC.dup
  396.         calc_text.gsub!(/lv/i) { "@level" }
  397.         calc_text.gsub!(/p\[(\d+)\]/i) {
  398.           "$data_actors[@actor_id].parameters[type, #{$1.to_i}]"
  399.         }
  400.         return $data_actors[@actor_id].parameters[type, 99] + eval(calc_text)
  401.       else
  402.         return $data_actors[@actor_id].parameters[type, @level]
  403.       end
  404.     end
  405.   elsif KGC::LimitBreak::CALC_PARAMETER_METHOD == 1
  406.     def parameter(type)
  407.       a = $data_actors[@actor_id].parameters[type, 1]
  408.       b = $data_actors[@actor_id].parameters[type, 2]
  409.       c = $data_actors[@actor_id].parameters[type, 3]
  410.       return a * @level * @level + b * @level + c
  411.     end
  412.   elsif KGC::LimitBreak::CALC_PARAMETER_METHOD == 2
  413.     def parameter(type)
  414.       b = $data_actors[@actor_id].parameters[type, 2]
  415.       c = $data_actors[@actor_id].parameters[type, 3]
  416.       return b * @level + c
  417.     end
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # ● 基本 MaxHP の取得
  421.   #--------------------------------------------------------------------------
  422.   def base_maxhp
  423.     n = self.parameter(0)
  424.     return n * KGC::LimitBreak::ACTOR_MAXHP_REVISE / 100
  425.   end
  426.   #--------------------------------------------------------------------------
  427.   # ● MaxHP の取得
  428.   #--------------------------------------------------------------------------
  429.   def maxhp
  430.     n = [base_maxhp + @maxhp_plus, 1].max
  431.     @states.each { |i| n *= $data_states[i].maxhp_rate / 100.0 }
  432.     n = [[Integer(n), 1].max, maxhp_limit].min
  433.     return n
  434.   end
  435.   #--------------------------------------------------------------------------
  436.   # ● 基本 MaxSP の取得
  437.   #--------------------------------------------------------------------------
  438.   def base_maxsp
  439.     n = self.parameter(1)
  440.     return n * KGC::LimitBreak::ACTOR_MAXSP_REVISE / 100
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # ● MaxSP の取得
  444.   #--------------------------------------------------------------------------
  445.   def maxsp
  446.     n = [base_maxsp + @maxsp_plus, 0].max
  447.     @states.each { |i| n *= $data_states[i].maxsp_rate / 100.0 }
  448.     n = [[Integer(n), 0].max, maxsp_limit].min
  449.     return n
  450.   end
  451.   #--------------------------------------------------------------------------
  452.   # ● 基本腕力の取得
  453.   #--------------------------------------------------------------------------
  454.   def base_str
  455.     n = self.parameter(2)
  456.     if $imported["EquipExtension"]
  457.       n += equipment_parameter(2)
  458.     else
  459.       equip_item_list.each { |item| n += (item != nil ? item.str_plus : 0) }
  460.     end
  461.     return [[n * KGC::LimitBreak::ACTOR_STR_REVISE / 100, 1].max, parameter_limit].min
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # ● 基本器用さの取得
  465.   #--------------------------------------------------------------------------
  466.   def base_dex
  467.     n = self.parameter(3)
  468.     if $imported["EquipExtension"]
  469.       n += equipment_parameter(3)
  470.     else
  471.       equip_item_list.each { |item| n += (item != nil ? item.dex_plus : 0) }
  472.     end
  473.     return [[n * KGC::LimitBreak::ACTOR_DEX_REVISE / 100, 1].max, parameter_limit].min
  474.   end
  475.   #--------------------------------------------------------------------------
  476.   # ● 基本素早さの取得
  477.   #--------------------------------------------------------------------------
  478.   def base_agi
  479.     n = self.parameter(4)
  480.     if $imported["EquipExtension"]
  481.       n += equipment_parameter(4)
  482.     else
  483.       equip_item_list.each { |item| n += (item != nil ? item.agi_plus : 0) }
  484.     end
  485.     return [[n * KGC::LimitBreak::ACTOR_AGI_REVISE / 100, 1].max, parameter_limit].min
  486.   end
  487.   #--------------------------------------------------------------------------
  488.   # ● 基本魔力の取得
  489.   #--------------------------------------------------------------------------
  490.   def base_int
  491.     n = self.parameter(5)
  492.     if $imported["EquipExtension"]
  493.       n += equipment_parameter(5)
  494.     else
  495.       equip_item_list.each { |item| n += (item != nil ? item.int_plus : 0) }
  496.     end
  497.     return [[n * KGC::LimitBreak::ACTOR_INT_REVISE / 100, 1].max, parameter_limit].min
  498.   end
  499.   #--------------------------------------------------------------------------
  500.   # ● レベルの変更
  501.   #     level : 新しいレベル
  502.   #--------------------------------------------------------------------------
  503.   def level=(level)
  504.     # 上下限チェック
  505.     level = [[level, self.final_level].min, 1].max
  506.     # EXP を変更
  507.     self.exp = @exp_list[level]
  508.   end
  509.   #--------------------------------------------------------------------------
  510.   # ● 最終レベルの取得
  511.   #--------------------------------------------------------------------------
  512.   def final_level
  513.     return (KGC::LimitBreak::ACTOR_LV_LIMIT[@actor_id] != nil ?
  514.       KGC::LimitBreak::ACTOR_LV_LIMIT[@actor_id] : KGC::LimitBreak::ACTOR_LV_LIMIT_DEFAULT)
  515.   end
  516.   #--------------------------------------------------------------------------
  517.   # ○ MaxHP 限界値の取得
  518.   #--------------------------------------------------------------------------
  519.   def maxhp_limit
  520.     return KGC::LimitBreak::ACTOR_HP_LIMIT
  521.   end
  522.   #--------------------------------------------------------------------------
  523.   # ○ MaxSP 限界値の取得
  524.   #--------------------------------------------------------------------------
  525.   def maxsp_limit
  526.     return KGC::LimitBreak::ACTOR_SP_LIMIT
  527.   end
  528.   #--------------------------------------------------------------------------
  529.   # ○ パラメータ限界値の取得
  530.   #--------------------------------------------------------------------------
  531.   def parameter_limit
  532.     return KGC::LimitBreak::ACTOR_ETC_LIMIT
  533.   end
  534.   #--------------------------------------------------------------------------
  535.   # ○ 装備武器リストの取得
  536.   #--------------------------------------------------------------------------
  537.   def equip_weapon_list
  538.     result = [$data_weapons[@weapon_id]]
  539.     return result.compact
  540.   end
  541.   #--------------------------------------------------------------------------
  542.   # ○ 装備防具リストの取得
  543.   #--------------------------------------------------------------------------
  544.   def equip_armor_list
  545.     result = []
  546.     (1..4).each { |i| result << $data_armors[eval("@armor#{i}_id")] }
  547.     return result.compact
  548.   end
  549.   #--------------------------------------------------------------------------
  550.   # ○ 装備品リストの取得
  551.   #--------------------------------------------------------------------------
  552.   def equip_item_list
  553.     return equip_weapon_list + equip_armor_list
  554.   end
  555. end
  556.  
  557. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  558.  
  559. #==============================================================================
  560. # ■ Game_Enemy
  561. #==============================================================================
  562.  
  563. class Game_Enemy < Game_Battler
  564.   #--------------------------------------------------------------------------
  565.   # ○ MaxHP 限界値の取得
  566.   #--------------------------------------------------------------------------
  567.   def maxhp_limit
  568.     return KGC::LimitBreak::ENEMY_HP_LIMIT
  569.   end
  570.   #--------------------------------------------------------------------------
  571.   # ○ MaxSP 限界値の取得
  572.   #--------------------------------------------------------------------------
  573.   def maxsp_limit
  574.     return KGC::LimitBreak::ENEMY_SP_LIMIT
  575.   end
  576.   #--------------------------------------------------------------------------
  577.   # ○ パラメータ限界値の取得
  578.   #--------------------------------------------------------------------------
  579.   def parameter_limit
  580.     return KGC::LimitBreak::ENEMY_ETC_LIMIT
  581.   end
  582. end
  583.  
  584. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  585.  
  586. #==============================================================================
  587. # ■ Game_Party
  588. #==============================================================================
  589.  
  590. class Game_Party
  591.   #--------------------------------------------------------------------------
  592.   # ● ゴールドの増加 (減少)
  593.   #     n : 金額
  594.   #--------------------------------------------------------------------------
  595.   def gain_gold(n)
  596.     # 所持金の限界値変更
  597.     [url=home.php?mod=space&uid=236945]@gold[/url] = [[[url=home.php?mod=space&uid=236945]@gold[/url] + n, 0].max, KGC::LimitBreak::GOLD_LIMIT].min
  598.   end
  599.   #--------------------------------------------------------------------------
  600.   # ● アイテムの増加 (減少)
  601.   #     item_id : アイテム ID
  602.   #     n       : 個数
  603.   #--------------------------------------------------------------------------
  604.   def gain_item(item_id, n)
  605.     # ハッシュの個数データを更新
  606.     if item_id > 0
  607.       limit = $data_items[item_id].number_limit
  608.       @items[item_id] = [[item_number(item_id) + n, 0].max, limit].min
  609.     end
  610.   end
  611.   #--------------------------------------------------------------------------
  612.   # ● 武器の増加 (減少)
  613.   #     weapon_id : 武器 ID
  614.   #     n         : 個数
  615.   #--------------------------------------------------------------------------
  616.   def gain_weapon(weapon_id, n)
  617.     # ハッシュの個数データを更新
  618.     if weapon_id > 0
  619.       limit = $data_weapons[weapon_id].number_limit
  620.       @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, limit].min
  621.     end
  622.   end
  623.   #--------------------------------------------------------------------------
  624.   # ● 防具の増加 (減少)
  625.   #     armor_id : 防具 ID
  626.   #     n        : 個数
  627.   #--------------------------------------------------------------------------
  628.   def gain_armor(armor_id, n)
  629.     # ハッシュの個数データを更新
  630.     if armor_id > 0
  631.       limit = $data_armors[armor_id].number_limit
  632.       @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, limit].min
  633.     end
  634.   end
  635. end
  636.  
  637. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  638.  
  639. #==============================================================================
  640. # ■ Window_ShopBuy
  641. #==============================================================================
  642.  
  643. class Window_ShopBuy < Window_Selectable
  644.   #--------------------------------------------------------------------------
  645.   # ● 項目の描画
  646.   #     index : 項目番号
  647.   #--------------------------------------------------------------------------
  648.   def draw_item(index)
  649.     item = @data[index]
  650.     # アイテムの所持数を取得
  651.     case item
  652.     when RPG::Item
  653.       number = $game_party.item_number(item.id)
  654.     when RPG::Weapon
  655.       number = $game_party.weapon_number(item.id)
  656.     when RPG::Armor
  657.       number = $game_party.armor_number(item.id)
  658.     end
  659.     # 価格が所持金以下、かつ所持数が上限でなければ通常文字色に、
  660.     # そうでなければ無効文字色に設定
  661.     if item.price <= $game_party.gold && number < item.number_limit
  662.       self.contents.font.color = normal_color
  663.     else
  664.       self.contents.font.color = disabled_color
  665.     end
  666.     x = 4
  667.     y = index * 32
  668.     rect = Rect.new(x, y, self.width - 32, 32)
  669.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  670.     bitmap = RPG::Cache.icon(item.icon_name)
  671.     opacity = self.contents.font.color == normal_color ? 255 : 128
  672.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  673.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  674.     self.contents.draw_text(x + 240, y, 88, 32, item.price.to_s, 2)
  675.   end
  676. end
  677.  
  678. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  679.  
  680. #==============================================================================
  681. # ■ Scene_Title
  682. #==============================================================================
  683.  
  684. class Scene_Title
  685.   #--------------------------------------------------------------------------
  686.   # ● コマンド : ニューゲーム
  687.   #--------------------------------------------------------------------------
  688.   alias command_new_game_KGC_LimitBreak command_new_game
  689.   def command_new_game
  690.     command_new_game_KGC_LimitBreak
  691.  
  692.     KGC::LimitBreak.revise_enemy_parameters
  693.     KGC::LimitBreak.set_enemy_status
  694.   end
  695.   #--------------------------------------------------------------------------
  696.   # ● コマンド : コンティニュー
  697.   #--------------------------------------------------------------------------
  698.   alias command_continue_KGC_LimitBreak command_continue
  699.   def command_continue
  700.     command_continue_KGC_LimitBreak
  701.  
  702.     KGC::LimitBreak.revise_enemy_parameters
  703.     KGC::LimitBreak.set_enemy_status
  704.   end
  705.   #--------------------------------------------------------------------------
  706.   # ● 戦闘テスト
  707.   #--------------------------------------------------------------------------
  708.   alias battle_test_KGC_LimitBreak battle_test
  709.   def battle_test
  710.     battle_test_KGC_LimitBreak
  711.  
  712.     KGC::LimitBreak.revise_enemy_parameters
  713.     KGC::LimitBreak.set_enemy_status
  714.   end
  715. end
  716.  
  717. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  718.  
  719. #==============================================================================
  720. # ■ Scene_Shop
  721. #==============================================================================
  722.  
  723. class Scene_Shop
  724.   #--------------------------------------------------------------------------
  725.   # ● フレーム更新 (購入ウィンドウがアクティブの場合)
  726.   #--------------------------------------------------------------------------
  727.   def update_buy
  728.     # ステータスウィンドウのアイテムを設定
  729.     @status_window.item = @buy_window.item
  730.     # B ボタンが押された場合
  731.     if Input.trigger?(Input::B)
  732.       # キャンセル SE を演奏
  733.       $game_system.se_play($data_system.cancel_se)
  734.       # ウィンドウの状態を初期モードへ
  735.       @command_window.active = true
  736.       @dummy_window.visible = true
  737.       @buy_window.active = false
  738.       @buy_window.visible = false
  739.       @status_window.visible = false
  740.       @status_window.item = nil
  741.       # ヘルプテキストを消去
  742.       @help_window.set_text("")
  743.       return
  744.     end
  745.     # C ボタンが押された場合
  746.     if Input.trigger?(Input::C)
  747.       # アイテムを取得
  748.       @item = @buy_window.item
  749.       # アイテムが無効の場合、または価格が所持金より上の場合
  750.       if @item == nil or @item.price > $game_party.gold
  751.         # ブザー SE を演奏
  752.         $game_system.se_play($data_system.buzzer_se)
  753.         return
  754.       end
  755.       # アイテムの所持数を取得
  756.       case @item
  757.       when RPG::Item
  758.         number = $game_party.item_number(@item.id)
  759.       when RPG::Weapon
  760.         number = $game_party.weapon_number(@item.id)
  761.       when RPG::Armor
  762.         number = $game_party.armor_number(@item.id)
  763.       end
  764.       # すでに上限まで個所持している場合
  765.       limit = @item.number_limit
  766.       if number >= limit
  767.         # ブザー SE を演奏
  768.         $game_system.se_play($data_system.buzzer_se)
  769.         return
  770.       end
  771.       # 決定 SE を演奏
  772.       $game_system.se_play($data_system.decision_se)
  773.       # 最大購入可能個数を計算
  774.       max = (@item.price == 0 ? limit : $game_party.gold / @item.price)
  775.       max = [max, limit - number].min
  776.       # ウィンドウの状態を個数入力モードへ
  777.       @buy_window.active = false
  778.       @buy_window.visible = false
  779.       @number_window.set(@item, max, @item.price)
  780.       @number_window.active = true
  781.       @number_window.visible = true
  782.     end
  783.   end
  784. end
   




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1