Project1

标题: [已解决]如何自定义每个角色的exp经验值? [打印本页]

作者: miantouchi    时间: 2020-11-11 15:17
标题: [已解决]如何自定义每个角色的exp经验值?
本帖最后由 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

作者: 灯笼菜刀王    时间: 2020-11-11 15:53
本帖最后由 灯笼菜刀王 于 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
作者: miantouchi    时间: 2020-11-11 16:24
本帖最后由 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

作者: miantouchi    时间: 2020-11-11 20:06
灯笼菜刀王 发表于 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

作者: alexncf125    时间: 2020-11-11 20:33
本帖最后由 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
复制代码

作者: miantouchi    时间: 2020-11-11 21:17
alexncf125 发表于 2020-11-11 20:33

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

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

1212.png

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

33.png

作者: alexncf125    时间: 2020-11-11 21:25
本帖最后由 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],

至于报错如何解決, 我就不知道了~~
作者: enghao_lim    时间: 2020-11-11 21:39
我拿了楼上的脚本做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
复制代码

作者: RPGzh500223    时间: 2020-11-12 13:21
楼上已经解决问题了
我就是试一下“用数据库其他角色表示某角色没有的成长曲线”
例:用(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成长曲线 即可
作者: miantouchi    时间: 2020-11-12 18:50
本帖最后由 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, 下载次数: 21)

1212.png

作者: 7479958    时间: 2022-6-12 02:08
大佬们好棒,看的我一头雾水




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1