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

Project1

 找回密码
 注册会员
搜索
查看: 2669|回复: 4
打印 上一主题 下一主题

[已经解决] 如何制作升级随机加点

[复制链接]

Lv1.梦旅人

梦石
0
星屑
105
在线时间
111 小时
注册时间
2005-10-29
帖子
212
跳转到指定楼层
1
发表于 2012-11-9 22:37:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 清远 于 2012-11-11 00:40 编辑

简单来说,假设有5项基础能力值比如HP、力量、魔力、敏捷、运气等等
每次升级,一定会增加3点能力值,但是不是固定的而是随机的
即升级之后,可能HP加一点,力量加两点,或者魔力加1点,敏捷加1点、运气加1点等等
最好可以给每个人设置能力提升的概率
比如法师提升魔力的可能就很高,而战士提升力量的可能很高
用脚本怎么实现呢,谢谢高人
运筹帷幄之中,决胜千里之外。

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

2
发表于 2012-11-10 00:35:40 | 只看该作者
  1. #==============================================================================
  2. # ■ FE_Param
  3. #------------------------------------------------------------------------------
  4. # 设置各职业用的各数据
  5. # 制作者:feizhaodan
  6. # 版本: 1.1.0
  7. # 更新: 1.1.0 : 更改了随机式,从原来的非即下一项改为范围随机。
  8. #==============================================================================
  9. module FE_Param
  10.   
  11.     CLASSPER = {}   # 不要改
  12.    
  13.    
  14.     # 在这里设置各职业的提升几率
  15.     # 格式:
  16.     # CLASSPER[id] = {
  17.     # :para => n%,
  18.     #}
  19.     # id 输入职业ID
  20.     # para 代入属性标识(mhp, mmp, atk, def, mat, mdf, agi, luk)
  21.     # n 代入属性提升几率
  22.     CLASSPER[1] ={
  23.     :mhp         =>  60, # 血
  24.     :mmp         =>  40, # 魔
  25.     :atk        =>  70, # 攻
  26.     :def        =>  60, # 防
  27.     :mat        =>  20, # 魔攻
  28.     :mdf        =>  20, # 魔防
  29.     :agi        =>  50, # 敏
  30.     :luk        =>  10, # 幸运
  31.     }
  32.    
  33.     CLASSUP = {}    # 不要改
  34.    
  35.    
  36.     # 在这里设置各职业的提升量
  37.     # 格式:
  38.     # CLASSUP[id] = [mi, ma]
  39.     # id 输入职业ID
  40.     # mi 代入提升量最小值
  41.     # ma 代入提升量最大值
  42.     CLASSUP[1] = [5, 9]
  43. end



  44. #==============================================================================
  45. # ■ Game_Actor
  46. #------------------------------------------------------------------------------
  47. #  处理角色的类。本类在 Game_Actors 类 ($game_actors) 的内部使用、
  48. # Game_Party 类请参考 ($game_party) 。
  49. #==============================================================================

  50. class Game_Actor < Game_Battler\
  51.   FEPARAM_LIST_ = [:mhp,:mmp,:atk,:def,:mat,:mdf,:agi,:luk]
  52.   FEPARAM_LIST_.each_with_index do |pn,ind|
  53.     eval(
  54.     "alias fe_param_up_#{pn.to_s} #{pn.to_s}
  55.     def #{pn.to_s}
  56.       return param_gained(#{ind}) + fe_param_up_#{pn.to_s}
  57.     end
  58.     ")
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 获取提升量
  62.   #--------------------------------------------------------------------------
  63.   def param_up
  64.     param_up = FE_Param::CLASSUP[@class_id]
  65.     up = param_up[0] + rand(param_up[1] - param_up[0] + 1)
  66.     return up
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 获取提升率
  70.   #    param : 属性
  71.   #--------------------------------------------------------------------------
  72.   def param_per
  73.     @param_per = FE_Param::CLASSPER[@class_id] if @param_per == nil
  74.     return @param_per
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 获取已提升量
  78.   #    param : 属性
  79.   #--------------------------------------------------------------------------
  80.   def param_gained(param)
  81.     return 0 if @param_gained == nil
  82.     return 0 if @param_gained[param] == nil
  83.     return @param_gained[param]
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 升级
  87.   #--------------------------------------------------------------------------
  88.   alias fe_level_up level_up
  89.   def level_up
  90.     fe_level_up
  91.     gain_param
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 提升属性
  95.   #--------------------------------------------------------------------------
  96.   def gain_param
  97.     @param_gained = {} if @param_gained == nil
  98.     param_per
  99.     percentage = 0
  100.     @param_per.each_value do |v|
  101.       percentage += v
  102.     end
  103.     point = param_up
  104.     mhpper = @param_per[:mhp]
  105.     mmpper = @param_per[:mmp] + mhpper
  106.     atkper = @param_per[:atk] + mmpper
  107.     defper = @param_per[:def] + atkper
  108.     matper = @param_per[:mat] + defper
  109.     mdfper = @param_per[:mdf] + matper
  110.     agiper = @param_per[:agi] + mdfper
  111.     lukper = @param_per[:luk] + agiper
  112.     loop do
  113.       if point == 0
  114.         break
  115.       end
  116.       per = rand(percentage) + 1
  117.       case per
  118.       when 1...mhpper
  119.         i = FEPARAM_LIST_.index(:mhp)
  120.         @param_gained[i] = 0 if @param_gained[i] == nil
  121.         @param_gained[i] += 1
  122.         point -= 1
  123.       when mhpper...mmpper
  124.         i = FEPARAM_LIST_.index(:mmp)
  125.         @param_gained[i] = 0 if @param_gained[i] == nil
  126.         @param_gained[i] += 1
  127.         point -= 1
  128.       when mmpper...atkper
  129.         i = FEPARAM_LIST_.index(:atk)
  130.         @param_gained[i] = 0 if @param_gained[i] == nil
  131.         @param_gained[i] += 1
  132.         point -= 1
  133.       when atkper...defper
  134.         i = FEPARAM_LIST_.index(:def)
  135.         @param_gained[i] = 0 if @param_gained[i] == nil
  136.         @param_gained[i] += 1
  137.         point -= 1
  138.       when defper...matper
  139.         i = FEPARAM_LIST_.index(:mat)
  140.         @param_gained[i] = 0 if @param_gained[i] == nil
  141.         @param_gained[i] += 1
  142.         point -= 1
  143.       when matper...mdfper
  144.         i = FEPARAM_LIST_.index(:mdf)
  145.         @param_gained[i] = 0 if @param_gained[i] == nil
  146.         @param_gained[i] += 1
  147.         point -= 1
  148.       when mdfper...agiper
  149.         i = FEPARAM_LIST_.index(:agi)
  150.         @param_gained[i] = 0 if @param_gained[i] == nil
  151.         @param_gained[i] += 1
  152.         point -= 1
  153.       when agiper...lukper
  154.         i = FEPARAM_LIST_.index(:luk)
  155.         @param_gained[i] = 0 if @param_gained[i] == nil
  156.         @param_gained[i] += 1
  157.         point -= 1
  158.       end
  159.     end
  160.   end
  161. end
  162.    
复制代码
用这个试试吧。用法上面已经有了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
105
在线时间
111 小时
注册时间
2005-10-29
帖子
212
3
 楼主| 发表于 2012-11-10 20:58:39 | 只看该作者
版主大人好,使用这个脚本之后,只能增加HP和MP,其他的属性点不管怎么修改概率都不会增加。
另外发现即使将概率改到100,HP与MP也不是每次升级都提升。
恳请指点。
另外,这个脚本是不是每次升级只能提升一点能力值呢?
能不能一次升级可以提升多点能力值呢。
运筹帷幄之中,决胜千里之外。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

4
发表于 2012-11-10 23:11:31 | 只看该作者
  1. #==============================================================================
  2. # ■ FE_Param
  3. #------------------------------------------------------------------------------
  4. # 设置各职业用的各数据
  5. # 制作者:feizhaodan
  6. # 版本: 1.1.0
  7. # 更新: 1.1.0 : 更改了随机式,从原来的非即下一项改为范围随机。
  8. #==============================================================================
  9. module FE_Param
  10.   
  11.     CLASSPER = {}   # 不要改
  12.    
  13.    
  14.     # 在这里设置各职业的提升几率
  15.     # 格式:
  16.     # CLASSPER[id] = {
  17.     # :para => n%,
  18.     #}
  19.     # id 输入职业ID
  20.     # para 代入属性标识(mhp, mmp, atk, def, mat, mdf, agi, luk)
  21.     # n 代入属性提升几率
  22.     CLASSPER[1] ={
  23.     :mhp        =>  60, # 血
  24.     :mmp        =>  40, # 魔
  25.     :atk        =>  70, # 攻
  26.     :def        =>  60, # 防
  27.     :mat        =>  20, # 魔攻
  28.     :mdf        =>  20, # 魔防
  29.     :agi        =>  50, # 敏
  30.     :luk        =>  10, # 幸运
  31.     }
  32.    
  33.     CLASSUP = {}    # 不要改
  34.    
  35.    
  36.     # 在这里设置各职业的提升量
  37.     # 格式:
  38.     # CLASSUP[id] = [mi, ma]
  39.     # id 输入职业ID
  40.     # mi 代入提升量最小值
  41.     # ma 代入提升量最大值
  42.     CLASSUP[1] = [5, 9]
  43. end



  44. #==============================================================================
  45. # ■ Game_Actor
  46. #------------------------------------------------------------------------------
  47. #  处理角色的类。本类在 Game_Actors 类 ($game_actors) 的内部使用、
  48. # Game_Party 类请参考 ($game_party) 。
  49. #==============================================================================

  50. class Game_Actor < Game_Battler
  51.   FEPARAM_LIST_ = [:mhp,:mmp,:atk,:def,:mat,:mdf,:agi,:luk]
  52.   #--------------------------------------------------------------------------
  53.   # ● 获取普通能力
  54.   #--------------------------------------------------------------------------
  55.   def param(param_id)
  56.     value = super
  57.     value += param_gained(param_id)
  58.     return [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 获取提升量
  62.   #--------------------------------------------------------------------------
  63.   def param_up
  64.     param_up = FE_Param::CLASSUP[@class_id]
  65.     up = param_up[0] + rand(param_up[1] - param_up[0] + 1)
  66.     return up
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 获取提升率
  70.   #    param : 属性
  71.   #--------------------------------------------------------------------------
  72.   def param_per
  73.     @param_per = FE_Param::CLASSPER[@class_id] if @param_per == nil
  74.     return @param_per
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 获取已提升量
  78.   #    param : 属性
  79.   #--------------------------------------------------------------------------
  80.   def param_gained(param)
  81.     @param_gained = {} if @param_gained == nil
  82.     return 0 if @param_gained[param] == nil
  83.     return @param_gained[param]
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 升级
  87.   #--------------------------------------------------------------------------
  88.   alias fe_level_up level_up
  89.   def level_up
  90.     fe_level_up
  91.     gain_param
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 提升属性
  95.   #--------------------------------------------------------------------------
  96.   def gain_param
  97.     @param_gained = {} if @param_gained == nil
  98.     param_per
  99.     percentage = 0
  100.     @param_per.each_value do |v|
  101.       percentage += v
  102.     end
  103.     point = param_up
  104.     mhpper = @param_per[:mhp]
  105.     mmpper = @param_per[:mmp] + mhpper
  106.     atkper = @param_per[:atk] + mmpper
  107.     defper = @param_per[:def] + atkper
  108.     matper = @param_per[:mat] + defper
  109.     mdfper = @param_per[:mdf] + matper
  110.     agiper = @param_per[:agi] + mdfper
  111.     lukper = @param_per[:luk] + agiper
  112.     loop do
  113.       if point == 0
  114.         break
  115.       end
  116.       per = rand(percentage) + 1
  117.       p [mhpper,mmpper,atkper,defper,matper,mdfper,agiper,lukper,per]
  118.       case per
  119.       when 1...mhpper
  120.         i = FEPARAM_LIST_.index(:mhp)
  121.         @param_gained[i] = 0 if @param_gained[i] == nil
  122.         @param_gained[i] += 1
  123.         point -= 1
  124.       when mhpper...mmpper
  125.         i = FEPARAM_LIST_.index(:mmp)
  126.         @param_gained[i] = 0 if @param_gained[i] == nil
  127.         @param_gained[i] += 1
  128.         point -= 1
  129.       when mmpper...atkper
  130.         i = FEPARAM_LIST_.index(:atk)
  131.         @param_gained[i] = 0 if @param_gained[i] == nil
  132.         @param_gained[i] += 1
  133.         point -= 1
  134.       when atkper...defper
  135.         i = FEPARAM_LIST_.index(:def)
  136.         @param_gained[i] = 0 if @param_gained[i] == nil
  137.         @param_gained[i] += 1
  138.         point -= 1
  139.       when defper...matper
  140.         i = FEPARAM_LIST_.index(:mat)
  141.         @param_gained[i] = 0 if @param_gained[i] == nil
  142.         @param_gained[i] += 1
  143.         point -= 1
  144.       when matper...mdfper
  145.         i = FEPARAM_LIST_.index(:mdf)
  146.         @param_gained[i] = 0 if @param_gained[i] == nil
  147.         @param_gained[i] += 1
  148.         point -= 1
  149.       when mdfper...agiper
  150.         i = FEPARAM_LIST_.index(:agi)
  151.         @param_gained[i] = 0 if @param_gained[i] == nil
  152.         @param_gained[i] += 1
  153.         point -= 1
  154.       when agiper...lukper
  155.         i = FEPARAM_LIST_.index(:luk)
  156.         @param_gained[i] = 0 if @param_gained[i] == nil
  157.         @param_gained[i] += 1
  158.         point -= 1
  159.       end
  160.     end
  161.   end
  162. end
  163.    
复制代码
修正版。然后关于这个几率,他每个属性在升级时增加的几率是(所有属性的几率的和)分之(这个属性的几率),因此没法弄每次升级一定增加HP。因为默认的升级增加属性也还是有效,所以增加HP就用那个来吧。

评分

参与人数 1星屑 +24 收起 理由
清远 + 24 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
105
在线时间
111 小时
注册时间
2005-10-29
帖子
212
5
 楼主| 发表于 2012-11-11 00:39:22 | 只看该作者
使用之后,就是我想要的效果,太感谢版主了。
非常感谢,特别感谢
运筹帷幄之中,决胜千里之外。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-5-7 17:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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