Project1

标题: 主角升级公式 [打印本页]

作者: 玛尔斯    时间: 2010-6-19 22:04
标题: 主角升级公式
我想把所有的角色有这样一个设定:
初始等级0级,
等级上限200级。
死亡可复活。
10级以前处于新手保护期:
升级所需经验=新等级*100
新手保护期内 死亡扣除经验 =等级*10
10级以后保护期过了:
升级所需经验=新等级的4次方除10,
死亡时扣除的经验为上一次升级所需的经验。




请各位高手给个工程或脚本什么的! 我谢啦!

作者: 白萌奈奈    时间: 2010-6-20 01:36
:dizzy:我不会
作者: 后知后觉    时间: 2010-6-20 10:00
对于单机游戏来说
角色死亡后扣除经验不太实用
除非弄成网络游戏那样随时随地的保存数据
更改等级上限还涉及到角色在100级以上的属性空白问题
需要手动设置.在数据库里是无法设置的
作者: 玛尔斯    时间: 2010-6-20 10:07
只是为了加游戏难度……
作者: 后知后觉    时间: 2010-6-20 22:18
本帖最后由 后知后觉 于 2010-6-21 14:59 编辑

  1. module Hzhj
  2.   New_Final_Level = 200
  3.   module_function
  4.   def make_new_actor_rxdata
  5.     actors = load_data("Data/Actors.rxdata")
  6.     for actor in actors
  7.       next if actor.nil?
  8.       actor.final_level = New_Final_Level
  9.       actor.initial_level = 0
  10.       parameters = actor.parameters
  11.       parameters.resize(6, New_Final_Level + 1)
  12.       parameters[0, 0] = parameters[0, 1]
  13.       parameters[1, 0] = parameters[1, 1]
  14.       parameters[2, 0] = parameters[2, 1]
  15.       parameters[3, 0] = parameters[3, 1]
  16.       parameters[4, 0] = parameters[4, 1]
  17.       parameters[5, 0] = parameters[5, 1]
  18.       for i in 100..New_Final_Level
  19.         parameters[0, i] = parameters[0, i - 1] * 2 - parameters[0, i - 2]
  20.         parameters[1, i] = parameters[1, i - 1] * 2 - parameters[1, i - 2]
  21.         parameters[2, i] = parameters[2, i - 1] * 2 - parameters[2, i - 2]
  22.         parameters[3, i] = parameters[3, i - 1] * 2 - parameters[3, i - 2]
  23.         parameters[4, i] = parameters[4, i - 1] * 2 - parameters[4, i - 2]
  24.         parameters[5, i] = parameters[5, i - 1] * 2 - parameters[5, i - 2]
  25.       end
  26.     end
  27.     save_data(actors, "Data/Hzhj_Actors.rxdata")
  28.   end
  29. end
  30. #Hzhj.make_new_actor_rxdata;exit
复制代码
上面这段脚本放在脚本编辑器的【最顶部】
脚本开头的
  New_Final_Level = 200
那个 200 就是我设置的新的最高等级.
然后把 Scene_Title 脚本内的这一行
$data_actors = load_data("Data/Actors.rxdata")
改成这样
$data_actors = load_data("Data/Hzhj_Actors.rxdata")
最后看上面脚本里的最后一行
#Hzhj.make_new_actor_rxdata;exit
这一行最前面有一个 # 号
运行的时候要把这个 # 号删除
运行之后程序会自动退出.然后就把这个 # 号加回去
这一行是用来生成新的角色数据文件的.不需要每次运行都去执行一次
只是要在你 更改了 数据库->角色 部分的内容后才要运行一次
更改一次角色数据库就要运行一次这一行
第12-17行是在设置 0 级时候的6个属性
我这里直接设置的和第 1 级是一样的.自己修正成自己需要的值
100级以后属性的算法是 根据 99级和98级的差值来计算
比如 一个角色 99 级的时候 力量是415. 他 98 级的时候 力量 是 400
那么他 100 级的力量就是 415 + 415 - 400 = 430
当他 101 级的时候 力量 就是 430 + 15 = 445
……
也就是说.这以后每一集的增加量等于 98 到 99 的增加量.
不想要这样的效果就自己改.
上面是属性曲线
经验值曲线在 Game_Actor 里的
def make_exp_list 里面
改成这样

  1.   #--------------------------------------------------------------------------
  2.   # ● 计算 EXP
  3.   #--------------------------------------------------------------------------
  4.   def make_exp_list
  5.     @exp_list[0] = 0
  6.     for i in 1..10
  7.       @exp_list[i] = @exp_list[i - 1] + i * 100
  8.     end
  9.     for i in 11..200
  10.       @exp_list[i] = @exp_list[i - 1] + i ** 4 / 10
  11.     end
  12.     @exp_list[201] = 0
  13.   end
复制代码
经验值曲线做好了
还有个地方要改.就是经验值的上限
找到 def exp=(exp)
这一行下面的这一行
    @exp = [[exp, 9999999].min, 0].max
把里面的 9999999 改得足够大就可以了
帮你算了一下.就现在的算法.经验值上限要这个数:6480269570

上面内容从这个帖子弄来的
http://www.diyrpg.net/bbs/redire ... =5183&pid=42435

挂了扣经验就自己去搞吧.
作者: 玛尔斯    时间: 2010-6-21 12:16
回复 后知后觉 的帖子


    无效。。。。。。。。
作者: 后知后觉    时间: 2010-6-21 15:13
应该是你自己的脚本冲突了吧...
新工程里是有效果的...全局搜索关键字 ####  可以找到修改的地方
Project1.rar (189.59 KB, 下载次数: 109)

还有就是 def make_exp_list 算法修正了一下.
作者: 行雲流水    时间: 2010-6-21 20:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: 红毛丹    时间: 2010-6-24 11:02
学习了
作者: MVx    时间: 2010-6-25 20:56
我看都晕啦...4次方...*100...
作者: 无心孤云    时间: 2010-6-26 00:10
我对后知后觉前辈的敬仰已经不能用江水来形容了。。。。。
作者: GM.01    时间: 2010-6-28 19:02
我在声明下。你说的这个需要商业类的游戏软件!如果用RPGXP需要大量的脚本
或制作团队




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