设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4976|回复: 14
打印 上一主题 下一主题

[已经解决] [已解决]如何自定义每个角色的exp经验值?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
14616
在线时间
2196 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2020-11-11 15:17:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 miantouchi 于 2020-11-12 18:51 编辑

默认数据库不可以自定义EXP曲线,我希望自己能够每个角色,每个等级自定义设置经验值,
于是我像下面这样操作的话,每个人都是一样的了

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 计算 EXP
  3.   #--------------------------------------------------------------------------
  4.   def make_exp_list
  5.     actor = $data_actors[@actor_id]
  6.     @exp_list[1] = 0
  7.     pow_i = 2.4 + actor.exp_inflation / 100.0
  8.     for i in 2..100
  9.       if i > actor.final_level
  10.         @exp_list[i] = 0
  11.       else
  12.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  13.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  14.       end
  15.     end
  16.     @exp_list[1] =30
  17.     @exp_list[2] =40
  18.     @exp_list[3] =50
  19.   end

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
2
发表于 2020-11-11 15:53:16 | 只看该作者
本帖最后由 灯笼菜刀王 于 2020-11-11 15:56 编辑

alias xoxo_mel make_exp_list
def make_exp_list
  f ={
  1=>[0,10,20,30,40,50,60,70,80,90],
  2=>[0,50,100,150,200,250,300,350],
  }
  if (n = f[@actor_id]) != nil
    @exp_list = n
  else
    xoxo_mel
  end
end

评分

参与人数 1+1 收起 理由
miantouchi + 1 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14616
在线时间
2196 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

3
 楼主| 发表于 2020-11-11 16:24:40 | 只看该作者
本帖最后由 miantouchi 于 2020-11-11 16:29 编辑
灯笼菜刀王 发表于 2020-11-11 15:53
alias xoxo_mel make_exp_list
def make_exp_list
  f ={


对了应该是我没说清楚,自定义设置NEXT距离下一级的数值,而不是EXP。
我现在用这个脚本情况是,EXP的值了。

33.png (102.95 KB, 下载次数: 22)

33.png

点评

没错, NEXT就是 下一级的EXP - 当前EXP, 数组第一位是0, 1级要0EXP, 那你数组就 [0,0,10,20...... 即可  发表于 2020-11-11 16:38
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14616
在线时间
2196 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

4
 楼主| 发表于 2020-11-11 20:06:49 | 只看该作者
灯笼菜刀王 发表于 2020-11-11 15:53
alias xoxo_mel make_exp_list
def make_exp_list
  f ={

感觉还是有点不对,
1号角色3级,NEXT不应该是40吗?
2号角色5级,NEXT不应该是300吗?

1.png (76.93 KB, 下载次数: 20)

1.png

2.png (76.07 KB, 下载次数: 15)

2.png

3.png (51.23 KB, 下载次数: 17)

3.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26313
在线时间
5361 小时
注册时间
2016-3-8
帖子
1656
5
发表于 2020-11-11 20:33:40 | 只看该作者
本帖最后由 alexncf125 于 2020-11-11 20:56 编辑
  1. class Game_Actor < Game_Battler
  2.   alias xoxo_mel make_exp_list
  3.   def make_exp_list
  4.     f ={
  5.     1=>[0,0,8,30,40,50,60,70,80,90],
  6.     2=>[0,0,10,150,200,250,300,350,490],
  7.     }
  8.     if (n = f[@actor_id]) != nil
  9.       arr = f[@actor_id]
  10.       n.size.times do |i|
  11.         arr[i] += n[i - 1] if i > 1
  12.       end
  13.       @exp_list = arr
  14.     else
  15.       xoxo_mel
  16.     end
  17.   end
  18. end
复制代码

评分

参与人数 1+1 收起 理由
miantouchi + 1 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14616
在线时间
2196 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

6
 楼主| 发表于 2020-11-11 21:17:47 | 只看该作者

还有一个小问题,就是级别上限问题
例如我把人物等级上限设置为9级,当前人物8级,我的经验条只设置到了 8级的经验,如果再升到9级时会报错。
或者是   人物等级上限设置为9级,当前人物8级,我的经验条只设置到了10级的经验,如果再升到10级时会报错。
正常情况应该是到达上限级别后不再显示下级所需经验,是----------/--------------这样的提示

1212.png (46.25 KB, 下载次数: 16)

1212.png

33.png (76.25 KB, 下载次数: 23)

33.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26313
在线时间
5361 小时
注册时间
2016-3-8
帖子
1656
7
发表于 2020-11-11 21:25:28 | 只看该作者
本帖最后由 alexncf125 于 2020-11-11 21:39 编辑

我是VA用戶, 非XP用戶
只是路过, 看见4L的问题后, 拿2L的脚本小修小改一下来回答而已
所以你这问题我不懂得答喔~

----------/--------------这样的提示
可能是改成这样:
1=>[0,0,8,30,40,50,60,70,80,90,0],
2=>[0,0,10,150,200,250,300,350,490,0],

至于报错如何解決, 我就不知道了~~

点评

哦,这样,非常感谢了,我只是想到游戏暂时涉及上限到40级,如果玩家升级超过这个范围就报错了。  发表于 2020-11-11 21:39
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
8
发表于 2020-11-11 21:39:44 | 只看该作者
我拿了楼上的脚本做3次修改。
  1. class Game_Actor < Game_Battler
  2.   alias xoxo_mel make_exp_list
  3.   def make_exp_list
  4.     actor = $data_actors[@actor_id]
  5.     f ={
  6.     1=>[0,0,8,30,40,50,60,70,80,90],
  7.     2=>[0,0,10,150,200,250,300,350,490],
  8.     }
  9.     if (n = f[@actor_id]) != nil
  10.       arr = f[@actor_id]
  11.       for i in 2 .. 100
  12.         if i >= actor.final_level
  13.           arr[i] = 0
  14.         else
  15.           arr[i] += n[i - 1] if i > 1
  16.         end
  17.       end
  18.       @exp_list = arr
  19.     else
  20.       xoxo_mel
  21.     end
  22.   end
  23. end
复制代码

点评

手误了,纯粹把上限条件加进去而已,用的还是你一开始的脚本,我连工程都没打开==|||,看了一下的确是多打了一个=,拿掉应该就没问题了。  发表于 2020-11-11 22:04
应该 改成if i > actor.final_level这样吧,去掉=号,上限9级,可以升到9级,不去掉的话,只能升到8级,非常感谢,我继续测试测试。  发表于 2020-11-11 21:51

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
9
发表于 2020-11-12 13:21:55 | 只看该作者
楼上已经解决问题了
我就是试一下“用数据库其他角色表示某角色没有的成长曲线”
例:用(actor_id + 10)号角色的HP成长曲线 表示 actor_id 号角色的 exp 曲线(数值为当前等级升级所需的经验,游戏默认的是升级所需的总经验数)
class Game_Actor < Game_Battler
  alias ori_exp_list make_exp_list
  def make_exp_list
    actor = $data_actors[@actor_id]
    n = 0
    @exp_list[1] = 0
    for i in 2..100
      if i > actor.final_level
        @exp_list[i] = 0
      else
        n += $data_actors[10 + @actor_id].parameters[0, i-1]
        @exp_list[i] = n
      end
    end
  end
end
接下来 设置(actor_id + 10)号角色的HP成长曲线 即可

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14616
在线时间
2196 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

10
 楼主| 发表于 2020-11-12 18:50:07 | 只看该作者
本帖最后由 miantouchi 于 2020-11-12 18:55 编辑
RPGzh500223 发表于 2020-11-12 13:21
楼上已经解决问题了
我就是试一下“用数据库其他角色表示某角色没有的成长曲线”
例:用(actor_id + 10) ...


非常棒,由于之前我用的是2,4,6,8双号角色的力量,灵巧曲线设置为1,3,5,7单数角色的补充曲线,现在你这个方法完事,直接可以顺着以前的
做法,$data_actors[1 + @actor_id] 把10改成1就正好顺上了。

收获很大,收获了2个好方法。

1212.png (51.94 KB, 下载次数: 20)

1212.png
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-24 13:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表