Project1
标题: 如何用变开关突破人物等级上限 [打印本页]
作者: giligilieye 时间: 2018-6-17 21:49
标题: 如何用变开关突破人物等级上限
如何用变量火开关突破人物等级上限,
比如我设置开关1开启时,所有角色的等级上限为150而不是99,
开关等级上限已经实现了,但是无论怎么设置都突破不了99级,
不用开关突破等级上限也行,
哪位大佬知道帮忙写下脚本,谢谢!
作者: 魔法丶小肉包 时间: 2018-6-17 21:49
事实上最简单的突破等级上限的话(不考虑角色99级以后每一级的所需经验值的计算的话),你只需要完成3个步骤即可
1.打开脚本编辑器,搜索"最大等级",就找到了max_level,然后改一下
这样最大等级就是150了
2.等级改了,那最大能力值也要改吧,那就继续搜索呀,找到param_max,然后改一下
def param_max(param_id)
return 99999999 if param_id == 0 # MHP
return 99999999 if param_id == 1 # MMP
return 99999999
end
def param_max(param_id)
return 99999999 if param_id == 0 # MHP
return 99999999 if param_id == 1 # MMP
return 99999999
end
好了,那么各项能力的最大值也改了
3.最大能力值改了,那么问题来了,当99级以后,比如99升100,那么这次升级所上升的能力值怎么计算呢,所以要改角色的能力成长曲线
那么默认系统中,角色的能力成长曲线是在数据库里进行设置的,那我们就简单粗暴一点,不要在里面设置了,自己准备一套计算公式吧
当然计算公式由你自己准备,我这里分享一下我自己的坑里的计算公式
def param_base(param_id)
case param_id
when 0
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.8).to_i
when 1
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.5).to_i
when 2..8
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.3).to_i
end
end
def param_base(param_id)
case param_id
when 0
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.8).to_i
when 1
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.5).to_i
when 2..8
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.3).to_i
end
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
测试了一下,升级升到100级是会出现BUG。
作者: giligilieye 时间: 2018-6-18 11:50
Game_BattlerBase 第 277行出现问题
作者: giligilieye 时间: 2018-6-18 13:01
新工程?
作者: giligilieye 时间: 2018-6-18 17:16
没用,同样还是错误。
作者: 魔法丶小肉包 时间: 2018-6-18 19:32
你开个新工程,然后打开脚本编辑器往下拉,找到main
在main的上面插入1行新的空白栏,然后把下面的代码复制进去
class Game_Actor
def max_level
9999
end
def param_max(param_id)
return 99999999 if param_id == 0 # MHP
return 99999999 if param_id == 1 # MMP
return 99999999
end
def param_base(param_id)
case param_id
when 0
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.8).to_i
when 1
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.5).to_i
when 2..8
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.3).to_i
end
end
end
class Game_Actor
def max_level
9999
end
def param_max(param_id)
return 99999999 if param_id == 0 # MHP
return 99999999 if param_id == 1 # MMP
return 99999999
end
def param_base(param_id)
case param_id
when 0
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.8).to_i
when 1
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.5).to_i
when 2..8
self.class.params[param_id, 1] + ((self.class.params[param_id, 1])*(@level-1)*0.3).to_i
end
end
end
作者: giligilieye 时间: 2018-6-18 22:30
原来的问题没有了,但是410行经验那里出现了问题。
作者: 魔法丶小肉包 时间: 2018-6-19 09:07
你是不是用了什么其他的脚本...你看我这里测试都2000多级了
作者: giligilieye 时间: 2018-6-22 22:54
没有其他脚本
作者: giligilieye 时间: 2018-6-22 22:58
完成了,谢谢。我重新复制了一下。
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |