查看: 2470|回复: 2

[已经解决] 随机能力提升脚本无法初始角色

[复制链接]
梦石
0
星屑
4627
在线时间
818 小时
注册时间
2017-7-14
回帖
116

开拓者

发表于 2017-10-28 23:23:20 | 显示全部楼层 |阅读模式

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

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

×
这个脚本是每次升级附加额外的能力值,但角色离队后再次加入,勾选初始角色,额外的能力值不会减少,
怎样才能初始角色后,这个脚本提升的能力值全部清零啊?[pre lang="ruby"]#==============================================================================
# ■ FE_Param
#------------------------------------------------------------------------------
# 设置各职业用的各数据
# 制作者:feizhaodan
# 版本: 1.1.0
# 更新: 1.1.0 : 更改了随机式,从原来的非即下一项改为范围随机。
#==============================================================================
module FE_Param
  
    CLASSPER = {}   # 不要改
   
   
    # 在这里设置各职业的提升几率
    # 格式:
    # CLASSPER[id] = {
    # :para => n%,
    #}
    # id 输入职业ID
    # para 代入属性标识(mhp, mmp, atk, def, mat, mdf, agi, luk)
    # n 代入属性提升几率
    CLASSPER[1] ={
    :mhp        =>  60, # 血
    :mmp        =>  40, # 魔
    :atk        =>  70, # 攻
    :def        =>  60, # 防
    :mat        =>  20, # 魔攻
    :mdf        =>  20, # 魔防
    :agi        =>  50, # 敏
    :luk        =>  10, # 幸运
    }
   
    CLASSUP = {}    # 不要改
   
   
    # 在这里设置各职业的提升量
    # 格式:
    # CLASSUP[id] = [mi, ma]
    # id 输入职业ID
    # mi 代入提升量最小值
    # ma 代入提升量最大值
    CLASSUP[1] = [5, 9]
end



#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  处理角色的类。本类在 Game_Actors 类 ($game_actors) 的内部使用、
# Game_Party 类请参考 ($game_party) 。
#==============================================================================

class Game_Actor < Game_Battler
  FEPARAM_LIST_ = [:mhp,:mmp,:atk,:def,:mat,:mdf,:agi,:luk]
  #--------------------------------------------------------------------------
  # ● 获取普通能力
  #--------------------------------------------------------------------------
  def param(param_id)
    value = super
    value += param_gained(param_id)
    return [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  end
  #--------------------------------------------------------------------------
  # ● 获取提升量
  #--------------------------------------------------------------------------
  def param_up
    param_up = FE_Param::CLASSUP[@class_id]
    up = param_up[0] + rand(param_up[1] - param_up[0] + 1)
    return up
  end
  #--------------------------------------------------------------------------
  # ● 获取提升率
  #    param : 属性
  #--------------------------------------------------------------------------
  def param_per
    @param_per = FE_Param::CLASSPER[@class_id] if @param_per == nil
    return @param_per
  end
  #--------------------------------------------------------------------------
  # ● 获取已提升量
  #    param : 属性
  #--------------------------------------------------------------------------
  def param_gained(param)
    @param_gained = {} if @param_gained == nil
    return 0 if @param_gained[param] == nil
    return @param_gained[param]
  end
  #--------------------------------------------------------------------------
  # ● 升级
  #--------------------------------------------------------------------------
  alias fe_level_up level_up
  def level_up
    fe_level_up
    gain_param
  end
  #--------------------------------------------------------------------------
  # ● 提升属性
  #--------------------------------------------------------------------------
  def gain_param
    @param_gained = {} if @param_gained == nil
    param_per
    percentage = 0
    @param_per.each_value do |v|
      percentage += v
    end
    point = param_up
    mhpper = @param_per[:mhp]
    mmpper = @param_per[:mmp] + mhpper
    atkper = @param_per[:atk] + mmpper
    defper = @param_per[:def] + atkper
    matper = @param_per[:mat] + defper
    mdfper = @param_per[:mdf] + matper
    agiper = @param_per[:agi] + mdfper
    lukper = @param_per[:luk] + agiper
    loop do
     if point == 0
        break
      end
      per = rand(percentage) + 1
      p [mhpper,mmpper,atkper,defper,matper,mdfper,agiper,lukper,per]
      case per
      when 1...mhpper
        i = FEPARAM_LIST_.index(:mhp)
        @param_gained = 0 if @param_gained == nil
        @param_gained += 1
        point -= 1
      when mhpper...mmpper
        i = FEPARAM_LIST_.index(:mmp)
        @param_gained = 0 if @param_gained == nil
        @param_gained += 1
        point -= 1
      when mmpper...atkper
        i = FEPARAM_LIST_.index(:atk)
        @param_gained = 0 if @param_gained == nil
        @param_gained += 1
        point -= 1
      when atkper...defper
        i = FEPARAM_LIST_.index(:def)
        @param_gained = 0 if @param_gained == nil
        @param_gained += 1
        point -= 1
      when defper...matper
        i = FEPARAM_LIST_.index(:mat)
        @param_gained = 0 if @param_gained == nil
        @param_gained += 1
        point -= 1
      when matper...mdfper
        i = FEPARAM_LIST_.index(:mdf)
        @param_gained = 0 if @param_gained == nil
        @param_gained += 1
        point -= 1
      when mdfper...agiper
        i = FEPARAM_LIST_.index(:agi)
        @param_gained = 0 if @param_gained == nil
        @param_gained += 1
        point -= 1
      when agiper...lukper
        i = FEPARAM_LIST_.index(:luk)
        @param_gained = 0 if @param_gained == nil
        @param_gained += 1
        point -= 1
      end
    end
  end
end
[/pre]
梦石
1
星屑
2088
在线时间
920 小时
注册时间
2012-10-18
回帖
416

开拓者

发表于 2017-10-29 16:32:13 | 显示全部楼层
在下面插入这段[pre lang="ruby"]class Game_Actor < Game_Battler
  def clear_param_plus
    super
    @param_gained = {}
  end
end[/pre]

点评

谢谢大佬,完美的解决了我的问题,话说大佬你真是神龙见首不见尾啊(*^__^*)  发表于 2017-10-29 16:59
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部