查看: 3611|回复: 13

[已经解决] 跪求角色和敌人的能力破限脚本

[复制链接]
梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
回帖
50
发表于 2016-6-16 22:13:40 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
打算做多周目的游戏,叠加属性的话很快角色的属性就达到极限了。而且还有就是敌人属性太弱玩着也会没意思。希望有哪位大神有比较好的能力破限还不会有问题的脚本。能直接改数据库最好,不能的话希望起码尽量能实现敌人属性破限吧……拜托了。

点评

这没什么,那些商业游戏的多周目不也是999上限  发表于 2016-6-16 22:35

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-6-16 22:29:38 | 显示全部楼层
多周目后虐怪了好玩些吧,可以考虑弄一种可以随时改变敌人难度的,这样也不错。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
回帖
50
 楼主| 发表于 2016-6-16 23:58:36 | 显示全部楼层
夜狠简单 发表于 2016-6-16 22:29
多周目后虐怪了好玩些吧,可以考虑弄一种可以随时改变敌人难度的,这样也不错。 ...

呜,改敌人能力上限很麻烦吗?
比如名称拓展之类的方式……
我还是想增强敌人,不然加了一堆角色各种提升的脚本,敌人太弱没法玩了啊……
回复

使用道具 举报

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
回帖
23
发表于 2016-6-17 20:00:29 | 显示全部楼层
本帖最后由 wxlhj860 于 2016-6-18 00:58 编辑

在下就只写一种属性,其他属性的话,楼主参照Game_Enemy这个类,有许多"base_"前缀的定义,再更改一下方法名"base_maxhp"就可以了~其实大家都只是觉得比较麻烦。。
找到脚本中的Game_Enemy,45-105都是可以改敌人属性的。
举个例子:
[pre lang="ruby"]  #--------------------------------------------------------------------------
  # ● 获取基本 MaxHP
  #--------------------------------------------------------------------------
  def base_maxhp
    return $data_enemies[@enemy_id].maxhp
  end[/pre]

其中return后的内容,就是敌人该属性的值。@enemy_id是敌人的ID,ID从数据库那里翻。
如果你要每个敌人都设定不同的属性,突破数据库的值,这是最原始且最愚蠢的办法了~

[pre lang="ruby"]  #--------------------------------------------------------------------------
  # ● 获取基本 MaxHP
  #--------------------------------------------------------------------------
  def base_maxhp
    n = $data_enemies[@enemy_id].maxhp
    # 当敌人ID等于1的时候
    if @enemy_id == 1
      # 赋值
      n = 9999999
    end
    return n
  end[/pre]

先自己学学,理解一下最简单的办法~
回复

使用道具 举报

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
回帖
50
 楼主| 发表于 2016-6-17 21:19:52 | 显示全部楼层
wxlhj860 发表于 2016-6-17 20:00
在下就只写一种属性,其他属性的话,楼主参照Game_Enemy这个类,有许多"base_"前缀的定义,再更改一下方法 ...

这个具体怎么理解和使用呢……?
虽然不算萌新但是对RUBY代码还是有些理解困难。
求指教……
回复

使用道具 举报

梦石
0
星屑
65
在线时间
15 小时
注册时间
2015-10-1
回帖
14
发表于 2016-6-17 23:39:30 | 显示全部楼层
说一句,盲目增加敌人属性,是最不明智的方法
回复

使用道具 举报

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
回帖
50
 楼主| 发表于 2016-6-17 23:41:43 | 显示全部楼层
nightaround 发表于 2016-6-17 23:39
说一句,盲目增加敌人属性,是最不明智的方法

会有什么问题出现吗……?
回复

使用道具 举报

梦石
0
星屑
65
在线时间
15 小时
注册时间
2015-10-1
回帖
14
发表于 2016-6-17 23:44:23 | 显示全部楼层
望月神绮 发表于 2016-6-17 23:41
会有什么问题出现吗……?

不会,不过如果整个游戏一直这样的话会显得很无聊……
回复

使用道具 举报

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
回帖
50
 楼主| 发表于 2016-6-17 23:46:20 | 显示全部楼层
nightaround 发表于 2016-6-17 23:44
不会,不过如果整个游戏一直这样的话会显得很无聊……

会有其他的特色和彩蛋啦……
但是确实感觉属性封顶不太舒服,而且感觉伤害值之类高一些,看着也比较爽……
所以想增强一下敌人。有办法吗QAQ
回复

使用道具 举报

梦石
0
星屑
65
在线时间
15 小时
注册时间
2015-10-1
回帖
14
发表于 2016-6-18 00:08:14 | 显示全部楼层
本帖最后由 nightaround 于 2016-6-18 00:11 编辑

啊,属性破限的脚本我是有

[pre lang="ruby" line="3"]#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ 限界突破 - KGC_LimitBreak ◆
#_/    ◇ Last update : 2008/01/10 ◇
#_/----------------------------------------------------------------------------
#_/  各種設定値の上限を変更します。
#_/============================================================================
#_/  なるべく [Scene_Debug] のすぐ下に導入してください。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================

module KGC
  module LimitBreak
    # ◆能力値算出方式
    #   0..データベース通り。
    #      (100以降は計算式として ACTOR_LV100_CALC を使用)
    #
    #   1..データベースを用いた2次関数。
    #        a:レベル1の値  b:レベル2の値  c:レベル3の値  x:現レベル
    #      として、
    #        ax^2 + bx + c
    #      を用いて能力値を算出。
    #
    #   2..データベースを用いた1次関数。
    #        b:レベル2の値  c:レベル3の値  x:現レベル
    #      として、
    #        bx + c
    #      を用いて能力値を算出。
    #      (レベル2,3の値を使うのは、2次関数方式との使い分けを楽にするため)
    CALC_PARAMETER_METHOD = 0

    # ◆レベル 100 以降の能力値計算式
    #  (CALC_PARAMETER_METHOD が 0 のときに使用)
    #  【lv..現レベル  p[x]..レベル x の能力値】
    #  この計算結果をレベル 99 の能力値に加算。
    ACTOR_LV100_CALC = "(p[99] - p[98]) * (lv - 99)"


    # ◆アクターのレベル上限
    #  アクターID順に配列に格納(最初は nil)
    ACTOR_LV_LIMIT = [nil]
    # ◆上限未指定アクターのレベル上限
    #  上限未指定(nil)のアクターはこの値を使用。
    ACTOR_LV_LIMIT_DEFAULT =999
    $actover = ACTOR_LV_LIMIT_DEFAULT + 1
    # ◆アクターの経験値上限
    ACTOR_EXP_LIMIT = 999999999999999
    # ◆アクターのHP上限
    ACTOR_HP_LIMIT  = 999999
    # ◆アクターのSP上限
    ACTOR_SP_LIMIT  = 999999
    # ◆アクターの「腕力, 器用さ, 素早さ, 魔力」上限
    ACTOR_ETC_LIMIT = 99999

    # ◆敵のHP上限
    ENEMY_HP_LIMIT  = 99999999
    # ◆敵のSP上限
    ENEMY_SP_LIMIT  = 99999999
    # ◆敵の「腕力, 器用さ, 素早さ, 魔力」上限
    ENEMY_ETC_LIMIT = 500000





    # ◆アクター能力値修正値(百分率)
    #  アクターの能力値がデータベースの設定値の○%になる。
    #  (上限値が高い場合に使用。データベースの値を使う場合は 100)
    ACTOR_MAXHP_REVISE = 100  # MAXHP
    ACTOR_MAXSP_REVISE = 100  # MAXSP
    ACTOR_STR_REVISE   = 100  # 腕力
    ACTOR_DEX_REVISE   = 100  # 器用さ
    ACTOR_AGI_REVISE   = 100  # 素早さ
    ACTOR_INT_REVISE   = 100  # 魔力

    # ◆敵能力値修正値(百分率)
    #  敵の能力値がデータベースの設定値の○%になる。
    ENEMY_MAXHP_REVISE = 100  # MAXHP
    ENEMY_MAXSP_REVISE = 100  # MAXSP
    ENEMY_STR_REVISE   = 100  # 腕力
    ENEMY_DEX_REVISE   = 100  # 器用さ
    ENEMY_AGI_REVISE   = 100  # 素早さ
    ENEMY_INT_REVISE   = 100  # 魔力
    ENEMY_ATK_REVISE   = 100  # 攻撃力
    ENEMY_PDEF_REVISE  = 100  # 物理防御
    ENEMY_MDEF_REVISE  = 100  # 魔法防御

    # ◆所持金上限
    GOLD_LIMIT = 9999999999

    # ◆アイテム所持数上限
    ITEM_LIMIT = []  # ← これは消さないこと!
    # この下に、アイテム所持数の上限を
    #   ITEM_LIMIT[アイテムID] = 所持数上限
    # という書式で設定。
    #  <例> アイテム 1 は 99 個所持可能
    #  ITEM_LIMIT[1] = 99

    # ◆武器所持数上限
    #  指定方法はアイテムと同じ。
    WEAPON_LIMIT = []  # ← これは消さないこと!
    # ◆防具所持数上限
    #  指定方法はアイテムと同じ。
    ARMOR_LIMIT = []  # ← これは消さないこと!

    # ◆アイテム所持数上限 (デフォルト)
    #  上限を指定しなかったアイテム、武器、防具はこの値を上限として使用。
    ITEM_LIMIT_DEFAULT = 999

    module_function
    #--------------------------------------------------------------------------
    # ○ 敵能力値直接指定
    #     ここで、敵の最大HPなどを直接指定することができます。
    #     データベースに入りきらない数値を指定する場合に使用してください。
    #--------------------------------------------------------------------------
    def set_enemy_status
=begin
我只是举个栗子
      $data_enemies[422].dex = 13500
      $data_enemies[422].agi = 13500
      $data_enemies[422].str = 13500
      $data_enemies[422].int = 12500
      $data_enemies[422].atk = 2300
      $data_enemies[422].pdef = 2600
      $data_enemies[422].maxsp = 236300
=end
    end
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["LimitBreak"] = true

if $game_special_elements == nil
  $game_special_elements = {}
  $data_system = load_data("Data/System.rxdata")
end

module KGC::LimitBreak
  module_function
  #--------------------------------------------------------------------------
  # ● 敵の能力補正を適用
  #--------------------------------------------------------------------------
  def revise_enemy_parameters
    (1...$data_enemies.size).each { |i|
      enemy = $data_enemies
      enemy.maxhp = enemy.maxhp * ENEMY_MAXHP_REVISE / 100
      enemy.maxsp = enemy.maxsp * ENEMY_MAXSP_REVISE / 100
      enemy.str = enemy.str * ENEMY_STR_REVISE / 100
      enemy.dex = enemy.dex * ENEMY_DEX_REVISE / 100
      enemy.agi = enemy.agi * ENEMY_AGI_REVISE / 100
      enemy.int = enemy.int * ENEMY_INT_REVISE / 100
      enemy.atk = enemy.atk * ENEMY_ATK_REVISE / 100
      enemy.pdef = enemy.pdef * ENEMY_PDEF_REVISE / 100
      enemy.mdef = enemy.mdef * ENEMY_MDEF_REVISE / 100
    }
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::Item
#==============================================================================

class RPG::Item
  #--------------------------------------------------------------------------
  # ● 所持数上限
  #--------------------------------------------------------------------------
  def number_limit
    if KGC::LimitBreak::ITEM_LIMIT[self.id] != nil
      return KGC::LimitBreak::ITEM_LIMIT[self.id]
    else
      return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
    end
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::Weapon
#==============================================================================

class RPG::Weapon
  #--------------------------------------------------------------------------
  # ● 所持数上限
  #--------------------------------------------------------------------------
  def number_limit
    if KGC::LimitBreak::WEAPON_LIMIT[self.id] != nil
      return KGC::LimitBreak::WEAPON_LIMIT[self.id]
    else
      return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
    end
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::Armor
#==============================================================================

class RPG::Armor
  #--------------------------------------------------------------------------
  # ● 所持数上限
  #--------------------------------------------------------------------------
  def number_limit
    if KGC::LimitBreak::ARMOR_LIMIT[self.id] != nil
      return KGC::LimitBreak::ARMOR_LIMIT[self.id]
    else
      return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
    end
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Battler (分割定義 1)
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● MaxHP の取得
  #--------------------------------------------------------------------------
  def maxhp
    n = [base_maxhp + @maxhp_plus, 1].max
    @states.each { |i| n *= ($data_states.maxhp_rate) / 100.0 }
    n = [[Integer(n), 1].max, maxhp_limit].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● MaxSP の取得
  #--------------------------------------------------------------------------
  def maxsp
    n = [base_maxsp + @maxsp_plus, 0].max
    @states.each { |i| n *= ($data_states.maxsp_rate)/ 100.0 }
    n = [[Integer(n), 0].max, maxsp_limit].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 腕力の取得
  #--------------------------------------------------------------------------
  def str
    n = [base_str + @str_plus, 1].max
    @states.each { |i| n *= ($data_states.str_rate) / 100.0 }
    n = [[Integer(n), 1].max, parameter_limit].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 器用さの取得
  #--------------------------------------------------------------------------
  def dex
    n = [base_dex + @dex_plus, 1].max
    @states.each { |i| n *= ($data_states.dex_rate) / 100.0 }
    n = [[Integer(n), 1].max, parameter_limit].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 素早さの取得
  #--------------------------------------------------------------------------
  def agi
    n = [base_agi + @agi_plus, 1].max
    @states.each { |i| n *= ($data_states.agi_rate) / 100.0 }
    n = [[Integer(n), 1].max, parameter_limit].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 魔力の取得
  #--------------------------------------------------------------------------
  def int
    n = [base_int + @int_plus, 1].max
    @states.each { |i| n *= ($data_states.int_rate) / 100.0 }
    n = [[Integer(n), 1].max, parameter_limit].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● MaxHP の設定
  #     maxhp : 新しい MaxHP
  #--------------------------------------------------------------------------
  def maxhp=(maxhp)
    @maxhp_plus += maxhp - self.maxhp
    @maxhp_plus = [[@maxhp_plus, -maxhp_limit].max, maxhp_limit].min
    @hp = [@hp, self.maxhp].min
  end
  #--------------------------------------------------------------------------
  # ● MaxSP の設定
  #     maxsp : 新しい MaxSP
  #--------------------------------------------------------------------------
  def maxsp=(maxsp)
    @maxsp_plus += maxsp - self.maxsp
    @maxsp_plus = [[@maxsp_plus, -maxsp_limit].max, maxsp_limit].min
    @sp = [@sp, self.maxsp].min
  end
  #--------------------------------------------------------------------------
  # ● 腕力の設定
  #     str : 新しい腕力
  #--------------------------------------------------------------------------
  def str=(str)
    @str_plus += str - self.str
    @str_plus = [[@str_plus, -parameter_limit].max, parameter_limit].min
  end
  #--------------------------------------------------------------------------
  # ● 器用さの設定
  #     dex : 新しい器用さ
  #--------------------------------------------------------------------------
  def dex=(dex)
    @dex_plus += dex - self.dex
    @dex_plus = [[@dex_plus, -parameter_limit].max, parameter_limit].min
  end
  #--------------------------------------------------------------------------
  # ● 素早さの設定
  #     agi : 新しい素早さ
  #--------------------------------------------------------------------------
  def agi=(agi)
    @agi_plus += agi - self.agi
    @agi_plus = [[@agi_plus, -parameter_limit].max, parameter_limit].min
  end
  #--------------------------------------------------------------------------
  # ● 魔力の設定
  #     int : 新しい魔力
  #--------------------------------------------------------------------------
  def int=(int)
    @int_plus += int - self.int
    @int_plus = [[@int_plus, -parameter_limit].max, parameter_limit].min
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● EXP 計算
  #--------------------------------------------------------------------------
  def make_exp_list
    actor = $data_actors[@actor_id]
    @exp_list[1] = 0
    pow_i = 2.4 + actor.exp_inflation / 100.0
    (2..(self.final_level + 1)).each { |i|
      if i > self.final_level
        @exp_list = 0
      else
        n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
        @exp_list = @exp_list[i-1] + Integer(n)
      end
    }
  end
  #--------------------------------------------------------------------------
  # ● EXP の変更
  #     exp : 新しい EXP
  #--------------------------------------------------------------------------
  def exp=(exp)
    if $imported["ExpGoldIncrease"]
      rate = calc_exp_increase_rate(KGC::EXPGLD_INC_PERMIT_DOUBLE)
      exp = @exp + (exp - @exp) * rate / 100
    end
    @exp = [[exp, KGC::LimitBreak::ACTOR_EXP_LIMIT].min, 0].max
    # レベルアップ
    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
      @level += 1
      # スキル習得
      $data_classes[@class_id].learnings.each { |j|
        if j.level == @level
          learn_skill(j.skill_id)
        end
      }
    end
    # レベルダウン
    while @exp < @exp_list[@level]
      @level -= 1
    end
    # 現在の HP と SP が最大値を超えていたら修正
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end
  #--------------------------------------------------------------------------
  # ○ パラメータの取得
  #--------------------------------------------------------------------------
  if KGC::LimitBreak::CALC_PARAMETER_METHOD == 0
    def parameter(type)
      if @level >= 100
        calc_text = KGC::LimitBreak::ACTOR_LV100_CALC.dup
        calc_text.gsub!(/lv/i) { "@level" }
        calc_text.gsub!(/p\[(\d+)\]/i) {
          "$data_actors[@actor_id].parameters[type, #{$1.to_i}]"
        }
        return $data_actors[@actor_id].parameters[type, 99] + eval(calc_text)
      else
        return $data_actors[@actor_id].parameters[type, @level]
      end
    end
  elsif KGC::LimitBreak::CALC_PARAMETER_METHOD == 1
    def parameter(type)
      a = $data_actors[@actor_id].parameters[type, 1]
      b = $data_actors[@actor_id].parameters[type, 2]
      c = $data_actors[@actor_id].parameters[type, 3]
      return a * @level * @level + b * @level + c
    end
  elsif KGC::LimitBreak::CALC_PARAMETER_METHOD == 2
    def parameter(type)
      b = $data_actors[@actor_id].parameters[type, 2]
      c = $data_actors[@actor_id].parameters[type, 3]
      return b * @level + c
    end
  end
  #--------------------------------------------------------------------------
  # ● 基本 MaxHP の取得
  #--------------------------------------------------------------------------
  def base_maxhp
    n = self.parameter(0)
    return n * KGC::LimitBreak::ACTOR_MAXHP_REVISE / 100
  end
  #--------------------------------------------------------------------------
  # ● MaxHP の取得
  #--------------------------------------------------------------------------
  def maxhp
    n = [base_maxhp + @maxhp_plus, 1].max
    @states.each { |i| n *= ($data_states.maxhp_rate)/100.0 }
    n = [[Integer(n), 1].max, maxhp_limit].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 基本 MaxSP の取得
  #--------------------------------------------------------------------------
  def base_maxsp
    n = self.parameter(1)
    return n * KGC::LimitBreak::ACTOR_MAXSP_REVISE / 100
  end
  #--------------------------------------------------------------------------
  # ● MaxSP の取得
  #--------------------------------------------------------------------------
  def maxsp
    n = [base_maxsp + @maxsp_plus, 0].max
    @states.each { |i| n *= ($data_states.maxsp_rate)/ 100.0 }
    n = [[Integer(n), 0].max, maxsp_limit].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 基本腕力の取得
  #--------------------------------------------------------------------------
  def base_str
    n = self.parameter(2)
    if $imported["EquipExtension"]
      n += equipment_parameter(2)
    else
      equip_item_list.each { |item| n += (item != nil ? item.str_plus : 0) }
    end

    return [[n * KGC::LimitBreak::ACTOR_STR_REVISE / 100, 1].max, parameter_limit].min
  end
  #--------------------------------------------------------------------------
  # ● 基本器用さの取得
  #--------------------------------------------------------------------------
  def base_dex
    n = self.parameter(3)
    if $imported["EquipExtension"]
      n += equipment_parameter(3)
    else
      equip_item_list.each { |item| n += (item != nil ? item.dex_plus : 0) }
    end

    return [[n * KGC::LimitBreak::ACTOR_DEX_REVISE / 100, 1].max, parameter_limit].min
  end
  #--------------------------------------------------------------------------
  # ● 基本素早さの取得
  #--------------------------------------------------------------------------
  def base_agi
    n = self.parameter(4)
    if $imported["EquipExtension"]
      n += equipment_parameter(4)
    else
      equip_item_list.each { |item| n += (item != nil ? item.agi_plus : 0) }
    end

    return [[n * KGC::LimitBreak::ACTOR_AGI_REVISE / 100, 1].max, parameter_limit].min
  end
  #--------------------------------------------------------------------------
  # ● 基本魔力の取得
  #--------------------------------------------------------------------------
  def base_int
    n = self.parameter(5)
    if $imported["EquipExtension"]
      n += equipment_parameter(5)
    else
      equip_item_list.each { |item| n += (item != nil ? item.int_plus : 0) }
    end
    return [[n * KGC::LimitBreak::ACTOR_INT_REVISE / 100, 1].max, parameter_limit].min
  end
  #--------------------------------------------------------------------------
  # ● レベルの変更
  #     level : 新しいレベル
  #--------------------------------------------------------------------------
  def level=(level)
    # 上下限チェック
    level = [[level, self.final_level].min, 1].max
    # EXP を変更
    self.exp = @exp_list[level]
  end
  #--------------------------------------------------------------------------
  # ● 最終レベルの取得
  #--------------------------------------------------------------------------
  def final_level
    return (KGC::LimitBreak::ACTOR_LV_LIMIT[@actor_id] != nil ?
    KGC::LimitBreak::ACTOR_LV_LIMIT[@actor_id] : KGC::LimitBreak::ACTOR_LV_LIMIT_DEFAULT)
  end
  #--------------------------------------------------------------------------
  # ○ MaxHP 限界値の取得
  #--------------------------------------------------------------------------
  def maxhp_limit
    return KGC::LimitBreak::ACTOR_HP_LIMIT
  end
  #--------------------------------------------------------------------------
  # ○ MaxSP 限界値の取得
  #--------------------------------------------------------------------------
  def maxsp_limit
    return KGC::LimitBreak::ACTOR_SP_LIMIT
  end
  #--------------------------------------------------------------------------
  # ○ パラメータ限界値の取得
  #--------------------------------------------------------------------------
  def parameter_limit
    return KGC::LimitBreak::ACTOR_ETC_LIMIT
  end
  #--------------------------------------------------------------------------
  # ○ 装備武器リストの取得
  #--------------------------------------------------------------------------
  def equip_weapon_list
    result = [$data_weapons[@weapon_id]]
    return result.compact
  end
  #--------------------------------------------------------------------------
  # ○ 装備防具リストの取得
  #--------------------------------------------------------------------------
  def equip_armor_list
    result = []
    (1..4).each { |i| result << $data_armors[eval("@armor#{i}_id")] }
    return result.compact
  end
  #--------------------------------------------------------------------------
  # ○ 装備品リストの取得
  #--------------------------------------------------------------------------
  def equip_item_list
    return equip_weapon_list + equip_armor_list
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Enemy
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ○ MaxHP 限界値の取得
  #--------------------------------------------------------------------------
  def maxhp_limit
    return KGC::LimitBreak::ENEMY_HP_LIMIT
  end
  #--------------------------------------------------------------------------
  # ○ MaxSP 限界値の取得
  #--------------------------------------------------------------------------
  def maxsp_limit
    return KGC::LimitBreak::ENEMY_SP_LIMIT
  end
  #--------------------------------------------------------------------------
  # ○ パラメータ限界値の取得
  #--------------------------------------------------------------------------
  def parameter_limit
    return KGC::LimitBreak::ENEMY_ETC_LIMIT
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Party
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # ● ゴールドの増加 (減少)
  #     n : 金額
  #--------------------------------------------------------------------------
  def gain_gold(n)
    # 所持金の限界値変更
    @gold = [[@gold + n, 0].max, KGC::LimitBreak::GOLD_LIMIT].min
  end
  #--------------------------------------------------------------------------
  # ● アイテムの増加 (減少)
  #     item_id : アイテム ID
  #     n       : 個数
  #--------------------------------------------------------------------------
  def gain_item(item_id, n)
    # ハッシュの個数データを更新
    if item_id > 0
      limit = $data_items[item_id].number_limit
      @items[item_id] = [[item_number(item_id) + n, 0].max, limit].min
    end
  end
  #--------------------------------------------------------------------------
  # ● 武器の増加 (減少)
  #     weapon_id : 武器 ID
  #     n         : 個数
  #--------------------------------------------------------------------------
  def gain_weapon(weapon_id, n)
    # ハッシュの個数データを更新
    if weapon_id > 0
      limit = $data_weapons[weapon_id].number_limit
      @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, limit].min
    end
  end
  #--------------------------------------------------------------------------
  # ● 防具の増加 (減少)
  #     armor_id : 防具 ID
  #     n        : 個数
  #--------------------------------------------------------------------------
  def gain_armor(armor_id, n)
    # ハッシュの個数データを更新
    if armor_id > 0
      limit = $data_armors[armor_id].number_limit
      @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, limit].min
    end
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_ShopBuy
#==============================================================================

class Window_ShopBuy < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #     index : 項目番号
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    # アイテムの所持数を取得
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    # 価格が所持金以下、かつ所持数が上限でなければ通常文字色に、
    # そうでなければ無効文字色に設定
    if item.price <= $game_party.gold && number < item.number_limit
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 88, 32, item.price.to_s, 2)
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Title
#==============================================================================

class Scene_Title
  #--------------------------------------------------------------------------
  # ● コマンド : ニューゲーム
  #--------------------------------------------------------------------------
  alias command_new_game_KGC_LimitBreak command_new_game
  def command_new_game
    command_new_game_KGC_LimitBreak

    KGC::LimitBreak.revise_enemy_parameters
    KGC::LimitBreak.set_enemy_status
  end
  #--------------------------------------------------------------------------
  # ● コマンド : コンティニュー
  #--------------------------------------------------------------------------
  alias command_continue_KGC_LimitBreak command_continue
  def command_continue
    command_continue_KGC_LimitBreak

    KGC::LimitBreak.revise_enemy_parameters
    KGC::LimitBreak.set_enemy_status
  end
  #--------------------------------------------------------------------------
  # ● 戦闘テスト
  #--------------------------------------------------------------------------
  alias battle_test_KGC_LimitBreak battle_test
  def battle_test
    battle_test_KGC_LimitBreak

    KGC::LimitBreak.revise_enemy_parameters
    KGC::LimitBreak.set_enemy_status
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Shop
#==============================================================================

class Scene_Shop
  #--------------------------------------------------------------------------
  # ● フレーム更新 (購入ウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_buy
    # ステータスウィンドウのアイテムを設定
    @status_window.item = @buy_window.item
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # ウィンドウの状態を初期モードへ
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      # ヘルプテキストを消去
      @help_window.set_text("")
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # アイテムを取得
      @item = @buy_window.item
      # アイテムが無効の場合、または価格が所持金より上の場合
      if @item == nil or @item.price > $game_party.gold
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # アイテムの所持数を取得
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
      end
      # すでに上限まで個所持している場合
      limit = @item.number_limit
      if number >= limit
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      # 最大購入可能個数を計算
      max = (@item.price == 0 ? limit : $game_party.gold / @item.price)
      max = [max, limit - number].min
      # ウィンドウの状態を個数入力モードへ
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
end
[/pre]

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部