查看: 7105|回复: 5

[RMVA发布] 【不就是玩数学么】自定义经验值公式!

[复制链接]

…あたしは天

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

开拓者贵宾

发表于 2014-7-7 11:24:17 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 taroxd 于 2014-7-10 05:44 编辑

[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

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 等级最小值
  #--------------------------------------------------------------------------
  def min_level; 1; end
  def min_level?; @level <= min_level; end
  #--------------------------------------------------------------------------
  # ● 经验值变化
  #--------------------------------------------------------------------------
  def change_exp(exp, show)
    @exp[@class_id] = [exp, 0].max
    last_level = @level
    last_skills = skills
    level_up   while !max_level? && self.exp >= next_level_exp
    level_down while !min_level? && self.exp <  current_level_exp
    display_level_up(skills - last_skills) if show && @level > last_level
    refresh
  end
end
[/pre]

评分

参与人数 3星屑 +30 收起 理由
david_ng223 + 20 塞糖
1091160905 + 9 凑整
3106345123 + 1 塞糖

查看全部评分

梦石
0
星屑
3703
在线时间
3081 小时
注册时间
2011-11-17
回帖
943
发表于 2014-7-7 23:00:06 | 显示全部楼层
说好的微积分呢
回复

使用道具 举报

梦石
0
星屑
15070
在线时间
1580 小时
注册时间
2012-7-24
回帖
1246
发表于 2014-7-9 09:01:25 | 显示全部楼层
说好的数项级数呢

欢迎大家加我
回复

使用道具 举报

梦石
0
星屑
852
在线时间
231 小时
注册时间
2013-10-30
回帖
115
发表于 2014-7-9 23:32:49 | 显示全部楼层
版主大大 这个公式好难啊。  研究一天了 都弄不了。。。
我自己设了一个公式,算下来假设为1000
但是这1000不是升级所需经验。。居然是现在已有经验,,顿时我蛋疼菊紧啊。。
回复

使用道具 举报

…あたしは天

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

开拓者贵宾

 楼主| 发表于 2014-7-10 05:43:55 | 显示全部楼层
本帖最后由 taroxd 于 2014-7-10 06:45 编辑
m328759997 发表于 2014-7-9 23:32
版主大大 这个公式好难啊。  研究一天了 都弄不了。。。
我自己设了一个公式,算下来假设为1000
但是这1000 ...


注释里写得很清楚,是“升级到等级 lv 所需要的总经验值公式”

自己去用你的数学知识去求和吧……

总之,我的标题就告诉你,这玩意儿是要数学的……

你看看默认的那个蛋疼的公式就知道了。

点评

这个蛋疼的公式还不是最蛋疼的。。 最蛋疼的是不用这个公式算出来的经验值不是 “升级到LV所需要的总经验值“ 而是现在已有经验值。。  发表于 2014-7-10 14:00
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
172
在线时间
935 小时
注册时间
2010-11-13
回帖
897
发表于 2020-6-6 15:25:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部