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

Project1

 找回密码
 注册会员
搜索

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

查看数: 4576 | 评论数: 10 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-11-11 15:17

正文摘要:

本帖最后由 miantouchi 于 2020-11-12 18:51 编辑 默认数据库不可以自定义EXP曲线,我希望自己能够每个角色,每个等级自定义设置经验值, 于是我像下面这样操作的话,每个人都是一样的了 RUBY 代码& ...

回复

7479958 发表于 2022-6-12 02:08:24
大佬们好棒,看的我一头雾水
RPGzh500223 发表于 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 认可答案

查看全部评分

enghao_lim 发表于 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 认可答案

查看全部评分

alexncf125 发表于 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
alexncf125 发表于 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 精品文章

查看全部评分

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

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

GMT+8, 2024-5-5 22:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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