查看: 1770|回复: 0

自定义经验值公式

[复制链接]

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-5-23 20:31:47 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 taroxd 于 2014-7-9 17:32 编辑

[pre lang="ruby" line="1"]

#--------------------------------------------------------------------------
# ● 使用方法:在职业上备注以下内容
#    <exp>
#      升级到等级 lv 所需要的总经验值公式
#    </exp>
#    可以使用的参数:
#      lv:    等级
#      basis:基础值
#      extra:修正值
#      acc_a:增加度 a
#      acc_b:增加度 b
#
#    例(默认公式):
#    <exp>
#      basis*((lv-1)**(0.9+acc_a/250))*
#      lv*(lv+1)/(6+lv**2/50/acc_b)+
#      (lv-1)*extra
#    </exp>
#
#    注意事项:
#      如果需要使用转职功能,则 lv 为 1 时的经验值请不要大于 0 !
#--------------------------------------------------------------------------

class RPG::Class < RPG::BaseItem
  include Math
  #--------------------------------------------------------------------------
  # ● 达到指定等级需要累积的经验值
  #--------------------------------------------------------------------------
  original_formula = instance_method(:exp_for_level)
  define_method :exp_for_level do |level|
    @exp_formula ||=
    if @note =~ /<exp>\s*(.+)\s*<\/exp>/mi
      basis, extra, acc_a, acc_b = @exp_params.map(&:to_f)
      eval("->(lv){lv=lv.to_f;(#{$1}).round}")
    else
      original_formula.bind(self)
    end
    @exp_formula.(level)
  end
end
[/pre]

点评

读取备注栏?不是很懂0W0  发表于 2014-5-24 19:53

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

在本发帖返回顶部