Project1

标题: 如何用变开关突破人物等级上限 [打印本页]

作者: giligilieye    时间: 2018-6-17 21:49
标题: 如何用变开关突破人物等级上限
如何用变量火开关突破人物等级上限,
比如我设置开关1开启时,所有角色的等级上限为150而不是99,
开关等级上限已经实现了,但是无论怎么设置都突破不了99级,
不用开关突破等级上限也行,
哪位大佬知道帮忙写下脚本,谢谢!
作者: 魔法丶小肉包    时间: 2018-6-17 21:49
事实上最简单的突破等级上限的话(不考虑角色99级以后每一级的所需经验值的计算的话),你只需要完成3个步骤即可

1.打开脚本编辑器,搜索"最大等级",就找到了max_level,然后改一下
RUBY 代码复制
  1. def max_level
  2.     150
  3. end

这样最大等级就是150了

2.等级改了,那最大能力值也要改吧,那就继续搜索呀,找到param_max,然后改一下
RUBY 代码复制
  1. def param_max(param_id)
  2.     return 99999999 if param_id == 0  # MHP
  3.     return 99999999   if param_id == 1  # MMP
  4.     return 99999999
  5. end

好了,那么各项能力的最大值也改了

3.最大能力值改了,那么问题来了,当99级以后,比如99升100,那么这次升级所上升的能力值怎么计算呢,所以要改角色的能力成长曲线
那么默认系统中,角色的能力成长曲线是在数据库里进行设置的,那我们就简单粗暴一点,不要在里面设置了,自己准备一套计算公式吧
当然计算公式由你自己准备,我这里分享一下我自己的坑里的计算公式
RUBY 代码复制
  1. def param_base(param_id)
  2.     case param_id
  3.     when 0
  4.       self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.8).to_i
  5.     when 1
  6.       self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.5).to_i
  7.     when 2..8
  8.       self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.3).to_i
  9.     end
  10. end

我的坑里的计算思路是:
最大hp = 角色职业的1级时候的hp+角色职业的1级时候的hp*(目前等级-1)*0.8
最大mp = 角色职业的1级时候的mp+角色职业的1级时候的mp*(目前等级-1)*0.5
其他各项能力 = 角色职业的1级时候的能力+角色职业的1级时候的能力*(目前等级-1)*0.3

那么呢,做了以上3步之后,一个基础的等级破限功能就完成了
作者: giligilieye    时间: 2018-6-18 10:58
感谢帮忙!保存一下!
作者: giligilieye    时间: 2018-6-18 11:46
魔法丶小肉包 发表于 2018-6-17 21:49
事实上最简单的突破等级上限的话(不考虑角色99级以后每一级的所需经验值的计算的话),你只需要完成3个步 ...

测试了一下,升级升到100级是会出现BUG。
作者: giligilieye    时间: 2018-6-18 11:50
魔法丶小肉包 发表于 2018-6-17 21:49
事实上最简单的突破等级上限的话(不考虑角色99级以后每一级的所需经验值的计算的话),你只需要完成3个步 ...

Game_BattlerBase 第 277行出现问题
作者: giligilieye    时间: 2018-6-18 13:01
魔法丶小肉包 发表于 2018-6-17 21:49
事实上最简单的突破等级上限的话(不考虑角色99级以后每一级的所需经验值的计算的话),你只需要完成3个步 ...

新工程?
作者: giligilieye    时间: 2018-6-18 17:16
魔法丶小肉包 发表于 2018-6-17 21:49
事实上最简单的突破等级上限的话(不考虑角色99级以后每一级的所需经验值的计算的话),你只需要完成3个步 ...

没用,同样还是错误。
作者: 魔法丶小肉包    时间: 2018-6-18 19:32
giligilieye 发表于 2018-6-18 17:16
没用,同样还是错误。

你开个新工程,然后打开脚本编辑器往下拉,找到main
在main的上面插入1行新的空白栏,然后把下面的代码复制进去
RUBY 代码复制
  1. class Game_Actor
  2.   def max_level
  3.     9999
  4.   end
  5.   def param_max(param_id)
  6.     return 99999999 if param_id == 0  # MHP
  7.     return 99999999   if param_id == 1  # MMP
  8.     return 99999999
  9.   end
  10.   def param_base(param_id)
  11.     case param_id
  12.     when 0
  13.       self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.8).to_i
  14.     when 1
  15.       self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.5).to_i
  16.     when 2..8
  17.       self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.3).to_i
  18.     end
  19.   end
  20. end

作者: giligilieye    时间: 2018-6-18 22:30
魔法丶小肉包 发表于 2018-6-18 19:32
你开个新工程,然后打开脚本编辑器往下拉,找到main
在main的上面插入1行新的空白栏,然后把下面的代码复 ...

原来的问题没有了,但是410行经验那里出现了问题。
作者: 魔法丶小肉包    时间: 2018-6-19 09:07
giligilieye 发表于 2018-6-18 22:30
原来的问题没有了,但是410行经验那里出现了问题。


你是不是用了什么其他的脚本...你看我这里测试都2000多级了



作者: giligilieye    时间: 2018-6-22 22:54
魔法丶小肉包 发表于 2018-6-19 09:07
你是不是用了什么其他的脚本...你看我这里测试都2000多级了

没有其他脚本
作者: giligilieye    时间: 2018-6-22 22:58
魔法丶小肉包 发表于 2018-6-19 09:07
你是不是用了什么其他的脚本...你看我这里测试都2000多级了

完成了,谢谢。我重新复制了一下。




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